mint-image: WLAN-/Netzwerkverbindungsprofil ins Zielsystem uebernehmen
Neue image_deploy_install_network_profile() kopiert das von export_connection_profile() (05_network.sh) geschuetzt abgelegte Verbindungsprofil nach /etc/NetworkManager/system-connections/ im Zielsystem - backend_launch() ruft das nach dem Mounten auf. Nutzer-Feedback (01.09.2026, echter Hardware-Test): "WLAN-Information sind nicht konsistent. Nach Reboot muss PSK neu eingegeben werden." Root Cause: export_connection_profile() legte das Profil zwar unter /run/tuxflotte/network/connection.nmconnection ab, aber niemand holte es von dort ab - das frisch installierte System stand beim ersten Boot ohne gespeichertes Profil da.
This commit is contained in:
parent
3739da37dc
commit
3f17885d55
@ -217,10 +217,20 @@ image_deploy_extract_image_from_url() {
|
|||||||
local target="$2"
|
local target="$2"
|
||||||
local pipe_status
|
local pipe_status
|
||||||
|
|
||||||
|
# "--progress-bar" statt "--silent": mit Abstand der laengste Schritt
|
||||||
|
# der ganzen Installation (Minuten statt Sekunden) - Nutzer-Feedback
|
||||||
|
# (01.09.2026, echter Hardware-Test) wollte hier ausdruecklich eine
|
||||||
|
# sichtbare Fortschrittsanzeige statt einer stillen Wartezeit. Der
|
||||||
|
# Balken geht an stderr, unabhaengig vom stdout/stderr-Umleiten des
|
||||||
|
# restlichen Moduls (siehe TUXFLOTTE_VERBOSE_MODULES in utils.sh -
|
||||||
|
# 40_backend.sh bleibt deshalb bewusst von der Kreisel-Kompaktdarstellung
|
||||||
|
# ausgenommen, sonst waere dieser Balken fuer die Person vor dem Geraet
|
||||||
|
# unsichtbar).
|
||||||
|
#
|
||||||
# "|| true" verhindert, dass "set -e" hier sofort abbricht - der
|
# "|| true" verhindert, dass "set -e" hier sofort abbricht - der
|
||||||
# eigentliche Fehlerfall wird gleich anhand von PIPESTATUS gezielt
|
# eigentliche Fehlerfall wird gleich anhand von PIPESTATUS gezielt
|
||||||
# ausgewertet, statt die Pipeline roh durchschlagen zu lassen.
|
# ausgewertet, statt die Pipeline roh durchschlagen zu lassen.
|
||||||
curl --silent --show-error --fail --location "${url}" |
|
curl --progress-bar --show-error --fail --location "${url}" |
|
||||||
tar --zstd -xpf - -C "${target}" || true
|
tar --zstd -xpf - -C "${target}" || true
|
||||||
pipe_status=("${PIPESTATUS[@]}")
|
pipe_status=("${PIPESTATUS[@]}")
|
||||||
|
|
||||||
@ -235,6 +245,33 @@ image_deploy_extract_image_from_url() {
|
|||||||
# /etc/fstab aus den tatsaechlichen Partitions-UUIDs neu erzeugen - kein
|
# /etc/fstab aus den tatsaechlichen Partitions-UUIDs neu erzeugen - kein
|
||||||
# genfstab auf Debian/Mint verfuegbar (das ist ein Arch-Linux-Werkzeug),
|
# genfstab auf Debian/Mint verfuegbar (das ist ein Arch-Linux-Werkzeug),
|
||||||
# blkid reicht fuer unseren einfachen Fall (Root + optional ESP) locker.
|
# blkid reicht fuer unseren einfachen Fall (Root + optional ESP) locker.
|
||||||
|
# Uebernimmt das vom Netzwerkmodul exportierte, aktive NetworkManager-
|
||||||
|
# Verbindungsprofil (siehe export_connection_profile() in 05_network.sh)
|
||||||
|
# ins Zielsystem - ohne diesen Schritt bleibt das Profil nur unter
|
||||||
|
# /run/tuxflotte/network/... auf dem Boot-Medium liegen und geht beim
|
||||||
|
# Reboot ins frisch installierte System verloren. Live gefunden
|
||||||
|
# (01.09.2026, echter Hardware-Test): Kunde musste den WLAN-PSK nach dem
|
||||||
|
# ersten Boot erneut eingeben, weil genau dieser Kopierschritt fehlte.
|
||||||
|
# Keine Fatal-Bedingung, falls die Datei fehlt - das Provisionierungs-
|
||||||
|
# interface kann auch unmanaged/kabelgebunden ohne Profil gelaufen sein.
|
||||||
|
image_deploy_install_network_profile() {
|
||||||
|
local target="$1"
|
||||||
|
local profile_file="$2"
|
||||||
|
local dest_dir="${target}/etc/NetworkManager/system-connections"
|
||||||
|
local dest_name
|
||||||
|
|
||||||
|
[[ -n "${profile_file}" && -f "${profile_file}" ]] || return 0
|
||||||
|
|
||||||
|
dest_name="$(basename "${profile_file}")"
|
||||||
|
|
||||||
|
install -d --mode=0700 --owner=root --group=root "${dest_dir}" ||
|
||||||
|
{ image_deploy_fatal "Verzeichnis ${dest_dir} konnte nicht angelegt werden"; return 1; }
|
||||||
|
|
||||||
|
install --mode=0600 --owner=root --group=root \
|
||||||
|
"${profile_file}" "${dest_dir}/${dest_name}" ||
|
||||||
|
{ image_deploy_fatal "Verbindungsprofil konnte nicht nach ${dest_dir} kopiert werden"; return 1; }
|
||||||
|
}
|
||||||
|
|
||||||
image_deploy_write_fstab() {
|
image_deploy_write_fstab() {
|
||||||
local target="$1"
|
local target="$1"
|
||||||
local boot_part="$2"
|
local boot_part="$2"
|
||||||
|
|||||||
@ -217,10 +217,20 @@ image_deploy_extract_image_from_url() {
|
|||||||
local target="$2"
|
local target="$2"
|
||||||
local pipe_status
|
local pipe_status
|
||||||
|
|
||||||
|
# "--progress-bar" statt "--silent": mit Abstand der laengste Schritt
|
||||||
|
# der ganzen Installation (Minuten statt Sekunden) - Nutzer-Feedback
|
||||||
|
# (01.09.2026, echter Hardware-Test) wollte hier ausdruecklich eine
|
||||||
|
# sichtbare Fortschrittsanzeige statt einer stillen Wartezeit. Der
|
||||||
|
# Balken geht an stderr, unabhaengig vom stdout/stderr-Umleiten des
|
||||||
|
# restlichen Moduls (siehe TUXFLOTTE_VERBOSE_MODULES in utils.sh -
|
||||||
|
# 40_backend.sh bleibt deshalb bewusst von der Kreisel-Kompaktdarstellung
|
||||||
|
# ausgenommen, sonst waere dieser Balken fuer die Person vor dem Geraet
|
||||||
|
# unsichtbar).
|
||||||
|
#
|
||||||
# "|| true" verhindert, dass "set -e" hier sofort abbricht - der
|
# "|| true" verhindert, dass "set -e" hier sofort abbricht - der
|
||||||
# eigentliche Fehlerfall wird gleich anhand von PIPESTATUS gezielt
|
# eigentliche Fehlerfall wird gleich anhand von PIPESTATUS gezielt
|
||||||
# ausgewertet, statt die Pipeline roh durchschlagen zu lassen.
|
# ausgewertet, statt die Pipeline roh durchschlagen zu lassen.
|
||||||
curl --silent --show-error --fail --location "${url}" |
|
curl --progress-bar --show-error --fail --location "${url}" |
|
||||||
tar --zstd -xpf - -C "${target}" || true
|
tar --zstd -xpf - -C "${target}" || true
|
||||||
pipe_status=("${PIPESTATUS[@]}")
|
pipe_status=("${PIPESTATUS[@]}")
|
||||||
|
|
||||||
@ -235,6 +245,33 @@ image_deploy_extract_image_from_url() {
|
|||||||
# /etc/fstab aus den tatsaechlichen Partitions-UUIDs neu erzeugen - kein
|
# /etc/fstab aus den tatsaechlichen Partitions-UUIDs neu erzeugen - kein
|
||||||
# genfstab auf Debian/Mint verfuegbar (das ist ein Arch-Linux-Werkzeug),
|
# genfstab auf Debian/Mint verfuegbar (das ist ein Arch-Linux-Werkzeug),
|
||||||
# blkid reicht fuer unseren einfachen Fall (Root + optional ESP) locker.
|
# blkid reicht fuer unseren einfachen Fall (Root + optional ESP) locker.
|
||||||
|
# Uebernimmt das vom Netzwerkmodul exportierte, aktive NetworkManager-
|
||||||
|
# Verbindungsprofil (siehe export_connection_profile() in 05_network.sh)
|
||||||
|
# ins Zielsystem - ohne diesen Schritt bleibt das Profil nur unter
|
||||||
|
# /run/tuxflotte/network/... auf dem Boot-Medium liegen und geht beim
|
||||||
|
# Reboot ins frisch installierte System verloren. Live gefunden
|
||||||
|
# (01.09.2026, echter Hardware-Test): Kunde musste den WLAN-PSK nach dem
|
||||||
|
# ersten Boot erneut eingeben, weil genau dieser Kopierschritt fehlte.
|
||||||
|
# Keine Fatal-Bedingung, falls die Datei fehlt - das Provisionierungs-
|
||||||
|
# interface kann auch unmanaged/kabelgebunden ohne Profil gelaufen sein.
|
||||||
|
image_deploy_install_network_profile() {
|
||||||
|
local target="$1"
|
||||||
|
local profile_file="$2"
|
||||||
|
local dest_dir="${target}/etc/NetworkManager/system-connections"
|
||||||
|
local dest_name
|
||||||
|
|
||||||
|
[[ -n "${profile_file}" && -f "${profile_file}" ]] || return 0
|
||||||
|
|
||||||
|
dest_name="$(basename "${profile_file}")"
|
||||||
|
|
||||||
|
install -d --mode=0700 --owner=root --group=root "${dest_dir}" ||
|
||||||
|
{ image_deploy_fatal "Verzeichnis ${dest_dir} konnte nicht angelegt werden"; return 1; }
|
||||||
|
|
||||||
|
install --mode=0600 --owner=root --group=root \
|
||||||
|
"${profile_file}" "${dest_dir}/${dest_name}" ||
|
||||||
|
{ image_deploy_fatal "Verbindungsprofil konnte nicht nach ${dest_dir} kopiert werden"; return 1; }
|
||||||
|
}
|
||||||
|
|
||||||
image_deploy_write_fstab() {
|
image_deploy_write_fstab() {
|
||||||
local target="$1"
|
local target="$1"
|
||||||
local boot_part="$2"
|
local boot_part="$2"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user