Kernel
我想了解 Buildroot - 3 個壓縮配置選項(核心、initramfs 和 rootfs)
我正在使用 buildroot 來生成我的圖像,並且可以肯定在不同的方法(LZO、LZMA、gzip、…)的幫助下可以選擇壓縮。
到目前為止,我在 buildroot (v. 2013.11) 中找到了這 3 個壓縮選項:
- 核心壓縮模式(在 make linux-menuconfig 中)
- 內置 initramfs 壓縮模式(在 make linux-menuconfig 中)
- .cpio 根文件系統的壓縮方法((在 make menuconfig 中)
我的問題是:
- 這些模式有什麼區別和
- 為什麼我被迫在 3 種核心壓縮方法之間進行選擇,而不是讓它保持未壓縮狀態?
問候
- 這三個不同的選項用於生成的 Linux 系統、核心本身、initramfs 和結果文件系統的三個不同方面。
- 核心壓縮模式:壓縮編譯的核心映像。例如,在我的 Ubuntu 12.04 機器上,核心位於
/boot/vmlinuz-3.8.0-35-generic
- 內置 initramfs 壓縮模式:初始 ram 文件系統映像的壓縮。在我的機器上,這將是
/boot/initrd.img-3.8.0-35-generic
.- .cpio 根文件系統的壓縮方法:這是根
/
文件系統。在桌面系統上,這通常是一個磁碟分區(ext2/3/4…),以讀/寫方式安裝在/
. 在嵌入式系統上,它將是一個以.cpio
只讀方式安裝的壓縮存檔/
(在引導完成後)。Linux核心由boot-loader解壓到記憶體中然後給予控制權,然後核心會掛載初始的ram文件系統作為root fs,initramfs會做一些任務,包括載入真實的文件系統(.cpio root文件系統)並完成引導過程。
三種不同的模式使用不同的壓縮算法,不同的算法在解壓數據時有不同的要求:記憶體使用、解壓時間(cpu使用)和庫解壓常式的大小。因此,您需要選擇更適合您的需求和目標平台的壓縮算法。存在許多比較不同庫(基準)的要求和性能的圖表。 2. buildroot 通常針對嵌入式設備(據我所知),大小因素在這些設備中非常關鍵,因此您通常需要壓縮 initramfs、核心和根文件系統。
實際上,即使在非嵌入式設備(台式機、伺服器…)上,核心和 initramfs 通常也會被壓縮。這樣做的利大於弊。