Preseeded (unattended) netboot UEFI Debian installation


  • With the assistance of @george1421 in this thread, I arrived at the following process.

    Features

    • Unattended installation, preseeded (using a preseed.cfg)
    • Completely hands-off, after selecting the appropriate FOG menu item on PXE boot
    • Based on Debian’s netboot - no need to download the Debian ISO
    • Uses HTTP only (though you could swap in NFS, TFTP, etc., if you prefer)
    • The three files required for the installation can reside in a single location on the FOG server
    • Process can be generalised to other versions of Debian and other OSes (though you’d need to work out the Kickstart part for RedHat distros, etc.)
    • Works with UEFI - I repeat, works with UEFI!!!

    Process

    On the FOG server, Unpack netboot.tar.gz to a folder under the Apache root, e.g.:

    mkdir -p /home/fogproject/www/os/debian/10.7N
    cd /home/fogproject/www/os/debian/10.7N
    wget http://ftp.nl.debian.org/debian/dists/buster/main/installer-amd64/current/images/netboot/netboot.tar.gz
    tar zxf netboot.tar.gz
    rm netboot.tar.gz
    chown -R apache:apache /home/fogproject/www/os/debian/10.7N
    

    Note that I relocated my www root to /home/fogproject. Yours may still be at /var/www. or similar.

    The above unpacks:

    debian-installer/
    pxelinux.0@
    pxelinux.cfg@
    version.info
    

    We only really need two files, which are in the debian-installer directory: linux and initrd.gz. Still, I leave this folder structure as it is.

    Place your preseed file (normally preseed.cfg) in the same directory as the netboot files above (/home/fogproject/www/os/debian/10.7N in my example). The content of your preseed file is entirely up to you. See the official example, to get started.

    Create a FOG menu entry as follows:

    Menu item: os.Debian.10.7.auto.UEFI
    Description: Unattended Debian 10.7 installation (UEFI)
    Parameters:

    kernel http://${fog-ip}/os/debian/10.7N/debian-installer/amd64/linux auto=true url=http://${fog-ip}/os/debian/10.7N/preseed.cfg interface=auto hostname=debian-10 domain=local initrd=initrd.gz vga=788 noprompt quiet
    imgfetch http://${fog-ip}/os/debian/10.7N/debian-installer/amd64/initrd.gz
    boot || goto MENU
    

    Menu Show with: All hosts

    Notes

    If you need an option for manual installation, simply drop the auto parameters from the kernel line:

    kernel http://${fog-ip}/os/debian/10.7N/debian-installer/amd64/linux initrd=initrd.gz vga=788 quiet
    

    The clue to getting this working was to include initrd=initrd.gz in the kernel line and then use imgfetch to make initrd.gz available.

331
Online

8.1k
Users

15.0k
Topics

141.4k
Posts