linux根檔案系統掛載過程

2021-08-13 13:11:08 字數 1762 閱讀 6841

initramfs

當linux核心啟動後,會找到並執行第乙個使用者程式,一般是init。這個程式存在於檔案系統當中,檔案系統存在於裝置上,但不知道init存在哪個裝置上,於是有了核心命令列選項root=,用來指定root檔案系統存在於哪個裝置上。

然後由於後來的裝置型別越來越來多,比如可能在scsi,sata,flash這些裝置,還有的存在於網路裝置上,不可能把這些裝置的驅動編譯進核心,這樣核心就會越來越來大。為了解決這些問題,出現了基於ram的檔案系統,initramfs,這個檔案系統可以包含多個目錄和程式init,然後通過這個程式,核心再用這個程式去掛載真正的要檔案系統。如果沒有這個程式,核心可以來尋找和掛載乙個根分割槽,接著執行一些/sbin/init的變種。

ramfs

ramf是乙個小型的基於記憶體的檔案系統,由於linux中頁的資料被快取在記憶體中,然後標識為可用,為防止別用,ramfs就是基於這種機制產生的。只是放在ramfs中的目錄和頁的快取,不在寫回。

rootfs

rootfs是一種特定的ramfs的例項,它一直存在於系統中,不能解除安裝。大部分其他的檔案系統安裝於rootfs之上。

initramfs和rootfs之間的關係

當核心啟動的時候,會先註冊和掛載乙個虛擬的根檔案系統,也就是rootfs,然後會把做好的initramfs(這個可以自己製作)中的檔案解壓到rootfs中。然後系統會掛載真的根檔案系統,rootfs隱藏之後。

我的開發板上的u-boot傳送的引數為noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttysac0,115200 mem=64m。

noinitrd的含義

(僅當核心配置了選項 config_blk_dev_ram和config_blk_dev_initrd)現在的核心都可以支援initrd了,引導程序首先裝載核心和乙個初始化的ramdisk,然後核心將initrd轉換成普通的ramdisk,也就是讀寫模式的根檔案系統裝置。然後linuxrc執行,然後裝載真正的根檔案系統,之後ramdisk被解除安裝,最後執行啟動序列,比如/sbin/init。

選項noinitrd告訴核心不執行上面的步驟,即使核心編譯了initrd,而是把initrd的資料寫到 /dev/initrd,只是這是乙個一次性的裝置。總結

ramfs、rootfs、initramfs

1、ramfs即基於記憶體的檔案系統,rootfs是ramfs的例項;

2、其它檔案系統安裝於rootfs之上,核心啟動後首先註冊和掛載該虛擬根檔案系統,然後解壓initramfs至rootfs中,繼續通過init程式掛載真正的檔案系統。

核心------>initramfs(init)----->真正檔案系統

1、基於ram的檔案系統的意義在於提供init程式掛載真正的檔案系統,使得無需把scsi,sata,flash或網路裝置的驅動編譯進核心造成核心過大;

2、基於ram的檔案系統initramfs包含多個目錄和程式init;

3、需掛載的真正檔案系統,通過在核心引導中配置如root=;

引導程序

-------->裝載核心和乙個初始化的ramdisk

-------->將initrd轉換成普通的ramdisk(讀寫模式的根檔案系統裝置)

-------->執行linuxrc(裝載真正的根檔案系統)

-------->ramdisk被解除安裝

-------->執行啟動序列/sbin/init。

核心啟動後,第乙個使用者程式為init

如果initramfs中沒有init,核心會尋找和掛載乙個根分割槽,接著執行一些/sbin/init的變種

Linux如何掛載根檔案系統

1。linux啟動時,經過一系列初始化之後,需要mount 根檔案系統,為最後執行init程序等做準備,mount 根檔案系統有這麼幾種方式 1 檔案系統已經存在於硬碟 或者類似的裝置 的某個分割槽上了,kernel根據啟動的命令列引數 root dev 直接進行mount。這裡有乙個問題,在roo...

NFS掛載根檔案系統

首先確保你的檔案系統可以正常工作,通過nfs掛載只是幾個服務的事情而已,我的系統是ubuntu 10.04 既然是nfs伺服器,那麼就需要開啟相關的服務。首先來安裝吧 sudo apt get install nfs kernel server 有的服務直接安裝apt get 在10.04上不支援,...

4 根檔案系統掛載

根檔案系統掛載 根據儲存裝置的硬體特性 系統需求,不同的檔案系統型別有不同的應用場合。在嵌入式 linux 應用中,主要的儲存裝置為 ram 和 flash,常用的基於存 儲裝置的檔案 系統型別包括 jffs2,yaffs2,ubifs,ramdisk 等。一 使用initramfs 1 進入 ro...