幾點關于內核編譯的常識
make modules 只是將 modules 產生在 /usr/src/linux-xxxx 底下。
make modules_install 才會 copy 到 /lib/modules/xxxx 那邊。
mkinitrd 的版本要跟著內核走。舊的要更新。
mkinitrd 是制作initrd.img的腳本。
initrd-version.img,類似ramdisk,把一段程序打包到img里,然后在內存里開辟一段區域,一般是2m,釋放到那里運行,都是一些初始化的程序.
如果機器使用的是scsi設備,則一定要做這一步。
因為scsi設備的驅動一般不編譯到內核中,而放到initrd.img中
(存疑,如果scsi driver都選成build in,能否不要?)
用法
mkinitrd /boot/initrd-2.6.9.img 2.6.9
參數2 2.6.9 代表的是在/lib/modules/xxxx的xxxx
會按照這個目錄下的module的內容來生成initrd img
將kernel 和 initrd.img配置好,可用的new-kernel-install 腳本。
這個腳本現在已經寫道make install這個target 中了
用法
/sbin/new-kernel-pkg --mkinitrd --depmod --install
如果grub.conf 中的
新添內容
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img
加載失敗
可改為
kernel /vmlinuz-2.4.20-8 ro root=/dev/hdax hdc=ide-scsi
這種寫法。hdax就是linux 的 / 安裝位置,比如目前我的就是hda3
如果沒有initrd.img
可以寫
no initrd
下面是內核配置的內容,
首先這個是請教來的
最保險的辦法應該是使用第一次安裝時生成的 config .
將老的config copy到當前的/usr/src/linux.verson/
然后make oldconfig
這個用法應該是使用上次的config,在這兒就是剛copy過來的那個。
一個常用技巧,在xconfig或gconfig編輯器Options選單下提供了幾種非常有用的內核設置選項。
◆ Show all options選項。系統顯示所有可用的內核設置選項,即使是某選項由于各種原因無法被選?。ㄍǔG闆r下是由于與之相關的選項未被選?。?。這一選項可以幫助用戶了解所需要的選項是否存在于內核資源中。
◆ Show debug info選項。系統顯示與幫助窗口中所選選項相關的內核設置變量。這一選項可以幫助用戶了解激活其它內核設置選項所需的前提選項。
◆ Show Name選項。系統顯示與每個內核設置選項相關的內核設置變量的名稱,可以幫助確定內核設置變量間的從屬關系。