2013-06-12 22 views
3

我有一些與linux boot進程相關的問題。 Initramfs是加載的第一階段rootfile系統。 iniramfs中的init進程負責將實際的rootfile系統從硬盤掛載到/目錄。Linux啓動過程 - iniramfs&root()

現在我的問題是where is/directory created by init(initramfs的init進程)掛載實際的根分區。它是在RAM或hardisk ?

而且一旦實際的根partiton安裝,然後會發生什麼變化的initramfs ?

如果initramfs中從RAM中刪除,然後會發生什麼由initramfs的創建/文件夾?

請建議,可以解釋一下how does this magic works

//艾倫

回答

2

(initramfs的)/ sbin/init所做的是加載文件系統和必要的模塊。然後它會嘗試加載目標真正的「rootfs」。然後它從initramfs切換到真正的rootfs,並且硬盤上有「/」。在安裝系統時創建「/」,完成硬盤格式化。請注意,它是關於讀取文件系統的內容,因此它是首先加載所需模塊的先決條件。如果你有一個「/」的ext3分區,那麼ext3.ko將被加載,等等。

第二個問題的答案 - 在完成所需的fs模塊加載之後,它將從initramfs的init切換到真正的rootfs的init,並且通常的啓動過程開始並從內存中刪除initramfs。這個切換是通過pivot_root()完成的。

第三個答案 - initramfs不會創建任何目錄,只是將現有的initramfs.img映像加載到ram中。

因此,簡而言之,加載iniramfs或rootfs不是創建任何目錄,而是加載現有的文件系統映像。剛啓動後 - 它使用initramfs加載必需的文件系統模塊,就好像它可以讀取真正的文件系統一樣。希望它會有幫助!

1

隨着initrd的有兩種選擇:

  1. pivot_root使用旋轉最終文件系統到適當位置,或

  2. 清空根和安裝在最後的文件系統它。

更多信息可查詢here