Boot

在掛載 root 之前如何訪問 /etc/fstab?

  • March 24, 2018

/etc/fstab當我想到這個先有雞還是先有蛋的問題時,我正在對 進行一些更改-如果/etc/fstab包含安裝文件系統的說明,包括根分區,那麼作業系統首先如何讀取該文件?

當引導載入程序呼叫核心時,它會傳遞一個名為root. 因此,一旦核心完成初始化,它將繼續通過將給定的根分區掛載到/然後呼叫/sbin/init(除非這已被其他參數覆蓋)。

然後,該init程序通過載入定義為在預設執行級別啟動的所有服務來啟動系統的其餘部分。

根據您的配置和您使用的初始化系統,在我提到的步驟之間可能還有多個其他步驟。目前 Linux 上最流行的 init 系統是 SysVInit(傳統的)、Upstart 和 Systemd。您可以在這篇wikipedia 文章中找到有關引導過程的更多詳細資訊。

這是我的 Grub 配置的簡化範例。回答您的問題的重要部分是倒數第二行,有一個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 重新掛載它就會應用這些參數。

引用自:https://unix.stackexchange.com/questions/107828