106 lines
4.0 KiB
Markdown
106 lines
4.0 KiB
Markdown
# CS-R USB-AIO
|
|
|
|
Der USB-Stick unterstützt die Annahme und technische Prüfung gespendeter Computer.
|
|
Er startet als eigenständiges Arch-Linux-Livesystem, erkennt das aktuelle Gerät über
|
|
seine Hardware-ID und verbindet es mit der zentralen Inventarverwaltung.
|
|
|
|
## Ablauf in der Werkstatt
|
|
|
|
1. Vom USB-Stick starten.
|
|
2. Beim ersten Einsatz unter **Einstellungen** das Werkstatt-WLAN verbinden und
|
|
**WLAN speichern** aktiviert lassen.
|
|
3. Das Gerät wird über DMI-UUID oder Hersteller und Seriennummer erkannt.
|
|
4. Die Inventarverwaltung liefert die vorhandene Gerätenummer oder vergibt eine neue.
|
|
5. Geräte im Status **Eingang** erhalten automatisch einen Kurzscan mit Modell, CPU,
|
|
RAM und Datenträgern.
|
|
6. Danach kann der Techniker das Gerät ausschalten oder die Inspektion starten.
|
|
7. Prüfstände und Ergebnisse werden als **Inspektion** synchronisiert. Offline
|
|
gespeicherte Ergebnisse bleiben in der Warteschlange und werden später erneut gesendet.
|
|
|
|
Die Oberfläche konzentriert sich auf **Gerät**, **Inspektion** und **Einstellungen**.
|
|
Reparaturen, Berichte und die Synchronisationswarteschlange sind über das Menü erreichbar.
|
|
|
|
## Funktionen
|
|
|
|
- automatische Hardware-ID und serverseitig vergebene Gerätenummer
|
|
- Schutz vor doppelten Datensätzen
|
|
- gespeichertes Werkstatt-WLAN mit geschütztem Passwort
|
|
- umschaltbare deutsche oder US-Tastaturbelegung
|
|
- geräteabhängige Tests für Akku, Touchpad, Webcam und mehrere Laufwerke
|
|
- getrennte Ergebnisse für Hardwarefehler, nicht verfügbaren Test,
|
|
Einrichtungsproblem, nicht geprüft und nicht vorhanden
|
|
- Wiederaufnahme nach Neustart oder Stromunterbrechung
|
|
- Reparaturnotizen und erneute Prüfung betroffener Komponenten
|
|
- druckbarer Abschlussbericht mit Messwerten und Freigabe
|
|
- dauerhafte Offline-Warteschlange mit sicheren Wiederholungen
|
|
- zentrale Sprache, Testdauer und Grenzwerte
|
|
- verifizierbarer Build mit Versions- und Prüfsummenmanifest
|
|
|
|
## Projektaufbau
|
|
|
|
| Pfad | Inhalt |
|
|
| --- | --- |
|
|
| `gui/` | Bedienoberfläche und geführte Tests |
|
|
| `scanner/` | Hardwareerkennung und Messwerte |
|
|
| `controller/` | Geräteklassifizierung und Auswertung |
|
|
| `scripts/` | Build, Synchronisation und lokale Datenwerkzeuge |
|
|
| `live/` | Start und Vorbereitung des Livesystems |
|
|
| `tests/` | Python- und Rauchtests |
|
|
| `config.example/` | Beispiel für die Inventarverbindung |
|
|
|
|
Der Inventory-Server wird in einem eigenen Repository gepflegt. Dieses Repository
|
|
enthält ausschließlich den USB-Client.
|
|
|
|
## Entwicklung und Prüfung
|
|
|
|
Voraussetzungen sind Rust, Cargo und Python 3. Auf Arch Linux werden für den ISO-Bau
|
|
zusätzlich `archiso`, GRUB, Dateisystemwerkzeuge und `libarchive` benötigt.
|
|
|
|
```bash
|
|
bash scripts/build-release.sh
|
|
```
|
|
|
|
Der Befehl führt die Rust-, Python- und Rauchtests aus, baut alle drei Programme im
|
|
Release-Modus und erzeugt `build/release.json` mit Build-ID und SHA-256-Prüfsummen.
|
|
|
|
## ISO erstellen
|
|
|
|
Das Zielverzeichnis muss neu und leer sein:
|
|
|
|
```bash
|
|
bash scripts/build-iso.sh "$PWD/build/usb-aio-2.6.0"
|
|
```
|
|
|
|
Der Build prüft Profil, Binärdateien, Kernelpfade und die FAT32-Größengrenze. Ein
|
|
erfolgreicher Softwaretest ersetzt keinen Starttest auf echter UEFI- und BIOS-Hardware.
|
|
|
|
## USB-Stick installieren
|
|
|
|
Dieser Befehl löscht den ausgewählten Datenträger vollständig:
|
|
|
|
```bash
|
|
lsblk -o NAME,PATH,TYPE,SIZE,TRAN,MODEL,SERIAL,MOUNTPOINTS
|
|
sudo bash scripts/install-usb.sh /dev/sdX /absoluter/pfad/zur.iso
|
|
```
|
|
|
|
Das Installationsskript akzeptiert nur ein vollständiges USB-Blockgerät, lehnt den
|
|
Systemdatenträger ab und verlangt die exakte Bestätigung `ERASE /dev/sdX`.
|
|
|
|
## Konfiguration auf `INTAKE_DATA`
|
|
|
|
Die dauerhaften Dateien liegen auf der Datenpartition des Sticks:
|
|
|
|
```text
|
|
config/inventory.json
|
|
config/inventory-api-key
|
|
config/inventory-server.crt
|
|
config/workshop-wifi.json
|
|
config/workshop.json
|
|
```
|
|
|
|
API-Schlüssel und WLAN-Passwort gehören nie in Git. Ein privates CA-Zertifikat darf
|
|
nur als öffentliches Zertifikat gespeichert werden. Die Datenpartition ist nicht
|
|
verschlüsselt und muss wie ein Werkstatt-Zugang behandelt werden.
|
|
|
|
Weitere Einzelheiten stehen in [WERKSTATT-ABLAUF.md](WERKSTATT-ABLAUF.md).
|