Linux

以下核心 Makefile 術語有什麼區別:vmLinux、vmlinuz、vmlinux.bin、zimage 和 bzimage?

  • February 16, 2022

在瀏覽核心 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開始LZMAbzip2也可以使用。通過向 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

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