wlan-firmware: bei absent nie Firmware entfernen, entfernte Pakete reparieren
KRITISCH (E2E 09.10.2026): der Server schickt fuer jedes Katalog-Merkmal ausserhalb des Workspace "absent" (ADR-0010). Die Rolle machte daraus apt remove linux-firmware - auf jedem Geraet, inkl. Kernel-Metapakete. WLAN-Firmware weg, sichtbar erst nach dem naechsten Neustart (betroffen: VM 107, Liebherr-35, MS Gaissach). Jetzt: absent entfernt nichts mehr; Pakete, die ein frueherer remove-Lauf laut apt-Historie entfernt hat, werden wieder installiert. Auf Liebherr-35 verifiziert (Firmware + Kernel- Metapakete zurueck, iwlwifi laedt Firmware 89, WLAN verbunden). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7d728faa03
commit
49b6f4536a
1 file changed
+34
-4
@@ -32,11 +32,41 @@
|
|||||||
mode: "0644"
|
mode: "0644"
|
||||||
when: tuxflotte_state == "present"
|
when: tuxflotte_state == "present"
|
||||||
|
|
||||||
- name: Proprietäre WLAN-/Netzwerk-Firmware entfernen (Auftrag abgewählt)
|
# KRITISCHER Fund (E2E 09.10.2026): der Server schickt fuer jedes
|
||||||
|
# Katalog-Merkmal, das nicht im Workspace ist, "absent" (ADR-0010). Hier
|
||||||
|
# fuehrte das zu "apt remove linux-firmware" auf JEDEM Geraet - inklusive
|
||||||
|
# der Kernel-Metapakete (linux-generic-hwe-*), die davon abhaengen. Die
|
||||||
|
# WLAN-Firmware war danach weg, sichtbar erst nach dem naechsten Neustart
|
||||||
|
# (der Treiber hatte sie beim Booten schon geladen). Firmware gehoert zum
|
||||||
|
# Grundsystem und wird deshalb bei "absent" NIE entfernt.
|
||||||
|
#
|
||||||
|
# Reparatur fuer betroffene Geraete: genau die Pakete wieder installieren,
|
||||||
|
# die der fruehere "remove linux-firmware"-Lauf laut apt-Historie entfernt
|
||||||
|
# hat (Firmware + Kernel-Metapakete). Laeuft in beiden Zustaenden.
|
||||||
|
- name: Find packages removed by an earlier firmware removal (apt history)
|
||||||
|
ansible.builtin.shell: |
|
||||||
|
set -o pipefail
|
||||||
|
for f in /var/log/apt/history.log /var/log/apt/history.log.*; do
|
||||||
|
[ -e "$f" ] || continue
|
||||||
|
case "$f" in *.gz) zcat "$f" ;; *) cat "$f" ;; esac
|
||||||
|
done | awk '
|
||||||
|
/^Commandline: .* remove (linux-firmware|firmware-linux-nonfree)$/ { f = 1; next }
|
||||||
|
f && /^Remove: / { sub(/^Remove: /, ""); print; f = 0 }
|
||||||
|
/^End-Date/ { f = 0 }' |
|
||||||
|
sed 's/([^)]*)//g; s/,/\n/g' | sed 's/^ *//; s/ *$//; s/:[a-z0-9]*$//' | grep -v '^$' | sort -u
|
||||||
|
args:
|
||||||
|
executable: /bin/bash
|
||||||
|
register: tuxflotte_firmware_entfernt
|
||||||
|
changed_when: false
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
|
- name: Reinstall firmware and kernel packages removed earlier (Reparatur)
|
||||||
ansible.builtin.apt:
|
ansible.builtin.apt:
|
||||||
name: "{{ tuxflotte_firmware_paket }}"
|
name: "{{ tuxflotte_firmware_entfernt.stdout_lines }}"
|
||||||
state: absent
|
state: present
|
||||||
when: tuxflotte_state == "absent"
|
update_cache: true
|
||||||
|
cache_valid_time: 3600
|
||||||
|
when: tuxflotte_firmware_entfernt.stdout_lines | length > 0
|
||||||
|
|
||||||
- name: wlan-firmware-Marker entfernen (Auftrag abgewählt)
|
- name: wlan-firmware-Marker entfernen (Auftrag abgewählt)
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
|
|||||||
Reference in new issue
Block a user