核心學習筆記,既然是筆記就記住關鍵的東西,雜七雜八的慢慢再說啦。下面介紹編譯核心的幾個簡單步驟:
1。到www.kernel.org下載核心去
2。mkdir /usr/src/linux-2.6.37
cp 2.6.37.tar.bz2 /usr/src/linux-2.6.37 (剛出來的)
3。解壓縮其他的情況不考慮了,具體問題具體分析
tar -jxvf 2.6.37.tar.bz2
/////////////////////////////////
下面的作用是更新標頭檔,防止今後你編寫驅動的時候出現標頭檔和核心不一致的現象。。。
將/usr/include/asm、/usr/inlude/linux、/usr/include/scsi連結到/usr/src/linux/include目錄下的對應目錄中。
# cd /usr/include
# rm -Rf asm linux
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi
/////////////////////////////////
4。 刪除原始碼目錄中殘留的.o檔案和其它從屬檔案。
make mrproper
5。開始編譯核心這裡做一些配置
make menuconfig或make config或make xconfig
我用的是ubuntu 10.04需要用make menuconfig 需要安裝點東西
<!-- @page { margin: 0.79in } P { margin-bottom: 0.08in } -->
sudo apt-get install build-essential
sudo apt-get install libncurses5
sudo apt-get install libncurses5-dev
6。建立編譯時間所需的從屬檔案
make dep
7。 清除核心編譯的目標檔案
make clean
8。編譯核心了
make zImage
這裡預設情況是編譯的核心大小在640kb以內,如果多了的話就要用 make bzImage
9。編譯可載入模組
如果使用者在配置核心時設定了可載入模組,則需要對這些模組進行編譯,以便將來使用insmod命令進行載入。
make modules
make modelus_install
10。以上的步驟已經完成了核心的編譯工作了,哈哈。下面的就是怎麼把新的核心應用到你的系統上了
cp /usr/src/linux-2.4.22/System.map /boot/System.map
vmlinuz 改為編譯好的那個 位於/usr/src/linux/arch/x86/bzImage
cp /usr/src/linux/arch/x86/bzImage /boot/vmlinuz
啟動項啥的也要修改
/boot/grub/grub.cfg
///////////////////////////////////////////////
menuentry 'Ubuntu, with Linux 2.6.37' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,10)'
search --no-floppy --fs-uuid --set 886aea56-c98a-4b80-a0e3-026900d0b720
linux /boot/vmlinuz-2.6.37 root=UUID=886aea56-c98a-4b80-a0e3-026900d0b720 ro quiet splash
initrd /boot/initrd.img-2.6.32-24-generic
}
///////////////////////////////////////////////
//make install 據說這樣就完了,不過我不敢哦,核心壞了兩次後我就很小心了,不敢亂搞了。咱還是按部就班吧,實在。
經過上面的操作估計得有一兩個小時了,編譯比較慢。。。
重啟出問題了 啟動的時候有兩個錯誤,具體的還不是很清楚,基本上就那個問題initrd.img,
後續將繼續學習吧
參考:
http://www.chinaunix.net/jh/4/208791.html
http://blog.csdn.net/cdsnmdl/archive/2009/02/22/3922513.aspx