initrdなしで起動

initrdなしで起動

initrd.imgなしでLinuxを起動できますか?カーネル自体の一部としてデフォルトドライバを追加し、initrdを完全に回避する予定です。

ロード可能なモジュールではなくカーネルの一部でなければならないモジュールは何ですか?

答え1

ルートボリュームがLVM、dmcryptパーティションにある場合、またはアクセスするためにコマンドを実行する必要がない限り、これは本当です。

私は何年も私のサーバーでinitrdを使用していません。少なくとも次のモジュールが組み込まれている必要があります。

  • ルートボリュームディスクを持つすべてのコントローラ用ドライバ
  • PCI、PCIeサポート、USBサポートなど、これらの機能を「取得」するために必要なドライバ
  • ファイルシステムがマウントされているモジュールを実行します。

    内蔵ネットワークカードドライバもとても良いアイデアです。

    現在実行中のカーネルで助けることができることがわかりました。その中に何があるかを見て、アクティブなモジュールがある場所を見つけるためにコンパイルする前に、make menuconfig検索オプションを使用lspciしてください。lsmod

答え2

基本ドライバの追加計画

make defconfig && makeその後、関連する回答で簡単にわかるように、そこから始めてください。わかりました、まず基本(x86_64?) .config

これは現在9MBのかなり大きなコアを提供します。唯一のモジュールはWebフィルタそれら。

より多くのカスタム構成を使用すると、4.5MBのコアとより多くのモジュール(特にi915モジュール)が作成されます。

一部のモジュール持つ内蔵されています。その他の回答をご覧ください。 10年後には、I / Oデバイスも明示的に追加する必要があります。USB_HIDキーボードの場合、Facebook(フレームバッファ)は、システムに応じた統合グラフィック用です。

デバイスは電源投入後も動作し続けないようです。グラフィックカードモジュールとネットワークモジュールといくつかのバスヘルパーがワットを5.1から3.1に下げました。これはやや直観に反します。ドライバは、デバイスを正しい一時停止状態に設定または落ち着かせると解釈します。

モジュールを取り外すことはできますがe1000e(0.2ワット程度の電力が戻ってこないようで、ネットワークがシャットダウンします)、i915取り外すこともできません。したがって、これらの「モジュール」は非常に異なる動作をします。

make defconfiglsmodinitrd/udevd install/distroがインストールされたら、make nconfigクリーニング(またはいくつかの項目を追加)または同様の作業を開始できます。仕事Kconfig

修正.config後:

make -jx bzImage

このイメージをマウントして(コピーしてKCL:提供root=)、ブートをテストできます。動作し、次のモジュールも必要な場合:

make -jx modules
make INSTALL_MOD_PATH=/maybe/mnt/elseroot modules_install

.config再構成する前にファイルを保存して名前を付けることを忘れないでください。

一部のモジュール(ネットフィルタ、ファイルシステムサポート)はきれいに取り外すことができます。モジュールはbzImageとは別にコンパイルされるため、冗長な場合はカーネルのコンパイル時間が節約されます。それ以外の場合、lsmod出力がどのように見えるかを気にしない限り、違いは大きくありません。

ああ、そしてsystemd要件と期待もあります。

関連情報