It is possible to start a diskless machine remotely using Open-iSCSI on the client side. You have to take care of these things:
- create an initrd which will connect the iSCSI node
- configure your tftp server, so that your machine starts properly via PXE/tftp
This HOWTO explains how to set up your system so that it boots a diskless station using PXE/tftp and Open-iSCSI.
Below some theory; for practical examples, see downloads section.
Your initrd has to do the following things:
- load all needed modules, like:
- network card modules (e1000, tg3, mii, 8139too, e100, depending on the card you use etc.)
- filesystem modules (jbd, ext3, depending on the filesystem you use)
- SCSI modules (scsi_mod, sd_mod)
- Open-iSCSI modules (scsi_transport_iscsi, libiscsi, iscsi_tcp)
- mount /proc and /sys
- bring a network interface up
- initiate a iSCSI session with
- mount your filesystem
- switch to a new root
/sbin/initfrom a new root
Note that the below instruction use common tools from your favourite distribution. You may create a similar initrd with busybox/uClibc.
- create a directory for your Open-ISCSI-aware initrd:
- create all needed directories:
- copy the following binaries to
You can do it with a following command:
If your distribution doesn't ship
iscsistart (most distros don't), you have to compile open-iscsi yourself - you'll find there
- copy shared libraries to
lib/; you will find the shared libraries with
lddtool, for example:
- after all binaries and libraries are copied to correct places, verify if you didn't forget anything with
chrootcommand - you may get a similar "no name" prompt (it's OK, since there are no users in that initrd), and all binaries should be able to start:
- create needed nodes in
mknodtool, or just copy them from your /dev):
- create the
initfile (don't forget to
chmod 755 init); place it in the root of your initrd directory; note we load some modules here - you have to copy the modules to
/lib/modules/in your initrd; here's the example
initfile which detects kernel command line parameters like initiator name, target IP etc.:
Creating initrd with cpio
Now that you have all the files ready, create initrd image:
initrd.img to your tftp server.
Configuring tftp server
Add something like that to a
pxelinux.cfg/default file to initiate a remote boot by hand (not recommended):
You have to add these parameters to
APPEND line appropriately:
- initrd - initrd image, for example,
- iscsi_i_ip - local initiator IP address/netmask (i.e. 192.168.111.168/255.255.255.192), for example,
- iscsi_i - local initiator name (InitiatorName), for example,
- iscsi_t - remote target name (TargetName), for example,
- iscsi_a - iSCSI target IP address, for example,
It is recommended that you add the above entry to a
pxelinux.cfg/aa-bb-cc-dd-ee-ff file; aa-bb-cc-dd-ee-ff being the MAC address of the PC you want to boot remotely with Open-iSCSI / PXE.
Go to downloads page.
Additional info / troubleshooting
See diskless iSCSI troubleshooting page.
For general Open-iSCSI info, please ask at open-iscsi mailing list.