Без пакета linux-firmware система не грузится

vasek
journalctl
А если firmware инит подгружает до монтирования /var запись будет в журнале?
$ journalctl | grep firmware
Пусто. Или уменьшить уровень логирования? )
MaxLevelStore=warning
$ dmesg | grep firmware
Тут только самопальный edid в параметрах загрузки ядра.
vs220
В настоящее время в новые устройства микропрограмма больше не встраивается; её код загружается в устройство операционной системой при каждом запуске.
Вот теперь понял, спасибо. Это типа грош сэконопили на ПЗУ :)

vasek
Посмотреть какие firmware загружаются на данном железе можно так
journalctl -b | grep firmware
У меня эта команда завершается молча. Но система не загружается без linux-firmware. Кстати, виснет она культурненько: если нажать Alt-Ctrl-Del - идёт на перезагрузку.

Aivar
for i in `lsmod | sed '1d' | cut -d \ -f 1`; do modinfo $i | grep firmware && echo $i; done
А эта команда выдаёт кучу строк, которые почти все ко мне отношения иметь не могут. Как среди них выделить реально использованное?
akorop
Это типа грош сэконопили на ПЗУ :)
Это позволяет легко обновлять микрокод без необходимости перепрошивать ПЗУ.
akorop
эта команда выдаёт кучу строк, которые почти все ко мне отношения иметь не могут
Дык я для себя ее сочинил. Вы свой выхлоп разбирайте сами... ;)
akorop
кучу строк,
А если чуть подправить заменив modinfo на modprobe --show-depends? Что то глянул у меня и нет ничего с firmware.
Покажет ли modprobe --show-depends по зависимостям firmware?
for i in `lsmod | sed '1d' | cut -d \  -f 1`; do modprobe --show-depends $i  | grep firmware && echo $i; done
vs220
for i in `lsmod | sed '1d' | cut -d \ -f 1`; do modprobe –show-depends $i | grep firmware && echo $i; done
Пустой вывод.
А вот попробовал я dmesg | grep -i firmware и вывод меня ошарашил:
[    7.596576] [drm] Found VCN firmware Version ENC: 1.9 DEC: 1 VEP: 0 Revision: 28
[    0.692994] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[    0.707816] acpi PNP0A08:00: [Firmware Info]: MMCONFIG for domain 0000 [bus 00-3f] only partially covers this bridge
[    6.834626] tpm_crb MSFT0101:00: [Firmware Bug]: ACPI region does not cover the entire command/response buffer. [mem 0x5b8cb000-0x5b8cbfff flags 0x200] vs 5b8cb000 4000
[    6.834662] tpm_crb MSFT0101:00: [Firmware Bug]: ACPI region does not cover the entire command/response buffer. [mem 0x5b8cf000-0x5b8cffff flags 0x200] vs 5b8cf000 4000
[    7.596576] [drm] Found VCN firmware Version ENC: 1.9 DEC: 1 VEP: 0 Revision: 28
[    7.596587] [drm] PSP loading VCN firmware
[   11.922474] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
И как оно вообще работает?! Впрочем, про загрузку фирмвари опять ничего позитивного.
akorop
опять ничего
По идеи
modinfo модуль | grep firmware
показывает всю фирмарь которая может быть подгружена модулем
modprobe –show-depends модуль
все зависимости подгружаемые модулем
firmware видать не показывает

не на чем проверить
блютуз для примера
modinfo btusb |grep firm
firmware: mediatek/mt7668pr2h.bin
firmware: mediatek/mt7663pr2h.bin
----
modprobe --show-depends btusb
insmod /lib/modules/5.5.3-arch1-1/kernel/lib/crc16.ko.xz
insmod /lib/modules/5.5.3-arch1-1/kernel/crypto/ecc.ko.xz
insmod /lib/modules/5.5.3-arch1-1/kernel/net/rfkill/rfkill.ko.xz
insmod /lib/modules/5.5.3-arch1-1/kernel/crypto/ecdh_generic.ko.xz
insmod /lib/modules/5.5.3-arch1-1/kernel/net/bluetooth/bluetooth.ko.xz
insmod /lib/modules/5.5.3-arch1-1/kernel/drivers/bluetooth/btintel.ko.xz
insmod /lib/modules/5.5.3-arch1-1/kernel/drivers/bluetooth/btbcm.ko.xz
insmod /lib/modules/5.5.3-arch1-1/kernel/drivers/bluetooth/btrtl.ko.xz
insmod /lib/modules/5.5.3-arch1-1/kernel/drivers/bluetooth/btusb.ko.xz
Как я это понимаю, возможно и не совсем верно - есть firmware, которые вкомпилированы в ядро и о них заботится не нужно и есть firmware, встроенные в initramfs, наличие которых нужно смотреть в этом самом initramfs.
У меня в initramfs их нет (распаковал initramfs-linux.img в ~/TTT/initramfs)
ls ~/TTT/initramfs/usr/lib | grep firmware ……. пусто
find ~/TTT/initramfs -iname '*firmware*' ……. пусто
на всякий случай вывод - ls ~/TTT/initramfs
VERSION  buildconfig  dev  hooks  init_functions  lib64     proc  sbin  tmp  var bin  config   etc  init   lib    new_root  run   sys   usr

PS - Узнать какие модули нужны на стадии загрузки - mkinitcpio -M
Чтобы посмотреть firmware в ядре нужно распаковать vmlinz-linux. Я распаковал в ~/TTT/TEMP/2/vmlinux, но это чистый бинарник и нужно его распаковывать дальше, но не будем (слишком муторно), просто применил strings к распакованному бинарнику vmlinux
strings ~/TTT/TEMP/2/vmlinux | grep firmware ….. чтобы посмотреть наличие строк firmware - их много, например
/lib/firmware/5.5.3-arch1-1
/lib/firmware
firmware-name
Loading firmware from %s
firmware_class: %s
firmware_class: %s: %s
и куча других, самих бинарников, конечно, так не увидишь, нужно распаковывать дальше.

EDIT 1 - с самой загрузкой firmware знаком плохо (как то не интересно было, интереснее залезти в потроха ...), но привожу цитату из одного источника
Ядро фактически не загружает прошивку. Он просто информирует пользовательское пространство: "Я хочу прошивку по имени xxx" и ждет, пока пользовательское пространство вернет изображение прошивки обратно в ядро.
Ошибки не исчезают с опытом - они просто умнеют
vasek
загрузкой firmware
Ну ТС я так понял нужно просто получить список используемых /usr/lib/firmware/*
 
Зарегистрироваться или войдите чтобы оставить сообщение.