iPXE discussion forum
Need some help NFS booting a mounted Ubuntu 16.04 mini.iso (both UEFI and BIOS) - Printable Version

+- iPXE discussion forum (https://forum.ipxe.org)
+-- Forum: iPXE user forums (/forumdisplay.php?fid=1)
+--- Forum: General (/forumdisplay.php?fid=2)
+--- Thread: Need some help NFS booting a mounted Ubuntu 16.04 mini.iso (both UEFI and BIOS) (/showthread.php?tid=8078)



Need some help NFS booting a mounted Ubuntu 16.04 mini.iso (both UEFI and BIOS) - dljsjr - 2016-05-23 21:43

Hey there,

I'm completely new to network booting/iPXE, etc., and I'm having some problems getting a network boot setup working. I'm hoping somebody here can help.

Here's a quick overview of my setup:

1. I have configured a DHCP server to instruct chainloading of either ipxe.efi or undionly.kpxe depending on whether or not the boot client is UEFI or BIOS

2. The DHCP server sends the client to a TFTP server running on a QNAP TurboNAS to serve up the correct file

3. The same QNAP TurboNAS has the mini.iso for Ubuntu 16.04 mounted with read-only guest permissions and available via NFS

4. I have built iPXE w/ DOWNLOAD_PROTO_NFS enabled

Up to here is where things seem to fall apart; I Ctrl+B in to the command line to start playing with stuff but I can't seem to get the kernel to load.

I know that NFS is working, because I can get to files such as the initrd without issue:

Code:
dhcp
initrd nfs://guest@<server ip>/Ubuntu1604Mini/initrd.gz

Works just fine. But when I try to get the kernel to load, I get Exec format error. From cursory Googling I'm going to assume that the kernel image doesn't have the EFI stub compiled properly but I'm not totally sure. I have tried several different commands:

Code:
kernel nfs://guest@<server ip>/Ubuntu1604Mini/linux #doesn't work
kernel nfs://guest@<server ip>/Ubuntu1604Mini/linux initrd=initrd.gz #doesn't work
kernel nfs://guest@<server ip>/Ubuntu1604Mini/linux root=/dev/nfs nfsroot=guest@<server ip>:/Ubuntu1604Mini initrd=initrd.gz #doesn't work
kernel nfs://guest@<server ip>/Ubuntu1604Mini/linux root=/dev/nfs netboot=nfs nfsroot=guest@<server ip>:/Ubuntu1604Mini initrd=initrd.gz #doesn't work

Is this an EFI issue, or am I just missing something monumentally obvious? Any help on this would be incredibly appreciated.


RE: Need some help NFS booting a mounted Ubuntu 16.04 mini.iso (both UEFI and BIOS) - robinsmidsrod - 2016-11-02 11:50

Have you verified that the same setup works with legacy BIOS? Is this an UEFI-specific issue?

Can you show the entire script with all the commands involved for booting this menu entry? Alternatively use DEBUG=script and "imgstat" right before booting to show us a screenshot with the issue.


RE: Need some help NFS booting a mounted Ubuntu 16.04 mini.iso (both UEFI and BIOS) - MultimediaMan - 2016-11-02 15:31

"Doesn't work" doesn't work: what is displayed? Screen Grabs are very useful. I built and run a large NFS boot farm on UEFI hardware.

You can get some useful debugging info without resorting to a full debug build by changing some of your scripts:

from this:

Code:
initrd nfs://guest@<server ip>/Ubuntu1604Mini/initrd.gz
kernel nfs://guest@<server ip>/Ubuntu1604Mini/linux

to this:

Code:
initrd nfs://guest@<server ip>/Ubuntu1604Mini/initrd.gz ||
kernel nfs://guest@<server ip>/Ubuntu1604Mini/linux ||

Also which version of Ubuntu are you attempting to run? i386, x86_64?


RE: Need some help NFS booting a mounted Ubuntu 16.04 mini.iso (both UEFI and BIOS) - maggreg - 2016-11-02 18:06

This config working for me (desktop live), efi and legacy, 16.04 and 16.10:

Code:
:ubuntu
set args1 vga=791 boot=casper toram
set args2 netboot=nfs nfsroot=${next-server}:/data/tftpboot/ubuntu root=/dev/nfs
kernel nfs://${next-server}/data/tftpboot/ubuntu/casper/vmlinuz.efi ||
initrd nfs://${next-server}/data/tftpboot/ubuntu/casper/initrd.lz ||
imgargs vmlinuz.efi initrd=initrd.lz ${args1} ${args2}
imgstat
boot || read void
goto start

And mini:
Code:
:ubuntumini
kernel nfs://${next-server}/data/tftpboot/ubuntumini/linux ||
initrd nfs://${next-server}/data/tftpboot/ubuntumini/initrd.gz ||
imgargs linux initrd=initrd.gz vga=791 toram
imgstat
boot || read void
goto start

My "exports" for this share:
Code:
"/data/tftpboot" *(insecure,insecure_locks,root_squash,anongid=99,anonuid=99,no_subtree_check,rw,​async)

pzdr