9.2--Fedora下內核編譯 [第十五期]

第一步:去官方下載最新的內核源碼包
官方網址: www.kernel.org
當前最新版本: 2.6.31 ,下載網址: http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.tar.bz2
您可使用 wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.tar.bz2 下載
第二步:解壓源碼包 ( 這裏有些人說要將源碼解壓到 /usr/src 目錄下,實際上是不正確的,你能夠解
壓到任何目錄 )
cd ~
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.tar.bz2
tar -jxvf linux-2.6.31.tar.bz2

第三步:配置選項
cd linux-2.6.31
cp /boot/config-`uname -r` .config
make mrproper (
刪除上次編譯產生的垃圾,初次編譯不須要 )
make menuconfig (
啓動內核選項配置界面 )
說明一下 ,make menuconfig 會尋找 linux-2.6.31 目錄下的 .config 配置文件,若是找不到,則使用與
CPU
相關的 config 文件做爲默認的配置。固然,咱們也能夠拷貝當前系統的配置做爲對照,如
cp /boot/config-`uname -r` .config (.config
是隱藏文件 ls -a 查看 )
注意:若是是同版本的內核編譯,還須要備份下當前模塊
cd /lib/modules
mv 2.6.31 2.6.31_old

指定內核識別碼
vim Makefile
EXTRAVERSION = .custom-1 (
4 )
第四步 (1) 傳統方式編譯
make all (2.6
之前版本須要手工運行以下命令 )
(
# make dep
       <== 創建相依的屬性關係!
# make clean
        <== 將舊的資料去除掉!
# make bzImage
       <== 開始編譯核心!這個核心是通過壓縮的 (30 分鐘左右 )
# make modules
       <== 開始編譯模塊!這個動做視您剛剛編譯的模塊數量! (1 小時左右)
)
make modules_install (
安裝模塊到 /lib/modules/2.6.31)
make install (
系統將會把 vmlinuz System.map 複製到 /boot 目錄下同時修改 grub /boot/grub/menu.lst 2.6 之前版本須要手動拷貝 vmlinuz System.map)
第四步 (2) RPM 方式編譯,會產生 RPM 包,方便提供給別人使用
make rpm
編譯完成以後,在 ~/rpmbuild /SRPMS/ 目錄發現一個新的 src.rpm , 好比 . SRPMS/kernel-2.6.31.custom-1.src.rpm, 內核 rpm 包位於 ~/rpmbuild/RPMS/i386/ ( RPMS/i586/, RPMS/i686/, . 看你的平臺類型 ). 好比 . RPMS/i386/kernel-2.6.31.custom-1.i386.rpm. 能夠看到內核識別碼已添加到軟件包的名字中 .
安裝新內核
如今去新的 rpm 內核包存在的目錄 ( 基於你的平臺類型 , 好比 . ~/rpmbuild/RPMS/i386/) 安裝 rpm
cd ~/rpmbuild/RPMS/i386
rpm -ivh kernel-2.6.31.custom-1.i386.rpm

( 如今你甚至可以拷貝到其它的 Fedora 系統 , 經過上面的方式安裝 . 你將再也不須要編譯內核 .)
接下來咱們爲新內核建立一個 ramdisk, 不然系統將不能引導新內核 :
mkinitrd /boot/initrd-2.6.31.custom-1.img 2.6.31.custom-1

而後編輯 /boot/grub/menu.lst 文件 , 看一下你係統上已經存在 ( 正在工做的 ) 引導內核信息 , 拷貝其中的一個實例 , 替換爲你新的內核和 ramdisk:
vim /boot/grub/menu.lst

好比 , 個人 menu.lst, 在我添加新的內核信息前的狀況 :
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu

title Fedora Core (2.6.18-1.2798.fc6)
root (hd0,0)
kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-1.2798.fc6.img

修改後的狀況 :
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu

title Fedora Core (2.6.18-custom-2.6.18.2)
root (hd0,0)
kernel /vmlinuz-2.6.18-custom-2.6.18.2 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.18-custom-2.6.18.2.img

title Fedora Core (2.6.31.custom-1)
root (hd0,0)
kernel /vmlinuz-2.6.31.custom-1 ro root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.31.custom-1.img

( 你能夠經過下面命令發現正確的 vmlinuz initrd 文件 :
ls -l /boot
)

第五步:重啓系統,在 Grub 引導菜單中,選擇 linux-2.6.31.custom-1
Reboot
,重啓以後,大功告成,你的新內核已經安裝好了。
相關文章
相關標籤/搜索