feat(native-macos): create-stick.sh — nativer createinstallmedia-Weg fuer echte Macs
Alternative zum Docker/Linux-Tool: nutzt softwareupdate --fetch-full-installer + createinstallmedia direkt, wenn ein Mac (10.15+) verfuegbar ist. Bewusst unabhaengig vom ./downloads-Ordner, da createinstallmedia die volle Install-App braucht, nicht die rohen Katalog-Images des Docker-Pfads. Reines Terminal-Menue ohne externe Abhaengigkeiten (softwareupdate, diskutil, PlistBuddy). Zukunftssicher analog zum Docker-Tool, da Apples eigene Versionsliste live abgefragt wird.
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
# Nativer macOS-Weg (createinstallmedia)
|
||||
|
||||
Alternative zum Docker/Linux-Tool im Projekt-Root — **nur nutzbar, wenn
|
||||
gerade ein echter Mac zur Verfuegung steht** (macOS 10.15 Catalina oder
|
||||
neuer). Dafuer bekommst du hierueber den offiziell von Apple sauber
|
||||
funktionierenden Weg: die echte `createinstallmedia`, statt des
|
||||
Recovery-Extraktions-Workarounds fuer den Big-Sur+-Pfad im Docker-Tool.
|
||||
|
||||
## Warum ein eigenes Script, warum nicht die `downloads/`-Bibliothek wiederverwenden?
|
||||
|
||||
Kurz: **andere Bildformate, nicht kompatibel.**
|
||||
|
||||
- Das Docker-Tool laedt rohe Katalog-Images (`BaseSystem.dmg` bzw.
|
||||
`InstallAssistant.pkg`) und schreibt sie per `dd` direkt auf den Stick.
|
||||
Funktioniert ohne Mac, aber `createinstallmedia` kann mit diesen rohen
|
||||
Dateien nichts anfangen — es braucht die komplette, fertig gepackte
|
||||
**"Install macOS X.app"**.
|
||||
- Der offizielle, von Apple unterstuetzte Weg an genau diese App zu kommen
|
||||
(auch ohne App-Store-Anmeldung) ist der macOS-Bordbefehl
|
||||
`softwareupdate --fetch-full-installer`. Das gibt es nur unter echtem
|
||||
macOS ab Catalina.
|
||||
|
||||
Deshalb ist dieses Script komplett unabhaengig vom `./downloads`-Ordner
|
||||
des Docker-Tools. Es laedt sich seine App-Kopie selbst, direkt von Apple.
|
||||
|
||||
## Zukunftssicherheit
|
||||
|
||||
`softwareupdate --list-full-installers` fragt Apples eigene Server live ab
|
||||
— genau wie der Katalog-Check im Docker-Tool, nur eben Apples eigenes
|
||||
Tool statt eigenem Parser. Neue macOS-Versionen tauchen automatisch in der
|
||||
Liste auf, ohne dass hier Code angepasst werden muss.
|
||||
|
||||
## Nutzung
|
||||
|
||||
```bash
|
||||
cd native-macos
|
||||
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`,
|
||||
`createinstallmedia`, alles Bordmittel):
|
||||
|
||||
1. **Versionsliste** von Apple abrufen, Version auswaehlen.
|
||||
2. **Download** der vollen Installer-App via `softwareupdate
|
||||
--fetch-full-installer` (wird uebersprungen, wenn die App schon unter
|
||||
`/Applications` liegt).
|
||||
3. **USB-Stick auswaehlen** — Liste nur externer, physischer Laufwerke
|
||||
(`diskutil list -plist external physical`), danach Sicherheitsabfrage:
|
||||
exakter Geraetepfad muss nochmal eingetippt werden, bevor irgendwas
|
||||
geloescht wird.
|
||||
4. **`createinstallmedia --nointeraction`** laeuft mit `sudo`, live-Ausgabe
|
||||
im Terminal. Am Ende optional die (mehrere GB grosse) Installer-App
|
||||
wieder loeschen.
|
||||
|
||||
## Grenzen
|
||||
|
||||
- Nur macOS 10.15+ (Catalina oder neuer) als **Host**, auf dem das Script
|
||||
laeuft — das Zielsystem, auf das installiert wird, kann trotzdem
|
||||
jede von Apple unterstuetzte Version sein.
|
||||
- Kein Multiboot-Support (anders als das Docker-Tool) —
|
||||
`createinstallmedia` erstellt immer einen kompletten Single-Version-Stick.
|
||||
Waere technisch nachruestbar (mehrere Partitionen, mehrere
|
||||
`createinstallmedia`-Laeufe mit `--volume` auf je eine Partition), aber
|
||||
aktuell nicht gebaut.
|
||||
- Downloads landen unter `/Applications` (Apples Standardverhalten von
|
||||
`softwareupdate`), nicht im Projektordner — dieser Zweig ist bewusst
|
||||
nicht auf Portabilitaet/externe Platte ausgelegt wie das Docker-Tool,
|
||||
sondern auf den einfachsten Weg wenn gerade ein Mac da ist.
|
||||
Reference in New Issue
Block a user