brikler linux-firmware-intel will linux-firmware-whence als abhängikeit, wie es bei anderen firware packeten ist, weiß ich nicht
Da hast du mich ggf. falsch verstanden, ich teste nicht Abhängigkeiten von Paketen.
Was mein Check-Skript (//edit: welches deine/unsere Eingangsfrage beantworten soll) macht basiert im wesentlichen auf diesem:
GerBra Nimm mal dieses Skript:
Teste alle Module des Kernels aus /usr/lib/modules/$(uname -r)
Wenn das jeweilige Modul Firmware-Files referenziert(modinfo -F firmware <modul>), dann prüfe jedes dieser firmware-files in welchen Paketen es ggf. drin ist und dabei stelle fest, ob in mehr als einem Paket.
//Edit: Der aktuelle Kernel hat ca. 6200 Module, davon haben eben ca. 240 Referenzen auf Firmware-Blob_files-
Der Output dieses Skripts (Wichtig ist unten ab Sum):
https://0x0.st/Piql.txt
Speichert es ggf. als output ab.
Erklärung:
Ref:x bedeutet: Wie viele Firmware-Files referenziert modinfo -F firmware gesamt?
Found:x bedeutet: Wie viele davon werden überhaupt in Paketen gefunden?
Unique:x bedeutet: In wie vielen unterschiedlichen Paketen wird ggf. das jeweilige File gefunden. Idealfall sollte nur 1 sein.
Package(s): In welchen Paketen wurde eines der Firmware-Files gefunden
Die Ausgangsfrage ist: Gibt es Kernel-Module die ggf. Firmware-Blob-Files aus unterschiedlichen, mehreren Paketen brauchen?
Das Kriterium dafür wäre Unique:x größer als 1
Danach fragen wir obigen output nun ab(Datei sollte output heißen):
$ grep -v -e 'Working on' -e'Unique:1' output
Sum
mt7603e = (Ref:4 Found:0 Unique:0 Package(s):)
isight_firmware = (Ref:1 Found:0 Unique:0 Package(s):)
zd1211rw = (Ref:6 Found:0 Unique:0 Package(s):)
p54usb = (Ref:2 Found:0 Unique:0 Package(s):)
plfxlc = (Ref:1 Found:0 Unique:0 Package(s):)
softing_cs = (Ref:7 Found:0 Unique:0 Package(s):)
dvb_usb_dw2102 = (Ref:8 Found:0 Unique:0 Package(s):)
pvrusb2 = (Ref:4 Found:0 Unique:0 Package(s):)
ptp_idt82p33 = (Ref:1 Found:0 Unique:0 Package(s):)
mn88473 = (Ref:1 Found:0 Unique:0 Package(s):)
mn88472 = (Ref:1 Found:0 Unique:0 Package(s):)
hci_bcm4377 = (Ref:8 Found:0 Unique:0 Package(s):)
snd_usb_6fire = (Ref:3 Found:0 Unique:0 Package(s):)
lattice_ecp3_config = (Ref:1 Found:0 Unique:0 Package(s):)
bt3c_cs = (Ref:1 Found:0 Unique:0 Package(s):)
drx39xyj = (Ref:1 Found:0 Unique:0 Package(s):)
si2165 = (Ref:1 Found:0 Unique:0 Package(s):)
si2168 = (Ref:4 Found:0 Unique:0 Package(s):)
qat_6xxx = (Ref:2 Found:0 Unique:0 Package(s):)
solos_pci = (Ref:3 Found:0 Unique:0 Package(s):)
snd_hda_codec_ca0132 = (Ref:3 Found:3 Unique:2 Package(s):extra/alsa-firmware core/linux-firmware-other)
ipw2100 = (Ref:3 Found:0 Unique:0 Package(s):)
p54spi = (Ref:2 Found:0 Unique:0 Package(s):)
b43legacy = (Ref:2 Found:0 Unique:0 Package(s):)
testmod_2uniques = (Ref:2 Found:2 Unique:2 Package(s):core/linux-firmware-broadcom core/linux-firmware-intel)
ipw2200 = (Ref:3 Found:0 Unique:0 Package(s):)
aic94xx = (Ref:1 Found:0 Unique:0 Package(s):)
wcn36xx = (Ref:1 Found:0 Unique:0 Package(s):)
m88ds3103 = (Ref:3 Found:0 Unique:0 Package(s):)
moxa = (Ref:3 Found:0 Unique:0 Package(s):)
dvb_usb_az6007 = (Ref:1 Found:0 Unique:0 Package(s):)
snd_hda_scodec_cs35l56 = (Ref:4 Found:0 Unique:0 Package(s):)
si2157 = (Ref:13 Found:0 Unique:0 Package(s):)
snd_riptide = (Ref:1 Found:0 Unique:0 Package(s):)
snd_soc_rt5677 = (Ref:1 Found:0 Unique:0 Package(s):)
habanalabs = (Ref:3 Found:0 Unique:0 Package(s):)
xhci_pci_renesas = (Ref:1 Found:0 Unique:0 Package(s):)
cx24117 = (Ref:1 Found:0 Unique:0 Package(s):)
bcm203x = (Ref:2 Found:0 Unique:0 Package(s):)
ds3000 = (Ref:1 Found:0 Unique:0 Package(s):)
af9013 = (Ref:1 Found:0 Unique:0 Package(s):)
bfusb = (Ref:1 Found:0 Unique:0 Package(s):)
cx231xx = (Ref:1 Found:0 Unique:0 Package(s):)
dvb_usb_lmedm04 = (Ref:6 Found:0 Unique:0 Package(s):)
dvb_usb_af9015 = (Ref:1 Found:0 Unique:0 Package(s):)
mxl692 = (Ref:1 Found:0 Unique:0 Package(s):)
xc2028 = (Ref:2 Found:0 Unique:0 Package(s):)
speedfax = (Ref:1 Found:0 Unique:0 Package(s):)
rt2800usb = (Ref:1 Found:2 Unique:2 Package(s):extra/kismet core/linux-firmware-mediatek)
cx23885 = (Ref:1 Found:0 Unique:0 Package(s):)
ivtv = (Ref:3 Found:0 Unique:0 Package(s):)
b43 = (Ref:17 Found:0 Unique:0 Package(s):)
fdp = (Ref:2 Found:7 Unique:7 Package(s):core/linux-firmware-atheros extra/gnumeric extra/python-opengl extra/intel-oneapi-basekit extra/qemu-common extra/libpinyin extra/rpp)
p54pci = (Ref:1 Found:0 Unique:0 Package(s):)
tda10071 = (Ref:1 Found:0 Unique:0 Package(s):)
adf7242 = (Ref:1 Found:0 Unique:0 Package(s):)
dvb_usb_ec168 = (Ref:1 Found:0 Unique:0 Package(s):)
at76c50x_usb = (Ref:8 Found:0 Unique:0 Package(s):)
wd719x = (Ref:2 Found:0 Unique:0 Package(s):)
bttv = (Ref:1 Found:0 Unique:0 Package(s):)
ast = (Ref:1 Found:0 Unique:0 Package(s):)
Was sofort auffällt: viele Module mit Unique:0
D.h.: Es wird von modinfo Firmware referenziert, aber es gibt diese in keinem archlinux Repo Paket.
In meinem Haupt-Skript würden diese als "Bad" gewertet werden, da u.U. zum korrekten Betrieb nötige Firmware fehlt. Real dürfte es eher bedeuten: Diese referenzierten Blob-Files sind nicht (mehr) nötig.
Aber das interessiert momentan wenig. (Aber ich muß mir das fürs haupt-Skript nochmal genau ansehen)
Also schließen wir Unique:0 auch noch aus:
$ grep -v -e 'Working on' -e 'Unique:0' -e'Unique:1' output
Sum
snd_hda_codec_ca0132 = (Ref:3 Found:3 Unique:2 Package(s):extra/alsa-firmware core/linux-firmware-other)
testmod_2uniques = (Ref:2 Found:2 Unique:2 Package(s):core/linux-firmware-broadcom core/linux-firmware-intel)
rt2800usb = (Ref:1 Found:2 Unique:2 Package(s):extra/kismet core/linux-firmware-mediatek)
fdp = (Ref:2 Found:7 Unique:7 Package(s):core/linux-firmware-atheros extra/gnumeric extra/python-opengl extra/intel-oneapi-basekit extra/qemu-common extra/libpinyin extra/rpp)
Bleiben diese 3 4 Module übrig. Was ist dazu zu sagen:
a) testmod_2uniques
Das ist ein Test-Modul was ich in mein Skript eingebaut habe, um die korrekte Funktion zu testen. Das es hier auftaucht ist berechnet.
b1) fdp
Firmware in sieben unterschiedlichen Paketen? HoHo...
Das ist einfach ein logischer Syntax-Fehler im testskript, den habe ich schon korrigiert.
modinfo -F firmware fdp
zeigt zwei Blobs, und man muß per pacman -Fqx halt "richtig" suchen: pacman -Fqx /usr/lib/firmware.*/"$i"
Real ist für dieses Modul auch nur ein Firmware-Paket "zuständig": linux-firmware-atheros
b2) rt2800usb
Gleiches "Problem" wie obiges fdp Modul, extra/kismet taucht auf aufgrund eines "Such-Fehlers"
c) snd_hda_codec_ca0132
Das ist nun wirklich ein Modul, welches Firmware-Blobs aus zwei unterschiedlichen Paketen benötigt.
Und zudem das Einzige.
modinfo -F firmware snd_hda_codec_ca0132
- ctefx-r3di.bin ist in extra/alsa-firmware
- ctefx-desktop.bin ist in extra/alsa-firmware
- ctefx.bin ist in core/linux-firmware-other
Was ergibt das für die Ausgangsfrage:
Gibt es Kernel-Module die ggf. Firmware-Blob-Files aus unterschiedlichen, mehreren Paketen brauchen?
Es gibt ein einziges Paket. Alle anderen beziehen ihre ggf. nötige Firmware aus jeweils nur einem Archlinux Firmware-Paket.
brikler oder gibts ein modul, was zwei verschiieden firmware packete notwendig machen würde?
Es gibt genau eines. Das könnte man einfach "ignorieren" (oder findet eine separate Lösung zu).
Die Suche: <firmware-blob> in welchen Paketen könnte man wohl doch nach einem(oder ggf. 2) gefundenen Paketen abbrechen und das bisher gefundene als dafür notwendiges Firmware-Paket deklarieren.
Für iwlwifi z.B. würde das bedeuten: Sobald du einen Blob in linux-firmware-intel "gefunden" hast mußt du die anderen Blobs nicht auch noch untersuchen. V.a. nicht die, die in keinem der aktuellen Pakete zu finden ist.
//Edit123<g>:
Für iwlwifi z.B. würde das bedeuten: Sobald du einen der 62 referenzierten Blobs in linux-firmware-intel gefunden hast (du findest sowieso nur 29) brauchen die restlichen Blobs nicht weiter untersucht werden. Wir können annehmen: iwlwifi = linux-firmware-intel
//Edit124<g>: Und das gilt halt für jedes andere Modul entsprechend auch.
//Edit:
Ich kann das Check-Skript auf welchem o.A. beruht auch gerne zur Verfügung stellen. Es bringt aber die jeweilige Hardware ganz schön ans Schwitzen <g>
Auf meinem PC (6 cores, mit HT 12) brauchte es 51 Minuten, alle Kerne + Load waren fast immer am Max.