mint-image: Boot-Medium-Platte von Zielplatten-Erkennung ausschliessen
Auf echter USB-Stick-Hardware (anders als in bisherigen QEMU-Tests mit CD-ROM-Boot-Medium) enumeriert das Boot-Medium selbst als "disk"-Typ, genau wie die interne Zielplatte - _mint_image_detect_target_disk() konnte deshalb den eigenen Stick waehlen, dessen Partitionierung dann immer mit dem "unable to inform the Kernel of the change"-Fehler scheitert (man kann die Platte nicht partitionieren, von der man lebt). _mint_image_boot_medium_disk() findet das Boot-Medium ueber findmnt/lsblk (dem Live-Mountpoint /run/live/medium bis zur Elternplatte folgend) und schliesst es aus der Kandidatenliste aus. Verifiziert in QEMU: Boot-Medium-ISO absichtlich als device='disk' auf hda (vor dem eigentlichen Ziel-qcow2 auf hdb) angehaengt, um die reale Aufzaehlungsreihenfolge einer USB-Stick-Installation nachzustellen - ohne diesen Fix waere hda (das Boot-Medium) gewaehlt worden. Mit dem Fix: "Zieldatentraeger: /dev/sdb", Partitionierung/Formatierung ohne Fehler, komplette Golden-Image-Bereitstellung durchgelaufen, Reboot in den echten Linux-Mint-Cinnamon-Login-Bildschirm bestaetigt (Hostname "debian", Login "tuxflotte", deutsches Tastaturlayout).
This commit is contained in:
parent
5b9d3fdf6a
commit
fa54461cae
@ -52,14 +52,43 @@ backend_fatal() {
|
||||
return 1
|
||||
}
|
||||
|
||||
# Live auf echter USB-Stick-Hardware gefunden (01.09.2026): auf einem
|
||||
# CD-ROM (wie in allen bisherigen QEMU-Tests) ist das Boot-Medium ein
|
||||
# eigener Geraetetyp ("rom"), der von der lsblk-Filterung unten schon
|
||||
# ausgeschlossen wird - auf einem echten USB-Stick ist das Boot-Medium
|
||||
# selbst aber ein ganz normales "disk"-Blockgeraet, genau wie die interne
|
||||
# Zielplatte. Ohne Ausschluss kann die Erkennung darunter den Stick selbst
|
||||
# waehlen (abhaengig von der Aufzaehlungsreihenfolge) - "parted mklabel"
|
||||
# darauf schlaegt dann IMMER fehl ("...have been unable to inform the
|
||||
# Kernel of the change, probably because it/they are in use"), weil man
|
||||
# nicht die Platte partitionieren kann, von der man gerade lebt. Der
|
||||
# vorherige Fix (Zielplatte freigeben + Neueinlesen wiederholen) half
|
||||
# deshalb nicht - das war die falsche Diagnose fuer dieses Problem.
|
||||
_mint_image_boot_medium_disk() {
|
||||
local medium_source parent
|
||||
|
||||
medium_source="$(findmnt --noheadings --output SOURCE /run/live/medium 2>/dev/null)" || return 1
|
||||
[[ -n "${medium_source}" ]] || return 1
|
||||
|
||||
parent="$(lsblk --noheadings --output PKNAME "${medium_source}" 2>/dev/null | head -n1)"
|
||||
[[ -n "${parent}" ]] || return 1
|
||||
|
||||
printf '/dev/%s\n' "${parent}"
|
||||
}
|
||||
|
||||
# Analog zu _tuxflotte_detect_target_disk() in backends/mint/backend.sh -
|
||||
# bewusst hier dupliziert statt geteilt, um dieses Backend unabhaengig vom
|
||||
# Mint-Referenzbackend zu halten (siehe Modul-Kommentar oben). Ein Umzug in
|
||||
# eine gemeinsame lib waere ein sinnvolles spaeteres Aufraeumen, sobald
|
||||
# mehr als zwei Backends dieselbe Logik brauchen.
|
||||
_mint_image_detect_target_disk() {
|
||||
local boot_medium_disk
|
||||
boot_medium_disk="$(_mint_image_boot_medium_disk || true)"
|
||||
|
||||
lsblk --nodeps --noheadings --bytes --output NAME,TYPE,SIZE --paths |
|
||||
awk '$2 == "disk" && $3 > 0 && $1 !~ /(nbd|zram|loop)[0-9]*$/ { print $1; exit }'
|
||||
awk -v exclude="${boot_medium_disk}" '
|
||||
$2 == "disk" && $3 > 0 && $1 !~ /(nbd|zram|loop)[0-9]*$/ && $1 != exclude { print $1; exit }
|
||||
'
|
||||
}
|
||||
|
||||
backend_init() {
|
||||
|
||||
@ -52,14 +52,43 @@ backend_fatal() {
|
||||
return 1
|
||||
}
|
||||
|
||||
# Live auf echter USB-Stick-Hardware gefunden (01.09.2026): auf einem
|
||||
# CD-ROM (wie in allen bisherigen QEMU-Tests) ist das Boot-Medium ein
|
||||
# eigener Geraetetyp ("rom"), der von der lsblk-Filterung unten schon
|
||||
# ausgeschlossen wird - auf einem echten USB-Stick ist das Boot-Medium
|
||||
# selbst aber ein ganz normales "disk"-Blockgeraet, genau wie die interne
|
||||
# Zielplatte. Ohne Ausschluss kann die Erkennung darunter den Stick selbst
|
||||
# waehlen (abhaengig von der Aufzaehlungsreihenfolge) - "parted mklabel"
|
||||
# darauf schlaegt dann IMMER fehl ("...have been unable to inform the
|
||||
# Kernel of the change, probably because it/they are in use"), weil man
|
||||
# nicht die Platte partitionieren kann, von der man gerade lebt. Der
|
||||
# vorherige Fix (Zielplatte freigeben + Neueinlesen wiederholen) half
|
||||
# deshalb nicht - das war die falsche Diagnose fuer dieses Problem.
|
||||
_mint_image_boot_medium_disk() {
|
||||
local medium_source parent
|
||||
|
||||
medium_source="$(findmnt --noheadings --output SOURCE /run/live/medium 2>/dev/null)" || return 1
|
||||
[[ -n "${medium_source}" ]] || return 1
|
||||
|
||||
parent="$(lsblk --noheadings --output PKNAME "${medium_source}" 2>/dev/null | head -n1)"
|
||||
[[ -n "${parent}" ]] || return 1
|
||||
|
||||
printf '/dev/%s\n' "${parent}"
|
||||
}
|
||||
|
||||
# Analog zu _tuxflotte_detect_target_disk() in backends/mint/backend.sh -
|
||||
# bewusst hier dupliziert statt geteilt, um dieses Backend unabhaengig vom
|
||||
# Mint-Referenzbackend zu halten (siehe Modul-Kommentar oben). Ein Umzug in
|
||||
# eine gemeinsame lib waere ein sinnvolles spaeteres Aufraeumen, sobald
|
||||
# mehr als zwei Backends dieselbe Logik brauchen.
|
||||
_mint_image_detect_target_disk() {
|
||||
local boot_medium_disk
|
||||
boot_medium_disk="$(_mint_image_boot_medium_disk || true)"
|
||||
|
||||
lsblk --nodeps --noheadings --bytes --output NAME,TYPE,SIZE --paths |
|
||||
awk '$2 == "disk" && $3 > 0 && $1 !~ /(nbd|zram|loop)[0-9]*$/ { print $1; exit }'
|
||||
awk -v exclude="${boot_medium_disk}" '
|
||||
$2 == "disk" && $3 > 0 && $1 !~ /(nbd|zram|loop)[0-9]*$/ && $1 != exclude { print $1; exit }
|
||||
'
|
||||
}
|
||||
|
||||
backend_init() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user