Linux

bzImage中的更多疑問

  • January 14, 2011

維基百科中的描述bzImage真的讓我很困惑。 替代文字

上圖來自維基百科,但旁邊的一行是:

bzImage 文件採用特定格式:它包含串聯的 bootsect.o + setup.o + misc.o + piggy.o。

我在圖像中找不到其他 (misc.opiggy.o)。

我還想更清楚地了解這些目標文件。

這篇文章中關於為什麼我們無法啟動vmlinux文件的資訊也讓我很困惑。

另一個疑問是關於System.map. 它是如何與bzImage? 我知道它包含vmlinux創建之前的符號bzImage。但是在啟動時,如何bzImage連接到System.map

對於 Linux 2.6.22,bzImage包含:

Linux 2.6.23 將 bbootsect 和 bsetup 合併為一個 ( header.o)。

在啟動時,核心需要初始化一些序列(參見上面的標頭檔),這些序列僅是使系統進入所需的可用狀態所必需的。在執行時,這些序列不再重要(那麼為什麼要將它們包含到正在執行的核心中呢?)。

System.mapvmlinux,相關bzImage的只是壓縮容器,vmlinux在啟動時會從中提取出來(=>bzImage並不真正關心System.map)。

Linux 2.5.39 引入CONFIG_KALLSYMS. 如果啟用,核心會保留它自己的符號映射 ( /proc/kallsyms)。

System.map主要由使用者空間程序使用,例如klogd用於ksymoops調試目的。

放在哪裡System.map取決於參考它的使用者空間程序。

ksymoops嘗試從/proc/ksyms或獲取符號映射/usr/src/linux/System.map。在和中

klogd搜尋/boot/System.map``/System.map``/usr/src/linux/System.map

/boot/System.map在核心為 2.6.27.19 的 Linux 系統上刪除沒有問題。

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