Installationen über PXE: Unterschied zwischen den Versionen

Aus revampedia
Zeile 101: Zeile 101:
 
DEFAULT vesamenu.c32
 
DEFAULT vesamenu.c32
 
TIMEOUT 100
 
TIMEOUT 100
MENU BACKGROUND tuxbutton.png
+
MENU BACKGROUND tux_button.png
  
 
LABEL BootLocal
 
LABEL BootLocal
Zeile 116: Zeile 116:
 
         KERNEL debian8/vmlinuz-3.16.0-4-586
 
         KERNEL debian8/vmlinuz-3.16.0-4-586
 
         APPEND root=/dev/nfs initrd=debian8/initrd.img-3.16.0-4-586 init=/sbin/init ip=dhcp rw nfsroot=192.168.10.51:/pxeboot/nfsroot/debian8
 
         APPEND root=/dev/nfs initrd=debian8/initrd.img-3.16.0-4-586 init=/sbin/init ip=dhcp rw nfsroot=192.168.10.51:/pxeboot/nfsroot/debian8
 +
 +
LABEL Puppy Linux
 +
        MENU LABEL Puppy Linux
 +
        TEXT HELP
 +
        Puppy Tahr (Ubuntu 14.04)
 +
        ENDTEXT
 +
        KERNEL puppytahr/vmlinuz
 +
        APPEND initrd=puppytahr/initrd.gz
  
 
LABEL memtest86
 
LABEL memtest86
Zeile 144: Zeile 152:
 
MENU END
 
MENU END
 
</pre>
 
</pre>
 +
 +
Puppy Linux initrd: Siehe https://docs.google.com/document/d/1bkMJ-2wjAAC8HVZZTZBFxBELbojoGctLMg27KazqvRw/edit?hl=en&pli=1#
  
 
:: '''/pxeboot/tftpboot/common/debian-installer.menu'''
 
:: '''/pxeboot/tftpboot/common/debian-installer.menu'''
Zeile 163: Zeile 173:
  
 
*Fertige Installations-Images
 
*Fertige Installations-Images
 +
 +
== Referenzen ==
 +
 +
https://help.ubuntu.com/community/PXEInstallMultiDistro
 +
https://docs.google.com/document/d/1bkMJ-2wjAAC8HVZZTZBFxBELbojoGctLMg27KazqvRw/edit?hl=en&pli=1#
 +
[Category:Systemadministration]

Version vom 29. September 2015, 15:57 Uhr

Diese Seite dient als Anleitung zur Einrichtung eines Servers sowohl für automatisierte Linux-Installationen als auch dem booten von Live-, Test- und Installations-Medien über das Netzwerk.

Benötigte Pakete

Zur Ergänzung einer standard Debian-Installation werden folgende Pakete (und deren Abhängigkeiten) nachinstalliert:

tftpd-hpa
nfs-kernel-server
syslinux
memtest86+
linux-image-586

Konfiguration

Warnung: Die IPs und Verzeichnisstruktur sind direkt aus unserer bestehenden Konfiguration übernommen, in anderen Netzwerken wird alles anders aussehen. Copy/paste auf eigene Gefahr!

IP des Installations-Servers (debian-jessie VM auf [[1]]: 192.168.10.51

Einrichten von NFS und TFTP

Sicherheit spielt beim Einbnden von NFS hier keine Rolle, da keine kritischen oder interessanten Daten auf dem Server gespeichert werden (sollten). Daher wird NFS mit den einfachstmöglichen, unsichersten Einstellungen konfiguriert. /etc/exports

/pxeboot/nfsroot *(rw,no_root_squash,async,insecure,fsid=0,no_subtree_check)

Beim TFTP-Server muss der Pfad angepasst werden. Damit wir mehr Informationen vom TFTP-Server im Syslog erhalten, starten wir ihn standardmässig mit der Option "--verbose". Wenn der Server fertig konfiguriert ist, können wir diese Option wieder entfernen. /etc/default/tftpd-hpa

TFTP_DIRECTORY="/pxeboot/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--verbose --secure"

TFTPD und NFS müssen nun neu gestartet werden.

# exportfs -rav
# systemctl restart nfs-kernel-server
# systemctl restart tftpd-hpa

Einrichten von DHCP und PXE

Damit Rechner, die über das Netzwerk gestartet werden, auch wissen, woher sie den Bootloader (pxelinux) laden sollen, muss der DHCP-Server auf den TFTP-Server verweisen. In unserem Fall ist der DHCP-Server im pfSense-Router. In der DHCP-Konfiguration ist lediglich die IP-Addresse des TFTP-Servers (192.168.10.51) einzugeben, damit die Clients sich dort anmelden um den Bootvorgang fortzusetzen. Die Konfiguration von PXE und dem Bootmenü ist später im Artikel beschrieben.

Verzeichnisstruktur :

  • /pxeboot
Wurzelverzeichnis für die gesamte Struktur
  • /pxeboot/tftpboot
Unterverzeichnis für die ganzen Dateien, die per TFTP an den Client geschickt werden
memtest86+.bin
  • /pxeboot/tftpboot/common
Dateien, die von mehreren Installations- und Livesystemen benutzt werden.
Kopiert aus /usr/lib/syslinux/modules/bios:
cmenu.c32, ldlinux32.c32, libcom32.c32, libmenu.c32, libutil.c32, menu.c32, vesamenu.c32
Hintergrundbild
tux_button.png
  • /pxeboot/images
ISOs, fertige Festplattenimages zur Installation bereitgestellt
mini.iso (Lubuntu netinstall CD-Image) und weitere nach Belieben

Einrichtung der bootfähigen Images, NFS-Zeugs

Debian Jessie (vorinstalliert, über Netzwerk startfähig)

  • /pxeboot/tftpboot/debian8
initrd.img-3.16.0-4-586 (initial ramdisk), vmlinuz-3.16.0-4-586 (Kernel), kopiert aus /boot/ (Paket linux-image-586)
Kernel (32-bit, ohne PAE für bestmögliche Kompatibilität mit den meisten Geräten, wichtig v.A. für Computer mit Pentium M Prozessoren) und initrd von mit deboostrap installiertem Changeroot.
  • /pxeboot/nfsroot/debian8
Debian Changeroot, erstellt mit folgendem Kommando:
# debootstrap --arch=i386 jessie /pxeboot/nfsroot/debian8

Später werden verschiedene Pakete im Changeroot nachinstalliert, die wir benötigen und, falls benötigt, neue Benutzerkonten angelegt.

Lubuntu 15.04 netinstall

  • /pxeboot/tftpboot/lubuntu-15.04
initrd.gz (initial ramdisk), linux (Kernel)
  • /pxeboot/images/mini.iso
ISO, die in /pxeboot/nfsroot/lubuntu-15.04 gemountet wird
# mount -o loop /pxeboot/images/mini.iso /pxeboot/nfsroot/lubuntu-15.04
  • /pxeboot/nfsroot/lubuntu-15.04
Mountpoint des CD-Images

Debian Jessie netinstall

  • /pxeboot/tftpboot/debian-installer
Entpacktes Netboot Image aus dem Debian Repository


Syslinux Bootmenü

  • /pxeboot/tftpboot/pxelinux.cfg
Dateien zur Konfiguration des Boot-Menüs
/pxeboot/tftpboot/pxelinux.cfg/default
MENU TITLE Boot Menu
PROMPT 0
DEFAULT vesamenu.c32
TIMEOUT 100
MENU BACKGROUND tux_button.png

LABEL BootLocal
        localboot 0
        TEXT HELP
        Lokal installiertes System booten
        ENDTEXT

LABEL Debian Jessie no PAE
        MENU LABEL Debian Jessie 32-bit non-PAE (login/pw: root/root)
        TEXT HELP
        
        ENDTEXT
        KERNEL debian8/vmlinuz-3.16.0-4-586
        APPEND root=/dev/nfs initrd=debian8/initrd.img-3.16.0-4-586 init=/sbin/init ip=dhcp rw nfsroot=192.168.10.51:/pxeboot/nfsroot/debian8

LABEL Puppy Linux
        MENU LABEL Puppy Linux
        TEXT HELP
        Puppy Tahr (Ubuntu 14.04)
        ENDTEXT
        KERNEL puppytahr/vmlinuz
        APPEND initrd=puppytahr/initrd.gz

LABEL memtest86
        MENU LABEL Memtest86+
        TEXT HELP
        Memtest86 ausführen
        ENDTEXT
        LINUX memtest86+.bin

LABEL Lubuntu 15.04 netinstall
        MENU LABEL Lubuntu 15.04 netinstall
        TEXT HELP
        Lubuntu 15.04 Installieren
        ENDTEXT
        KERNEL lubuntu-15.04/linux
        APPEND root=/dev/nfs netboot=nfs nfsroot=192.168.10.51:/pxeboot/nfsroot/lubuntu-15.04 initrd=lubuntu-15.04/initrd.gz forcepae -- forcepae

MENU BEGIN Debian Jessie amd64 Installer
MENU TITLE Debian Jessie amd64 Installer
        LABEL Zurück
        MENU LABEL Zurück zum vorherigen Menü
        TEXT HELP
        Zurück zum vorherigen Menü
        ENDTEXT
        MENU EXIT
        MENU SEPARATOR
        MENU INCLUDE common/debian-installer.menu
MENU END

Puppy Linux initrd: Siehe https://docs.google.com/document/d/1bkMJ-2wjAAC8HVZZTZBFxBELbojoGctLMg27KazqvRw/edit?hl=en&pli=1#

/pxeboot/tftpboot/common/debian-installer.menu
	PATH debian-installer/amd64
	INCLUDE debian-installer/amd64/boot-screens/menu.cfg
	DEFAULT debian-installer/amd64/boot-screens/vesamenu.c32

Ablauf

Zu beachten

Der über PXE zu bootende Client und der TFTP-Server sollten im gleichen Subnet sein. Falls dies nicht der Fall ist, wird ein TFTP-Proxy benötigt. Die Meinung des Autors ist, dass es einfacher ist, einen zusätzlichen TFTP-Server in das gleiche Subnet zu stellen, anstatt einen Proxy einzurichten. Jedoch wurde diese Meinung um ca. 4 Uhr an einem Sonntagmorgen gebildet.

NFS funktioniert glücklicherweise ohne Probleme über verschiedene Subnets hinaus.

To Do

  • Fertige Installations-Images

Referenzen

https://help.ubuntu.com/community/PXEInstallMultiDistro https://docs.google.com/document/d/1bkMJ-2wjAAC8HVZZTZBFxBELbojoGctLMg27KazqvRw/edit?hl=en&pli=1# [Category:Systemadministration]