• Has anyone gotten a subset of this: https://askubuntu.com/questions/1235723/automated-20-04-server-installation-using-pxe-and-live-server-image working with FOG yet? I’m currently only trying to tackle making it liveboot. I haven’t tested an autoinstall yet, since that is new to me with 20.04, I’m used to preseeds.

    I get as far as an initramfs shell telling me “Unable to find a live file system on the network”

    my initial parameters:
    kernel tftp:///${fog-ip}/os/ubuntu/20.04/casper/vmlinuz
    initrd tftp:///${fog-ip}/os/ubuntu/20.04/casper/initrd
    imgargs vmlinuz initrd=initrd ip=dhcp root=/dev/nfs boot=casper netboot=nfs nfsroot=/${fog-ip}:/images/os/ubuntu/20.04/ locale=en_US.UTF-8 quiet splash ip=dhcp rw
    boot || goto MENU

    any help is greatly appreciated!

    I updated my paramaters to closely match what was listed in the above link and got it to work to boot to a live disk.

    kernel tftp://${fog-ip}/os/ubuntu/20.04/casper/vmlinuz
    initrd tftp://${fog-ip}/os/ubuntu/20.04/casper/initrd
    imgargs vmlinuz initrd=initrd ip=dhcp url=http://${fog-ip}/os/20.04/ubuntu-20.04-live-server-amd64.iso locale=en_US.UTF-8 quiet splash ip=dhcp rw
    boot || goto MENU

  • Moderator

    @fogman4 The problem is that neither iPXE or FOS Linux are signed. That is where the problem comes in.

    I can PXE boot a signed kernel using GRUB. with the shimx64.efi and grubx64.efi signed. Then grub loading the kernel. But that won’t help with doing anything with FOG.

  • @george1421 Thank you very much for those suggestions. I’ll dig and share a way to do it.

    My purpose is to do a Fully automated ubuntu 20.04.2 Desktop (UEFI) installation via FOG’s iPXE.

    I got more than 100 Workstations and need to make it viable with an Ansible post-installation.

    In the first time i wanted to do it with preseed but autoinstall seems to be the new shit so i’ll try it out.

    To do Secure boot with Ubuntu 20.04 you’re right we need the signed kernels.

    I need to RTM and do some tests.

    Don’t you think chainloading signed grub via iPXE in FOG could be a more efficient and easier way to do tasks centralized over all grub’s options ?

    For example those files (chainloaded) could boot via GRUB2 a secure boot installation for example :




  • Moderator

    @fogman4 Very close to what you are asking https://forums.fogproject.org/topic/15129/preseeded-unattended-netboot-uefi-debian-installation Since ubuntu is based on debian the logic should be pretty close.

    It seems url= is only for http and ftp am i wrong ?

    You are correct

    Is there a way to chainload grub2 in fog ? It could be the easiest.

    Yes you can, but to what end?

    To leave secure boot enabled? If yes, that will work until you attempt to run a kernel that has not been signed then booting will stop.

  • Hi .

    I’m wondering is there anyone succeeded in fully automated iPXE ubuntu 20.04 install via fog.

    I tried many parameters with no success.

    It seems url= is only for http and ftp am i wrong ?

    By the way i managed to boot Fedora workstations , Debian via a regular pxe with grub chainloaded in EFI Secure boot with the shim.signed.

    Is there a way to chainload grub2 in fog ? It could be the easiest.

  • @pacman366 This is great, thank you! I had some other projects to work on, so I hadn’t touched this in a while. Where did you get your vmlinuz and initrd files from? Did you extract from the iso?

  • @londonfog I’ve also gotten autoinstall to work with the following imgargs

    imgargs vmlinuz initrd=initrd root=/dev/ram0 ramdisk_size=1800000 ip=dhcp url= net.ifnames=0 autoinstall ds=nocloud-net;s= ro
 is my fog servers ip address, emphasis on this string

    autoinstall ds=nocloud-net;s=

    That part of the sting tells subiquity were to find the user-data and the meta-data files. has the yaml containing all the autoinstall parameters, is just a blank file. Both files need to exist in order for subiquity to perform an autoinstall. subiquity is also extremely strict about the formatting of the yaml within the user-data file. I found this out when attempting to copy/paste another user-data example from the internet only to crash the live installer. I had to hand write all the parameters in user-data in order for it all to work. this is what my user-data file looks like.

        - storage
        geoip: true
        preserve_sources_list: false
        - arches: [amd64, i386]
          uri: http://us.archive.ubuntu.com/ubuntu
        - arches: [default]
          uri: http://ports.ubuntu.com/ubuntu-ports
      identity: {hostname: 69changeme69, password:  PASSWORD HASH,
        realname: companyadmin, username: companyadmin}
      keyboard: {layout: us, toggle: null, variant: ''}
      locale: C
          eth0: {dhcp4: true, dhcp-identifier: mac}
        version: 2
        allow-pw: true
        authorized-keys: []
        install-server: true
        - ubuntu-desktop
        - landscape-client
        - openjdk-8-jdk
        - libpwquality-tools
        - wpasupplicant
        - python
        - python-dbus
        - python-argparse
        - | cat <<EOT >> /target/lib/systemd/system/postinstall.service
        - systemctl daemon-reload
        - wget -P /target/opt/
        - chmod +x /target/opt/postinstall.sh
        - echo 'companyadmin ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/companyadmin
      version: 1

    This installs mostly automatic. I have mine set to prompt for partitioning. Hope this helps

  • Moderator

    @pacman366 said in 20.04 autoinstall:


    I haven’t had a chance to work on this yet. But I did help someone get a HP server update iso to pxe boot. It was a problem but we got it to work via pxe to nfs. The point is that url= reminded me of that experience. In that case we had to provide the uri in a format similar to this url=nfs://${fog-ip}/images/os/ubuntu/20.04/ it kind of replaced the url=http:// protocol with the nfs uri url=nfs:// I don’t know if that is what ubuntu did here or not.

  • @pacman366 this is pretty similar to how I’ve gotten it to “work” Have you tried setting up the autoinstall method? I just started to attempt this today, and no luck so far.

  • I wasn’t able to get 20.04 to pxe boot using the traditional nfs methods outlined in these forums. I did get it booting with the new 20.04 approach. I copied ubuntu-20.04-live-server-amd64.iso to /var/www, mounted the iso, copied the kernel and initrd from the iso to /tftpboot/os/ubuntu/Server20.04/ and create the following menu entry using these parameters

    kernel tftp://${fog-ip}/os/ubuntu/Server20.04/vmlinuz
    initrd tftp://${fog-ip}/os/ubuntu/Server20.04/initrd
    imgargs vmlinuz initrd=initrd root=/dev/ram0 ramdisk_size=1800000 ip=dhcp url= ro

    One note when using this method, it only works on systems with >= 4G ram because it loads the whole iso into ram. Otherwise it works pretty well for me. Desktop and Mint variants of 20.04 also boot using this method.

  • @george1421 said in 20.04 autoinstall:


    I wonder if it will be different though, maybe not initially, but soon. See below:

    http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/ points to a legacy version. And if you click it, you go here: http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/ to which it mentions this will no longer be supported in the future and mentions the new version stating: now supports all Server hardware platforms, unattended autoinstall, offline installation, network-gapped install, PXE and HTTP boot, RAID, LVM, LUKS, among other things.

  • Moderator

    @londonfog I haven’t tried 20.04 yet, but here is the solution for 19.10. I don’t expect 20.04 to be to much different.


    The NFS route is what you want. Also be aware that you need the netboot version of the kernel and initrd and not the ones off the iso image.