feat(native-macos): Multiboot-Stick-Modus fuer createinstallmedia/asr
Ein Stick, mehrere macOS-Versionen, frei mischbar aus Apple-Server- und Bibliotheks-Quelle. Partitioniert den Stick per diskutil partitionDisk in eine eigene HFS+-Partition je Version (eindeutige Labels), schreibt danach pro Partition gezielt per createinstallmedia --volume bzw. asr restore --target -- analog zur bereits vorhandenen Multiboot-Technik im Docker/Linux-Tool. Inkl. Groessen-Check mit Sicherheitspuffer vor jeder Aenderung am Stick, robustem Fehlerpfad je Partition (Weiter/Abbruch statt Stillschweigen) und End-to-End-Test der kompletten Ablauflogik unter Linux mit gestubbten macOS-Bordmitteln (Einzel-Modus + Multiboot, reine Apple-Quelle + gemischte Apple/Bibliotheks-Quelle).
This commit is contained in:
+58
-14
@@ -1,8 +1,9 @@
|
||||
# Nativer macOS-Weg (createinstallmedia / asr)
|
||||
|
||||
Alternative zum Docker/Linux-Tool im Projekt-Root — **nur nutzbar, wenn
|
||||
gerade ein echter Mac zur Verfuegung steht**. Zwei Quellen fuer den
|
||||
Installer-Payload stehen zur Auswahl, direkt im Script:
|
||||
gerade ein echter Mac zur Verfuegung steht**. Zwei Modi (Einzel-Stick /
|
||||
Multiboot-Stick) und zwei Quellen fuer den Installer-Payload stehen zur
|
||||
Auswahl, direkt im Script:
|
||||
|
||||
1. **Von Apple herunterladen** (macOS 10.15 Catalina oder neuer als Host
|
||||
noetig) — der offiziell von Apple unterstuetzte Weg ueber
|
||||
@@ -61,9 +62,12 @@ chmod +x create-stick.sh # falls das Ausfuehr-Bit beim Kopieren verloren ging
|
||||
./create-stick.sh
|
||||
```
|
||||
|
||||
Fuehrt durch vier Schritte (reines Terminal-Menue, keine externen
|
||||
Abhaengigkeiten — nur `softwareupdate`, `diskutil`, `PlistBuddy`,
|
||||
`installer`, `asr`, `createinstallmedia`, alles Bordmittel):
|
||||
Fragt zuerst den **Modus** ab (Einzel-Stick oder Multiboot-Stick), dann
|
||||
fuehrt es durch die passenden Schritte (reines Terminal-Menue, keine
|
||||
externen Abhaengigkeiten — nur `softwareupdate`, `diskutil`,
|
||||
`PlistBuddy`, `installer`, `asr`, `createinstallmedia`, alles Bordmittel).
|
||||
|
||||
### Modus 1: Einzelner Stick (4 Schritte)
|
||||
|
||||
1. **Quelle + Version waehlen** — Apple-Server oder lokale Bibliothek
|
||||
(Pfad wird abgefragt, Default rät `../downloads/library` relativ zum
|
||||
@@ -80,6 +84,40 @@ Abhaengigkeiten — nur `softwareupdate`, `diskutil`, `PlistBuddy`,
|
||||
`diskutil eraseDisk` + `asr restore --erase` (Bibliothek,
|
||||
bis Catalina). Beides mit `sudo`, live-Ausgabe im Terminal.
|
||||
|
||||
### Modus 2: Multiboot-Stick (5 Schritte)
|
||||
|
||||
Ein Stick, **mehrere** macOS-Versionen gleichzeitig — frei mischbar aus
|
||||
Apple-Server und lokaler Bibliothek (z.B. eine Version per Download, zwei
|
||||
weitere aus der Offline-Bibliothek, in einem Lauf).
|
||||
|
||||
1. **Versionen auswaehlen** — kombinierte Liste aus Apple-Server +
|
||||
Bibliothek, Mehrfachauswahl per Komma (`1,3,4`), 2 bis 8 Versionen.
|
||||
2. **Payloads besorgen** — pro gewaehlter Version wie in Modus 1, Schritt
|
||||
2 (Download/Entpacken/direktes Image), nacheinander.
|
||||
3. **USB-Stick auswaehlen** — wie Modus 1, plus **Groessen-Check**: die
|
||||
Summe aus geschaetztem Platzbedarf je Version (inkl. Sicherheitspuffer:
|
||||
+33% bei `createinstallmedia`-Versionen, +5% bei reinen Image-Restores,
|
||||
jeweils mit Mindestgroesse) wird gegen die Stick-Kapazitaet geprueft.
|
||||
Reicht der Platz nicht, bricht das Script **vor** jeder Aenderung am
|
||||
Stick mit klarer Meldung ab.
|
||||
4. **Partitionieren** — `diskutil partitionDisk` legt fuer jede gewaehlte
|
||||
Version eine eigene HFS+-Partition mit eindeutigem Label an (GPT-Schema
|
||||
mit automatischer EFI-Partition). Die letzte Partition bekommt den
|
||||
restlichen Platz (`R`), um Rundungsverluste zu vermeiden.
|
||||
5. **Partitionen beschreiben** — pro Partition laeuft `createinstallmedia
|
||||
--volume ...` bzw. `asr restore --target ...` genau wie im Einzel-Modus,
|
||||
nur gezielt gegen die jeweils eigene Partition statt gegen die ganze
|
||||
Platte. Beide Tools reformatieren dabei ausschliesslich ihr eigenes
|
||||
Zielvolume — die anderen Partitionen bleiben unberuehrt. Schlaegt eine
|
||||
Version fehl, fragt das Script ob mit den restlichen weitergemacht
|
||||
werden soll, statt den ganzen Lauf stillschweigend abzubrechen.
|
||||
|
||||
Am Ziel-Mac zeigt der Boot-Picker (Option/Alt beim Start) danach jede
|
||||
erfolgreich geschriebene Version als eigenen Eintrag — das ist dieselbe,
|
||||
in der Community etablierte Partitionierungstechnik, die auch das
|
||||
Docker/Linux-Tool dieses Projekts fuer seinen `dd`-basierten Multiboot-Weg
|
||||
nutzt.
|
||||
|
||||
## Grenzen
|
||||
|
||||
- Nur macOS 10.15+ (Catalina oder neuer) als **Host**, auf dem das Script
|
||||
@@ -87,15 +125,21 @@ Abhaengigkeiten — nur `softwareupdate`, `diskutil`, `PlistBuddy`,
|
||||
jede von Apple unterstuetzte Version sein. Diese Einschraenkung gilt nur
|
||||
fuer die Apple-Download-Quelle (`softwareupdate --fetch-full-installer`);
|
||||
`installer`/`asr` funktionieren grundsaetzlich auch auf aelteren Hosts.
|
||||
- Kein Multiboot-Support (anders als das Docker-Tool) —
|
||||
jeder Lauf erstellt immer einen kompletten Single-Version-Stick.
|
||||
- **Ungetestet auf echtem Mac.** Die Auswahl-/Verzweigungslogik (Quelle,
|
||||
Modus-Erkennung ueber `meta.json`) wurde unter Linux mit einer
|
||||
simulierten Bibliothek end-to-end durchgespielt (`bash -n` sauber,
|
||||
beide Zweige laufen bis zum jeweils ersten macOS-only-Befehl korrekt
|
||||
durch). Der eigentliche `installer`/`asr`/`createinstallmedia`-Lauf
|
||||
selbst ist nur gegen offizielle Apple-Doku/Community-Quellen verifiziert,
|
||||
nicht live auf einem Mac getestet.
|
||||
- Multiboot-Groessenschaetzung ist ein **Puffer, keine Garantie** — bei
|
||||
sehr knapp bemessenen Sticks im Zweifel weniger Versionen waehlen oder
|
||||
einen groesseren Stick nehmen.
|
||||
- **Ungetestet auf echtem Mac.** Die komplette Ablauflogik (Modus- und
|
||||
Quellenwahl, Mehrfachauswahl-Parsing, Groessen-/Puffer-Berechnung,
|
||||
Label-Vergabe, Partitionierung, sequentielles Schreiben inkl.
|
||||
Fehlerpfade) wurde unter Linux mit gestubbten `softwareupdate` /
|
||||
`diskutil` / `PlistBuddy` / `installer` / `asr` /
|
||||
`createinstallmedia`-Bordmitteln end-to-end durchgespielt — Einzel-Modus
|
||||
(Apple- und Bibliotheks-Quelle), Multiboot mit reinen Apple-Downloads
|
||||
und Multiboot mit gemischten Apple+Bibliotheks-Quellen liefen dabei
|
||||
jeweils fehlerfrei bis zum Abschluss durch, inklusive Sicherheitsabbruch
|
||||
bei falscher Bestaetigung. Der eigentliche `installer`/`asr`/
|
||||
`createinstallmedia`-Lauf selbst ist nur gegen offizielle Apple-Doku/
|
||||
Community-Quellen verifiziert, nicht live auf einem Mac getestet.
|
||||
|
||||
## Quellen (fuer den asr-Weg, live nachgeschlagen)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user