3 編譯 GRUB2
筆者使用 ubuntu 編譯 grub2,無法順利完成。
發現 ubuntu 缺了一些軟體,包括 bison、m4、flex。
只要到網頁上收尋 gnu bison、gnu m4、gnu flex,就可以找到下載位址。
其中 m4 是 bison 的依賴軟體,必須先安裝 m4,才能安裝 bison。
安裝方式是,先執行 ./configure,再執行 make install,即可。
到 grub2/ 目錄中,執行
1 #./configure
2 #make
檔案 configure 是 grub2/ 中的組態描述檔,用於編譯前的組態設定。
將 GRUB2 的組態設定為 I386-PC 的模式,並產生 Makefile ,準備便進行程式碼的編譯程序。
編譯執行器 make 會讀取 Makefile,進行編譯。
編譯過程會產生四種主要類型的檔案,工具執行檔,工具描述檔,核心執行檔,精簡模組檔。
核心執行檔是 GRUB2 執行時的核心程式。
精簡模組檔是一般模組檔經過處理後得到的模組檔,提供核心所需要的所有功能檔案。
工具執行檔和工具描述檔是處理核心執行檔和精簡模組檔的工具群,用以生成各種不同功能的載入程式。
模組檔彼此之間有相依性。因為 A 模組可能會呼叫 B 模組的函式,編譯過程中產生相依關係檔 /gurb-core/moddep.lst。
此檔會由 grub-mkimage 讀取以產生 grub 開機映像。使用者不需要詳細列出相依模組,只要指定注意的模組名稱,即可。
至於,編譯系統為什麼知道他們的相依關係呢? 筆者沒有仔細的追這部分的編譯思路,不過應該和每個程式碼目錄中的 .deps-core 和 .deps-util 有關。
目錄 .deps-core 和核心的相依性有關,目錄 .deps-util 和工具程式的相依性有關。
這裡列出的主要是是核心模組的相依性。
|