FreeBSD 9 via PXE-Boot und bsdinstall installieren

Mit wenigen Schritten lässt sich ein neuer Server via PXE-Boot aufsetzen.

Benötigt wird ein Server, auf dem die Dienste DHCP, TFTP und NFS laufen. Damit kann ein bootfähiges ISO-Image installiert werden. Folgende Schritte wurden unter FreeBSD 9/8 zur Installation eines FreeBSD 9 durchgeführt.

1. FreeBSD bootonly

Zunächst die zu installierende Version auf dem Server bereitstellen, z.B. mit folgenden Schritten:

  1. mkdir /usr/local/iso
  2. cd /usr/local/iso/
  3. fetch ftp://ftp2.de.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/9.0/FreeBSD-9.0-RELEASE-amd64-bootonly.iso

Anzupassen wären Ziel- und Quellpfade.

Dann wird das ISO-Image in das Dateisystem eingehängt und benötigte Dateien in ein neues Verzeichnis kopiert:

  1. mdconfig -a -t vnode -f FreeBSD-9.0-RELEASE-amd64-bootonly.iso
  2. md0
  3. mount_cd9660 /dev/md0 /mnt
  4. mkdir /usr/local/pxeboot
  5. cp -Rv /mnt/ /usr/local/pxeboot
  6. umount /mnt
  7. mdconfig -d -u 0

Anschließend aus der Datei /usr/local/pxeboot/etc/fstab die Zeile

  1. # /dev/iso9660/FREEBSD_INSTALL / cd9660 ro 0 0

auskommentieren, da das Booten sonst mit einem Fehler unterbrochen wird.

2. TFTP-Server

Der TFTP-Server ist schnell via inetd aktiviert. Einfach in der Datei /etc/inetd.conf in der entsprechende Zeile

  1. #tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot

das führende # entfernen, den Pfad anpassen:

  1. tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /usr/local/pxeboot/boot
Dann den inetd neu starten

  1. /etc/rc.d/inetd restart
oder einmalig starten
  1. /etc/rc.d/inetd onestart

oder den inted in Zukunft immer automatisch starten:

  1. echo 'inetd_enable="YES"' >> /etc/rc.conf
  2. /etc/rc.d/inetd start

3. DHCP

Installation des Ports isc-dhcp42-server (wie auch immer, ich bevorzuge portinstall isc-dhcp42-server

DHCP Konfiguration

Natürlich sollten IPs und andere Netzwerkeinstellungen auf den eigenen Bedarf angepasst werden. Bei mir sieht die minimalistische Datei /usr/local/etc/dhcpd.conf

  1. ddns-update-style none;
  2. server-name "dab"; # name of the tftp-server
  3. server-identifier 192.168.0.94; # address of the tftp-server
  4. next-server 192.168.0.94; # address of the NFS-server
  5.  
  6. subnet 192.168.0.0 netmask 255.255.255.0 {
  7. range 192.168.0.137 192.168.0.199;
  8. option routers 192.168.0.1;
  9. option root-path "/usr/local/pxeboot"; # root-path for NFS
  10. filename "pxeboot"; # filename of NBP (network bootstrap program)
  11. }

Dann den dhcp-Server neu starten

  1. /usr/local/etc/rc.d/isc-dhcpd restart

oder einmalig starten

  1. /usr/local/etc/rc.d/isc-dhcpd onestart

oder natürlich permanent

  1. echo 'dhcpd_enable="YES"' >> /etc/rc.conf
  2. /usr/local/etc/rc.d/isc-dhcpd start

NFS-Server

Nun noch den NFS-Server konfigurieren:

  1. echo '/usr/local/pxeboot -alldirs -maproot=root -ro' >> /etc/exports

und neu starten

  1. kill -HUP `cat/var/run/mountd.pid`

oder einmalig starten

  1. /etc/rc.d/nfsd onestart

oder bei jedem Systemstart automatisch starten lassen:

  1. echo 'nfs_server_enable="YES"' >> /etc/rc.conf
  2. /etc/rc.d/nfsd start

Das war es. Nun sollte es jedem Client möglich sein via PXE zu booten. Dabei sollte automatisch bsdinstall starten, bzw. die Frage ob bsdinstall, eine Konsole oder die Live CD gestartet werden soll.

Kommentare

Super kurze Anleitung. Gut auf den Punkt gebracht. Danke sehr.

Wenn ich folgende Zeile auskommentiere

# /dev/iso9660/FREEBSD_INSTALL / cd9660 ro 0 0

Hängt sich bei mir die Virtuelle Maschine auf.
Ich versuche FreeBSD via PXE Boot zu installieren.

Da kann ich leider aktuell nicht zu sagen. Wenn ich mal wieder eine Maschine aufsetze, werde ich diesen Artikel aktualisieren.