Veröffentlicht: Do 16 April 2020
Aktualisiert: Sa 22 August 2020
Von Hermann Höhne
In Ubuntu Linux .
Schlagworte: Tiny Core Linux pxe ntfsclone udpcast
Dieser Artikel beschreibt, wie Tiny Core Linux (TCL) verwendet werden kann, um Festplattenabbilder effizient über das Netzwerk zu verteilen.
Dieser Artikel geht davon aus, dass bereits vorkonfiguriertes TCL über Netzwerk gestartet werden kann. Ferner finden alle Eingaben an einem separaten "Kontrollrechner" statt.
Denselben Befehl auf mehreren Rechnern ausführen
Falls der SSH-Agent noch nicht läuft, kann er mit eval $(ssh-agent)
gestartet werden. Danach muss unter Umständen explizit der private Schlüssel mit ssh-add
geladen werden. Der öffentliche Schlüssel wurde vorab in TCL hinterlegt.
Nun kann mit clusterssh -l root hostname-{1..41}
eine Verbindung zu den Zielrechnern hergestellt werden.
Falls clusterssh
nicht genutzt werden kann, kann mit mussh -H <(echo hostname-{1..41}) -s sh -c …
ein einzelner Befehl auf mehreren Rechnern gleichzeitig ausgeführt werden.
Unter Umständen ist es notwendig, den absoluten Pfad zum aufgerufenen Programm anzugeben.
Partitionstabelle Klonen
Für GPT hat sich sgdisk
als nützlich erwiesen:
$ sgdisk --backup gpt.sgdisk quellplatte
$ sgdisk --load-backup gpt.sgdisk zielplatte
Wie genau gpt.sgdisk
zu den Zielrechnern kommt, wird dem Leser zur Übung überlassen. Ich habe sowohl eine NFS, Samba, scp
, sshfs
und rsync
verwendet. Auch sgdisk --load-backup /dev/stdin zielplatte
ist möglich (als Ziel für udpcast
), jedoch muss --backup
eine echte Datei als Ziel haben.
NTFS Dateisystem Klonen
udp-sender
und udp-receiver
sind Teil von udpcast .
Auf dem Quellsystem wird ausgeführt:
$ ntfsclone --save-image --overwrite - quelle | gzip -2 | udp-sender -i eth0
Wobei eth0
die Netzwerkschnittstelle ist, auf der gesendet werden soll (muss angegeben werden, falls mehrere Schnittstellen vorhanden sind).
quelle
kann eine Partition sein, z.B. /dev/disk/by-label/WINDOWS
. Falls die Quelle ein (bereits gepacktes) Abbild ist, kann etwas wie udp-sender --file quelle.ntfsclone.gz
verwendet werden.
Auf allen Zielsystemen wird (mittels clusterssh
oder mussh
) ausgeführt:
$ udp-receiver - | gzip -d | ntfsclone --restore-image --overwrite ziel - 2 >& 1 > /dev/tty1
Wobei ziel
eine Partition angeben sollte, z.B. /dev/disk/by-label/WINDOWS
oder /dev/sdxn
.
Falls letzteres verwendet wird, sollte vorher mit lsblk
, blkid
oder fdisk -l
geprüft werden, ob das Platten- und Partitionslayout auf allen Zielrechnern gleich ist.
2>&1 > /dev/tty1
lenkt die Ausgabe von ntfsclone in die Bildschirme der Rechner um. So ist der Fortschritt bei jedem einzelnen Rechner direkt sichtbar. Auch 2>&1 | tee /dev/tty1
oder gar keine Umlenkung sind nutzbare Varianten.
Das Quellsystem zeigt die Verbindungen an und meldet die Bereitschaft zur Übertragung. Der Start der Übertragung muss dort einmal bestätigt werden.
ext4 Dateisystem Klonen
Vorher resize2fs -M
und dd bs=… count=…
, hinterher resize2fs
. Optional gzip -d
.
Erfahrungen
Mit dieser Methode kann ich Problemlos Windows 10 und Ubuntu 18.04 auf acht Rechner gleichzeitig verteilen – bei achtfacher Parallelität! 😮
Einmal war der Verteilungsvorgang sehr langsam: An einem Rechner war ein schlechtes Netzwerkkabel angeschlossen, sodass die Verbindung von 1000 Base-T auf 100 Base-T heruntergehandelt wurde.
Windows 10 benötigt ein bestimmtes Partitionslayout. Es muss zwar nur das Dateisystem übertragen werden, in welchem Windows installiert ist, die anderen Partitionen müssen aber ebenfalls erstellt werden – auch wenn sie leer sind. Sonst startet Windows nicht.