dynamic debug、E200HA
- 2025/11/03 05:52
- カテゴリー:PC・ツール・サイト
E200HAにArchを、その24
linux-firmwareメタパッケージをインストールすることで、よく使われるすべてのファームウェアを取得できます。これはほとんどのユーザーに推奨される方法です。ディスク容量を節約したい場合は、自身のシステムで使用しているハードウェアベンダー向けのファームウェアのみを選んでインストールすることもできます。
ArchWikiの「Linux ファームウェア」の項でそう解説されている。
確かに「ディスク容量を節約」したい。何せ、容量は全部合わせると350MBを優に超えていて、当家のE200HAでは、32GBしかないストレージの内、1%以上を占めている。
そのこともさることながら、より大きな気掛かりは、pacmanによる更新作業。更新対象となる時には、その大きな容量のファイル群がダウンロードされ置き換えられる。10/21付け最新版が出た折にも、無駄なDLをしているように思えてならなかった。
必ずしも全部が要るわけではない。そうならば、必要な「ファームウェアのみを選んでインストール」しようじゃないか、と以前から考えていた(cf.その17)。
lspciやinxiでシステム情報を見る。dmesgが吐き出す文字を読む。そんなこんなで、どんなファームウェアが必要とされるのか、だいたい判る。が、詳細は不明。
上で引用したArchWikiのページに、ヒントとテクニック「読み込まれたファームウェアの検出」という項目がある。これだ。PC起動時に「どのファームウェアが読み込まれたか」それは「dynamic debug」で確認可能。これには少し手の込んだ作業が要る。
以下の文字列を、カーネルへ渡す。具体的には、PC起動時、systemd-bootのメニューが表示されたら、eのキーを押し、現れた窓に文字列を書き込む。先客あればスペースを一つ挟んで後ろに追記。ブートを続行する。
dyndbg="func fw_log_firmware_info +p"
立ち上がったら、念のため、カーネルコマンドラインに、上記文字列が、一時的に追加されたことを確認。そして、読み込まれたファームウェアを一覧表示する。
$ cat /proc/cmdline
$ journalctl -kg 'loaded f'
結果、以下のファームウェアが読み込まれたと表示された。わずか3つ。ath10kはlspciでも表示されていたWiFi関係。fw_sst_22a8はノーマークだった。音がらみの模様。
Loaded FW: intel/fw_sst_22a8.bin
Loaded FW: ath10k/QCA9377/hw1.0/firmware-6.bin
Loaded FW: ath10k/QCA9377/hw1.0/board-2.bin
なるほど、この3つさえあればいいんだな。思い切って、これだけ残してあとは全部削除してみることにした(ある程度、予備テストした上で)。
3つ(ath10kの方はフォルダごと)をバックアップしておいて、linux-firmware群すべてを削除($ yay -Rdd )し、バックアップを元の場所へ戻した。その容量、計1MBほど。
リブートすると、音も出るしネットワーク接続も問題なし。成功。ただし、firmwareを削除する作業の際には以下のような、どきっとするメッセージがちらほら出ていた。何か支障が出ないか、しばらくは様子を見てみよう。
WARNING: Possibly missing firmware for module: 'i915'
# E200HAにArchを、linux-firmware、E200HA(いずれもサイト内)
linux-firmware 20251021-1|Arch Linux Packages
Linux ファームウェア|ArchWiki
systemd-boot|ArchWiki
カーネルパラメータ|ArchWiki
Dynabook tab s80/fにChromeOS FlexをインストールしてChromebook化