[Grml] network boot with nfs4 root

Joerg Dorchain joerg at dorchain.net
Wed Feb 6 11:55:05 CET 2013


On Mon, Jan 21, 2013 at 07:59:58PM +0100, Michael Prokop wrote:
> AFAIK klibc still doesn't support nfs v4:
> 
>   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=409271
>   http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=409272
> 
> I'm not sure whether there are reasonable ways to work around klibc,
> trying dracut instead of initramfs-tools might be a good start as
> booting from nfsv4 works there (though I've no idea yet what needs
> to get adjusted so it works for our live boot mode). I'm definitely
> interested to see nfs4 working for netboot out-of-the-box on Grml
> too, so if there's something where we could help please let us know.

For this, main point is the used tools must understand nfs4.

> 
> > Also, as I am using the grml96 iso image via a loopback mount, I
> > would greatly appreciate if I could use the bootmenu for isolinux
> > also for pxelinux. To me it seems it is mainly a matter of
> > pathnames (and maybe symlinks) to get it to work with  a statement like
> 
> > LABEL grml-from-iso
> >    CONFIG <iso-root>/boot/isolinux/<common.cfg>
> >    APPEND <<iso-root>
> 
> > from pxelinux.cfg
> 
> Hm, a symlink pxelinux.cfg pointing to {isolinux,syslinux}.cfg isn't
> enough, right?

Yes. The main point is how the different {sys|iso|pxe}linux
lookup paths.

isolinux looks in boot/isolinux/ and /. The various include config files
in boot/isolinux/ make use of that path, whereas theextras use an
absolute path.
pxelinux however has all paths relative it itself.
An option would be to use absolute paths everywhere, and an
additional pxelinux.cfg at the top level of the iso, contai a
default file including stuff from boot/isolinux.

> Any chance you could provide a working pxelinux.cfg
> so we could work on an according template for grml-live (see
> https://github.com/grml/grml-live/tree/master/templates/boot/isolinux )

It does not (yet) completely work, I have no direct idea how to
make autodetection of the live filesystem via network work other
than giving an explicit nfsroot option, but see attachment.
Maybe iPXE with recent nfs support might also help

So, the setup is:
- fstab:
/usr/lib/syslinux /nfsexports/tftp/syslinux none auto,rbind      0 0
/export/sw/iso/grml/grml96-full_2012.05.iso /nfsexports/tftp/grml   auto auto,ro,loop    0       0
# ls -l /nfsexports/tftp
total 15
dr-xr-xr-x 1 root root  2048 May 28  2012 grml
lrwxrwxrwx 1 root root    24 Jan 18 23:43 memtest -> grml/boot/addons/memtest
lrwxrwxrwx 1 root root    17 Jan 18 21:36 menu.c32 -> syslinux/menu.c32
lrwxrwxrwx 1 root root    21 Jan 22 23:19 pxechain.com -> syslinux/pxechain.com
lrwxrwxrwx 1 root root    19 Jan 18 21:25 pxelinux.0 -> syslinux/pxelinux.0
drwxr-xr-x 3 root root  1024 Jan 22 23:36 pxelinux.cfg
drwxr-xr-x 5 root root 12288 Dec 20 17:30 syslinux
# ls -l /nfsexports/tftp/pxelinux.cfg/
total 4
-rw-r--r-- 1 root root  448 Jan 22 23:36 default
drwxr-xr-x 3 root root 3072 Jan 23 00:20 grmlboot
- default
LABEL grml
        kernel pxechain.com
	append grmlboot/pxelinux.0
# ls -l /nfsexports/tftp/pxelinux.cfg/grmlboot/
total 3
lrwxrwxrwx 1 root root   39 Jan 23 00:11 additional.cfg -> ../../grml/boot/isolinux/additional.cfg
lrwxrwxrwx 1 root root   43 Jan 23 00:11 addon_10_grub2.cfg -> ../../grml/boot/isolinux/addon_10_grub2.cfg
lrwxrwxrwx 1 root root   46 Jan 23 00:11 addon_20_allinone.cfg -> ../../grml/boot/isolinux/addon_20_allinone.cfg
lrwxrwxrwx 1 root root   42 Jan 23 00:11 addon_25_gxpe.cfg -> ../../grml/boot/isolinux/addon_25_gxpe.cfg
lrwxrwxrwx 1 root root   41 Jan 23 00:11 addon_30_dos.cfg -> ../../grml/boot/isolinux/addon_30_dos.cfg
lrwxrwxrwx 1 root root   41 Jan 23 00:11 addon_35_bsd.cfg -> ../../grml/boot/isolinux/addon_35_bsd.cfg
lrwxrwxrwx 1 root root   45 Jan 23 00:11 addon_40_memtest.cfg -> ../../grml/boot/isolinux/addon_40_memtest.cfg
lrwxrwxrwx 1 root root   41 Jan 23 00:11 addon_45_hdt.cfg -> ../../grml/boot/isolinux/addon_45_hdt.cfg
lrwxrwxrwx 1 root root   35 Jan 23 00:11 addons.cfg -> ../../grml/boot/isolinux/addons.cfg
lrwxrwxrwx 1 root root   40 Jan 23 00:11 addons_list.cfg -> ../../grml/boot/isolinux/addons_list.cfg
lrwxrwxrwx 1 root root   15 Jan 23 00:20 boot -> ../../grml/boot
lrwxrwxrwx 1 root root   33 Jan 23 00:11 boot.cat -> ../../grml/boot/isolinux/boot.cat
lrwxrwxrwx 1 root root   37 Jan 23 00:11 defaults.cfg -> ../../grml/boot/isolinux/defaults.cfg
lrwxrwxrwx 1 root root   35 Jan 23 00:11 distri.cfg -> ../../grml/boot/isolinux/distri.cfg
lrwxrwxrwx 1 root root   27 Jan 23 00:11 f1 -> ../../grml/boot/isolinux/f1
lrwxrwxrwx 1 root root   28 Jan 23 00:11 f10 -> ../../grml/boot/isolinux/f10
lrwxrwxrwx 1 root root   27 Jan 23 00:11 f2 -> ../../grml/boot/isolinux/f2
lrwxrwxrwx 1 root root   27 Jan 23 00:11 f3 -> ../../grml/boot/isolinux/f3
lrwxrwxrwx 1 root root   27 Jan 23 00:11 f4 -> ../../grml/boot/isolinux/f4
lrwxrwxrwx 1 root root   27 Jan 23 00:11 f5 -> ../../grml/boot/isolinux/f5
lrwxrwxrwx 1 root root   27 Jan 23 00:11 f6 -> ../../grml/boot/isolinux/f6
lrwxrwxrwx 1 root root   27 Jan 23 00:11 f7 -> ../../grml/boot/isolinux/f7
lrwxrwxrwx 1 root root   27 Jan 23 00:11 f8 -> ../../grml/boot/isolinux/f8
lrwxrwxrwx 1 root root   33 Jan 23 00:11 grml.png -> ../../grml/boot/isolinux/grml.png
lrwxrwxrwx 1 root root   48 Jan 23 00:11 grml32_full_default.cfg -> ../../grml/boot/isolinux/grml32_full_default.cfg
lrwxrwxrwx 1 root root   45 Jan 23 00:11 grml32_full_grml.cfg -> ../../grml/boot/isolinux/grml32_full_grml.cfg
lrwxrwxrwx 1 root root   47 Jan 23 00:11 grml32_full_hidden.cfg -> ../../grml/boot/isolinux/grml32_full_hidden.cfg
lrwxrwxrwx 1 root root   48 Jan 23 00:11 grml64_full_default.cfg -> ../../grml/boot/isolinux/grml64_full_default.cfg
lrwxrwxrwx 1 root root   45 Jan 23 00:11 grml64_full_grml.cfg -> ../../grml/boot/isolinux/grml64_full_grml.cfg
lrwxrwxrwx 1 root root   37 Jan 23 00:11 grmlmain.cfg -> ../../grml/boot/isolinux/grmlmain.cfg
lrwxrwxrwx 1 root root   31 Jan 23 00:11 hd.cfg -> ../../grml/boot/isolinux/hd.cfg
lrwxrwxrwx 1 root root   35 Jan 23 00:11 hidden.cfg -> ../../grml/boot/isolinux/hidden.cfg
lrwxrwxrwx 1 root root   36 Jan 23 00:11 hiddens.cfg -> ../../grml/boot/isolinux/hiddens.cfg
lrwxrwxrwx 1 root root   36 Jan 23 00:11 ifcpu64.c32 -> ../../grml/boot/isolinux/ifcpu64.c32
lrwxrwxrwx 1 root root   37 Jan 23 00:11 isolinux.bin -> ../../grml/boot/isolinux/isolinux.bin
lrwxrwxrwx 1 root root   37 Jan 23 00:11 isolinux.cfg -> ../../grml/boot/isolinux/isolinux.cfg
lrwxrwxrwx 1 root root   38 Jan 23 00:11 isoprompt.cfg -> ../../grml/boot/isolinux/isoprompt.cfg
lrwxrwxrwx 1 root root   32 Jan 23 00:11 logo.16 -> ../../grml/boot/isolinux/logo.16
lrwxrwxrwx 1 root root   47 Jan 23 00:11 option_grml32_full.cfg -> ../../grml/boot/isolinux/option_grml32_full.cfg
lrwxrwxrwx 1 root root   47 Jan 23 00:11 option_grml64_full.cfg -> ../../grml/boot/isolinux/option_grml64_full.cfg
lrwxrwxrwx 1 root root   36 Jan 23 00:11 options.cfg -> ../../grml/boot/isolinux/options.cfg
lrwxrwxrwx 1 root root   35 Jan 23 00:11 prompt.cfg -> ../../grml/boot/isolinux/prompt.cfg
lrwxrwxrwx 1 root root   39 Jan 23 00:11 promptname.cfg -> ../../grml/boot/isolinux/promptname.cfg
lrwxrwxrwx 1 root root   16 Jan 22 23:37 pxelinux.0 -> ../../pxelinux.0
drwxr-xr-x 2 root root 3072 Jan 23 13:16 pxelinux.cfg
lrwxrwxrwx 1 root root   37 Jan 23 00:11 syslinux.cfg -> ../../grml/boot/isolinux/syslinux.cfg
lrwxrwxrwx 1 root root   37 Jan 23 00:11 vesamenu.c32 -> ../../grml/boot/isolinux/vesamenu.c32
lrwxrwxrwx 1 root root   37 Jan 23 00:11 vesamenu.cfg -> ../../grml/boot/isolinux/vesamenu.cfg
# ls -l /nfsexports/tftp/pxelinux.cfg/grmlboot/pxelinux.cfg/
total 1
-rw-r--r-- 1 root root 117 Jan 23 13:16 default
# more /nfsexports/tftp/pxelinux.cfg/grmlboot/pxelinux.cfg/default
DEFAULT grml
APPEND root=/dev/nfs rw nfsroot=172.17.2.1:/nfsexports/tftp/grml noeject
LABEL grml
config vesamenu.cfg

Bye,

Joerg
-------------- next part --------------
A non-text attachment was scrubbed...
Name: grmlboot.tar.gz
Type: application/octet-stream
Size: 1176 bytes
Desc: not available
URL: <http://ml.grml.org/pipermail/grml/attachments/20130206/9fab4f6c/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 267 bytes
Desc: Digital signature
URL: <http://ml.grml.org/pipermail/grml/attachments/20130206/9fab4f6c/attachment.pgp>


More information about the Grml mailing list