要在 CentOS 上安裝一個文件,內核不支援,不得已編譯一下內核:
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v3.0/testing/linux-3.1-rc2.tar.bz2
tar jxvf linux-3.1-rc2.tar.bz2
cd linux-3.1-rc2
make menuconfig # 需要 ncurse apt-get install ncurses-dev
make defconfig oldconfig xconfig
1、準備工作
我安裝的是 Ubuntu 10.04,為完成內核編譯,還需要安裝以下套件:
apt-get install gcc#
apt-get install make#
apt-get install bzip2#
apt-get install libc6-dev#
apt-get install ncurse-dev#
apt-get install initrd-tools #### 為了使用 mkinitrd 命令生成 initrd.img-XXX#
其中在安裝 initrd-tools 時,可能出現找不到安裝包的情況,這是因為新版本的 Ubuntu 或 Debian 已經用新的軟體取代了
該軟體,此時要保證含有命令 mkinitramfs,mkinitramfs-kpkg
apt-get install kernel-package
2、下載原始碼
可以在官網 www.kernel.org 下載相應的原始碼(下載完整版 F),也可以使用 wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.bz2 命令獲取。
#wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.bz2
#tar xjf linux-2.6.39.tar.bz2 -C /usr/src
3、配置檔案
根據自己機器的硬體情況,選擇內核編譯配置選項,在這裡我使用的是預設配置(make menuconfig 後直接保存退出,生成.config 檔案);具體配置可以參考金步國先生翻譯的資料:Linux 2.6.19.x 內核編譯配置選項,參考網址:http://lamp.linux.gov.cn/Linux/kernel_options.html
#cd /usr/src/linux-2.6.39
#make menuconfig
4、編譯內核
#make clean #### 第一次編譯可以省略
#make mrproper #### 第一次編譯可以省略
#make
5、編譯和安裝模組
#make modules
make modules_install#
6、生成內核鏡像檔案
#makinitramfs -o /boot/initrd-2.6.39.img/lib/modules/2.6.39 ## 啟動、加載模組
cp arch/i386/boot/bzImage/boot/vmlinuz-2.6.39 ## 可引導的、壓縮的內核#
cp System.map/boot/System.map-2.6.39 ##kernel 索引#
cp .config/boot/config-2.6.39 #內核配置檔案#
7、設置啟動項目
啟動項目是 /boot/grub/grub.cfg 檔案,我們需要修改該檔案,具體如下:
首先,複製下面內容。
menuentry 'Ubuntu, with Linux 2.6.32-32-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,4)'
search --no-floppy --fs-uuid --set 8450af8f-090b-4eae-a123-6f1e3604fa9e
linux /boot/vmlinuz-2.6.32-32-generic root=UUID=8450af8f-090b-4eae-a123-6f1e3604fa9e ro quiet splash
initrd /boot/initrd.img-2.6.32-32-generic
}
然後,對上面內容進行相應的修改,紅色部分。
menuentry 'Ubuntu_Test, with Linux 2.6.39' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,4)'
search --no-floppy --fs-uuid --set 8450af8f-090b-4eae-a123-6f1e3604fa9e
linux /boot/vmlinuz-2.6.39 root=UUID=8450af8f-090b-4eae-a123-6f1e3604fa9e ro quiet splash
initrd /boot/initrd.img-2.6.39
}
grub-mkconfig update-grub
8、測試
重新啟動,選擇 Ubuntu_Test, with Linux 2.6.39 進入 Ubuntu 系統,最後通過命令 uname -a 查看系統的內核資訊。
結果還是不行,看了這玩意兒真不是一般人玩得的。只能升級 Linux 系統。