/init(または/linuxrc)スクリプトは/ devに一時デバイスノードを作成しますか?

/init(または/linuxrc)スクリプトは/ devに一時デバイスノードを作成しますか?

次の行を実行するGRUBを考えてみましょう。

kernel /vmlinuz root=/dev/sda1 ro
initrd /initrd

Linuxカーネルは起動時に/dev/sda1デバイスノードをどのように見つけますか?

initrd/initramfs イメージには、ストレージへのアクセスを許可するためにメモリーにロードされるストレージ (など) デバイス用のモジュールが含まれていることがわかります。私を悩ませるのは、root=/dev/sda1カーネルがカーネルパラメータをどれだけ正確に解析するかです。

initrd / initramfsの(または)スクリプトは/initディレクトリを作成し、その中にデバイスノードを作成しますか?それとも、「注」と「負」の数字がカーネルにハードコードされていますか?/linuxrc/dev/dev/sda1/dev/sda1

ベストアンサー1

initramfsがある場合、カーネルはinitramfsを解凍してインストールしてから/init実行されます。他のすべては/init実行可能ファイルによって処理されます。これはまた、カーネルがブートパラメータrootで指定されたデバイスをインストールしないことを意味します。

他のディストリビューションは異なるinitramfsフレームワークを使用します。例えばデラクールFedoraの場合、またはinitramfsのツールDebian の場合。最も一般的な解決策はudevmdevまたは同様のものを使用することですdevtmpfs。一部はただ使用することができますMAKEDEV静的レイアウトを作成するか、デバイスファイルを画像に統合します。

initramfsなしで起動すると、カーネルは、たとえば既知のメジャー/マイナー番号を持つデバイスからのみ起動できますが、/dev/sda1lvmデバイスでは起動できません。

おすすめ記事