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 建議用...