ディストリビューション(例:Arch)がinitramfsとroot = {smth}の両方を使用するのはなぜですか?

ディストリビューション(例:Arch)がinitramfsとroot = {smth}の両方を使用するのはなぜですか?

initramfsの目標は、ルートパーティションを起動してchrootすることだと思います。ただし、常にroot = {smth}フラグがある場合、distro開発者がinitramfsを使用する理由を理解できません。

答え1

initramfsの目標は、ルートパーティションを起動してchrootすることだと思います。

正確ではありません。私が覚えているLinuxの歴史によると、initramfs(initrd)の全身がマウントされ/linuxrc実行された後、出口(望むより古いルート変更メカニズム)。これにより、カーネルはルートインストールを処理します。後で root をインストールして root に切り替える操作が initramfs に移動され、終了しませ/initんでした。

これは、initramfsが単純なマウントとchroot以上の機能を実行できることを示しています。

Linus Torvaldsは、initramfsの2つの理由を説明しています。:

  • 「誰かがカーネルコードを変更したり、他の起動順序を使わなくても、初期システムをより簡単にカスタマイズできます」

  • 「ユーザースペースには保護機能、「無限スタック」、通常はより良いインフラストラクチャ(デバッグしやすさなど)があるため、ユーザースペースで多くのことを簡単に実行できます。


ただし、常にroot = {smth}フラグがある場合、distro開発者がinitramfsを使用する理由を理解できません。

私はinitramfsを単一のコンパイラとして扱います。もちろん、技術的にはスクリプトとバイナリを含むファイルシステムですが、通常(多くの)構成が含まれていません。一部のパラメータは、ハードコーディングよりもユーザーが実行時に変更できるようにすることをお勧めします。

これにより、システムの一部を再コンパイルすることなく、ブートローダ(grubなど)のシステム起動を変更できます。 Grubでは、eメニュー項目を押すのと同じくらい簡単です。

Initramfsは/proc/cmdline/root

関連情報