wiki:AdminPxe
close Warning: Can't synchronize with repository "keplertools" (/srv/svn/keplertools does not appear to be a Subversion repository.). Look in the Trac log for more information.

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/
    Konfiguration unter /var/linbo/pxelinux.cfg/default
  • core.0 (Grub2) in /var/linbo/boot/grub/i386-pc/
    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:

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)

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
    entpackt in das aktuelle Verzeichnis
  • dort die Firmware hineinpacken
  • find . | cpio -ov -H newc | gzip --best > ../XXX_initrd.img
    packt das initrd wieder zusammen

PXE-Boot eines Debian-Installers

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
Last modified 6 years ago Last modified on Jun 8, 2020, 11:38:24 AM
Note: See TracWiki for help on using the wiki.