初涉linux內核

剛開始接觸linux內核,首先將linux內核進行編譯,遇到一些問題,最後雖然解決了,但是還不是完全清楚問題的本質,寫這篇日誌,記錄一下,以便日後慢慢研究。

1.下載linux內核

http://kernel.org/ 下載了2.6.39.4版本的內核,下載的是.bz文件,通過unbizp2解壓和tar解包。

2.配置內核

使用配置內核的命令,通常情況下是make menuconfig,通過menu的方式配置內核,當然有些也可以使用圖形界面make xconfig來完成配置。

在配置內核的時候大部分選項的配置網上有詳細介紹,這裏不羅列了。

3.編譯內核

(1)makedep和makeclean預處理

makedep是檢查內核的完整性,make clean是清除已經編譯生成的部分。

(1)make命令編譯內核

這個階段會產生一個bzImage在/arch/x86/boot/目錄下,這個文件即內核的鏡像文件。

(2)makemodules命令編譯內核模塊

這個階段會將配置中選定的模塊編譯。

(或者make all命令同時運行make和make modules)

(3)makemodules_install命令安裝內核模塊

這個階段將編譯好的模塊安裝到/lib/modules下,並且運行depmod生成模塊依賴關係文件,在系統啓動的時候就會自動加載這些模塊了。

(4)makeinstall命令安裝內核

把壓縮內核映象拷貝到/boot目錄下, 並創建相應的System.map符號鏈接; 調用mkinitrd程序創建內核的initrd映象; 將在/boot/grub/grub.conf配置文件增加配置行。

4.遇到的問題

一開始說是找不到模塊snd-had-codec-intelhdmi,重啓以新內核引導的時候發現進不去,卡在登錄界面之前。於是我從原內核中找到模塊snd-had-codec-intelhdmi.ko的文件,複製到新內核的相應位置,於是make install的時候出現下圖的警告,重啓以後可以進入新內核,在新內核系統中編譯內核就不會出現這樣的問題了。現在還不清楚原因,如果哪位大蝦知道可以指點一下啊。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章