美文网首页
CentOS7 内核编译

CentOS7 内核编译

作者: 茫子 | 来源:发表于2017-12-08 17:02 被阅读0次

CentOS 7 内核编译

本文是参考CentOS官网说明文件,详细内容请参考以下链接
https://wiki.centos.org/zh/HowTos/I_need_the_Kernel_Source 内核源码生成
https://wiki.centos.org/zh/HowTos/Custom_Kernel 内核编译

原理

内核编译需要正确版本的内核源码,以及正确的内核选项。

  1. CentOS7的内核源码是通过rpm包生成的,如果需要内核源码来进行编译,直接安装rpm是不行的,还得配置一下。
  2. 有了正确的内核源码后,需要通过正确生成内核的.config文件,这样才能正确编译rpm包
  3. 对了,CentOS7是通过kernel*.rpm包来更新内核的

生成可编译的内核源码

  1. 需要安装一些开发库
 # yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto
 # yum install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel
 # yum install ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel
  1. 切换用户
  后续操作,使用非root用户进行后续操作,切记
  1. 在用户的home目录下创建一些目录,生成一些配置
   $ mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
   $ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

4.安装源码组件,kernel-xxxxxxxxx.src.rpm请在 http://vault.centos.org/7.N.YYMM/updates/Source/SPackages/
(请以相关的副版本编号、年度及月份取代 N.YYMM。)下载

  $ rpm -i kernel-xxxxxxxxx.src.rpm 2>&1 | grep -v exist
  1. 解压源码并生成源码
   $ cd ~/rpmbuild/SPECS
   $ rpmbuild -bp --target=$(uname -m) kernel.spec
  1. 现在内核的源代码目录树可以在 ~/rpmbuild/BUILD/kernel/linux/ 这个目录内找得到

编译内核

  1. 切换用户
后续操作,使用非root用户进行后续操作,切记
  1. 生成内核配置文件
    进到 ~/rpmbuild/BUILD/kernel-/linux-/ 目录,然后选择复制 configs/ 目录内的配置文件或 /boot/ 目录内的现有内核配置文件,并命名为 .config。
    这里选用了 /boot/目录内的配置,为了保持和现有的系统内核一致
  $ cd ~/rpmbuild/BUILD/kernel-*/linux-*/
  $ cp /boot/config-`uname -r` .config
  1. 设置内核
  $ make oldconfig   
  $ make menuconfig  设置你所需要的选项
接着在.config文件的第一行加入uname -i的输出,比如:x86_64,使文件第一行如下
# x86_64

注意 #号和文字之间有空格

修改完后更新config文件

$ cp .config configs/kernel-3.10.0-`uname -m`.config
$ cp configs/* ~/rpmbuild/SOURCES
  1. 更新spec文件,进入rpmbuild/SPECS目录,修改kernel.spec文件,替换如下行。
  # % define buildid .local  ----> %define buildid .xxxx
__注意__ 删除#号, %和define之间无空格,xxx自定义

5.编译内核
进入~/rpmbuild/SPECS目录

$ rpmbuild -bb --target=`uname -m` --without kabichk kernel.spec 2> build-err.log | tee build-out.log

漫长的编译后: ~/rpmbuild/RPMS/uname -m/ 目录内找到生成的rpm包们

安装和启动

1.使用root账户: yum localinstall ~/rpmbuild/RPMS/uname -m/kernel*.rpm

  1. 重启并加载新的内核,大功告成

相关文章

  • centos7 编译内核

    最近要交操作系统的作业,其中一项就是编译Linux系统的最新的内核。 CentOS和RedHat是两个很相似的Li...

  • CentOS7 内核编译

    CentOS 7 内核编译 本文是参考CentOS官网说明文件,详细内容请参考以下链接https://wiki.c...

  • Docker常用命令

    系统环境:centos7安装Docker要求内核版本不低于3.10,centos7满足最低内核要求,这点需要注意。...

  • centos7 编译内核的方法

    通过源码的方式替换 1.获取内核源码 获取内核源码的路径:https://www.kernel.org/pub/l...

  • CentOS7 编译内核支持nbd

    先升级一下kernel及安装kernel-devel,保持他们俩的统一yum install kernel ker...

  • centos7 initramfs解包 打包

    1、centos7原生内核 centos7内核默认的initramfs与原生linux不一致,包含一个cpio格式...

  • Ubuntu内核升级方法

    Ubuntu内核升级有两种方法: 1. 下载Linux内核,进行编译,具体步骤可参照ubuntu内核编译教程-编译...

  • Linux内核编译

    本次内核编译环境 平台 CentOS 7(字符终端) 编译内核版本 4.12,内核可以去官网h...

  • 迅为IMX6Q开发板-非设备树内核-单独编译内核驱动

    内核驱动不仅可以将驱动编译到内核中,还可以动态的编译内核驱动。本文档介绍如何以模块的方式编译内核驱动。 要动态的编...

  • 迅为4418开发板-驱动-以模块的方式编译内核驱动

    内核驱动不仅可以将驱动编译到内核中,还可以动态的编译内核驱动。本文档介绍如何以模块的方式编译内核驱动。 要动态的编...

网友评论

      本文标题:CentOS7 内核编译

      本文链接:https://www.haomeiwen.com/subject/pyneixtx.html