服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > 开发教程 > linux教程 >

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

时间:2016-04-08 07:33来源:未知 作者:最模板 点击:
以我目前的环境为例,我的Ubuntu系统的内核版本是3.19.0,我想使用新版本的内核4.5.0来替代它,步骤如下(以下过程全部在root权限下操作): 1. 安装必备软件编译工具 apt-get installlibncurs

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

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

apt-get installlibncurses5-devbuild-essentialkernel-package

注意:

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/目录下

cp -r linux-4.5.0 /usr/src/

4. 配置内核

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

cp /boot/config-XX.config

2)make mrproper /// 这一步可以不做!

作用是在每次配置并重新编译内核前需要先执行“make mrproper”命令清理源代码树,包括过去曾经配置的内核配置文件“.config”都将被清除。即进行新的编译工作时将原来老的配置文件给删除掉,检查有无不正确的.o文件和依赖关系,以免影响新的内核编译。

如果使用刚下载的完整的源程序包就第一次进行编译,那么本步可以省略。而如果你多次使用了这些源程序编译内核,则最好要先运行一下这个命令。

3)进入menuconfig选择load选项

make menuconfig

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

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

  • Make Menuconfig详解 (配置内核选择)
  • make menuconfig详解

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

make menuconfig #基于ncurse库编制的图形工具界面
make config    #基于文本命令行工具,不推荐使用
make xconfig    #基于X11图形工具界面
make gconfig    #基于gtk+的图形工具界面

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

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

5. 编译内核

make #这可能需要2~3个小时的时间。

6. 加入模块,安装内核

make modules_install

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

make install #安装内核

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

  • /etc/grub.conf
  • /boot/grub/menu.lst
  • /boot/grub/grub.conf

注:前两个配置文件是第三个的软连接。


(责任编辑:最模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容