This page describes how to install Linux onto a hard drive so that the disk is bootable using an Intel iSCSI Remote Boot-capable adapter. There are two methods to accomplish this:
For more information on SCSI device enumeration, refer to Appendix A at the end of this document.
The SUSE* Linux Enterprise Server 10 process can be found here.
The SUSE* Linux Enterprise Server 9-SP3 process can be found here.
The Red Hat* Enterprise Linux 5.1 process can be found here.
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. |
NOTE: Users who wish to have the easiest experience when installing Linux onto an iSCSI target should use SLES10 or greater. SLES10 provides native support for iSCSI Remote Booting and installing. This means that there are no additional steps outside of the installer that are necessary to install to an iSCSI target using an Intel Gigabit PCI-Express Server Adapter. Please refer to the SLES10 documentation for instructions on how to install to an iSCSI LU. |
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 Remote Boot capable adapter to connect to your target and boot the OS from the iSCSI Target Disk. |
Verify that you are connected to the target
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. |
Edit line 10 of the file /etc/sysconfig/kernel. Append "e1000" & "iscsi" driver to INITRD_MODULES variable.
Example: INITRD_MODULES="... e1000 iscsi".
If your target requires CHAP authentication add the follow to /sbin/mkinitrd at line 1901
echo Username=<CHAP username> >> /etc/iscsi.conf
echo Password=<CHAP password> >> /etc/iscsi.conf
Edit /mnt/boot/grub/menu.1st so that root= points to the correct root partition.
For example:
root=/dev/sda3
Edit /mnt/boot/grub/device.map so that grub knows which hard drive it should use.
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. |
When you have booted to your iSCSI LU, edit /etc/rc.d/network. Add the following line to the script to prevent it from trying to reset the iscsi-ethernet interface. Please add carefully
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. |
See Appendix A
NOTES: Users who wish to have the easiest
experience when installing Linux onto an iSCSI target should use Red Hat
5.1
or greater. Red Hat 5.1 provides native support for iSCSI Remote Booting and
installing. This means that there are no additional steps outside of the
installer that are necessary to install to an iSCSI target using an
Intel Gigabit PCI-Express Server Adapter. Please refer to the Red Hat
5.1 documentation for
instructions on how to install to an iSCSI LU. RHEL5.2 has iBFT support. |
This process has two phases.
gcc -static -Wall iscsi_boot_util.c -o iscsi_boot_util
/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. |
Make a mount point directory and mount the DUM. (The mount point can be anything but /mnt). Depending on the DUM media type, these are the instructions:
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#>
mount /dev/sdX /mnt/usb
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.
- Configure the boot order
- On the "Boot Loader Configuration" select "Configure advanced boot loader options" and click Next.
- Change the drive order so that your target disk is on the top of the list.
- Continue with remainder of installation.
- When the install is complete DO NOT press "Reboot".
- Make some final post install changes:
- Press Ctrl-Alt-F2 to switch back to the console.
Alter the grub settings:
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>
Run the post install script and unmount the DUM.
/tmp/iscsi/postinstall/iscsipostinstall
- Ensure the network is not shutdown during halt
- Edit the /mnt/sysimage/etc/init.d/halt and scroll to the bottom.
- Change the line stating HALTARGS="-i -d" to HALTARGS="-d"
- Return to the GUI and reboot
NOTE: If you are using a bootable USB or Flash drive, remove it, otherwise the system will try to boot off that drive.
- Press Ctrl+Alt+F7 and then select "Reboot".
- Remove the installation media and DUM.
- On your first boot, if Kudzu asks you if you'd like to configure your adapters, please select to "ignore" the device.
Appendix A
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 device is being used to copy files onto the system it is present before iSCSI discovery occurs. However, when booting from the iSCSI Remote 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 the users responsibility to find out if these will interfere with the device node mapping during boot.
Appendix B
After performing a Local Install on an IDE device the user will need to modify grub so 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 initiator will see the hard drive as a SCSI device and it will be represented as /dev/sdX. This change must 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.
Appendix C
In some cases, if booting the system takes an unusually long time, you may try commenting the following line in the file /etc/init.d/iptables:
$IPTABLES-restore $OPT $IPTABLES_DATA
if [ $? -eq 0 ]; then
success; echo
else
failure; echo; return 1
fi
This may be required as the command may be resetting the connection.
Appendix D
Crash Dump for Linux:
Red Hat Enterprise Linux 4, 5.x: Netdump utility can be used to dump the disk image when the system crashes.
SUSE Linux Enterprise Server: Netdump utility can be used to dump the disk image when the system crashes.