This is an old revision of the document!

A PCRE internal error occured. This might be caused by a faulty plugin

====== Booting from iSCSI with Debian Lenny ====== ==== Introduction ==== This howto is similar to [[sanboot:debian_lenny_iscsi|how to get iSCSI working with Debian Etch]]. It is important to note the following differences from that howto: * The [[;a=tree;f=utils/fwparam_ibft;h=c5a9e5e47f71d7de12cb0b4f07b89e31406bd95b;hb=054ada67a9eba729cb7b0f96c218877f8a2b933c|fwparam_ibft]] utility used in the initrd scripts in the Debian Etch solution does not exist anymore. Its functionality has changed slightly, and it has been merged into the other tool called ''iscsistart''. To test it simply say ''iscsistart -f''. Both utilites are/were part of the [[|Open-iSCSI]] software. * While the iSCSI + Etch guide told you to compile the open-iscsi tools from source because the ''iscsistart'' and ''fwparam_ibft'' tools were missing from the package, Lenny actually has the ''iscsistart'' in the package called ''open-iscsi'' in its repository. Simply say ''aptitude install open-iscsi'' to have it installed, and have a look at its [[|its documentation]]. * The ''open-iscsi'' package in Lenny also installs iscsi related boot scripts for initrd so you might not have to make your own. However, the devil is in the details below. ==== Doing iSCSI the lenny way ==== Install open-iscsi <code bash>aptitude install open-iscsi</code> Touch the indicatorfile, which is queried to determine whether the iscsi tools and scripts are to be copied into the new initrd <code bash>touch /etc/iscsi/iscsi.initramfs</code> Rebuild your initrd. <code bash> aptitude install initramfs-tools update-initramfs -u </code> Configure the parameters to your kernel with the following goals in mind: * The initiator and other iSCSI related parameter should be specified so that the open-iscsi boot scripts can get going with setting up iSCSI * The kernel should find the correct disk once iSCSI is online. The safest way is to use a ''LABEL='' or ''UUID='' identification. Example: <code grub> title Debian Lenny iSCSI kernel /vmlinuz-2.6.28-11-generic ISCSI_INITIATOR=iqn.2009-04.mynet:general iSCSI_TARGET_NAME=iqn.2009-04.mynet.node1:general.vol1 iSCSI_TARGET_IP= ISCSI_TARGET_PORT=3260 root=UUID=021ebcfc-188a-41ba-9864-ee18cbf7af9f ro initrd /initrd.img-2.6.28-11-generic </code> Try to boot! ==== Lenny doesnt fetch from iBFT ==== Now if Open-iSCSI is in the repositories then why did I bother to write this howto? Good question! The answer is simply that you don't get the same result with the iSCSI + Etch howto as you get when instlling open-iscsi from the lenny repositories. While the "etch solution" fetches iscsi parameters from the [[iBFT]], the "built-in lenny solution" fetches the parameters from configuration file(s) under ''/etc/'' in the initramfs image itself and/or settings passed as kernel parameters from the bootloader. While this simple distinction might seem innocent enough, it really isn't. In many cases it is impracticalt to create a new initrd or root image to change the iscsi parameters. Luckily, for most people there is a more elegant way to get the parameters. The latest lenny kernel (as of 4. November 2009) has an [[iBFT]] function compiled in that makes fetching the iSCSI parameters from [[iBFT]] really easy. From your initrd script, simply traverse the directory ''/sys/firmware/ibft'' The files in there contain all the ibft information you could ever want. ==== Extras: XEN + iSCSI + Lenny + iBFT ==== I decided to share my experience with iSCSI + [[|Xen]] on Debian Lenny because that is a very important part of my setup. If you don't know or don't care about Xen you can simply skip this section. In short, I want to configure all my webserver farm nodes to boot xen dom0 kernels over iSCSI for my little [[|webhost company]]. The problem arises since the xen kernels prior to 2.6.32 does not populate ''/sys/firmware/ibft'' directory. ==== Solutions to XEN + iSCSI + Lenny + iBFT ==== There are 3 solutions to the problem of aquiering iSCSI data from the iBFT with a lenny XEN kernel in initrd: * Patch the kernel or use an alternate kernel to fix the iBFT + XEN problem. This patch looks promising: . Documentation for how to proceed with that is available here: and you might also want to read this: and this: * Use an utility that gets hold of the iBFT data without depending on the kernel sysfs directory ''/sys/firmware/ibft''. One way that has been tested and that works is to do that is to fetch an older version of the Open-iSCSI sourcecode from here: and compiling the old fwparam_ibft tool that is mentioned in the etch howto. This tool gets its iBFT data directly from memory without asking the kernel at all. This has been confirmed to work with an XEN dom-0 kernel: <code bash> #!/bin/sh set -e PREREQ="udev" prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac echo "" echo "Custom iSCSI Boot script for Debian Lenny starting..." echo "" modprobe -q iscsi_tcp modprobe -q ib_iser echo "Evaluating IBFT parameters" for i in $(fwparam_ibft); do #Strip of namespace V=$(echo $i | sed 's|network\([0-9]*\):|iSCSI_INITIATOR_\1_|' | sed 's|target\([0-9]*\):|iSCSI_TARGET_\1_|' | sed 's|iscsi-initiator\([0-9]*\):|iSCSI_INITIATOR_\1_|') echo " Exporting $V" export $V; done echo "Bringing up the interface used to boot" for i in $(ls /sys/class/net); do IFADDR=$(cat /sys/class/net/$i/address) if [ $IFADDR = $iSCSI_INITIATOR_0_HWADDR ]; then echo " Using $i with MAC $IFADDR" export iSCSI_INITIATOR_0_IF=$i fi done echo " Bringing up $iSCSI_INITIATOR_0_IF for iSCSI..." ip link set $iSCSI_INITIATOR_0_IF up echo " Setting up networking on $iSCSI_INITIATOR_0_IF..." ip addr add $iSCSI_INITIATOR_0_IPADDR/$iSCSI_INITIATOR_0_MASK brd + dev $iSCSI_INITIATOR_0_IF ip route add default via $iSCSI_INITIATOR_0_GATEWAY echo "Connecting to iSCSI target $iSCSI_TARGET_0_NAME on $iSCSI_TARGET_0_IPADDR..." iscsistart -i $iSCSI_INITIATOR_0_NAME -t $iSCSI_TARGET_0_NAME -g 1 -a $iSCSI_TARGET_0_IPADDR sleep 5 </code> * Fall back to the default behaviour in Lenny, namely to read the settings from configurations in ''/etc/'' and/or settings passed as kernel parameters.

QR Code
QR Code sanboot:debian_lenny_iscsi (generated for current page)