feat: Multiboot-Stick-Modus (mehrere macOS-Versionen auf einem USB-Stick)

- GUI: dritter Modus-Umschalter, Checkbox-Mehrfachauswahl statt Single-Select
- Backend: sgdisk partitioniert den Stick in N Apple_HFS-Partitionen (Typ AF00),
  jede mit Label = macOS-Titel/Version, jede bekommt ihr eigenes Installer-Image
  per dd -- Macs EFI-Bootpicker (Alt/Option) zeigt alle Partitionen zur Auswahl
- Groessen-Check VOR dem Schreiben: bricht mit klarer Fehlermeldung ab wenn der
  Stick zu klein ist, statt mittendrin zu scheitern
- Dockerfile: parted (partprobe) ergaenzt
- End-to-end gegen ein echtes Loop-Device verifiziert: sgdisk legt korrekte
  Partitionen mit Labels an, dd schreibt in die richtige Partition, Inhalt
  stimmt exakt ueberein (nicht nur behauptet)
- README: neuer Abschnitt 4 (Funktionsweise, Ablauf, ehrliche Grenzen),
  Multiboot als experimentell markiert (erbt recovery-Pfad-Unsicherheit bei
  Big Sur+, kein echter Mac-Boot-Test bisher durchgefuehrt)
This commit is contained in:
ARIA
2026-07-18 11:34:59 +02:00
parent 5c2cdd7543
commit 6f8538428c
7 changed files with 420 additions and 96 deletions
+22
View File
@@ -47,6 +47,26 @@ select {
padding: 0.4rem;
}
select option { padding: 0.3rem; }
.version-list {
max-height: 260px;
overflow-y: auto;
border: 1px solid var(--border);
border-radius: 6px;
background: #0d0f14;
}
.version-row {
display: flex;
align-items: center;
gap: 0.6rem;
padding: 0.45rem 0.6rem;
border-bottom: 1px solid var(--border);
cursor: pointer;
font-size: 0.88rem;
}
.version-row:last-child { border-bottom: none; }
.version-row:hover { background: #131620; }
.version-row.selected { background: #1b2333; }
.version-row input { flex: none; }
.detail { color: var(--muted); font-size: 0.85rem; min-height: 1.2em; }
.status { color: var(--muted); font-size: 0.85rem; margin-bottom: 0.5rem; }
.device {
@@ -94,9 +114,11 @@ button:disabled { background: #333844; color: #777; cursor: not-allowed; }
display: flex;
gap: 0.5rem;
margin-bottom: 0.75rem;
flex-wrap: wrap;
}
.mode-btn {
flex: 1;
min-width: 160px;
background: #0d0f14;
color: var(--muted);
border: 1px solid var(--border);