Linux-Centos7编译内核

编译内核

    前提:

        (1)准备好开发环境

        (2) 获取目标主机上硬件设备的相关信息

        (3) 获取目标主机系统功能的相关信息

                       例如:需要启用相应的文件系统

        (4) 获取内核源代码包

                  www.kernel.org

开发环境准备

           包组(Centos 7):Development Tools

                       #yum grouplist  查看包组信息  

           目标主机硬件设备相关信息:

                   CPU:  #cat /proc/cpuinfo

                             #lscpu

                   PCI设备:

                           lspci     (-v|-vv)

                           lsusb    (-v|-vv)

                           lsblk  块设备

  

这是在虚拟机上做的实验,可以把cpu设置成4核的,内存设置成2G,这样可以快速的编译:

   步骤如下:

             1、下载源码文件:linux-4.12.tar ;并解压缩到/root下

                      #tar xvf linux-4.12.tar

             2、安装开发包组

                     #yum groupinstall  “Development Tools”

              3、准备文本配置文件,为了省事,直接参考当前的内核配置文件作为要编译的内核模块:

                    #cd /boot

                    #cp /boot/config-3.10.0-514.e17.x86_64    /root/linux-4.12/.config

              4、配置内核选项,通过菜单的方式,定义内核的选项:

                    cd /root/linux-4.12

                    运行 #make menucofig命令时,发现报错,缺ncurses-devel包

                    #yum install  ncurses-devel   安装包

                    继续运行#make menuconfig,会打开一个Kernel Configuration 配置窗口:如下图

           Linux-Centos7编译内核

                  

                        上图中”[ ]“  里*表示打到核心里,M:是以模块方式打到核心里;空白就表示不设置。

                         上图中选中General setup  ,回车展开如下图:

           Linux-Centos7编译内核

                在下图中输入内核的版本,以及编译者信息,可以自己随便设定:

           Linux-Centos7编译内核

              设置完内核选项后,按TAB建切换<Save> 保存然后推出。

               设置好的内核选项,就被保存到了,/root/linux4.12/.config 文件里,可以查看已经设置的内容

       5、开始编译,操作如下图:

                    Linux-Centos7编译内核

              

                通过lscpu 命令看到有4个CPU,内核编译支持多线程编译,执行命令:

                        # make  -j  4  &&  for  i  in  {1..10} ;do  echo  -e “-a”;sleep 1 ;done

                  由于编译时间过长,这里编写一个下循环,编译结束时发声,提醒便宜结束。     

                 编译过程发现报错,如下图:

               Linux-Centos7编译内核

                      上图中提示缺少openssl工具;缺什么就安装什么:yum -y install openssl-devel

                        然后继续运行:# make  -j  4  &&  for  i  in  {1..10} ;do  echo  -e “-a”;sleep 1 ;done

                       编译过程时间比较长,所以不要急。可以再打开一个终端窗口,cd /root/linux-4.12  下;

                         wach -n 5  du -sh .   可以每隔5秒统计一下大小,总计大小差不多9个多G.请耐心等待。

     6、 当听到发声提醒时,说明第5 步已经完成了。然后执行如下操作:

               make modules_install  安装模块。把/root/linux-4.12目录下的大量的内核模块包,复制生成到/lib/modules目下;

             会生成一个文件夹如下图:

                  Linux-Centos7编译内核

     7、  #make install

            安装内核相关文件 :安装bzImage为/boot/vmlinuz-VERSION-RELEASE 生成initramfs文件, 编辑grub2的配置文件

            Linux-Centos7编译内核

      8、重启就可以选择linux-4.12的内核启动加载了。

      

在编译完成后,那么怎么在已经执行过编译操作的内核源码树做重新编译呢?如下描述:

                               1、#make clean  :清理大多数编译生成的文件,但会保留condig文件等

                               2、#make mrproper :清理所有编译生成的文件、config及某些备份文件

                               3、#make distclean : mrproper、patches以及编辑器备份文件

  

如果编译有错误,或者还想用旧的内核启动,那么怎么删除新的内核呢?

  只要把上述编译的每一步骤生成的文件目录删除就可以了;如下操作:

              1、rm -rf /lib/modules/4.12.0.1.0-wangkernel/

              2、rm -rf /boot/*4.12*  把带有4.12的文件都删了。如下图:

                Linux-Centos7编译内核                

            3、删除/boot/grub2/grub.conf文件下生成的配置文件删除了:如下图选中的部分都删除了;

          Linux-Centos7编译内核

                

                               

原创文章,作者:shenjialong,如若转载,请注明出处:http://www.178linux.com/80116

(1)
shenjialongshenjialong
上一篇 2017-07-16 22:45
下一篇 2017-07-16 23:01

相关推荐

  • Linux发行版的基础目录名称命名法则及功用规定

    /bin  存储单用户维护模式还能操作的命令 /boot 存储开机时会使用到的文件 /dev  存储设备与接口文件 /etc  存储系统的配置文件 /home 系统默认的用户主目录 /lib  存储函数库文件 /media 光盘挂载点 /mnt   光盘或者U盘挂载点 /opt   第三方应用程序文件存放目录 /root  root用户家目录 /sbin  …

    Linux干货 2018-03-04
  • 初探VIM_第六周练习(02)

    引言—什么是Vim? 接触Linux这么久,想必对于一切皆文件的哲学思想已经不陌生了。因此,学习并掌握用一款Linux文本编辑器,对于玩转LInux来说,是很有必要的。 vi编辑器是Unix系统最初的编辑器,它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文件中移动、插入、编辑和替换文本。 在GNU项目将vi编辑器移植到开源世界时,…

    Linux干货 2016-12-18
  • Linuxd的发展史

    Linux发展史 Linux诞生:   1991年的八月,一个芬兰的名为Linus Torvalds的大学生为自己开始写作一个类似minix,可运行在386上的操作系统寻找志同道合的合作伙伴。FREAX系统后改名Linux。  Linux是什么:   按照Linux开发者的说法,Linux是一个遵循POSIX(注一)标作系统,标…

    Linux干货 2016-10-14
  • grep、正则表达式

    grep、正则表达式 grep:文本过滤(模式:pattern)工具 作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行。 模式:由正则表达式字符及文本字符所编写的过滤条件。 正则表达式:由一类特殊字符及文本所编写的模式,其中有些字符不表示字符字面意义,而表示控制或通配的功能。 正则表达式分为两类:基本正则表达式、扩展正则表…

    Linux干货 2017-04-06
  • Python线程指南

    本文介绍了Python对于线程的支持,包括“学会”多线程编程需要掌握的基础以及Python两个线程标准库的完整介绍及使用示例。 注意:本文基于Python2.4完成,;如果看到不明白的词汇请记得百度谷歌或维基,whatever。 尊重作者的劳动,转载请注明作者及原文地址 >.< 1. 线程基础 1.1. 线程状态 线程有5种状态,状态转换的过程如…

    2015-03-13
  • Linux – 计算机基础知识体系

    一、认识计算机的组成      计算机组成(computer composition)指的是系统结构的逻辑实现,包括机器机内的数据流和控制流的组成及逻辑设计等。 计算机一般是由硬件系统和软件系统这两部分组成,硬件系统包括:CPU、内存、硬盘、输入和输出设备(键盘鼠标、显示器等),软件系统包括:系统软件自身、用…

    Linux干货 2017-02-19