?一、運行在TQ2440開發板上的linux內核編譯
1、獲取源碼并解壓
直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源碼包。
解壓(天嵌默認解壓到/opt/EmbedSky/linux-2.6.30.4/中)
tar xvjf linux-2.6.30.4_20100531.tar.bz2 -C /
2、獲取默認配置文件
可以使用“config_EmbedSky_W43”作為默認配置文件?
cp config_EmbedSky_W43 .config
?3、配置(根據需要修改部分選項)
?????? 筆者認為只要有一個適合自己開發板的“.config”,這一步也不需要,直接使用這個配置文件去編譯內核即可。
?????? 至于這一步的意義,其實也就是為了生成一個適合自己開發板的“.config”,決定哪些模塊需要編譯進內核(裁剪內核)。
?????? 默認配置文件的意義就在于,為我們提供了一種參考,通常選擇的默認配置文件是與我們的開發板很相似的。由于配置選項太多,多達上千項,使用默認配置文件,只需要修改那些默認配置文件與我們開發板不一樣的選項即可,這肯定是節省時間和體力的捷徑。
make menuconfig
4、編譯內核?
make zImage
?5、編譯modules(內核驅動)模塊?
make modules
可在內核中掛載使用生成的“*.ko”文件
二、運行在X86平臺上的linux內核編譯和安裝
1、獲取源碼并解壓
可以從http://www.kernel.org/選擇一個想要的版本,例如“linux-3.2.55.tar.xz”,并解壓到“/usr/src”(/usr/src目錄下是專門存放內核源代碼的)。
sudo tar -xvf linux-3.2.55.tar.xz -C /usr/src
??? 解壓后源碼大小幾百MB。
2、 獲取默認配置文件
比如說:/boot/config-3.2.0-55-generic-pae(Ubuntu當前內核的配置文件)
cp /boot/config-3.2.0-55-generic-pae .config
3、配置?
make menuconfig
??? 此命令會調取各級目錄中的kconfig生成一個菜單,通過這個菜單,我們可以配置linux內核。配置完成后的信息,保存在“.config”中。在編譯內核的時候,會讀取這個配置文件,從而決定以什么樣的方式編譯內核,編譯內核的那些模塊等等。?
4、編譯內核和模塊
編譯內核
make
此過程長達幾個小時,編譯完后源碼包就有5、6個G,所以在編譯之前確保你的虛擬磁盤剩余容量足夠大,不夠的話參考修改虛擬機linux硬盤的大小 進行磁盤擴容,否則在編譯過程中將出現“磁盤空間不足”的問題。生成的內核鏡像在arch/x86/boot目錄下。
??? 安裝模塊
make modules_install
make modules_install命令用于安裝可裝載模塊,安裝的目的目錄時/lib/modules/3.2.55
5、安裝?
make install
?? make install命令執行三個操作:復制內核鏡像到/boot目錄下;生成initrd-img;更新grub。命令成功執行成功后,新的內核已可以使用,并且列在引導菜單中。
??? /boot目錄下的內容
6、重啟檢查
重啟系統,grub引導選項中多了我們新編譯的內核選擇,選擇新內核引導。“Previous Linux version”為更新內核前的內核啟動項。
????? 進入系統后執行命令uname -r 查看當前的內核版本。
uname -r
?
后記
??? 倘若想卸載自己編譯的內核,可以參考linux下刪除內核 進行操作。
?
參考網頁:linux內核學習之二:編譯內核?
??????????????自己編譯linux內核????