Thomas Stallinger 3739da37dc mint-image/hardware: Boot-Medium-Platte in gemeinsame lib ausgelagert
_mint_image_boot_medium_disk() aus backend.sh nach scripts/lib/boot_medium.sh
verschoben (tuxflotte_boot_medium_disk()) - build_storage_devices_json()
(hardware_collectors.sh) braucht dieselbe Ausschluss-Logik jetzt ebenfalls.

Nutzer-Feedback (01.09.2026, echter Hardware-Test): der Installations-
USB-Stick selbst tauchte in der Kundenplattform unter Flotte -> Aktionen ->
Hardware-Info -> Datenträger auf - fuer den Kunden irrefuehrend, da dieser
Datentraeger nach der Installation gar nicht mehr existiert. Gleiche
Ursache wie der parted-Bug (Commit fa54461): lsblk liefert das Boot-Medium
auf echter USB-Stick-Hardware als normalen TYPE="disk" zurueck.
2026-09-01 15:45:25 +02:00

36 lines
1.7 KiB
Bash

#!/usr/bin/env bash
# Gemeinsame Hilfsfunktion rund um das Boot-Medium selbst (nicht das
# Zielsystem). Wird an mehreren Stellen gebraucht:
# - backends/mint-image/backend.sh (_mint_image_detect_target_disk):
# verhindert, dass das Boot-Medium selbst als Zieldatentraeger gewaehlt
# und dann partitioniert wird.
# - scripts/lib/hardware_collectors.sh (build_storage_devices_json):
# verhindert, dass das Boot-Medium in der an den Server gemeldeten
# Datentraeger-Liste auftaucht (dort fuer den Kunden irrefuehrend, siehe
# Hardware-Info in der Kundenplattform).
#
# Urspruenglich in backend.sh dupliziert (siehe Commit fa54461) - mit dem
# zweiten Verwendungsort (Hardware-Erfassung) lohnt sich jetzt der Umzug in
# eine gemeinsame lib, wie im urspruenglichen Kommentar dort schon vermerkt.
# 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 lsblk-Geraetetyp ("rom"), der von reinen "disk"-Filtern 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 expliziten Ausschluss kann eine Datentraeger-Erkennung
# darunter den Stick selbst waehlen (abhaengig von der Aufzaehlungs-
# reihenfolge).
tuxflotte_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}"
}