linux核心編譯步驟

2021-09-08 15:35:02 字數 3494 閱讀 9597

b:如果核心已經安裝(/usr/src/目錄有linux子目錄),跳過如果沒有安裝,在光碟機中放入linux安裝光碟,找到kernel-source-2.xx.xx.rpm檔案(xx代表數字,表示核心的版本號), 比如redhat linux的rpms目錄是/redhat/rpms/目錄,然後使用命令rpm -ivh kernel-source-2.xx.xx.rpm安裝核心

3、配置核心,修改相關引數,請參考其他資料

在圖形介面下,make xconfig;字元介面下,make menuconfig

在核心配置選單中正確設定個核心選項,儲存退出

4、正確設定關聯檔案

make dep

根據上一步所選擇的選項,建立檔案的依賴關係。

5、make clean

清理一些不必要的檔案,如果你在上次編譯的基礎上,刪去了一些選項,建議你執行這一步操作,否則,就沒有必要了。

6、編譯核心

對於大核心(比如需要scsi支援),make bzimage

對於小核心,make zimage

7、編譯模組

make modules

編譯可載入模組(即核心選項中選擇為m的選項),編譯時間跟m選項的數量有關。

8、安裝模組

make modules_install

即將編譯好的modules拷貝到/lib/modules下,這就是為什麼在「準備工作」的第三步提醒你備份的原因了。

image=/boot/vmlinuz-2.2.14-5.0

label=linux

read-only

root=/dev/hda5

image=/boot/bzimage(zimage)

label=linux-new

read-only

root=/dev/hda5

保留舊有的啟動選項可以保證新核心不能引導的情況,還可以進入linux進行其他操作。

儲存退出後,不要忘記了最重要的一步,執行/sbin/lilo,使修改生效

方法二:使用grub(修改grub.conf檔案)

(1)更換核心:a、mv /usr/src/linuxx.x.x/system.map    /boot/system.map

b、mv /usr/src/linuxx.x.x/arch/i386/boot/bzimage   /boot/vmlinuz

(2)修改引導管理程式grub,/etc/grub.conf

內容如下:

#boot =/dev/had

default =0

timeout =10

splashimage =(hd0, 0)/grub/splash.xpm.gz

title red hat linux(2.4.20-8)

root(hd0, 0)

kernel /vmlinuz -2.4.20-8  ro root =label =/

initrd /initrd-2.4.20-8.img

方法三:修改啟動配置檔案

現在大多數使用的都是grub啟動,需要修改/boot/grub/grub.conf,新增相應的啟動資訊,新增內容的最簡單格式如下:

title 顯示在啟動選單上的名稱

root 根檔案系統掛載分割槽

kernel 壓縮過的核心檔名

initrd 根檔案系統檔名

如:title my new kernel

root (hd0,2)

kernel /boot/vmlinuz-x.y.z

initrd /boot/initrd-x.y.z.img

10、重新生成ram磁碟

如果您的系統中的/etc/lilo.conf沒有使用了ram磁碟選項initrd,略過

如果您的系統中的/etc/lilo.conf使用了ram磁碟選項initrd,

使用mkinitrd initrd-核心版本號 核心版本號命令重新生成ram磁碟檔案,例如我的redhat 6.2:

mkinitrd initrd-2.2.14-5.0 2.2.14-5.0

之後把/etc/lilo.conf中的initrd指向新生成的initrd-2.2.14-5.0檔案:

initrd=/boot/initrd-2.2.14-5.0

ram磁碟能使系統效能盡可能的優化,具體參考/usr/src/linux/documents/initrd.txt檔案

11、重新啟動,ok!

本文是基於2.6的核心,也建議各位可以先看一下《linux核心設計與實現(第二版)》作為乙個基礎知識的鋪墊。當然,從實踐角度來看,只要按著以下的步驟去做也應該可以實現成功編譯核心及載入模組。

個人用的linux版本為:debian gnu/linux,核心版本為:2.6.20-1-686.

# apt-cache search linux-source

# apt-get install linux-source-2.6.20

# tar jxvf linux-source-2.6.20.tar.bz2

解壓後生成乙個新的目錄/usr/src/linux——source-2.6.20,所有的源**都在該目錄下。

注:該目錄會因核心版本的不同而不同,各位動手實踐的朋友只需知道自己的源**所在的具體位置即可。

◆第二步:配置及編譯核心。

進入/usr/src/linux——source-2.6.20目錄下,可以看到makefile檔案,它包含了整個核心樹編譯資訊。該檔案最上面四行是關於核心版本的資訊。對於整個makefile可以不用做修改,採用預設的就可以了。

一般情況下,需要先用命令諸如"make menuconfig", "make xconfig"或者"make oldcofig"對核心進行配置,這幾個都是對核心進行配置的命令,只是它們執行的環境不一樣,執行一下這幾個命令中的任何乙個即可對核心進行配置:

make menuconfig是基於介面的核心配置方法,make xconfig應該是基於qt庫的,還有make gcofig也是基於圖形的配置方法,應該是需要gtk的環境,make oldcofig就是對核心樹原有的.config檔案進行配置一下即可。

其實核心的配置部分,主要是保證核心啟動模組可動態載入的配置,預設配置裡面應該已經包含了這樣的內容,因此,我用的是make oldconfig.

在核心原始碼的目錄下執行:

# make

# make bzimage

其中,第乙個make也可以不執行,直接make bzimage。這個過程可能要持續乙個小時左右,因此是對整個核心重新編譯了。執行結束後,可以看到在當前目錄下生成了乙個新的檔案: vmlinux, 其屬性為-rwxr-xr-x。

然後執行:

# make modules

# make modules_install

對核心的所有模組進行編譯和安裝。

執行結束之後,會在/lib/modules下生成新的目錄/lib/modules/2.6.20/。 在隨後的編譯模組檔案時,要用到這個路徑下的build目錄。至此,核心編譯完成。可以重啟一下系統。

linux核心編譯步驟

b 如果核心已經安裝 usr src 目錄有linux子目錄 跳過如果沒有安裝,在光碟機中放入linux安裝光碟,找到kernel source 2.xx.xx.rpm檔案 xx代表數字,表示核心的版本號 比如redhat linux的rpms目錄是 redhat rpms 目錄,然後使用命令rpm...

linux核心編譯步驟

linux核心編譯,3.10.4核心測試有效,時間2013 7 31。xz d linux 3.10.4.tar.xz 生成乙個新的檔案 linux 3.10.4.tar。tar xvf linux 3.10.4.tar 這裡說明一下 xz格式是兩層壓縮檔案,外面是xz壓縮方式,裡層是tar壓縮方式...

linux核心編譯步驟

linux核心編譯步驟 對於linux新手來說,編譯核心相對有一些難度,甚至不知道如何入手,我通過在網上收集這方面的資料,最終編譯成功.現在我歸納了一下,寫出這一篇還算比較詳細的步驟,希望能對各位新手有一些 幫助。1 準備工作 1 整理出系統需要支援的硬體 檔案系統型別以及網路協議等內容。2 建議用...