| Version 15 (modified by , 3 years ago) ( diff ) |
|---|
LINBO
Aus der Wikipedia:
Linbo steht für Linux-based Network Boot Operating System und ist Teil der Selbstheilungsfunktionalität (Selbstheilende Arbeitsstationen, SheilA) der Serverdistribution paedML Linux. (weiterlesen)
Vorhandene Clients neu synchronisieren
Bei Problemen mit Clients hilft manchmal nur das re-syncen. Dazu auf dem paedml mit dem Befehl linbo-remote den sync planen:
linbo-remote -p sync:1,reboot -i rechner-name_oder_IP
Anschließend den Rechner von Netzwerk nach Linbo booten.
Alternativ: Wenn man nicht am betroffenen Client sitzt, kann man temporär die grub.conf aller(!) Rechner ändern und das default-target von 0 auf 1 zu setzen:
/var/linbo/boot/grub/grub.cfg-normal
Unbedingt anschließend zurück setzen.
In dem Fall sollte im linbo-remote-Befehl besser halt statt reboot stehen, damit nicht versehentlich ein Rechner nach dem Sync wieder nach Linbo bootet.
Aufnehmen neuer Clients
Im Konzept der paedML werden neue Clientrechner am System zu Benutzung aufgenommen, indem der betreffende Rechner per PXE ein Mini-Linux bootet. Von dort aus wird der neue Client am System angemeldet. Dabei geschieht folgendes:
- Es wird in der /etc/linuxmuster/workstations eine Zeile mit den Daten der Workstation angelegt:
Raumname;Clientname;Clientgruppe;MAC;IP;?;?;?;?;Imaging
Imaging: siehe PaedmlAnpassungen
Nach einem Durchlauf des Scripts ./import_workstations wird
- ein Samba-Workstation-Account angelegt
- ein Samba-Klassenarbeits-Account angelegt
- die Firewall für die MAC freigeschaltet
Der Client hat damit Internetzugang, ist in der Schulkonsole bekannt und für die normale Schularbeit im Sinne der paedML verwendbar.
Anpassungen
/etc/linuxmuster/import_workstations.d
Wir setzen mehrere LTSP-Server mit dem DHCP/DNS-Server dnsmasq ein. Nach dem Workstation-Import werden aus den Config-Files von linuxmuster.net die Konfigurationen für die verschiedenen dnsmasq-Server erstellt, auf die Server hochgeladen und die dnsmasq-Prozesse dort neu gestartet.
Dateien: Der Vorgang der Erstellung der Config-Dateien für DNSMASQ muss überarbeitet werden!
Wir benutzen den DNSMASQ und nicht wie die LML isc-dhcp-Servers und bind9. Die Start/Stop-Scripte der beiden haben wir unter /etc/init.d unschädlich gemacht, so dass keine Anpassungen mehr am Script selbst erfolgen müssen.
/var/linbo/pxelinux.cfg/
LINBO bootet seit Version 2.3 über PXE/Grub 2 - dieser Abschnitt ist obsolet.
DHCP und DNS
Im grünen Schülernetz fungiert der paedml und alle LTSP-Server als DHCP/DNS (dnsmasq), im Lehrernetz (in allen Subnetzen) nur der dhcp.kg-fds.de (dnsmasq, der hat in jedem Subnetz eine virtuelle Netzwerkkarte).
Die Daten für DHCP/DNS werden von den Scripten /usr/local/sbin/make_ltsp_config und /usr/local/sbin/make_ltsp_config.php aus der /etc/linuxmuster/workstations entnommen, auf die DHCP/DNS-Server geladen und der dnsmasq neu gestartet. Die Scripte taggen die einzelnen Zeilen mit den MAC-Adressen/IP-Zuordnungen, so dass der DHCP individuelle PXE-Bootmenüs rausgeben kann. Der dhcp.kg-fds.de im Lehrernetz tagged auch die dhcp-leases, je nachdem, in welchem Subnetz der Lease ausgegeben wird, so dass individuelle Einstellungen (Defaukltgateway, DNS-Server, Routen, ...) ausgegeben werden können.
Der Linbo-Boot
Bei uns booten alle Clients per PXE von einem der DHCP-Server (der der am schnellsten ist gewinnt). Bei aufgenommenen Clients bieten alle DHCP-Server die gleiche IP und das gleiche PXE-Bootmenü an. Standardmäßig (erster Eintrag) wird LINBO vom paedml gebootet, man kann aber auch Lokal von der Platte (oder das Booten von einem anderen Server) auswählen.
- lokaler Boot
Grub wartet 3 Sekunden, während derer man Edubuntu sofort starten kann - auch Linbo DEBUG steht zur Verfügung. Standard-Boot-Methode ist LINBO zu booten, welches dann auf dem paedml die passende start.conf-IP per rsync holt. - PXE / per TFTP vom paedml-Server
Der PXE-Bootmenüeintrag verweist auf den LINBO-Server (10.32.1.1 oder 10.16.112.4) von dort wird per TFTP das passende Config-File geholt (default oder 0A10), welches auf das zu holende /var/linbo/linbofs.gz oder /var/linbo/linbofs_l.gz verweist. In den Configs ist der APPEND server=10.32.1.1 oder server=10.16.112.4 angegeben, so dass LINBO die Datei vom richtigen Server holt, in der start.conf in linbofs.gz bzw. linbofs_l.gz steht die korrekte IP des Servers. Linbo benutzt diese, wenn der Rechner noch nicht aufgenommen ist und findet so den korrekten Server. Ist der Rechner bereits aufgenommen, so findet LINBO per rsync auf dem paedml die passende start.conf-IP
Per TFTP wird die passende boot-Config aus /var/linbo/pxelinux.cfg/ geladen und dort an einen lokalen grub4dos (grub.exe) weitergeleitet. Da LINBO ab und zu die Platte ungefragt so verändert, dass ein Boot nicht mehr funktioniert, haben wir in der Config einen Boot LOKAL eingetragen, der das erste Betriebssystem bootet (an LINBO vorbei).
PXE / lokal oder linbo oder debug
Beim Booten kann am Boot-Prompt (grüner Hintergrund (LINBO) mit Schriftzug boot: (links unten) innerhalb von 3 Sekunden ein anderer, statt das default-boot (lokal) eingegeben werden: linbo startet die LINBO-GUI, debug startet das LINBO-CLI.
Zum Verändern des default muss in der /var/linbo/pxelinux.cfg/<configfile> oben der passende Eintrag auskommentiert werden (z.B. wenn ein Image automatisch ausgerollt werden soll).
Danach geht es so weiter, wie in der aktuellen start.conf auf dem Client eingetragen. Linbo bietet nach dem syncen die Möglichkeit, ein Postsync-Script auszuführen (siehe: http://www.linuxmuster.net/wiki/anwenderwiki:linbo:postsync_scripte:start). Für die Rechner der TGS ist dieses eingerichtet, da auf den Ubuntu-Clients die LDAP-Anbindung und das PAM_mount nicht von paedml.kg-fds.de erfolgen dürfen, sondern von server.kg-fds.de. Das Script /var/linbo/trusty.cloop.postsync fragt ab, ob der Rechnername mit "tgs-" anfängt und kopiert dann die Dateien unter /var/linbo/Patches/ auf den Client.
LINBO unter der Haube
- Seit LINBO 2.3 wird nicht mehr per pxelinux sondern per Grub2 vom Netz gebootet. Das Bootfile liegt auf dem Server unter /boot/grub/i386-pc/core (Die Null am Ende wird von der Netzwerkkarte ergänzt: core.0).
- im Lehrernetz auf dhcp.kg-fds.de im Verzeichnis /srv/tftp/
- im Schülernetz auf paedml.kg-fds.de im Verzeichnis /var/linbo/
- Bei uns steht der Boot als Eintrag im PXE-Bootmenü von dnsmasq
- im Lehrernetz auf dhcp.kg-fds.de
- im Schülernetz auf paedml.kg-fds.de
- core.0 lädt den Grub-Bootloader nach
- Die Konfiguration dazu liegt auf dem Server unter boot/grub.cfg
- im Lehrernetz auf dhcp.kg-fds.de im Verzeichnis /srv/tftp/boot/grub/
- im Schülernetz auf paedml.kg-fds.de im Verzeichnis /var/linbo/boot/grub/
- in dieser Datei wird standardmäßig bei uns das lokale Ubuntu gebootet
- beim Synchronisieren muss der Default-Wert von 0 auf 1 (LINBO) geändert werden
- Planung: sync_helper-Script so anpassen, dass
- Default auf 1 geändert wird
- CronJob angelegt wird, der fünf Stunden später wieder auf 0 zurückändert
- Statusmeldungen von den Clients an den Server senden (/etc/issue.kepler)
Anpassungen in linbofs.lz
- linbofs.lz ist ein gepacktes cpio
- packen
#!/bin/bash cd /srv/tftp/linbofs_unpacked find . | cpio --quiet -o -H newc | lzma -zcv > /srv/tftp/linbofs.lz
- entpacken
#!/bin/bash # Aufruf im Verzeichnis, in das das gepackte cpio entpackt werden soll xzcat ../linbofs.lz | cpio -i -d -H newc --no-absolute-filenames &> /dev/null ;
- packen
- in /etc/inittab steht, was dann gestartet werden soll:
::sysinit:/init.sh ::respawn:/linbo.sh
- Linbo wird zusammengestellt in /init.sh
- die LINBO-GUI wird in /linbo.sh gestartet
- die Befehle sind im Script /usr/bin/linbo_cmd gesammelt
- Befehle an der Commandline werden über /usr/bin/linbo_wrapper abgesetzt
- Manchmal liefert unser DHCP zu langsam eine IP aus (Ursache ist unklar). LINBO benutzt udhcp, der fragt aber nur maximal dreimal an, bricht ab. Wenn LINBO keine IP erhalten hat, kommt es immer mal wieder vor, dass die Cache-Partition formatiert wird - Anpassung in /init.sh:
network() { (...) sleep 2s ip="" while [ -z "$ip" ]; do echo " ... GET Data per DHCP (udhcpc)" udhcpc -n -i "$dhcpdev" $dhcpretry ; RC="$?" ip="`get_ipaddr`" done ipaddr="$ip" (...)
- LINBO hat umgestellt auf grundsätzlichen Reboot. Das wollen wir so nicht - Anpassung in /usr/bin/linbo_cmd:
start(){ (...) #auskommentiert mk_boot "$partition" "$KERNEL" "$INITRD" "$APPEND" | tee -a /tmp/linbo.log (...) #auskommentiert [ "$(fstype "$partition")" = "ntfs" -a -d /cache/linuxmuster-win ] && update_win | tee -a /tmp/linbo.log (...) #auskommentiert reboot -f (...) # boote das System --- Hier muss der Kernel aus busybox heraus gestartet werden
- LINBO werkelt immer mal wieder auf der Platte am Grub herum - lästig - Anpassung in /usr/bin/linbi_cmd:
# mk_boot: configure boot stuff # args: partition kernel initrd append mk_boot(){ echo "mk_boot auskommentiert ..." } mk_boot_orig(){