- 论坛徽章:
- 0
|
本帖最后由 cu_liang 于 2010-02-24 11:43 编辑
前一段时间刚好也在研究ramdisk, 下面是我找到的关于ramdisk的资料,希望对楼主有用
在 Linux kernel 2.4 中,initrd 大致的處理流程如下:(方括號表示主要的執行單元)
[boot loader] Boot loader 依據預先設定的條件,將 kernel 與 initrd 這兩個 image 載入到 RAM
[boot loader -> kernel] 完成必要的動作後,準備將執行權交給 Linux kernel
[kernel] 進行一系列初始化動作,initrd 所在的記憶體被 kernel 對應為 /dev/initrd 裝置設備,
透過 kernel 內部的 decompressor (gzip 解壓縮) 解開該內容並複製到 /dev/ram0 裝置設備上
[kernel] Linux 以 R/W (可讀寫) 模式將 /dev/ram0 掛載為暫時性的 rootfs
[kernel-space -> user-space] kernel 準備執行 /dev/ram0 上的 /linuxrc 程式,並切換執行流程
[user space] /linuxrc 與相關的程式處理特定的操作,比方說準備掛載 rootfs 等
[user-space -> kernel-space] /linuxrc 執行即將完畢,執行權轉交給 kernel
[kernel] Linux 掛載真正的 rootfs 並執行 /sbin/init 程式
[user space] 依據 Linux distribution 規範的流程,執行各式系統與應用程式
值得一提的是,以上「兩階段開機」是 initrd 提出的彈性開機流程,在真實的應用中,
也可能從未需要掛載真正的 rootfs,換言之,只是把系統當作都在 RAM disk 上運作,\r
或者永遠都在 initrd 所引導執行的 /linuxrc 程序中執行 (注意:kernel 永遠保留 PID=1 作為 init process 識別,
而 /linuxrc 執行的 PID 必非為 1),在許多裝置如智慧型手機,都是行之有年的,不過這不影響我們後續的探
里边所说的 initrd 大体上就是指 包含根文件系统的ramdisk。 |
评分
-
查看全部评分
|