歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux內核 >> Linux內核的配置與編譯(X86平台)

Linux內核的配置與編譯(X86平台)

日期:2017/3/1 9:54:58   编辑:Linux內核

說明:只供學習交流

目的:

(1):配置、編譯X86平台下的Linux-2.6.29內核

(2):在vmware下安裝編譯好的內核並啟動

工具:

Gcc編譯器, Linux-2.6.29內核

步驟:

(一):清除臨時文件,中間文件和配置文件等(剛從網上下載下來的文件這步可省略)。

make clean

刪除大多數的由編譯生成的文件、但會保留內核的配置文件.config。

make mrproper

刪除所有的編譯生成的文件,還有內核配置文件,再加上各種備份文件。

make distclean

mrproper刪除的文件,加上編輯備份文件和一些補丁文件。

(二)選擇參考配置文件

使用正在運行的內核配置文件作為參考配制文件,該配置文件在/boot目錄下,使用命令

cp /boot/config-2.6.18-53.el5 .config。

(三)配置內核

配置內核有如下命令:

make config:基於文件模式的交互式配置(也就是一問一答)。

make menuconfig:基於文本模式的菜單式配置(強烈推薦)。

make oldconfig:使用已有的配置文件(.config)但是會詢問新增的配置選項。

make xconfig:圖形化配置(需要安裝圖形化系統)。

make menuconfig是最為常用的內核配置方式,使用方法如下:

1、使用方向鍵在各選項間移動;

2、使用“Enter”鍵進入下一層選單;每個選項上的高亮字母是鍵盤快捷方式,使用它可以快速地到達想要設置的選單項。

3、在括號中按“y”將這個項目編譯進內核中,按“m”編譯為模塊,按“n”為不選擇(按空格鍵也可在編譯進內核、編譯為模塊和不編譯三者間進行切換),按“h”將顯示這個選項的幫助信息,按“Esc”鍵將返回到上層選單。

內核配置通常在一個已有的配置文件基礎上,通過修改得到新的配置文件Linux內核提供了一系列可供參考的內核配置文件,位於Arch/$cpu/configs

注意:要運行make menuconfig的界面需要調整終端的窗口大小,至少為80*19。

(四)編譯內核

(1):make zImage

(2):make bzImage

區別:在X86平台,在zImage只能用於小於512Kd的內核(注意是X86平台)

如需獲取詳細編譯信息,可使用:

make zImage V=1

make bzImage V=1

編譯好的內核位於arch/<cpu>/boot目錄下

(五)編譯內核模塊

使用命令make modules

內核模塊編譯的時間比較長,一般需要1~2小時的時間。這些模塊源於使用命令make menuconfig啟動的菜單型配置界面中選擇<m>的項。

(六)安裝內核模塊

使用命令:make modules_install,完成安裝後,編譯好的內核模塊會從內核源代碼目錄拷貝至/lib/modules/2.6.29目錄下。

(七)制作init ramdisk

使用cd跳動linux-2.6.29/,目錄的上層目錄,使用命令:mkinitrdinitrd-$version $version(mkinitrd initrd-2.6.29 2.6.29)將上一步中產生的模塊目錄/lib/modules/2.6.29制作成initrd-2.6.29。

提示:initrd是“initial ramdisk”的縮寫,initrd是在實際根文件系統可用之前掛載到系統中的一個初始根文件系統。在桌面或服務器Linux系統中,initrd是一個臨時的文件系統。其生命周期很短,只會用作真實文件系統的一個橋梁。在沒有存儲設備的嵌入式系統中,initrd可以是永久的根文件系統。

Linux的眾多發行版之所以使用initrd主要是為了在內核啟動之後能夠判斷哪些硬件驅動需要加載,哪些不需要,文件系統有沒有問題等,最終使得根分區能順利加載。在scsi和sata設備上啟動,usb啟動盤,無盤服務器等都需要initrd來做判斷,這樣可以提高Linux內核的通用性。

(八)安裝內核

由於Linux系統啟動時,會從/boot目錄下尋找內核文件與init ramdisk,所以需要將內核和initrd拷貝至/boot目錄。使用命令:

cp initrd-2.6.29 /boot

cp linux-2.6.29/arch/x86/boot/bzImage /boot/vmlinuz-2.6.29

(九)修改/etc/grub.conf或者/etc/lilo.conf

為了讓grub在啟動時能提供一項我們自己制作的linux內核的選項,需要修改grub的配置文件/etc/grub.conf。(添加的代碼為title My Linux(2.6.29)以下的)

注意:/etc/grub.conf實際上是/boot/grub/grub.conf的一個鏈接,因此真正的配置文件存在與/boot/grub目錄下。

(十):重啟系統

使用命令reboot,重新啟動系統,按住空格鍵不放,直到進入grub界面,選擇My Linux(2.6.29)啟動。

Copyright © Linux教程網 All Rights Reserved