linux核心編譯

2021-08-29 21:56:20 字數 3029 閱讀 6577

1、檢視linux核心版本

# uname -a

二、配置工作

# cd /usr/src

# tar jvxf linux-2.6.24.tar.bz2 

# ln -s linux-2.6.24 linux 

6、安裝module-init-tools工具

在/usr/src目錄下,依次執行下列命令:

# tar jvxf module-init-tools-3.2.tar.bz2  (解壓module-init-tools) 

# cd module-init-tools-3.2  (由/usr/src目錄進入module-init-tools目錄下)

#./configure --prefix=/ 

# make moveold

# make all install

#./generate-modprobe.conf /etc/modprobe.conf

8、配置核心選項。

三、編譯工作

ok,繁雜的配置工作完成了,至此,編譯前的準備工作都做好了!

9、開始編譯啦……

在/usr/src/linux-2.6.24目錄下,執行以下命令即可編譯。編譯需要一段時間,給自己倒杯茶耐心等候吧!

# make dep  (建立編譯時所需的從屬檔案。注意:如果核心從未編譯過,此步可跳過)

# make clean  (清除核心編譯的目標檔案。注意:如果核心從未編譯過,此步可跳過)

# make bzimage  (注意大小寫。這一步才是真正編譯核心)

核心編譯成功後,會在/usr/src/linux/arch/i386/boot目錄中生成乙個新核心的映像檔案bzimage。如果用 make  zimage編譯,核心很大的話,系統會提示你使用make   bzimage命令來編譯,所以我直接用make bzimage來編譯。

# make modules  (編譯可載入模組)

# make modules_install  (安裝可載入模組)

安裝成功後,系統會在/lib/modules目錄下生成乙個2.6.24子目錄,裡面存放著新核心的所有可載入模組。

# make install  (安裝新核心)

注意:make install的時候可能會出現如下錯誤資訊:

no module buslogic found for kernel 2.4.12

mkinitrd failed

此問題一般只出現在scsi硬碟+vmware+redhat架構中,因為buslogic被編譯進了核心而不是乙個module的形式(2.4核心的buslogic模組即使靜態編譯進核心也不行)。解決方式是直接將buslogic.o檔案複製過去:

# cp /usr/src/linux-2.6.18/drivers/scsi/buslogic.o  /lib/modules/2.6.18/kernel/drivers/scsi

不過別忘記,複製過後再執行一下make install。

四、啟動新核心

10、將新核心和system.map檔案拷貝到/boot目錄下,依次執行以下命令:     

# cp  /usr/src/linux-2.6.24/arch/i386/boot/bzimage   /boot/vmlinuz-2.6.24     

# cp  /usr/src/linux-2.6.24/system.map   /boot/system.map-2.6.24    

# cd  /boot  (進入boot目錄)

# rm –rf  system.map  (刪除原來的連線)     

# ln –s system.map-2.6.24  system.map   (重新建立連線)     

11、修改grub啟動管理器

如果沒有錯誤的話, 下面開始修改grub配置檔案(不要告訴我你用的lilo)

在/boot目錄下,執行以下命令:

# new-kernel-pkg --mkinitrd --depmod --install 2.6.24 (這時候你的/boot下會生成乙個initrd-2.4.24.img,並且你的grub.conf檔案也作了相應更改)

# df  (檢視根目錄在那個分割槽,下一步要用到。注意,這裡根分割槽不時boot的那個50m的分割槽,而一般是你最大的那個分割槽,也就是「/」,千萬不要搞錯哦。我的為 /dev/hda2)

# vi /grub/grub.conf  

進入grub.conf檔案,找到如下資訊:

default=1

timeout=10

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

title red hat linux (2.6.24)

root (hd0,0)

kernel /vmlinuz-2.6.24 ro root= label=/

initrd /initrd-2.6.24.img

做兩處修改:

(1) 將default=1改為default=0(不改的話也可以,只不過重啟之後會預設進入2.4核心)

(2) 將kernel行的「label=/」換成根目錄所在的分割槽(上一步檢視的就是)

此步很重要,修改錯誤將可能導致進不去系統,我把我修改後的grub.conf檔案列出來,不明之處,可以對照修改:

default=0

timeout=10

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

title red hat linux (2.6.24)

root (hd0,0)

kernel /vmlinuz-2.6.24 ro root=/dev/hda2

initrd /initrd-2.6.24.img

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

編譯 linux 核心

一 準備工作 tpv te0 首先說明,下面帶 號的行都是要輸入的命令列,且本文提到的所有命令列都在終端裡輸入。ixpub技術部落格 rc0p a6zx j 啟動linux系統,並用根使用者登入,進入終端模式下。6i sb w,a0 ixpub技術部落格c gng,y y ixpub技術部落格 k,...

linux編譯核心

red hat linux版本的核心編譯 make j2 編譯 make modules make modules install make install cd boot mkinitramfs o initrd.img 2.6.30.10 2.6.30.10 此項可能不需要 vim boot g...

Linux核心編譯

經過幾天的努力,本人終於把乙個核心編譯成功了,嘿嘿,現在把編譯過程記下來,以後再接再勵,注意 以下的操作都要有root許可權。linux 2.6.36.tar.bz2。2 解壓縮。cd usr src tar xvf home ibm linux 2.6.36.tar.bz2.usr src下就會多...