Linux
以下核心 Makefile 術語有什麼區別:vmLinux、vmlinuz、vmlinux.bin、zimage 和 bzimage?
在瀏覽核心 Makefile 時,我發現了這些術語。所以我想知道
vmlinux
,vmlinuz
,vmlinux.bin
,zimage
&之間有什麼區別bzimage
?
vmlinux
這是靜態連結的執行檔格式的 Linux 核心。通常,您不必擔心這個文件,它只是引導過程中的一個中間步驟。
原始 vmlinux 文件可能對調試有用。
vmlinux.bin
與 vmlinux 相同,但採用可引導的原始二進製文件格式。所有符號和重定位資訊都被丟棄。
vmlinux
由生成objcopy -O binary vmlinux vmlinux.bin
。虛擬機
vmlinux 文件通常使用
zlib
. 從 2.6.30開始LZMA
,bzip2
也可以使用。通過向 vmlinuz 添加進一步的引導和解壓縮功能,該映像可用於引導具有 vmlinux 核心的系統。vmlinux 的壓縮可以使用 zImage 或 bzImage 進行。該函式
decompress_kernel()
在啟動時處理 vmlinuz 的解壓縮,一條消息表明:Decompressing Linux... done Booting the kernel.
z圖像(
make zImage
)這是小核心的舊格式(壓縮後,小於 512KB)。在啟動時,此映像在記憶體中載入不足(RAM 的前 640KB)。
bzImage (
make bzImage
)大 zImage(這與 無關
bzip2
)是在核心增長並處理更大的圖像(壓縮,超過 512KB)時創建的。圖像在記憶體中載入很高(超過 1MB RAM)。由於今天的核心超過 512KB,這通常是首選方式。對 Ubuntu 10.10 的檢查顯示:
ls -lh /boot/vmlinuz-$(uname -r) -rw-r--r-- 1 root root 4.1M 2010-11-24 12:21 /boot/vmlinuz-2.6.35-23-generic file /boot/vmlinuz-$(uname -r) /boot/vmlinuz-2.6.35-23-generic: Linux kernel x86 boot executable bzImage, version 2.6.35-23-generic (buildd@rosea, RO-rootFS, root_dev 0x6801, swap_dev 0x4, Normal VGA