Kernel

我想了解 Buildroot - 3 個壓縮配置選項(核心、initramfs 和 rootfs)

  • February 5, 2014

我正在使用 buildroot 來生成我的圖像,並且可以肯定在不同的方法(LZO、LZMA、gzip、…)的幫助下可以選擇壓縮。

到目前為止,我在 buildroot (v. 2013.11) 中找到了這 3 個壓縮選項:

  • 核心壓縮模式(在 make linux-menuconfig 中)
  • 內置 initramfs 壓縮模式(在 make linux-menuconfig 中)
  • .cpio 根文件系統的壓縮方法((在 make menuconfig 中)

我的問題是:

  1. 這些模式有什麼區別和
  2. 為什麼我被迫在 3 種核心壓縮方法之間進行選擇,而不是讓它保持未壓縮狀態?

問候

  1. 這三個不同的選項用於生成的 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 通常也會被壓縮。這樣做的利大於弊。

引用自:https://unix.stackexchange.com/questions/113672