歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> CentOS內核升級

CentOS內核升級

日期:2017/2/28 15:33:21   编辑:Linux教程

1、使用如下命令安裝安裝編譯前需要的編譯環境。

srv10:~# yum install -y gcc make bison ncurses-devel rpm-build

2、使用如下命令下載內核原碼包。

srv10:~# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.37.tar.bz2

3、使用如下命令解壓內核原碼包。

srv10:~# tar -xvjf linux-2.6.37.tar.bz2 -C /usr/src

4、使用如下命令開始系統的內核編譯,先清掉以前的編譯的內容(初次編譯內核這步也可以省略)。

srv10:~# cd /usr/src/linux-2.6.37

srv10:~# make mrproper

5、使用如下命令復制現有內核編譯的配置文件。

srv10:~# cp /boot/config-`uname -r` .config

6、使用如下命令選擇需要的內容。

srv10:~# make menuconfig

一定要勾選General setup→[*] enable deprecated sysfs features to support old userspace tools和Processor type and features→HighMemory Support。

7、修改.config文件中CONFIG_SYSFS_DEPRECATED_V2,將原本被注釋掉的,CONFIG_SYSFS_DEPRECATED_V2改成CONFIG_SYSFS_DEPRECATED_V2=y。

8、使用如下命令編譯內核。

srv10:~# make bzImage && make modules && make modules_install

srv10:~# make install

9、使用如下命令生成RPM包(生成的RPM包位於/usr/src/RedHat/RPMS/目錄,RPM源碼包位於/usr/src/redhat/SRPMS/目錄)。

srv10:~# make rpm

10、使用rpm -ivh命令安裝上一步生成在/usr/src/redhat/RPMS/目錄下i386(或x86_64)目錄上的kernel的RPM包。

11、使用rpm命令安裝上面生成的RPM包。

12、使用如下命令生成生成initrd文件。

srv10:~# cd /lib/modules

srv10:~# mkinitrd /boot/initrd-2.6.37.img 2.6.37/

在linux-2.6.33以後,如果在升級重啟後會報的錯誤“insmod: error inserting ‘/lib/dm-region-hash.ko’: –1 File exits”,這是 由於initrd裡面的init中加載dm-region-hash.ko這個模塊重復了,因此需要修改生成的initrd文件(不是所有的機器都會出現這個錯),修改的方式如下:

1、解壓initrd。

srv10:~# cp /boot/initrd-2.6.37.img /tmp

srv10:~# cd /tmp/

srv10:~# mkdir newinitrd

srv10:~# cd newinitrd/

srv10:~# zcat ../initrd-2.6.33.img |cpio -i

2、編輯init,找到下面的內容,刪掉或注釋重復的兩行。

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

3、重新打包initrd。

srv10:~# find .|cpio -c -o > ../initrd

srv10:~# cd ..

srv10:~# gzip -9 < initrd > initrd-2.6.33.img

4、將initrd重新復制到/boot目錄下。

srv10:~# cp initrd-2.6.33.img /boot

Copyright © Linux教程網 All Rights Reserved