回答:
ブートローダーはカーネルを呼び出すときに、というパラメーターを渡しますroot
。そのため、カーネルが初期化を完了すると、指定されたルートパーティションをマウントして/
呼び出します/sbin/init
(これが他のパラメーターによってオーバーライドされていない限り)。
次に、init
プロセスは、デフォルトのランレベルで開始されるように定義されているすべてのサービスをロードすることにより、システムの残りの部分を開始します。
構成と使用するinitシステムに応じて、前述した手順の間に複数の手順が存在する場合があります。現在、Linuxで最も人気のある初期化システムは、SysVInit(従来のシステム)、Upstart、およびSystemdです。ブートプロセスの詳細については、このウィキペディアの記事を参照してください。
これが私のGrub設定の簡単な例です。あなたの質問に答える重要な部分は、最後から2番目の行にありますroot=/dev/sda3
。
menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-40864544-2d0f-471a-ab67-edd7e4754dae' {
set root='hd0,msdos1'
echo 'Loading Linux 3.12.6-gentoo-c2 ...'
linux /kernel-3.12.6-gentoo-c2 root=/dev/sda3 ro
}
多くの構成では、カーネルは/
読み取り専用モードでマウントされ、残りのオプションはすべてデフォルトに設定されます。で/etc/fstab
initが再マウントすると適用されるファイルシステムパラメータを指定する場合があります。
fstab
デフォルト以外のマウントオプションを指定する場合は、のエントリが必要です。しかし、今日でsystemd
は、正しいカーネルデバイスとfstypeは必要fstab
ありません。ルートエントリを次のようなものに置き換えることができます。
#UUID=8f74237d-b689-4beb-9d1f-f60b426c9969 / ext4 rw,relatime,data=ordered 0 1
dummy / auto rw,relatime,data=ordered,debug 0 1
マウントオプションはsystemdでも引き続き使用されます。
/dev/sdz1
不良なUUIDを除き、不良なデバイス名を使用できます。UUIDが正しくない場合、メッセージはboot:Failed to start Remount Root and Kernel File Systems
で出力されますが、システムはとにかく起動します。
init
プロセスは/etc/fstab
そこにあるパラメータに従って物をマウントします。これは通常、ルートパーティションを読み書き可能に再マウントすることを意味します。