Re: iSCSI boot ... root?

From: John <jwd_at_FreeBSD.org>
Date: Wed, 18 Sep 2013 02:20:59 +0000
----- Daniel Nebdal's Original Message -----
> On Mon, Sep 16, 2013 at 5:45 PM, Kristjan Eentsalu <eentsalu_at_gmail.com> wrote:
> > On 16.09.2013 13:35, Edward Tomasz Napierała wrote:> Wiadomość napisana
> > przez Zaphod Beeblebrox <zbeeble_at_gmail.com> w dniu 16 wrz 2013, o godz.
> > 07:35:
> >>> Is it now possible to boot from iSCSI?  I'm not talking about an iSCSI
> >>> controller, but with
> >>>
> >>> pxe -> dhcp -> tftp (loads loader) -> (something) -> boot (mounts root
> > from
> >>> iSCSI)
> >>
> >> Not yet.  The iSCSI initiator requires iscsid(8) in order to work, and
> > you can't
> >> run it before mounting root.
> >>
> >> I think the proper way to do this would be by doing something similar to
> > Linux'
> >> initrd; i.e. booting from mdroot loaded by loader(8), run iscsid(8) from
> > there,
> >> setup iSCSI session, then mount the real root and pivot to it.  I'm not
> > sure if it's
> >> possible right now.
> >> _______________________________________________
> >
> > Kristjan
> 
> Oh wow, that is rather neat. I don't actually have any use for it, but
> now I'm kind of tempted to try and find one.

iBFT/iSCSI

Chain load ipxe from pxe then sanboot.

pxe -> dhcp -> ipxe -> sanboot iscsi:$san_server::$san_port::$san_iqn

# df -h
Filesystem          Size    Used   Avail Capacity  Mounted on
/dev/ufs/FBSDIBFT    48G     39G    5.1G    88%    /
devfs               1.0k    1.0k      0B   100%    /dev

# tunefs -p da0a
...
tunefs: volume label: (-L)                                 FBSDIBFT

# camcontrol inquiry da0
pass1: <FreeBSD XNH7PW1_iSCSI 0000> Fixed Direct Access SCSI-5 device 
pass1: Serial Number pool0-lun000001
pass1: 300.000MB/s transfers

Configure/install the system in a VM attached to an iSCSI disk (Vbox)

install isboot-0.2.6.tar / rebuild kernel / modules

loader.conf

#
# Enable possible iBFT boot
#
isboot_load="YES"

Not sure why isboot or similar iBFT support isn't added to the
tree already (unless it is and I missed it).

I setup the network entirely via dhcp. Allows the image to be
cloned copied and brought up with dhcp config changes only on
any hardware/vm.

However, don't dhcp the ibft configured interface. In rc.conf:

# dirty - but works
setdhcp () {
   iface="${1:-noiface}"; shift
   if [ -x /sbin/ifconfig -a -x /usr/bin/grep -a -x /usr/bin/awk ]; then
      if_addr=`/sbin/ifconfig ${iface:-none} | /usr/bin/grep 'inet [1-9]' | /usr/bin/awk '{ print $2; }'`
      if_ibft=`sysctl -n  hw.ibft.initiator_address`
      if [ "${if_addr:-noaddr}" = "${if_ibft:-noibft}" ]; then
         echo ""
      else
         echo "DHCP $*"
      fi
   else
      echo ""
   fi
}
ifconfig_bge0="`setdhcp bge0`"
ifconfig_bge1="`setdhcp bge1`"
ifconfig_mxge0="`setdhcp mxge0` mtu 1500 -lro -tso"
ifconfig_mxge1="`setdhcp mxge1` mtu 9000 -lro -tso"


Cheers,
John
Received on Wed Sep 18 2013 - 00:20:59 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:41 UTC