Hi all,
First newbie post.
I’ve managed to automate the installation of Debian 10 using FOG and the netboot installer on a UEFI system. I haven’t found complete documentation on this, so here are some notes on how I achieved this. I would love it if this process could be improved on. Is there a “FOGgier” way to do some of the hackier things?
Disclaimer: I have only been using FOG for a few days!
-
Unpack netboot.tar.gz into the TFTP server root (/tftpboot).
-
Create a symbolic (must be relative, not absolute) to the UEFI kernel:
cd /tftpboot
ln -s debian-installer/amd64/grubx64.efi .
- Edit
/tftpboot/debian-installer/amd64/grub/grub.cfg
, adding the following before the first menuentry
block:
set default="autoinstall"
set timeout=5
menuentry "Fully automated installation" --id autoinstall {
set background_color=black
linux /debian-installer/amd64/linux auto=true url=http://${pxe_default_server}/os/autoinstall/debian-10/preseed.cfg hostname=debian-10 domain=local interface=auto vga=788 noprompt --- quiet
initrd /debian-installer/amd64/initrd.gz
}
-
Create a preseed file and place it on the FOG webserver at /var/www/html/os/autoinstall/debian-10/preseed.cfg
. (Double-check that path - I relocated my os/
directory and forget where it was originally! Think that’s right though.)
-
Create a new iPXE Menu Entry:
Menu item: os.Debian.10.7.UEFI
Description: Install Debian 10.7 (UEFI)
Parameters:
kernel tftp://${fog-ip}/grubx64.efi
boot || goto MENU
Menu Show with: All hosts
That’s all, I think. This is PXE booting for me perfectly. When I choose the FOG menu entry “Install Debian 10.7 (UEFI)” it loads the kernel/grub menu, waits 5 seconds and then performs a completely unattended installation (and finally reboots).
What could be improved
I’d rather not place the files exactly where there are in the /tftpboot folder. That approach is asking for trouble - one day I overwrite them with some other distro’s files… But grubx64.efi
seems to have some hard-coded files it looks for, so I’m not sure where else to place them. Possibly there are some parameters i can use on the kernel
line? Not sure.
Also, how might this approach be generalised for other operating systems?
Suggestions welcome!