# 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).