Opsætning af PXE server

Her opretter vi en selvstændig PXE server, så vi kan boote computere direkte fra netværket ved hjælp af systemrescueCD https://www.system-rescue.org/.

Udgangspunktet er en Ubuntuserver 20.04. Du kan installere den ud fra guiden her: https://www.vidas.dk/guides/Ubuntuserver_20.04_installation.html

Her blive der oprettet en PXE server, som du kan bruge til at boote systemrescueCD .

Serveren bliver flyttet til et nyt NAT-netværk (fra 192.167.87.0/24 → 10.0.2.0/24) i et virtualbox miljø. Det er for at undgå at der kører 2 DHCP klienter på netværket samtidig.

Forberedelse

Installer nødvendige pakker.

  • apache
  • dnsmasq
sudo apt update -y
sudo apt install apache2 dnsmasq -y

Opret mappe strukturer

sudo mkdir -p /tftp/sysresccd/boot/x86_64
sudo mkdir -p /tftp/pxelinux.cfg
sudo mkdir /var/www/html/sysresccd

Med denne kommando har du oprettet hele filtræet

tj@server1:~$ tree /tftp/ /tftp/ ├── pxelinux.cfg └── sysresccd └── boot └── x86_64 4 directories, 0 files

Hent systemrescueCD

wget -O sysresccd.iso https://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/8.05/systemrescue-8.05-amd64.iso/download

Monter filen

sudo mount sysresccd.iso /media

Kopier filer

sudo cp /media/sysresccd/boot/* /tftp/sysresccd/boot/
sudo cp /media/sysresccd/boot/x86_64/* /tftp/sysresccd/boot/x86_64/
sudo cp /media/sysresccd/* /tftp/sysresccd/
sudo cp -r /media/sysresccd/x86_64/ /var/www/html/sysresccd/ 

Hent syslinux

wget https://mirrors.edge.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.xz

Kør følgende kommandoer for at udpakke to vigtige filer ud - ldlinux.c32 og pxelinux.0:

tar -xvf syslinux-6.03.tar.xz syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 --strip-components 5
sudo tar -xvf syslinux-6.03.tar.xz syslinux-6.03/bios/core/pxelinux.0 --strip-components 3

Flyt filerne

sudo mv {ldlinux.c32,pxelinux.0} /tftp/

Tjek at de ligger korrekt

tj@server1:~$ ls -al /tftp/ total 184 drwxr-xr-x 4 root root 4096 Oct 26 06:24 . drwxr-xr-x 21 root root 4096 Oct 25 14:43 .. -rwxrwxr-x 1 tj tj 122308 Oct 6 2014 ldlinux.c32 -rw-rw-r-- 1 1026 1026 46909 Oct 6 2014 pxelinux.0 drwxr-xr-x 2 root root 4096 Oct 25 14:44 pxelinux.cfg drwxr-xr-x 3 root root 4096 Oct 25 14:59 syscrescd
Find pakker i tar arkiv

Find pakke: https://unix.stackexchange.com/questions/34008/find-a-file-within-a-tar-gz-archive

Udpak fil uden sti: https://stackoverflow.com/questions/14295771/how-do-i-extract-files-without-folder-structure-using-tar

Konfigurer PXE boot

Opret filen /tftp/pxelinux.cfg/default

sudo nano /tftp/pxelinux.cfg/default

Indsæt følgende

DEFAULT sysresccd LABEL sysresccd LINUX sysresccd/boot/x86_64/vmlinuz INITRD sysresccd/boot/intel_ucode.img,sysresccd/boot/amd_ucode.img,sysresccd/boot/x86_64/sysresccd.img APPEND archisobasedir=sysresccd ip=dhcp archiso_http_srv=http://10.0.2.10/ checksum SYSAPPEND 3

Konfigurer netværk

Her vil vi konfigurere dnsmasq og lave en ny IP-adresse hvis det er nødvendigt.

Skal du bruge serveren på dit fysiske netværk, skal du huske at deaktivere DHCP på din router, da din server fremover klarer det.

Konfigurer dnsmasq

Tjek først navnet på dit netværkskort

ls /sys/class/net
tj@server1:~$ ls /sys/class/net enp0s3 Io
sudo nano /etc/dnsmasq.conf
#Interface information #--use ip addr to see the name of the interface on your system interface=enp0s3,lo bind-interfaces domain=server1 #-------------------------- #DHCP Settings #-------------------------- #-- Set dhcp scope dhcp-range=10.0.2.50,10.0.2.200,255.255.255.0,2h #-- Set gateway option dhcp-option=3,10.0.2.1 #-- Set DNS server option dhcp-option=6,10.0.2.10 #-- dns Forwarder info server=8.8.8.8 #----------------------# # Specify TFTP Options # #----------------------# #--location of the pxeboot file dhcp-boot=pxelinux.0,pxeserver,10.0.2.10 #--enable tftp service enable-tftp #-- Root folder for tptp tftp-root=/tftp

Genstart dnsmasq

Sæt fast IP

Du ændrer serverens IP-adresse ved at konfigurere følgende fil:

sudo nano /etc/netplan/00-installer-config.yaml

Herunder er serveren sat til IP-adressen: 10.0.2.10/24.

# This is the network config written by 'subiquity' network: ethernets: enp0s3: addresses: - 10.0.2.10/24 gateway4: 10.0.2.1 nameservers: addresses: - 8.8.8.8 - 8.8.4.4 version: 2

Gem filen og genstart netplan.

sudo netplan apply

Genstart dnsmasq

sudo systemctl restart dnsmasq

Tjek opsætning med

sudo systemctl status dnsmasq
tj@server1:~$ systemctl status dnsmasq.service dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-10-24 15:13:41 UTC; 4min 16s ago Process: 2308 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, status=0/SUCCESS) Process: 2309 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS) Process: 2331 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/SUCCESS) Main PID: 2330 (dnsmasq) Tasks: 1 (limit: 4617) Memory: 992.0K CGroup: /system.slice/dnsmasq.service └─2330 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dp> Oct 24 15:13:41 server1 dnsmasq[2330]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conn> Oct 24 15:13:41 server1 dnsmasq-dhcp[2330]: DHCP, IP range 10.0.2.50 -- 10.0.2.200, lease time 2h Oct 24 15:13:41 server1 dnsmasq-dhcp[2330]: DHCP, sockets bound exclusively to interface enp0s3 Oct 24 15:13:41 server1 dnsmasq-tftp[2330]: TFTP root is /tftp Oct 24 15:13:41 server1 dnsmasq[2330]: using nameserver 8.8.8.8#53 Oct 24 15:13:41 server1 dnsmasq[2330]: reading /etc/resolv.conf Oct 24 15:13:41 server1 dnsmasq[2330]: using nameserver 8.8.8.8#53 Oct 24 15:13:41 server1 dnsmasq[2330]: using nameserver 127.0.0.53#53 Oct 24 15:13:41 server1 dnsmasq[2330]: read /etc/hosts - 7 addresses Oct 24 15:13:41 server1 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server. lines 1-22/22 (END)

Mere læsning:

https://c-nergy.be/blog/?p=16353

https://www.system-rescue.org/manual/PXE_network_booting/