====== Differences ====== This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
sanboot:debian_etch_iscsi [2007/10/25 10:23] gervystar |
sanboot:debian_etch_iscsi [2009/04/27 13:00] (current) commander1024 the module is called "ib_iser" not "iscsi_iser" (Device Drivers -> infiniband support), checked against the hooks script where module ib_iser is modprobed |
||
---|---|---|---|
Line 10: | Line 10: | ||
This howto is based on the following assumptions: | This howto is based on the following assumptions: | ||
- | * a base debian >= etch with all the security updates | + | * a base debian etch with all the security updates |
* the system is installed on a single partition "/" on /dev/sda1 | * the system is installed on a single partition "/" on /dev/sda1 | ||
* there is an already done iscsi target on an iscsi server | * there is an already done iscsi target on an iscsi server | ||
* there is a working dhcp server | * there is a working dhcp server | ||
+ | |||
+ | ==== Compile iscsistart and fwparam_ibft ==== | ||
Since two fundamental tools from open-iscsi are not included in the debian package, they have to be compiled from the sources with the following steps (i have used a different machine for all the compilation stuff). | Since two fundamental tools from open-iscsi are not included in the debian package, they have to be compiled from the sources with the following steps (i have used a different machine for all the compilation stuff). | ||
Line 31: | Line 33: | ||
The two files needed are ''usr/iscsistart'' and ''utils/fwparam_ibft/fwparam_ibft'' so they have to be copied in ''/usr/sbin''. | The two files needed are ''usr/iscsistart'' and ''utils/fwparam_ibft/fwparam_ibft'' so they have to be copied in ''/usr/sbin''. | ||
+ | |||
+ | ==== Install the needed packages ==== | ||
+ | |||
+ | apt-get install iproute | ||
+ | |||
+ | ==== Disable networking scripts ==== | ||
+ | |||
+ | The file ''/etc/network/interfaces'' must contain only the information needed to setup the loopback adapter or some additional network cards not used in the iSCSI boot process. | ||
+ | If you have only one interface (in example eth0), be sure to have a stanza like this in ''/etc/network/interfaces'' | ||
+ | |||
+ | <code> | ||
+ | auto eth0 | ||
+ | iface eth0 inet manual | ||
+ | </code> | ||
+ | |||
+ | So ifupdown will report the network card as "up", otherwise some script will not work well (in exemple the nfs mount). | ||
+ | |||
+ | ==== Create the initramfs scripts ==== | ||
Create two scripts shown below. These scripts have to be executable. | Create two scripts shown below. These scripts have to be executable. | ||
- | * ''/etc/initramfs-tools/hooks/iscsi_tcp'' will copy the ''iscsi_tcp'', ''iscsi_iser'' kernel modules followed by their dependancies, ''/usr/sbin/iscsistart'' and ''/usr/sbin/fwparam_ibft'' to the initial ramdisk. | + | * ''/etc/initramfs-tools/hooks/iscsi_tcp'' will copy the ''iscsi_tcp'', ''ib_iser'' kernel modules followed by their dependancies, ''/usr/sbin/iscsistart'' and ''/usr/sbin/fwparam_ibft'' to the initial ramdisk. |
* ''/etc/initramfs-tools/scripts/local-top/iscsi_tcp'' is copied to the ram disk and run at boot-time, just before the root filesystem is mounted. If the root device string looks like a SCSI device it brings up the appropriate Ethernet device, sets up the ip address passed through dhcp and connects the root file system on the iSCSI target. | * ''/etc/initramfs-tools/scripts/local-top/iscsi_tcp'' is copied to the ram disk and run at boot-time, just before the root filesystem is mounted. If the root device string looks like a SCSI device it brings up the appropriate Ethernet device, sets up the ip address passed through dhcp and connects the root file system on the iSCSI target. | ||
Line 51: | Line 71: | ||
==== Hint ==== | ==== Hint ==== | ||
- | * If the system hangs before the root device has been mounted, passing ''break=mount'' on the command line will spawn a shell before ''scripts/local-top/aoetools'' is run. This should allow for further debugging. | + | * If the system hangs before the root device has been mounted, passing ''break=mount'' on the command line will spawn a shell before ''scripts/local-top/iscsi_tcp'' is run. This should allow for further debugging. |
==== Scripts ==== | ==== Scripts ==== | ||
Line 124: | Line 144: | ||
echo "Setting up networking on $iSCSI_INITIATOR_IF..." | echo "Setting up networking on $iSCSI_INITIATOR_IF..." | ||
ip addr add $iSCSI_INITIATOR_IPADDR/$iSCSI_INITIATOR_MASK brd + dev $iSCSI_INITIATOR_IF | ip addr add $iSCSI_INITIATOR_IPADDR/$iSCSI_INITIATOR_MASK brd + dev $iSCSI_INITIATOR_IF | ||
+ | ip route add default via $iSCSI_INITIATOR_GATEWAY | ||
echo "Connecting to iSCSI target $iSCSI_TARGET_NAME on $iSCSI_TARGET_IPADDR..." | echo "Connecting to iSCSI target $iSCSI_TARGET_NAME on $iSCSI_TARGET_IPADDR..." | ||
iscsistart -i $iSCSI_INITIATOR_NAME -t $iSCSI_TARGET_NAME -g 1 -a $iSCSI_TARGET_IPADDR | iscsistart -i $iSCSI_INITIATOR_NAME -t $iSCSI_TARGET_NAME -g 1 -a $iSCSI_TARGET_IPADDR | ||
+ | sleep 5 | ||
;; | ;; | ||
esac | esac | ||
</code> | </code> | ||
+ | |||
+ | |||
+ | ===== Using gPXE to boot over iSCSI ===== | ||
+ | Since my network cards don't support booting via iSCSI, I've used the great gPXE, loading it after a "standard" PXE request. | ||
+ | This is called [[:pxechaining|PXE Chainloading]] | ||
+ | |||
+ | A separate stanza containing the right ''root-path'' option should be created for each host in ''/etc/dhcp3/dhcpd.conf'', like in the example. | ||
+ | |||
+ | <code> | ||
+ | host iscsi-test { | ||
+ | hardware ethernet 00:0C:29:5C:53:C2; | ||
+ | fixed-address 192.168.23.195; | ||
+ | filename ""; | ||
+ | option root-path "iscsi:192.168.23.2::::iqn.2007-10.org.appliedgenomics:test.disk1"; | ||
+ | } | ||
+ | </code> | ||
+ |