一 准备工作
1 当前Linux 环境
系统版本为 3.8.13.13-cdos
2 下载内核源码
在网站 www.kernel.org ,选择合适的版本下载。
本次下载版本为官方最新开发版本 linux-3.17.tar.xz
二 内核编译
1 解压源码
当前系统的源码位置为 /usr/src/linux-headers-3.8.13.13-cdos
新的源码解压到 /opt/linux-3.17,使用命令 #tar xvf linux-3.17.tar.xz –C /opt
2 make mrproper
Remove all generated files + config + various backup files
"make mrproper"命令清理源代码树,包括过去曾经配置的内核配置文件".config"都将被清除。即进行新的编译工作时将原来老的配置文件给删除到,以免影响新的内核编译。
即检查有无不正确的.o文件和依赖关系,如果使用刚下载的完整的源程序包即第一次进行编译,那么本步可以省略。而如果你多次使用了这些源程序编译内核,则最好要先运行一下这个命令。
3 make olddefconfig
将当前系统存在的.config 文件拷贝至3.17.0源码目录,使用make olddefconfig 命令配置内核选项。
make olddefconfig 的含义为:采用已有的.config文件的参数作为默认参数,同时升级依赖属性,新属性设置为默认值不再提醒。
也可以使用以下两个命令:
make config:纯文本界面配置。
make menuconfig:基于文本的彩色菜单、单选列表、对话框。(常用)
4 make dep
如果内核从未编译过,此步可跳过
根据配置结果,建立文件依赖关系。
该命令将会修改linux中每个子目录下的.depend文件,该文件包含了该目录下每个目标文件所需要的头文件(绝对路径的方式列举)。
5 make clean
如果内核从未编译过,此步可跳过
Remove most generated files but keep the config and enough build support to build external modules
清理一些不必要的文件,如果你在上次编译的基础上,删去了一些选项,执行这一步操作,否则,就没有必要了。
6 make –j
生成内核模块、bzImage、System.map等文件。
-j[N]: 同时允许N个任务,而如果-j后不跟任何数字,则不限制处理器并行编译的任务数。
本步也可以分别执行 make bzImage 、make modules。
三 安装内核和模块
1 make modules_install
编译成功后,系统会在/lib/modules目录下生成一个3.17.0子目录,里面存放着新内核的所有可加载模块(即将编译好的modules拷贝到/lib/modules下)。
2 make install
执行该命令后,/boot 文件夹下会增加一下内容:
cp .config /boot/config-3.17.0
cp System.map /boot/System.map-3.17.0
cp /arch/i386/boot/bzImage /boot/vmlinuz-3.17.0
3 mkinitramfs
敲入命令生成内核版本相对应的img 文件:
#mkinitramfs 3.17.0 –o /boot/initrd.img-3.17.0
至此,更换内核所需的所有文件config、System.map、vmlinuz、initrd.img 都已经完成了。
4 update-grub2
更新启动文件grub.cfg,将3.17.0添加至系统启动选项中。
四 总结
恭喜您,到这里所有的内核更换工作已经完成,可以reboot 检验下了。