* 嵌入式系統中主要的存儲介質 Flash 是稀有資源,為數不多的 RAM 也是。在嵌入式
系統開發中,開發人員十分珍惜這兩種資源,也想出了許多辦法解決資源短缺的問題。
* Linux 中,rootfs 是必不可少的。PC 上主要實現有 ramdisk 和直接掛載 HD(
Harddisk,硬盤) 上的根文件系統;嵌入式中一般不從 HD 啟動,而是從 Flash 啟
動,最簡單的方法是將 rootfs load 到 RAM 的 RAMDisk,稍復雜的就是 直接從
Flash 讀取的 Cramfs,更復雜的是在 Flash 上分區,并構建 JFFS2 等文件系統。
* RAMDisk 將制作好的 rootfs 壓縮后寫入 Flash,啟動的時候由 Bootloader load 到
RAM,解壓縮,然后掛載到 /。這種方法操作簡單,但是在 RAM 中的文件系統不是壓
縮的,因此需要占用許多嵌入式系統中稀有資源 RAM。
* initrd 是 RAMDisk 的格式,kernel 2.4 之前都是 image-initrd,Kernel 2.5 引入
了 cpio-initrd,大大簡化了 Linux 的啟動過程,附合 Linux 的基本哲學:Keep it
simple, stupid(KISS). 不過,cpio-initrd 作為新的格式,還沒有經過廣泛測試,
嵌入式 Linux 中主要采用的還是 image-initrd。
* Cramfs 是 Linus 寫的很簡單的文件系統,有很好的壓縮綠,也可以直接從 Flash 上
運行,不須 load 到 RAM 中,因此節約了 RAM。但是 Cramfs 是只讀的,對于需要運
行時修改的目錄(如: /etc, /var, /tmp)多有不便,因此,一般將這些目錄做成
ramfs 等可寫的 fs。
* SquashFS 是對 Cramfs 的增強。突破了 Cramfs 的一些限制,在 Flash 和 RAM 的使
用量方面也具有優勢。不過,據開發者介紹,在性能上可能不如 Cramfs。這也是一種
新方法,在嵌入式系統采用之前,需要經過更多的測試。
* XIP(exece-in-place,就地運行) 是一種不須將應用程序 load 到 RAM 就可以運行
的技術,無疑可以減少 RAM 的使用。不過在嵌入式系統我還沒有遇到這種技術的使用