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
andinitrd.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 thekernel
line and then useimgfetch
to makeinitrd.gz
available. - Unattended installation, preseeded (using a