Previously, I've set up PXE booting of the Ubuntu LiveCDs by extracting the ISO to an NFS mount and copying vmlinuz.efi and initrd.gz from casper to the tftpboot directory with some iPXE scripting magic.
This worked flawlessly for 16.04, 16.10, and 17.10 (Artful).
With 18.04, I first find that vmlinuz.efi no longer exists in casper, but vmlinuz does. So, I try again with some name changing...
And now it still doesn't complete booting. I get the "emergency mode". Typing in 'journalctl -xb' (as suggested by the emergency mode prompt) and browsing leads to the following:
Unit sys-fs-fuse-connections has begun starting up. ubuntu systemd: Failed to set up mount unit: Device or resource busy ubuntu systemd: Failed to set up mount unit: Device or resource busy sys-kernel-config.mount: Mount process finished, but there is no mount. sys-kernel-config.mount: Failed with result 'protocol'. Failed to mount Kernel Configuration File System.
Script code used to extract ISO for PXE mount (TARGET set to image name, e.g. bionic):
set -e # Look for bionic.iso as the ISO I am going to extract. TARGET=invalid.iso [ -f bionic.iso ] && TARGET=bionic echo TARGET=$TARGET # Mount the ISO to the /tmp directory sudo rm -rf /var/nfs/$TARGET/* sudo rm -rf /tmp/$TARGET mkdir /tmp/$TARGET sudo mount -o loop ~/$TARGET.iso /tmp/$TARGET # Clear up the NFS directory where things will be copied (and copy them) sudo rm -rf /var/nfs/$TARGET sudo mkdir /var/nfs/$TARGET sudo rsync -avH /tmp/$TARGET/ /var/nfs/$TARGET # I've not had luck with iPXE changing filesystems to find # vmlinuz, vmlinuz.efi, or initrd.gz... so I copy those files # specifically to the tftp directory structure so the boot loader # can load them. sudo rm -rf /var/lib/tftpboot/$TARGET sudo mkdir /var/lib/tftpboot/$TARGET sudo cp /tmp/$TARGET/casper/vmlinuz* /var/lib/tftpboot/$TARGET/. sudo cp /tmp/$TARGET/casper/initrd.lz /var/lib/tftpboot/$TARGET/. # Cleanup: unmount the ISO and remove the temp directory sudo umount /tmp/$TARGET/ sudo rm -rf /tmp/$TARGET/ echo Done.