This document explains how to install and boot Linux on an iSCSI target LU using
the opensource
linux-iSCSI initiator.
The example shows how to perform this process for SUSE* Linux Enterprise Server 9-SP3.
If you have SLES 10 installed,
read the iSCSI Boot instructions in SLES 10 RELEASE NOTES.
The Red Hat* Enterprise Linux 4 process can be found here.
![]() |
NOTE: Some newer network device drivers are not included in either SLES9 or RHEL4. To enable these devices, the user will need to get the correct driver and load the driver before discovery is attempted when following the preinstall instructions. |
This is the recommended method for creating the driver disk.
![]() |
NOTES: Configure the initiatorname.iscsi and
iscsi.conf files according to your target configuration. To do so you
should read the README provided by the linux-iscsi source code.
You must at least configure the DiscoveryAddress in the iscsi.conf. If your target supports advanced features such as CHAP, you will need to make sure that the iscsi.conf and initiatorname.iscsi match your target configuration at this point. These files will be used throughout the install and boot process. Alternatively, you may create the driver disk using a different host machine other than SUSE Linux Enterprise Server 9-SP3. You will need to compile the iscsi.ko and iscsid using the 2.6.5-7.244-default kernel. You can learn to do this by reading the README provided with the linux-iscsi source code. |
![]() |
NOTE: You need an Intel® iSCSI Boot capable adapter to connect to your target and boot the OS from the iSCSI Target Disk. |
DiscoveryAddress=<IP of target> InitiatorName=<initiator iqn> netsetup=1
Ctrl-Alt-F4 will display something such as:
"iSCSI target bus 0 target 0 = iqn.XYZ"
"Attached scsi disk ..."
![]() |
NOTE: When partitioning the iSCSI LUs, ensure that your boot partition is not distributed across physical partitions on different iSCSI LUs. The Intel iSCSI Option ROM will only expose one iSCSI LU and if /boot is distributed across multiple LUs it will not be visible during the boot process. |
Example: INITRD_MODULES="... e1000 iscsi".
echo Username=<CHAP username> >> /etc/iscsi.conf
echo Password=<CHAP password> >> /etc/iscsi.conf
For example,
root=/dev/sda3
For example,
(hd0) <SCSI device node for Boot LUN>
/dev/sda2 / reiserfs ac1,user_xattr 1 1
/dev/sda1 /boot ext2 ac1,user_xattr 1 2
NOTE: After this first reboot, YaST may ask you to configure your network devices. Skip this step as it will reset the network interface that the iSCSI traffic is on.
test "$a" = ethX && continue;
immediately after line number 169 where ethX is the ethernet interface used for iSCSI communication.
![]() |
NOTE: After the system has booted, iscsid will be running. The user may want to add something like "kill `pidof iscsid`" to an init script. iscsid is only needed for discovery and can be killed in this way without problems. |
This process has two phases.
gcc -static -Wall iscsi_boot_util.c -o iscsi_boot_util
a) rpm -ivh kernel-2.6.9-34.EL.i686.rpm, from the RHEL4 U3 CD2
b) cp -f \
/lib/modules/2.6.9-34.EL/kernel/drivers/scsi/scsi_transport_iscsi.ko \
/lib/modules/2.6.9-34.EL/kernel/drivers/scsi/iscsi_sfnet/iscsi_sfnet.ko \
/lib/modules/2.6.9-34.EL/kernel/crypto/crc32c.ko \
/lib/modules/2.6.9-34.EL/kernel/crypto/md5.ko \
/lib/modules/2.6.9-34.EL/kernel/lib/libcrc32c.ko \
/home/iSCSIBoot/preinstall/
/home/iSCSIBoot/postinstall <DUM mount point>
- Unmount if necessary and remove the DUM
![]() |
NOTES: This assumes you have flashed and configured
your iSCSI firmware to connect to your target and iscsi firmware was
able to connect to the iscsi target. If you are using USB flash drive/USB floppy as DUM, it must be attached prior to this step. If you're performing a Local Install, make sure the local disk is connected. |
IDE Floppy
mkdir /mnt/floppy /tmp/iscsi
mount /dev/fd0 /mnt/floppy
cp -fr /mnt/floppy/* /tmp/iscsi
umount /dev/fd0
USB Floppy Drive
To mount a USB device you must understand which /dev node the kernel will use to represent the DUM. To do this run "dmesg" and examine the output. Look for the text which shows your USB device's registration with the system. Determine which sdX device is associated with your device.
Next run "cat /proc/partitions", the output should look similar to this,
Major Minor #blocks Name
7 0 <x> loop0
8 0 <x> sda
Using the /dev node determine the minor number for your USB device.
Mount the USB device.
mkdir /mnt/usb /tmp/iscsi
mknod /dev/sdX b 8 <minor#>
cp -fr /mnt/usb/* /tmp/iscsi
DO NOT unmout/remove USB floppy/USB flash drive at this point.
- Run the "preinstall/iscsipreinstall" script from the mount point.
/tmp/iscsi/preinstall/iscsipreinstall
- Run "dmesg" again to verify that discovery occurred correctly. It should show that drives were recently discovered. Note the LUNs and discovered SCSI device nodes. This information needed to set grub configuration files.
- Press Ctrl+Alt+F1 and select "Back".
- Continue with the installation.
NOTE: When partitioning the iSCSI LUs, ensure that your boot partition is not distributed across physical partitions on different iSCSI LUs. The Intel iSCSI Option ROM will only expose one iSCSI LU and if /boot is distributed across multiple LUs it will not be visible during the boot process.
Modify the device.map and grub.conf files so that they have the correct device node listed. Refer to Appendix A for more information on SCSI device enumeration.
/mnt/sysimage/boot/grub/device.map
(hd0) <SCSI device node for Boot LUN>
/mnt/sysimage/boot/grub/grub.conf
#boot=<SCSI device node for Boot LUN>
/tmp/iscsi/postinstall/iscsipostinstall
The iSCSI LUs are discovered as SCSI device nodes. The enumeration of SCSI devices is dynamic. The SCSI subsystem creates device nodes in the order that they are discovered, starting with /dev/sda and incrementing alphabetically. In the case of iSCSI LU enumeration, local SCSI devices such as disks or USB devices affect this process. If a device node is created for a USB device before iSCSI discovery occurs the USB device will be represented by /dev/sda and the iSCSI LUs will begin with /dev/sdb. However, if you were to reboot this system without the USB device the iSCSI LUs will begin with /dev/sda. It is important to configure grub correctly to point to the correct device node in order to boot from an iSCSI hard drive.
It is often the case when installing to an iSCSI LU that a device driven by the SCSI subsystem is used for the install media. For example, using a USB flash drive for the DUM. As stated above this will affect how grub should be configured when installing.
Here is an example of how iSCSI device node mappings might differ between installation and booting. In this example the user is using a USB flash drive as a DUM. Since this deviceis being used to copy files onto the system it is present before iSCSI discoveryoccurs. However, when booting from the iSCSI Boot Disk no USB flash drive is necessary and therefore it isn't attached.
Remote Installation:
USB flash drive or USB floppy /dev/sda
LUN 0 /dev/sdb
LUN 1 /dev/sdc
Booting:
LUN 0 /dev/sda
LUN 1 /dev/sdb
If the USB device is attached after booting, it will be enumerated as such, USB flash drive or USB floppy
/dev/sdc
It is also possible that there are other USB devices on the system, it is users responsibility to find out if these will interfere with the device node mapping during boot.
After performing a Local Install on an IDE device the user will need to modify grubso that when booting the root partition is identified as a SCSI device. When installing to a local IDE disk drive the device node used will be of the form /dev/hdX, but when this volume is exposed by the iSCSI target the initator will see the hard drive as a SCSI device and it will be represented as /dev/sdX. This changemust be made in the grub configuration file. This type of problem exposes the necessity that the user fully understand the concepts described in this document as specifics may vary greatly.