lmn-client/doc/install_pxe.md
2025-04-09 16:08:46 +02:00

4.5 KiB

Installation via PXE/Grub

  • Using DigitalSouveraeneSchule repository and LinuxMuster.Net tftp
    Simplest solution. Playbook and default inventory from DigitalSouveraeneSchule codeberg repository.
    Linux kernel and initial Ramdisk from debian repository.
    Client must have access to the internet (noproxy group).
  • Using your own repository and LinuxMuster.Net tftp
    Here you can use your own inventory and make many custom settings.
    Linux kernel and initial Ramdisk from debian repository.
    Client must have access to the internet (noproxy group).
  • Using your own repository and livebox tftp
    Additional kernel and Ramdisk from your own infrastrukture.
    Client does not need direct internet access.

Using codeberg repository and LinuxMuster.Net tftp

Requirements / firewall settings

The computer on which the linuxclient is to be installed must have access to the Internet (add host to noproxy group)

The following resources are downloaded from the internet:

  • The repository is provided by codeberg.org
  • the Linux kernel, the initial ramdisk and the installation files are loaded from debian.org.
  • mscorefonts from Microsoft

Modification LinuxMuster.Net server

Create grub config for device group lmnclient on your schools server:

/srv/linbo/boot/grub/lmnclient.cfg

# ### NOT managed by linuxmuster.net ###

# edit to your needs
set default=1

menuentry 'Installer Debian bookworm (amd64) + preseed + ansible inventory' {
   echo -n "Enter domain join password: "
   read adpw
   set vaultpw="dummy"
   # echo -n "Enter vault password"
   # read vaultpw
   linux   (http,ftp.debian.org)/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux auto=true priority=high \
           url=https://codeberg.org/DigitalSouveraeneSchule/lmn-client/raw/branch/main/misc/preseed.cfg interface=auto \
           playbook=lmn-client.yml adpw="${adpw}" vaultpw="${vaultpw}" ---
   initrd  (http,ftp.debian.org)/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
}

Insert host in devices.csv and set device group to lmnclient:

devices.csv

classroom;mypc01;lmnclient;F2:81:6B:C9:E3:EF;10.0.5.51;;;;classroom-studentcomputer;;1;;;;;

On client PC

  • In BIOS-Setting: Set boot to UEFI
  • Start via PXE
  • When asked for domain-join-password: Enter password of global-admin
  • confirm hostname and domain (you will be asked in network setup)
  • ... Get a cup of coffee ... wait until reboot ... login (Logging in may take a few minutes after installation)

Using your own repository and LinuxMuster.Net tftp

If you fork the lmn-client repository, you can customize the preseeding and inventory to your needs. Use the instructions in the previous section and customize the repository in /srv/linbo/boot/grub/lmnclient.cfg.

It makes sense to encrypt your inventory via ansible-vault. When using encrypted inventories you have to provide the vault password by commenting in the two lines in the /srv/linbo/boot/grub/lmnclient.cfg.

Using your own repository and livebox tftp

The next improvement will be to use your own livebox with following functionalities:

  • Providing linux kernel and initial ramdisk for installer
  • Can be used as cache for debian packages (aptcacher)
  • Can provide mscorefonts and libdvdcss (multimedia codecs)
  • Can be used to boot live systems (netboot) via pxe

Installing the livebox server

  • Install debian VM and configure network
  • Install additional packages: ansible
    sudo apt install ansible
  • Run livebox playbook
    ansible-pull -i localhost, --url=https://salsa.debian.org/andi/debian-lan-ansible.git -C master livebox.yml
  • Set DNS entry for your new livebox server

Modification LinuxMuster.Net server

The file /srv/linbo/boot/grub/lmnclient.cfg might look like this:

# ### NOT managed by linuxmuster.net ###

# edit to your needs
set default=1

menuentry 'Installer Debian bookworm (amd64) + preseed + ansible inventory' {
   echo -n "Enter domain join password: "
   read adpw
   set vaultpw="dummy"
   # echo -n "Enter vault password"
   # read vaultpw
   linux   (http,livebox.example.com)/d-i/n-pkg/images/12/amd64/text/debian-installer/amd64/linux auto=true priority=high \
           url=https://codeberg.org/MySchool/lmn-client/raw/branch/main/misc/preseed-myschool.cfg interface=auto \
           playbook=lmn-client.yml adpw="${adpw}" vaultpw="${vaultpw}" ---
   initrd  (http,livebox.example.com)/d-i/n-pkg/images/12/amd64/text/debian-installer/amd64/initrd.gz
}