您的位置:首页 > 运维架构 > Linux

centos 内核升级(2.6.32->3.19.0)

2016-06-12 16:48 246 查看
1.理解内核的定义及升级内核的意义
操作系统是和硬件打交道并且提供人机操作交互的支撑软件。
linux内核负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
所以说,当有硬件新特性或者对系统稳定性有更高要求的时候,我们需要升级内核。
比如,本次我升级是因为想使用docker,docker要求centos内核版本至少3.8以上,所以我需要升级内核。
2.理解内核编译及模块的概念
linux内核是基于c语言编写的,一般我们在官网https://www.kernel.org下载的是内核源码,和编译其他c语言程序一样,想要内核文件生成可执行文件,需要将内核源码进行编译。
内核模块是一些可以让操作系统内核在需要时载入和执 行的代码,这同样意味着它可以在不需要时由操作系统卸载。它们扩展了操作系 统内核的功能却不需要重新启动系统。举例子来说,其中一种内核模块是设备驱动程序模块,它们用来让操作系统正确识别,使用安装在系统上的硬件设备。如果没有内核模块,我们不得不一次又一次重新编译生成单内核操作系统的内核镜像来加入新的功能。我们可以将内核模块理解为:完成某种功能的函数功能块儿,可以插拔在操作系统上。
3.编译方法
A.make menuconfig :: 源码根目录下生成 .config (没有会自动生成), .config中就是各个内核编译选项的选择状况.
会弹出图形化界面进行手动配置并生成.config文件。
B.make defconfig :: 根据当前系统的架构默认 .config 生成内核源码目录下的 .config (每个架构的配置文件: ex. arch/x86/configs/x86_64_defconfig)
C.make oldconfig :: 将已有的 .config 放到源码根目录下后执行, 目的是为了复用之前的内核编译选项的配置.
D.make xconfig :: 图形化配置, 需要qt3, 个人觉得没有必要, 有 make menuconfig 就足够了.
E.make localmodconfig :: 生成以正在使用的内核模块为对象的 .config
4.升级过程
A.下载内核源码包
前往https://www.kernel.org/pub/linux/kernel/v3.x/下载
或者直接使用 wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.19.tar.gz
命令下载内核源码
B.解压缩
tar -xvf linux-3.19.tar.xz
-C 目的文件夹

目的文件夹有可能是/usr/src/kernel/,有可能是/usr/src,有可能是/usr/src/redhat,根据不同的linux种类和版本
填写符合操作系统的路径。
C.拷贝旧config文件
因为想使用make oldconfig命令编译内核源码,所以要拷贝旧的config文件
从/boot目录下拷贝config-2.6.32-220.el6.x86_64文件至加压缩后文件夹
cd /usr/src/linux-3.19/

cp /boot/config-2.6.32-220.el6.x86_64 .config
D.使用make oldconfig复用内核编译选项配置
E.make -j4 bzImage 生成内核文件
make -j4 modules 编译模块
make -j4 modules_install 编译安装模块
F.make install 安装
G.修改grub.conf文件
vi /etc/grub.conf



数一下刚刚新安装的内核在哪个位置,从0开始,然后设置default为那个数字,一般新安装的内核在第一个位置,所以设置default=0。
重启reboot。
升级完成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: