linux核心編譯步驟

2021-06-23 00:52:32 字數 3011 閱讀 1573

linux核心編譯步驟

對於linux新手來說,編譯核心相對有一些難度,甚至不知道如何入手,我通過在網上收集這方面的資料,最終編譯成功.現在我歸納了一下,寫出這一篇還算比較詳細的步驟,希望能對各位新手有一些

幫助。

1、  準備工作

(1)整理出系統需要支援的硬體、檔案系統型別以及網路協議等內容。

(2)建議用命令uname –r 檢視一下系統的版本號,如果你的系統版本與將要編譯的核心版本一致,建議將/lib/modules下的內容備份,否則將來的make modules_install 步驟產生的檔案會覆蓋這個路徑下的內容。

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安裝核心

2、清除從前編譯核心時殘留的.o 檔案和不必要的關聯  

cd /usr/src/linux

make mrproper

在圖形介面下,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下,這就是為什麼在「準備工作」的第三步提醒你備份的原因了。

9、使用新核心

方法一:

(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)然後修改/etc/lilo.conf檔案,加乙個啟動選項,使用新核心bzimage/zimage啟動。格式如下:

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

prompt

timeout=50

linear

default=linux-new    ### 告訴lilo預設使用新核心啟動linux ###

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!

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系統核心編譯步驟 1,啟動系統,引導linux系統,並以root使用者名稱登入到linux系統。3,建立編譯鏈結,首先新核心首先刪除 usr src linux的符號鏈結,解壓核心原始碼後,建立新的linux符號鏈結,並令其指向新的核心原始碼目錄。rm usr src linux cd u...