Linux升级系统内核

升级系统内核前准备工作
查看系统版本
[root@webserver02 ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
查看内核版本
uname -r
2.6.32-504.el6.x86_64

YUM升级方法
一、安装elrepo的yum源
升级内核需要使用elrepo的yum源,在安装yum源之前还需要我们导入elrepo的key,如下:
导入elrepo KEY
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

安装ELRepo到CentOS (安装elrepo的yum源)
可以去http://elrepo.org/tiki/tiki-index.php选择要安装的ELRepo

rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm

注:如果导入elrepo的key时报如下错误:
[root@webserver02 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
curl: (35) SSL connect error
error: https://www.elrepo.org/RPM-GPG-KEY-elrepo.org: import read failed(2).
解决方法:
yum -y install nss

正确安装结果
rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
Retrieving http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
Preparing… ########################################### [100%]
1:elrepo-release ########################################### [100%]

二、升级内核
在yum的elrepo源中有ml和lt两种内核,其中ml(mainline)为最新版本的内核,lt为长期支持的内核。
如果要安装ml内核,使用如下命令:
yum --enablerepo=elrepo-kernel -y install kernel-ml
如果要安装lt内核,使用如下命令:
yum --enablerepo=elrepo-kernel -y install kernel-lt
内核升级完毕后,不会立即生效,还需要我们修改grub.conf文件。

三、修改grub.conf文件
内核升级完毕后,需要我们修改内核的启动顺序,默认启动的顺序应该为1,升级以后内核是往前面插入为0,如下:
vim /etc/grub.conf
default=0

四、重启系统并查看系统内核
[root@webserver02 ~]# uname -r
4.17.6-1.el6.elrepo.x86_64

源码升级
下载指定源码,安装内核
https://mirrors.edge.kernel.org/pub/linux/kernel/

例:
https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/linux-3.9.tar.gz
安装前准备工作
yum -y install ncurses-devel

解压到指定路径
tar xf linux-3.9.9.tar.gz -C /usr/src
cd /usr/src/
创建链接
ln -s linux-3.9.9 linux

编译内核功能模块
为防止编译新内核造成遗漏选项,无法启动的后果,我们使用现有正常系统的内核模块文件
cp /boot/config-2.6.32-504.el6.x86_64 /usr/src/linux/.config

在原有基础上可以增删改查
[root@webserver02 linux]# make menuconfig

  • 表示直接编译进内核
    M 表示编译成模块

选好模块后开始安装
make
make modules_install
make install

修改grub.conf文件
内核升级完毕后,需要我们修改内核的启动顺序,默认启动的顺序应该为1,升级以后内核是往前面插入为0,如下:
vim /etc/grub.conf
default=0 (要默认启动的内核版本)

实现部分编译
1 只编译谋子目录下的相关代码
make /usr/src/linux/目录
例:
make /usr/src/linux/arch
注:arch目录下是跟硬件相关的内核核心,不包括模块的内核核心

2 只编译部分模块
make M=/usr/src/linux/drivers/net
注:只编译驱动目录下的网络模块中的内容

3 只编译某一模块
make /usr/src/linux/drivers/net/pcnet32.ko

4 将编译完成的结果防止于别的目录中
make o=/tmp/kernel

你可能感兴趣的:(Linux)