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.

Changes between Version 13 and Version 14 of AdminPxe


Ignore:
Timestamp:
Jun 8, 2020, 11:38:24 AM (6 years ago)
Author:
bau
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdminPxe

    v13 v14  
    1414
    1515=== Erweiterung am KG ===
    16 Durch Anpassung des scripts /usr/sbin/import_workstations (siehe http://paedml.kg-fds.de/trac/wiki/PaedmlAnpassungen) kann an der letzten Stelle auch R (Rembo) stehen, dann wird der Rechner aufgenommen und als Rembo-Host verwendet (bootet dann von rembo).
    17 
    18 Die dynamsiche Vergabe von IP-Leases haben wir ausgelagert in die dnsmasq auf den ltspX und auf dem rembo. Diese sind in der Lage, PXE-Bootmenus auszugeben. Auf dem paedml wurden dafür der isc-dhcp durch den dnsmasq ersetzt. Dieser vergibt nun wie die ltspX die vorgesehene IP, die in der Datei /etc/linuxmuster/clients/clients vorgesehen ist.
     16Die 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.
    1917
    2018
    2119== Boot-Menu mit dnsmasq ==
    22 dnsmasq läuft auf allen ltsp-Servern und präsentiert den Clients ein Bootmenu (je nach ltsp unterschiedlich), nach 5 Sekunden wird der erste Eintrag gestartet:
     20dnsmasq den Clients ein Bootmenu, nach 5 Sekunden wird der erste Eintrag gestartet:
    2321
    2422{{{
    2523pxe-prompt="Bitte waehlen ([F8] druecken):",5
    26 pxe-service=x86PC,PXE von ltsp1,/ltsp/i386/pxelinux,10.32.2.1
    27 pxe-service=x86PC,PXE von ltsp2,/ltsp/i386/pxelinux,10.32.2.2
    28 pxe-service=x86PC,PXE von ltsp3,/ltsp/i386/pxelinux,10.32.2.3
    29 pxe-service=x86PC,PXE von ltsp4,/ltsp/i386/pxelinux,10.32.2.4
    30 pxe-service=x86PC,PXE von ltsp5,/ltsp/i386/pxelinux,10.32.2.5
    31 pxe-service=x86PC,PXE von ltsp6,/ltsp/i386/pxelinux,10.32.2.6
    32 pxe-service=x86PC,PXE von ltsp7,/ltsp/i386/pxelinux,10.32.2.7
    33 
    34 
     24pxe-service=x86PC,GRUB vom Netz (Grub2-i386pc),/boot/grub/i386-pc/core,10.32.1.1
    3525pxe-service=x86PC,"Booten von Platte (wenn vorhanden)"
    36 pxe-service=x86PC,"Linbo",pxelinux,10.32.1.1
    37 pxe-service=x86PC,"Rembo",15,10.32.1.252
     26pxe-service=x86PC,"Tools vom Netz",pxelinux,10.32.1.1
    3827}}}
    3928
    4029== Weiterleitung an TFTBoot / pxelinux ==
    41 Nach Auswahl der Bootoption wird der Client an den TFTP des ausgewählten Servers weitergeleitet und sucht dort die Datei /ltsp/i386/pxelinux.0, die in der Lage ist, einen Kernel zu booten. Auf den LTSP liegt dieses unter /var/lib/tftpboot/ltsp/i386/, auf dem paedml unter /etc/linuxmuster/. pxelinux liest nun die Konfiguration aus dem pxelinux.cfg-Verzeichnis nach einem Schema (siehe http://www.syslinux.org/wiki/index.php/PXELINUX). Auf den ltsp-Servern gibt es unter /var/lib/tftpboot/ltsp/i386/pxelinux.cfg für jeden ltsp eine eigene Config-Datei, die entsprechend dem Server nach default gelinkt ist. Das war nötig, da der dnsmasq zwar dem Client den Bootserver mitteilt, dieser auch korrekt vom Server bootet, anschließend aber nicht vom angesprochenen Server, sondern von dem Server, von dem er seine IP bekommen hat. In der Config 0A (wegen der IP der Clients, diese fängt mit 10. an / default wird vom Clientumgebungserzeugungsscript jedesmal geändert) muss die APPEND-Zeile den zu bootenden Server beinhalten:
     30Nach Auswahl der Bootoption wird der Client an den TFTP des ausgewählten Servers (letzter Eintrag) weitergeleitet.
     31Dort wird die die Datei
    4232
    43 {{{
    44 append ro initrd=initrd.img nbdroot=10.32.2.6:/opt/ltsp/i386 root=/dev/nbd0 init=/sbin/init-ltsp quiet splash plymouth:force-splash vt.handoff=7
    45 }}}
     33* pxelinux.0 (SYSLINUX/PXELINUX) in /var/linbo/[[BR]]
     34  Konfiguration unter /var/linbo/pxelinux.cfg/default
     35* core.0 (Grub2) in /var/linbo/boot/grub/i386-pc/[[BR]]
     36  Konfiguration unter /var/linbo/boot/grub/grub.cfg
    4637
    47 Damit bootet der Client vom ausgewählten Boot-ITEM korrekt.
     38gesucht, die in der Lage ist, einen Kernel zu booten.
     39Es können spezielle Client-Konfiguration nach einem Schema gelesen werden:
    4840
     41* siehe http://www.syslinux.org/wiki/index.php/PXELINUX[[BR]]
     42* siehe https://docs.oracle.com/en/operating-systems/oracle-linux/7/install/ol7-install-pxe-boot-uefi.html [[BR]]
     43
     44Die 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.
    4945
    5046== Scripte ==
    5147
    52 Die Musterlösung sammelt alle Clients (aufgenommene Laptops [0], LinboClients [22], RemboClients [R]) in der Datei /etc/linuxmuster/workstations, für die LTSP-Clients habe ich unter /etc/dhcp3/ltsp_config die Datei ltspclients angelegt, dort werden die Clients wie folgt abgelegt:
     48Die Musterlösung sammelt alle Clients in der Datei /etc/linuxmuster/workstations (symlink /root/workstations)
    5349
     50* aufgenommene Clients, die nicht von LINBO bearbeitet werden [0]
     51* LinboClients [22]
     52
     53Unser eigenes Script
    5454{{{
    55   LTSP-Server;MAC;Name;Bemerkung
     5550-kepler--dns-dhcp-config -> /usr/local/sbin/kepler--dns-dhcp-config
    5656}}}
     57ist unter /etc/linuxmuster/import_workstations.d verlinkt, wird also jedesmal beim Workstationimport aufgerufen.
     58Falls 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.
    5759
    58 Das Script /etc/dhcp3/ltsp_config/make_config.php (Aufruf: php make_config.php) macht daraus die Konfiguration für die dnsmasq-Server auf ltspX, paedml und rembo:
     60Das Script /usr/local/sbin/kepler--dns-dhcp-config ruft /usr/local/sbin/kepler--dns-dhcp-config.php auf:
     61und startet den dnsmasq auf dhcp und paedml neu:
    5962
    60 * Im Unterverzeichnis clients
    61   * clients
    62     * enthält alle Clients, die die dnsmasq betreuen sollen
    63     * die Zeilen sind getagged, so dass jeder Client sein korrektes Bootmenü erhält
    64     * MAC, IP, Name, Zeit
    65     * siehe Dokumentation zu dnsmasq (http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html // --dhcp-host= und --dhcp-hostsfile)
    66 
    67 * In den Unterverzeichnissen ltspX
    68   * ltspX.conf
    69     * hier wird vom Script eine für den ltsp-dnsmasq angpasste Config erzeugt
    70 * Im Unterverzeichnis paedml
    71   * paedml.conf (diese wird nicht vom Script bearbeitet)
    72 
    73 Das Script vergibt bei der Erstellung der Config aufsteigende IP:
    74 
    75 * ltsp1 - 10.32.201.1-255
    76 * ltsp2 - 10.32.202.1-255
    77 * ltsp3 - 10.32.203.1-255
    78 * ltsp4 - 10.32.204.1-255
    79 * ltsp5 - 10.32.205.1-255
    80 * ltsp6 - 10.32.206.1-255
    81 * ltsp7 - 10.32.207.1-255
    82 * ltsp7 - 10.32.208.1-255
    83 * paedml - vergibt keine leases
    84 * proxys - vergibt keine leases / macht nur DNS
    85 
    86 Die nicht statisch verwendeten IP werden dynamisch an unbekannte Clients vergeben. Dabei erhält der Client von allen Servern Angebote, der Client wird das schnellste Angebot verwenden. Bei Ausfall eines DHCP-Servers würden so die Clients immernoch ihre IP bekommen. Alle aufgenommenen Clients bekommen von allen dnsmasq-Servern das jeweils gleiche Angebot - fällt ein dnsmasq aus übernehmen die anderen.
    87 
    88 Das Script /usr/local/sbin/make_ltsp_config erzeugt die Configs neu, überträgt die Dateien auf die Server und startet dort jeweils die dnsmasq-Dienste neu.
     63ToDo: ergänzen
    8964
    9065
    … …  
    180155* 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
    181156
     157
     158
     159== Booten eines FREEDOS für BIOS-Updates ==
     160Unter /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.
     161
     162{{{
     163fdisk -l /var/linbo/freedos/FD13LITE.IMG
     164
     165Platte /var/linbo/freedos/FD13LITE.IMG: 75 MByte, 75497472 Byte
     16616 Köpfe, 63 Sektoren/Spur, 146 Zylinder, zusammen 147456 Sektoren
     167Einheiten = Sektoren von 1 × 512 = 512 Bytes
     168Sector size (logical/physical): 512 bytes / 512 bytes
     169I/O size (minimum/optimal): 512 bytes / 512 bytes
     170Festplattenidentifikation: 0x00093999
     171
     172                          Gerät  boot.     Anfang        Ende     Blöcke   Id  System
     173/var/linbo/freedos/FD13LITE.IMG1   *          63      131039       65488+   6  FAT16
     174}}}
     175Die Partition kann man nun nach /mnt mounten und somit verändern:
     176{{{
     177mount -t auto -o loop,offset=$((63*512)) /var/linbo/freedos/FD13LITE.IMG /mnt
     178}}}
     179
     180Das Image kann mit SYSLINUX memdisk auf dem Client gebootet werden (/etc/dnsmasq.d/paedml.conf):
     181{{{
     182pxe-service=x86PC,"Tools vom Netz",pxelinux,10.32.1.1
     183}}}
     184
     185/var/linbo/pxelinux.cfg/default
     186{{{
     187LABEL FREEDOS
     188LINUX /memdisk
     189INITRD /freedos/FD13LITE.IMG
     190APPEND raw
     191}}}