[[PageOutline]] = PXE - Boot = == Grundlagen: Vorgehensweise der Musterlösung == Die Musterlösung sieht die Vergabe der IP vom ISC-DHCP-Server auf dem zentralen Server vor. In der Datei /etc/linuxmuster/workstations stehen Zeilen der Form {{{ Raum;Rechnername;Imagegruppe;MAC;IP;Subnetzmaske;NB;NB;NB;NB;[0|22] }}} Steht am Ende eine 0, so wird der Rechner aufgenommen aber nicht mit einem Bootimage versehen (z.B. Laptops), bei 22 erhält er zusätzlich ein Linbo-Image. Ab sofort erhält der Host per DHCP Daten des paedml (DNS: paedml. Gateway: ipcop) und kann die Dienste des paedml verwenden, da er in der Firewall aufgenommen wurde. === Erweiterung am KG === Die dynamsiche Vergabe von IP-Leases haben wir ausgelagert in dnsmasq, da dieser einfacher zu konfigurieren ist (/etc/dnsmasq.d/paedml). Dieser ist in der Lage, PXE-Bootmenus auszugeben. Auf dem paedml wurden dafür der isc-dhcp durch den dnsmasq ersetzt. Dieser vergibt die in der Datei /etc/linuxmuster/clients/clients vorgesehen ist. == Boot-Menu mit dnsmasq == dnsmasq den Clients ein Bootmenu, nach 5 Sekunden wird der erste Eintrag gestartet: {{{ pxe-prompt="Bitte waehlen ([F8] druecken):",5 pxe-service=x86PC,GRUB vom Netz (Grub2-i386pc),/boot/grub/i386-pc/core,10.32.1.1 pxe-service=x86PC,"Booten von Platte (wenn vorhanden)" pxe-service=x86PC,"Tools vom Netz",pxelinux,10.32.1.1 }}} == Weiterleitung an TFTBoot / pxelinux == Nach Auswahl der Bootoption wird der Client an den TFTP des ausgewählten Servers (letzter Eintrag) weitergeleitet. Dort wird die die Datei * pxelinux.0 (SYSLINUX/PXELINUX) in /var/linbo/[[BR]] Konfiguration unter /var/linbo/pxelinux.cfg/default * core.0 (Grub2) in /var/linbo/boot/grub/i386-pc/[[BR]] Konfiguration unter /var/linbo/boot/grub/grub.cfg gesucht, die in der Lage ist, einen Kernel zu booten. Es können spezielle Client-Konfiguration nach einem Schema gelesen werden: * siehe http://www.syslinux.org/wiki/index.php/PXELINUX[[BR]] * siehe https://docs.oracle.com/en/operating-systems/oracle-linux/7/install/ol7-install-pxe-boot-uefi.html [[BR]] Die Musterlösung hinterlegt in /var/linbo/boot/grub/[Gruppenname].cfg Grub2-Konfigurationen, die dann ins Client-Image gepackt werden. Diese werden bei jedem import_workstations neu erzeugt, außer man entfernt die Config-Zeile am Anfang. == Scripte == Die Musterlösung sammelt alle Clients in der Datei /etc/linuxmuster/workstations (symlink /root/workstations) * aufgenommene Clients, die nicht von LINBO bearbeitet werden [0] * LinboClients [22] Unser eigenes Script {{{ 50-kepler--dns-dhcp-config -> /usr/local/sbin/kepler--dns-dhcp-config }}} ist unter /etc/linuxmuster/import_workstations.d verlinkt, wird also jedesmal beim Workstationimport aufgerufen. Falls ein Client schon aufgenommen ist und z.B. getauscht wird, kann anstelle von import_workstations auch /usr/local/sbin/kepler--dns-dhcp-config aufgerufen werden. Das Script /usr/local/sbin/kepler--dns-dhcp-config ruft /usr/local/sbin/kepler--dns-dhcp-config.php auf: und startet den dnsmasq auf dhcp und paedml neu: ToDo: ergänzen == PXE-Boot eines Mini-Linux == Anleitung für Live-CD/DVD: http://www.gtkdb.de/index_7.html Anleitung unter http://www.pcwelt.de/ratgeber/So_geht_s__Linux_ueber_das_Netzwerk_booten_-Anleitung-8199381.html Auch interessant: https://www.plop.at/de/ploplinux/live/index.html * Installiert sein müssen die Pakete * syslinux * nfs-kernel-server * das Filesystem per NFS zur Verfügung stellen (/etc/exports) {{{ /nfsexports/minilinux/ 10.32.0.0/255.240.0.0(rw,no_root_ squash,async,no_subtree_check) }}} * exportfs -rv * service nfs-kernel-server restart * Auf einem Client ein Betriebssystem installieren * bei uns: Debian Jessie minimal * nsf einrichten: * aptitude install nfs-common * ramdisk für boot vorbereiten * **WARUM SOLL DER KERNEL NACH ~ KOPIERT WERDEN ? ** * /etc/initramfs-tools/initramfs.conf editieren: BOOT=nfs MODULES=netboot * mkinitramfs -o ~/initrd.img-`uname -r` * Client-Installation auf Server kopieren * /var/linbo/minilinux (bei uns liegt der TFTP-ROOT unter /var/linbo) * /nfsexports/minilinux * mkdir /mnt/nfs * mount -t nfs -o nolock 10.32.1.1:/minilinux /mnt/nfs * mkdir /mnt/nfs/ * cp -ax /. /mnt/nfs/. (** RSYNC benutzen? **) * cp -ax /dev/. /mnt/nfs/dev/. (** RSYNC benutzen? **) * PXE-Boot auf Server vorbereiten * mkdir /var/lib/tftpboot/meinpc * cp /nfsexports/minilinux/home/User/vmlinuz-Versiongeneric /var/linbo/minilinux/ * cp /nfsroot/meinpc/home/User/initrd.img-Versiongeneric /var/linbo/minilinux/ * Schritt 5 ist unklar, denn der Client soll doch eine DHCP-Adresse vom Server bekommen - oder? * /nfsexport/minilinux/etc/fstab editieren Alle Filesysteme auskommentieren (wegen Netzboot) * Menüeintrag für Boot des Minilinux vorbereiten (TODO) == PXE-Boot einer Live-CD/DVD == Sehr gut beschrieben unter http://www.gtkdb.de/index_7.html, es lassen sich diverse Live-Systeme per TFTP booten. Detaillierte Anleitung c't-Desinfect: für http://www.heise.de/security/artikel/Desinfec-t-vom-Linux-Server-booten-1658049.html * Live-CD/DVD-ISO-Image herunterladen * mounten (mount -o loop ISO !MountPoint] * unter /MountPuint/boot/grub.cfg die Kernel-Appends nachsehen * Kopieren einiger Dateien nach /var/lib/tftpboot/utils/[Verzeichnis] * vmlinuz * initrd.img * filesystem.squasfs * Eintragen der Bootoptionen in /var/lib/tftpboot/utils/pxelinux.cfg Die Debian-Live-Packages können recht leicht eingebunden werden: https://kb.pocnet.net/wiki/Debian-Live_Netzbootsystem http://cdimage.debian.org/debian-cd/current-live/amd64/webboot/ === fehlende Firmware === Die fehlende Firmware kann in die initrd gepackt werden. Siehe http://www.grep.be/blog/en/computer/debian/nonfree_pxe/ Für die Live-Systeme am besten gleich in den Ordner /lib/firmware/ damit sie beim Booten geladen wird: * zcat XXX.initrd.img | cpio -vi [[BR]] entpackt in das aktuelle Verzeichnis * dort die Firmware hineinpacken * find . | cpio -ov -H newc | gzip --best > ../XXX_initrd.img[[BR]] packt das initrd wieder zusammen == PXE-Boot eines Debian-Installers == * Netboot-Installer-Package herunterladen und im Prinzip wie unter https://wiki.debian.org/PXEBootInstall beschrieben vorgehen. * Einbindung kann mit den in txt.cfg angegebenen Parametern in die pxelinux.cfg/default eingetragen werden * NON-FREE-Komponenten können in das initrd.gz wie unter https://wiki.debian.org/DebianInstaller/NetbootFirmware eingebunden werden, so dass kein USB-Stick zur Installation benötigt wird == Booten eines FREEDOS für BIOS-Updates == Unter /var/linbo/freedos liegt in FD13LITE.IMG ein vergrößertes Floppy-Image (63MB) in dem ein BIOS Update (z.B. D3401-29.ARC) und das Flash-Utility (!EfiFlash.exe) Platz haben. {{{ fdisk -l /var/linbo/freedos/FD13LITE.IMG Platte /var/linbo/freedos/FD13LITE.IMG: 75 MByte, 75497472 Byte 16 Köpfe, 63 Sektoren/Spur, 146 Zylinder, zusammen 147456 Sektoren Einheiten = Sektoren von 1 × 512 = 512 Bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Festplattenidentifikation: 0x00093999 Gerät boot. Anfang Ende Blöcke Id System /var/linbo/freedos/FD13LITE.IMG1 * 63 131039 65488+ 6 FAT16 }}} Die Partition kann man nun nach /mnt mounten und somit verändern: {{{ mount -t auto -o loop,offset=$((63*512)) /var/linbo/freedos/FD13LITE.IMG /mnt }}} Das Image kann mit SYSLINUX memdisk auf dem Client gebootet werden (/etc/dnsmasq.d/paedml.conf): {{{ pxe-service=x86PC,"Tools vom Netz",pxelinux,10.32.1.1 }}} /var/linbo/pxelinux.cfg/default {{{ LABEL FREEDOS LINUX /memdisk INITRD /freedos/FD13LITE.IMG APPEND raw }}}