Linux内核的编译和替换方法总结

/ 0评 / 0

Published by orzz.org(). (http://orzz.org/linux-kernel-replacement/)

以我目前的环境为例,我的Ubuntu系统的内核版本是3.19.0,我想使用新版本的内核4.5.0来替代它,步骤如下(以下过程全部在root权限下操作):

1. 安装必备软件编译工具

注意:
1)libncurses5-dev是为之后配置内核能运行make menuconfig程序做准备;Build-essential是编译工具,kernel-package是编译内核工具;
2)如果系统显示无法查找到这三个文件,输入apt-get update更新数据源。

2. 下载内核


https://www.kernel.org/下载你需要的内核版本的源代码:linux-4.5.0.tar.xz,解压后:linux-4.5.0。

3. 将该压缩包解压后的内容拷贝到/usr/src/目录下

4. 配置内核

1)建议使用当前系统配置文件,使用当前系统配置文件方法:

2)make mrproper /// 这一步可以不做!
作用是在每次配置并重新编译内核前需要先执行“make mrproper”命令清理源代码树,包括过去曾经配置的内核配置文件“.config”都将被清除。即进行新的编译工作时将原来老的配置文件给删除掉,检查有无不正确的.o文件和依赖关系,以免影响新的内核编译。
如果使用刚下载的完整的源程序包就第一次进行编译,那么本步可以省略。而如果你多次使用了这些源程序编译内核,则最好要先运行一下这个命令。
3)进入menuconfig选择load选项

注:使用make menuconfig 生成的内核配置文件,决定将内核的各个功能系统编译进内核还是编译为模块还是不编译。

在这里就不介绍具体的内核配置操作,但是建议就算不打算配置什么也执行一下make menuconfig这个命令,因为如果不执行此操作的话在后面make编译内核的时候会提示你回答很多问题。
内核配置可参考:

配置内核还有很多其他方法,主要区别如下:

这里选择简单的配置内核方法,即make menuconfig。在终端输入make menuconfig,等待几秒后,终端变成图形化的内核配置界面。进行配置时,大部分选项使用其缺省值,只有一小部分需要根据不同的需要选择。
对每一个配置选项,用户有三种选择,它们分别代表的含义如下:

  • <*>或[*]——将该功能编译进内核
  • [ ]——不将该功能编译进内核
  • [M]——将该功能编译成可以在需要时动态插入到内核中的代码
  • 5. 编译内核

    6. 加入模块,安装内核

    编译成功后,系统会在/lib/modules目录下生成一个3.12.5子目录,里面存放着新内核的所有可加载模块(即将编译好的modules拷贝到/lib/modules下)。

    即复制.config,vmlinuz,initrd.img,System.map文件到/boot目录、更新grub。对于RedHat系统以下三个grub文件自动会更新,默认启动新内核:

  • /etc/grub.conf
  • /boot/grub/menu.lst
  • /boot/grub/grub.conf
  • 注:前两个配置文件是第三个的软连接。

    Published by orzz.org(). (http://orzz.org/linux-kernel-replacement/)

    发表回复

    您的电子邮箱地址不会被公开。 必填项已用*标注

    此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据