From 313cfae828e450919aa87adbd6d5208cedf28e71 Mon Sep 17 00:00:00 2001 From: Herb Date: Mon, 13 Jul 2026 13:25:57 +0200 Subject: [PATCH] Clonezilla- und Klon-Anleitung auf neuen Reimage-Ablauf umstellen Co-Authored-By: Claude Fable 5 --- ANLEITUNG_NACH_KLONEN.md | 118 ++++++-------------------------- CLONEZILLA_AUTOMATISCH.md | 139 +++++++++++++++++--------------------- 2 files changed, 83 insertions(+), 174 deletions(-) diff --git a/ANLEITUNG_NACH_KLONEN.md b/ANLEITUNG_NACH_KLONEN.md index f0301bc..7f137b4 100644 --- a/ANLEITUNG_NACH_KLONEN.md +++ b/ANLEITUNG_NACH_KLONEN.md @@ -1,110 +1,36 @@ # Anleitung: Nach dem Klonen -Diese Anleitung gilt NACHDEM du: -- Das Image mit Clonezilla aufgespielt hast -- Das First-Boot-Script ausgefuehrt hast (`sudo ~/ansible-schule/files/first-boot-setup.sh laptopXX`) +Gilt fuer die **Erstinstallation per USB-Stick** (Weg 3 in +`CLONEZILLA_AUTOMATISCH.md`). Beim automatischen Jahres-Reimage von der +externen Platte ist NICHTS davon noetig — dort passiert alles von selbst. ---- - -## Auf dem Controller (laptop03) - -### Schritt 1: IPs aktualisieren +## Auf dem frisch geklonten Laptop (einmalig) ```bash -cd ~/ansible-schule -./update-ips.sh +sudo ~/projekte/schul-laptops/files/first-boot-setup.sh laptopXX ``` -Das Script findet automatisch alle eingeschalteten Laptops im Netzwerk und traegt ihre IPs in die inventory.yml ein. +Das Script setzt Hostname, SSH-Host-Keys und Machine-ID, entfernt den +Admin-Key (ausser auf laptop03) und aktiviert den ansible-pull-Timer. +**Das war's** — ab jetzt holt sich der Laptop alle 30 Minuten selbst +Updates und Konfiguration aus Gitea, egal in welchem Netz er haengt. -**Erwartete Ausgabe:** -``` -=== IP-Adressen aktualisieren === - -laptop01: 192.168.x.x -laptop02: nicht erreichbar -laptop03: 192.168.x.x -... - -=== Fertig === -Aktualisiert: 5 -Nicht erreichbar: 11 -``` - ---- - -### Schritt 2: Verbindung testen +## Kontrolle (optional) ```bash -ansible all -m ping +systemctl list-timers ansible-pull* # Timer aktiv? +journalctl -u ansible-pull -n 30 # letzter Pull-Lauf ok? +cat /etc/schul-image-version # installiertes Image ``` -**Erfolg sieht so aus:** -``` -laptop03 | SUCCESS => { "ping": "pong" } -laptop10 | SUCCESS => { "ping": "pong" } -``` - -**Fehler ignorieren** fuer Laptops die nicht eingeschaltet sind - das ist normal. - ---- - -### Schritt 3: Updates auf alle erreichbaren Laptops - -```bash -ansible-playbook playbooks/update.yml -``` - -Oder nur auf bestimmte: - -```bash -ansible-playbook playbooks/update.yml --limit laptop10,laptop11 -``` - ---- - -## Schnellreferenz - -| Was | Befehl | -|-----|--------| -| IPs aktualisieren | `./update-ips.sh` | -| Alle pingen | `ansible all -m ping` | -| System-Update | `ansible-playbook playbooks/update.yml` | -| Software installieren | `ansible-playbook playbooks/install-software.yml -e "packages=['vlc']"` | -| Neustarten | `ansible-playbook playbooks/reboot.yml` | -| Nur bestimmte Rechner | `--limit laptop05,laptop06` | - ---- - -## Problemloesungen - -### "nicht erreichbar" bei update-ips.sh - -- Ist der Laptop eingeschaltet? -- Ist er im gleichen Netzwerk (WLAN/Kabel)? -- Wurde das First-Boot-Script ausgefuehrt? - -### SSH-Fehler "Host key verification failed" - -```bash -ssh-keygen -R 192.168.x.x -``` - -(Die IP durch die tatsaechliche IP ersetzen) - -### Ansible findet inventory nicht - -Immer aus dem richtigen Verzeichnis ausfuehren: - -```bash -cd ~/ansible-schule -``` - ---- - ## Checkliste neuer Laptop -- [ ] Image mit Clonezilla aufgespielt -- [ ] First-Boot-Script: `sudo ~/ansible-schule/files/first-boot-setup.sh laptopXX` -- [ ] Auf Controller: `./update-ips.sh` -- [ ] Testen: `ansible laptopXX -m ping` +- [ ] Image per Stick aufgespielt (nimmt automatisch das neueste) +- [ ] `sudo files/first-boot-setup.sh laptopXX` ausgefuehrt +- [ ] `journalctl -u ansible-pull` zeigt einen erfolgreichen Lauf + +## Legacy: Push-Betrieb im Heimnetz + +Nur noetig, wenn du aktiv per Push arbeiten willst (funktioniert nicht im +Schul-WLAN) — siehe README.md, Abschnitt „Legacy“ (`update-ips.sh`, +`ansible-playbook playbooks/...`). diff --git a/CLONEZILLA_AUTOMATISCH.md b/CLONEZILLA_AUTOMATISCH.md index d9f9fff..d914439 100644 --- a/CLONEZILLA_AUTOMATISCH.md +++ b/CLONEZILLA_AUTOMATISCH.md @@ -1,99 +1,82 @@ -# Clonezilla Automatisiert - USB + Externe Festplatte +# Clonezilla — Images erstellen & aufspielen ## Setup -- **USB-Stick:** CLONEZILLA (7,6 GB) - enthält Clonezilla Live -- **Externe Festplatte:** DEZNTRSICHERUNG (1,8 TB) - enthält das Image -- **Image-Name:** `schule-laptop` +- **Externe Festplatte:** `DEZNTRSICHERUNG` (1,8 TB) — traegt die Images +- **Images:** Ordner `schule-laptop-JJJJ-MM-TT` — es koennen mehrere liegen, + **das neueste (Datumsname) gewinnt immer** +- **USB-Stick:** `CLONEZILLA` — nur noch fuer die **Erstinstallation** und als + Rettung, falls ein Laptop gar nicht mehr bootet +- Jeder Laptop merkt sich sein installiertes Image in `/etc/schul-image-version` -## Boot-Menü +## Weg 1: Jahres-Reimage OHNE Stick (der Normalfall) -Beim Booten vom USB-Stick erscheinen zwei Hauptoptionen: +1. Platte `DEZNTRSICHERUNG` an den Laptop anstecken +2. Laptop einschalten — mehr nicht +3. Der Laptop erkennt beim Boot, dass ein neueres Image auf der Platte liegt, + und startet automatisch in die Image-Station (Clonezilla aus `/boot/clonezilla`, + laeuft komplett im RAM) +4. Mini-Menue erscheint: + - **AUFSPIELEN** — vorausgewaehlt, startet nach 20 s von selbst + - **IMAGE ERSTELLEN** — diesen Rechner als neues Image sichern + - **Abbrechen** — normaler Neustart +5. Beim Aufspielen bleibt der **Hostname erhalten** (laptop11 bleibt laptop11); + SSH-Host-Keys, Machine-ID und Versionsdatei werden automatisch neu gesetzt. + Danach: Poweroff. Fertig — kein first-boot-Script noetig. -``` ->>> IMAGE AUFSPIELEN (Laptop bespielen) <<< [Standard] ->>> IMAGE ERSTELLEN (Laptop sichern) <<< -``` +Steckt die Platte beim naechsten Boot noch, passiert nichts mehr +(Versionsvergleich). **laptop03 (Master) bespielt sich nie selbst** — +dort ist der Boot-Check deaktiviert. -**Nach der Auswahl läuft alles automatisch** - keine weitere Eingabe nötig! -Der Computer fährt nach Abschluss automatisch herunter. +## Weg 2: Neues Master-Image erstellen (auf laptop03) -## Workflow +1. Platte anstecken, laptop03 neu starten +2. Im GRUB-Menue **„Schul-Neuinstallation“** waehlen (Eintrag ist im normalen + Boot nicht sichtbar, ggf. `Esc`/`Shift` beim Boot halten) +3. Im Mini-Menue **„IMAGE ERSTELLEN“** (Taste `i`) — Image heisst automatisch + `schule-laptop-` und ist damit sofort das neueste +4. Rechner faehrt herunter, wenn fertig -### 1. Master-Image erstellen (einmalig) +## Weg 3: Erstinstallation per USB-Stick -1. Master-Laptop (laptop03) vorbereiten und testen -2. USB-Stick und externe Festplatte anschließen -3. Von USB booten (F12) -4. **"IMAGE ERSTELLEN"** wählen -5. Warten bis Computer herunterfährt -6. Image liegt dann auf der externen Festplatte als Ordner `schule-laptop` - -### 2. Image auf andere Laptops aufspielen - -1. USB-Stick und externe Festplatte anschließen -2. Von USB booten (F12) -3. **"IMAGE AUFSPIELEN"** wählen (ist bereits vorausgewählt) -4. Warten bis Computer herunterfährt (~5-10 Min mit SSD) -5. First-Boot-Script ausführen: +1. Stick `CLONEZILLA` **und** Platte anstecken, per `F12` vom Stick booten +2. „IMAGE AUFSPIELEN“ waehlen — nimmt automatisch das neueste Image +3. Nach dem Poweroff booten und einmalig den Namen vergeben: ```bash - sudo ~/ansible-schule/files/first-boot-setup.sh laptop05 + sudo ~/projekte/schul-laptops/files/first-boot-setup.sh laptop05 ``` + Ab dann laeuft ansible-pull und der Laptop haelt sich selbst aktuell. ## Technische Details -### Clonezilla-Parameter für Image erstellen -``` -ocs-sr -q2 -c -j2 -z5p -i 4096 -sfsck -senc -p poweroff savedisk schule-laptop sda -``` -- `-q2` - Priorität: partclone > partimage > dd -- `-z5p` - Kompression mit zstd (schnell, gut) -- `-i 4096` - Splitgröße 4GB -- `-sfsck` - Filesystem-Check überspringen (schneller) -- `-p poweroff` - Nach Abschluss herunterfahren +- Alle `ocs-sr`-Aufrufe laufen im **Batch-Modus ohne Sicherheitsabfragen und + ohne Nachpruefung** (`-batch -scs/-scr -icds -sfsck`, Entscheidung E-004 — + 12x identische Hardware, Fehlerfaelle macht Herb von Hand) +- Restore: `ocs-sr -g auto -e1 auto -e2 -r -j2 -icds -k1 -scr -batch -p true restoredisk sda` +- Save: `ocs-sr -q2 -j2 -z5p -i 4096 -sfsck -senc -scs -batch -p true savedisk sda` +- Menue/Ablauf: `files/clonezilla/schul-reimage.sh` (liegt auf jedem Laptop + unter `/boot/clonezilla/`, wird per ansible-pull aktuell gehalten) +- GRUB-Eintrag: `files/clonezilla/grub-custom.cfg` → `/boot/grub/custom.cfg` +- Boot-Check: `files/reimage-check.sh` + `.service` -### Clonezilla-Parameter für Image aufspielen -``` -ocs-sr -g auto -e1 auto -e2 -r -j2 -icds -k1 -p poweroff restoredisk schule-laptop sda -``` -- `-g auto` - Geometrie automatisch -- `-e1 auto -e2` - MBR/Partitionstabelle wiederherstellen -- `-r` - Partitionsgrößen anpassen -- `-icds` - Bestätigung überspringen -- `-k1` - Partitionstabelle der Zielfestplatte erstellen -- `-p poweroff` - Nach Abschluss herunterfahren +## Voraussetzung: Clonezilla-Live-Dateien im Image -## Weitere Boot-Optionen +`/boot/clonezilla/` braucht einmalig `vmlinuz`, `initrd.img` und +`filesystem.squashfs` vom Clonezilla-Stick (Ordner `/live/`). Sie sind zu gross +fuer git und kommen ueber das Master-Image auf alle Laptops. Fehlen sie, meldet +der Pull-Lauf einen Hinweis im Journal. -- **Clonezilla manuell** - Alle Optionen, für Experten -- **Von Festplatte starten** - Normaler Boot -- **Erweiterte Optionen:** - - Image aufspielen (in RAM) - USB kann nach Start entfernt werden - - Failsafe-Modus - Bei Boot-Problemen - - Memtest - RAM-Test +## Problemloesungen -## Problemlösungen +- **„Mount failed“ / Platte nicht gefunden:** Label pruefen: + `sudo ntfslabel /dev/sdX1 DEZNTRSICHERUNG` +- **Kein Image gefunden:** Liegt ein Ordner `schule-laptop-*` auf der Platte? +- **Laptop bootet nach Reimage nicht:** Stick benutzen (Weg 3) — der Stick ist + die Rettungsleine und funktioniert immer -### "Mount failed" für externe Festplatte -- Prüfen ob Festplatte das Label "DEZNTRSICHERUNG" hat -- Festplatte neu formatieren und Label setzen: - ```bash - sudo ntfslabel /dev/sdX1 DEZNTRSICHERUNG - ``` +## Zeiten (12x gleiche Hardware, SSD + USB 3.0) -### Image existiert nicht (beim Aufspielen) -- Erst "IMAGE ERSTELLEN" auf dem Master-Laptop ausführen -- Prüfen ob Ordner `schule-laptop` auf der externen Festplatte existiert - -### Falsches Device (nicht sda) -- Manuellen Modus verwenden und Device anpassen -- Oder Konfiguration auf USB-Stick anpassen: - - BIOS: `/syslinux/syslinux.cfg` - - UEFI: `/boot/grub/grub.cfg` - -## Zeiten (geschätzt) - -| Aktion | SSD + USB 3.0 | HDD + USB 2.0 | -|--------|---------------|---------------| -| Image erstellen | ~10-15 Min | ~30-45 Min | -| Image aufspielen | ~5-10 Min | ~20-30 Min | +| Aktion | Dauer | +|---|---| +| Image erstellen | ~10–15 Min | +| Image aufspielen | ~5–10 Min |