ZimaOSは、Ubuntu形式のapt install linux-firmware-...コマンドでホストのカーネルファームウェアを気軽にインストールすることをサポートしていません。 ZimaOSはアプライアンス型のシステムであり、IceWhaleは、ホストのファームウェアは手動でコピーするのではなく、OSのリリースに統合すべきだと明確に説明しています。
この事例では、TvheadendやPlexが使用する前にファームウェアのバイナリを必要とするHauppauge WinTV-NOVA-S2 USB DVB-S2チューナーが対象でした。IceWhaleは、将来のリリースでファームウェアを統合することに同意し、ユーザーにテストを依頼しました。
Ubuntuのコマンドをそのまま適用できない理由
Ubuntuのパッケージマネージャーは、変更可能なホストファイルシステムにファームウェアを書き込めます。ZimaOSは、同じパッケージの手順を使う一般的なDebianインストールではありません。
カーネルのファームウェアはホストで利用可能でなければならない
多くのDVB、Wi-Fi、その他のデバイスは、初期化時にホストカーネルへファームウェアを要求します。ホストがハードウェアを初期化できていない場合、Dockerコンテナではそれを解決できません。
ステップ1:デバイスと不足しているバイナリを正確に特定する
lsusb
dmesg | grep -i -E 'firmware|dvb|usb'
USB/PCI ID、ドライバー名、正確な不足ファイル名を記録します。
ステップ2:ファームウェアの出所とライセンスを確認する
IceWhaleに同梱を依頼する際は、公式ベンダー/kernel-firmwareのソースと再配布に関する情報を提供してください。
ステップ3:OSへの統合を依頼する
IceWhaleは、セキュリティ上の理由からユーザーがホストのファームウェアを自分で追加することはできず、明確な用途があればチームが特定のバイナリを統合できると説明しました。
ステップ4:搭載されたリリース後にテストする
デバイスを再接続して確認する dmesgTvheadendやPlexを設定する前に、「ファームウェアファイルが見つかりません」というエラーなしでドライバーが初期化されることを確認します。
デバイスをアプリに別途渡す
ホストがDVBチューナーを認識した後でも、Dockerアプリには関連する /dev/dvb コンテナに割り当てられたデバイス。ホストのファームウェアとコンテナからのアクセスは、別々の層です。
ユーザー空間のファームウェアとカーネルのファームウェアを混同しない
一部のアプリは独自のモデルやデータファイルを読み込み、それらをコンテナにマウントできます。カーネルドライバーが要求するファームウェアは、それとは異なります。
ハードウェアのトラブルシューティングガイドは、報告内容を整理するのに役立ちます。
Linuxのファームウェア読み込みの仕組み
カーネルドライバーがハードウェアを初期化する際、Linuxファームウェアローダーを呼び出し、ホストのファームウェアパスから名前付きのバイナリを要求できます。そのファイルがない場合、ドライバーは部分的にしかバインドされないか、最終的なデバイスノードの公開を拒否することがあります。
上流の{A("https://docs.kernel.org/driver-api/firmware/request_firmware.html","Linuxファームウェアローダーのドキュメント","カーネルドライバーがホストOSにファームウェアを要求する仕組みを理解する")}では、このホストレベルの仕組みについて説明しています。
ファームウェアだけを要求する前にドライバーの存在を確認する
ZimaOSにデバイス用のカーネルドライバーがない場合、ファームウェアバイナリでは解決できません。確認してください dmesg ドライバーが読み込まれてからファームウェアを要求するのか、それともスタックの早い段階でハードウェアがサポート対象外になるのかを判断するための、モジュール情報。
コンテナへのパススルーはホストでの検出後に行う
Tvheadend、Plex、その他のアプリケーションでは、まずホストがチューナーを次の場所に公開していることを確認してください: /dev/dvb。その後で、Dockerのデバイスマッピングとアプリケーションの権限を設定します。
ZimaOSのアップグレードごとに再テストする
IceWhaleがファームウェアをリリースに統合した場合は、その後のメジャーアップデート後もチューナーが正常に初期化されることを確認してください。再現可能な回帰報告のため、正確なハードウェアIDをメモに残しておきます。
Linuxファームウェアローダーを理解する
カーネルドライバーは、デバイスの初期化中に名前付きのファームウェアバイナリを要求することがよくあります。上流のLinuxファームウェアローダーのドキュメントでは、この処理がホストカーネルレベルで、ほとんどのアプリケーションコンテナがデバイスを使用できるようになる前に行われることを説明しています。
ドライバーが存在するものの、要求されたバイナリが不足している場合は、OSに統合されたファームウェア更新が適切な解決策です。ドライバー自体が不足している場合、バイナリだけを追加してもハードウェアは動作しません。
よくある質問
ZimaOSにlinux-firmwareをapt installできますか?
ZimaOSをUbuntuのように扱わないでください。IceWhaleは、必要なホストファームウェアを統合する方針を示しています。
Dockerに不足しているファームウェアを含めることはできますか?
ホストカーネルがコンテナにデバイスが存在する前に必要とする場合は、必要です。
統合後に何を確認すべきですか?
使用 dmesg クリーンな初期化を確認するためのハードウェア列挙。
ファームウェアにはデスクトップGUIが必要ですか?
いいえ。カーネルとデバイスのファームウェアは、ヘッドレスサーバー上で動作します。
