Liebe LinuxClients-Gemeinde, (vielleicht trifft das auch auf die Windows-Welt zu)
Ich bin mir noch nicht darüber im Klaren, wie man alltäglich mit den Clientcomputern und Linbo umgeht.
Da sich doch meine Kollegen etwas beschwert haben, dass die Computer sich noch morgens syncen (dauert 4min, klappt bei 1-2 PCs im Raum manchmal nicht), habe ich die Clients wieder auf direkten Debian-Start gestellt, d.h. ich habe dafür die /srv/linbo/boot/grub/debian12.cfg
bearbeitet, hier steht:
set default=1
set timeout=3
set fallback=0
In der /srv/linbo/start.conf.debian12 habe ich weiterhin
Autostart = no
DefaultAction = start
stehen. Jetzt möchte ich gern neu gebaute Images auf die Clients von zu Hause aus verteilen - egal ob per Konsole oder WebGUI
Mit dem Kommando:
# linbo-remote -g r118 -w 60 -c sync:1,halt
müsste ich ja grundsätzlich einen Client dazu bringen, sich zu syncen und ggf. sich das neue Image zu ziehen. Aber nach 60 Sekunden ist der Client ja schon längst gestartet, weil er eben ins Debian starten soll. Also könnte ich die grub-Konfig ändern, das scheint der Client aber nicht direkt zu übernehmen.
Ich komme nicht drauf, wie ich das mache - vielleicht ist was Grundsätzliches bei mir dumm gedacht.
Hallo Peter,
ich synce immer Sonntags ab 15:00. Das mache ich, wie folgt:
Die Datei /srv/linbo/boot/grub/debian12.cfgdurch eine mit den Einträgen:
set default=0
set timeout=0
set fallback=1
austauschen.
Dann mit linbo-remote -g r118 -w 60 -p sync:1,halt(nicht -c sondern -p) dafür sorgen, dass die Clients beim nächten Start in Linbo sich syncronisieren und danach wieder ausschalten.
Jetzt die Clients per WOL starten. Das mache ich mit einem kleinen Script:
#!/bin/bash
/usr/bin/wakeonlan 2C:44:55:66:77:FF (MAC-Adresse des zu weckenden Clients)
/bin/sleep 0.5
/usr/bin/wakeonlan 2C:44:55:66:77:FF
/bin/sleep 0.5
Eine Stunde später die alte /srv/linbo/boot/grub/debian12.cfg wieder zurück kopieren, damit am Montag alles wieder wie gewohnt startet.
Danke Mathias, das klingt nach einem Plan - ich meine ich habe beobachtet, dass wenn ich die …grub/debian12.cfg mit anderen Einträgen ersetze, dass es erst später übernommen wird, so nach dem übernächsten Start. Aber ich hoffe ich täusche mich.
So wie du vorgeschlagen hast, probiere ich das auch.
Liebe Grüße
Peter
ich habe hier ein WOL Script angehängt (nach wakeywakey.sh umbenennen) - dass etwas nach Räumen oder alle aufwecken kann. Es bedient sich direkt der devices.csv.
Ich hätte allerdings gedacht, dass das durch linbo-remote -w
erledigt wird, oder?
unsere Windows-Clients booten in jedem Fall erstmal Linbo (von Platte oder PXE) und holen sich dadurch Befehle ab (linbo-remote -p) und starten dann erst das Betriebssystem oder die anstehenden Aufgaben. Für ein New+Start der Rechner ist hier noch eine Skript-Alternative.
if [ -z "$1" ]
then
echo "Verwendung: $0 <Raumname>"
echo "Parameter 1 muss ein Raum- oder Rechnername oder ein Teil davon sein. Gültige Raumnamen sind:"
cat /etc/linuxmuster/sophomorix/default-school/devices.csv | cut -d';' -f1 | sort -u
exit
fi
gruppe="$1"
# with regex support:
for deviceLine in $(grep -iE "$gruppe" /etc/linuxmuster/sophomorix/default-school/devices.csv); do
hostname=$(echo $deviceLine | cut -d';' -f2)
ip=$(echo $deviceLine | cut -d';' -f5)
mac=$(echo $deviceLine | cut -d';' -f4)
imagegroup=$(echo $deviceLine | cut -d';' -f3)
# Konfiguration der Image-Gruppe nach Boot-Partition filtern (enthält Windows)
bootpartition=$(grep "Boot = " /srv/linbo/start.conf.$imagegroup)
# Beispielinhalt: "Boot = /dev/nvme0n1p3" (für EFI)
# Beispielinhalt: "Boot = /dev/nvme0n1p1" (für BIOS)
# $bootpartitionnumber enthält Nummer der Partition, welche das Betriebssystem enthält
# letztes Zeichen aus Variable $bootpartition verwenden
bootpartitionnumber=${bootpartition: -1}
echo "Rechner: $hostname"
#echo "group: $imagegroup"
#echo "boot: $bootpartition"
#echo "bootnum: $bootpartitionnumber"
# beim nächsten Boot (-n), den Cache aktualisieren (initcache),
# 3. Partition formatieren (format:3) und 1. OS starten (start:1)
# Zahlenangabe für sync und start ist die Definition des OS-Abschnitts (= 1 wenn nur ein OS installiert ist)
# Zahlenangabe für format ist die Nummer der Partition gezählt ab 1
# Rechner nur Image herunterladen und ausschalten
#linbo-remote -n -p initcache,halt -i $ip
# Rechner heilen und starten
# $bootpartitionnumber enthält Nummer der Partition, welche das Betriebssystem enthält
linbo-remote -n -p initcache,format:$bootpartitionnumber,sync:1,start:1 -i $ip
# Rechner aufwecken
wakeonlan $mac
sleep 1.0
Der erste Parameter als Raumname kann auch alles andere sein, z. B. reicht ein Bruchteil eines Raum-, Imagegruppen- oder Hostnamens, aber auch Bruchteile von MAC- oder IP-Adressen. Im Prinzip alles was auf auf eine Zeile in der devices.csv zutrifft. Das hilft uns enorm, da wir auch ein passendes Namensschema für verschiedene Einsatzszenarien der Rechner haben.
Hallo Peter,
klar mit linbo-remote -w 60 ...geht das auch. Allerdings wartet dann linbo, in diesem Beispiel 60 s auf den Client und versucht dann ein Kommando an den Client zu senden. Reichen die 60 s nicht aus, kommt ein Fehler und der Client macht nix.
Bei meiner Variante startet der Client und arbeitet das sync:1,halt (aus Schritt 2) ab sobald er linbo geladen hat. Egal, wie lang er dafür braucht.
@Buster Klar, wenn linbo gestartet wird, reicht ein vorheriges linbo-remote ... -p ... .
Bei Peter sieht das etwas anders aus. Er startet ja direkt das Betriebssystem und geht im Normalfall nicht über linbo. Daher der erhöhte Aufwand.