いくつかの点を変更しながら、/etc/fstab
鶏と卵の問題について考えました。/etc/fstab
ファイルシステム(ルートパーティションを含む)をマウントするための指示が含まれている場合、オペレーティングシステムは最初にそのファイルをどのように読み込みますか?
答え1
ブートローダがカーネルを呼び出すと、カーネルにというパラメータを渡しますroot
。したがって、カーネルが初期化を終了する/
と、呼び出す前に指定されたルートパーティションマウントを実行します/sbin/init
(他のパラメータでオーバーライドされない限り)。
その後、プロセスinit
はデフォルトの実行レベルで開始するように定義されているすべてのサービスをロードし、システムの残りの部分を開始します。
構成および使用する初期化システムによっては、前述のステップの間にいくつかの異なるステップがあります。現在、Linuxで最も広く使用されているinitシステムは、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が再マウントされたら、適用するファイルシステムパラメータを指定できます。
答え2
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が間違っていると、起動時にメッセージが印刷されますが、Failed to start Remount Root and Kernel File Systems
システムはまだ起動します。