首页 > 代码库 > Linux内核编译和替换小结

Linux内核编译和替换小结

Linux内核编译和替换小结

一 准备工作

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 检验下了。

?

Linux内核编译和替换小结