zoukankan      html  css  js  c++  java
  • linux源码升级编译内核

    内核源码更新内核(以linux内核4.11.7为例子)

    1. 内核更新前的工作准备

      a. 系统:ubuntu16.04的Desktop版本,内核为linux-4.8.0;

      b. 虚拟机VMware Workstation Pro 12,并安装上述的ubuntu版本系统;

      c. 配置好相应的ubuntu16.04的基本操作,包括安装vim,nfs等必要包;

      d. 在http://www.kernel.org上下载最新的内核源码包,本文使用的为当时最新的内核源码包linux-4.11.7.tar.xz。

     

    2. 解压内核源码包

      a. 在ubuntu16.04中的/usr/src中建立目录linux-kernel-4.11:

        sudo mkdir /usr/src/linux-kernel-4.11

      b. 解压内核源码

        sudo xz –d linux-4.11.7.tar.xz,得到 linux-4.11.7.tar的tar包;

        sudo tar –xvf linux-4.11.7.tar,得到linux-4.11.7解压源码包。

     

    3. 获取内核源码包的相关说明和配置编译内核的最小要求的文档

      a. 进入linux-4.11.7目录中,打开README文档说明,查看到相关的文档说明信息

       在Documentation/admin-guide/README.rst中,然后打开它

      b. 在README.rst文档中,我们看到了对内核编译的两种方式,其中一种就是使用打

       补丁的方式,另外一种就是现在我们在做的,使用源码内核包来进行内核升级(

         查看到144行,有教导我们如何编译内核的方式)

       

      c. 按照上述的文档的方法,我们在自己的家目录中建立相应的文件夹来进行编译内核

       本文使用的是host用户名,建立目录为    

        sudo mkdir –p /home/host/build/kernel  

         (这个目录是随自己建立的,但是不能建立在ubuntu和windowns共享的文件目录下,因为有些链接文件是共享目录无法建立的)

     

    4. 获取编译内核的要求说明文档

      a. 进入Documentation目录找到Changes这个文件,就是我们编译内核的环境要求;

      b. 打开Documentation/Changes这个文件,获取重要信息;

        

      c. 上述的信息中,第一列代表需要安装的库包,第二列表示第一列库包的最小版本信息,第三列表示查询当前系统这个包的命令,

       没有的添加之,版本不够的就升级;

      d. 可以在查询之前升级当前系统的信息:

        sudo apt-get update   升级当前新安装的包信息;

        sudo apt-get upgrade  升级系统附带的最新包

     

    5. 安装编译之前需要安装另外一些库文件和lib:

      a.  sudo apt-get install automake autoconf libtool  进行make和库连接的关键

      b.  sudo apt-get install libssl-dev                            防止出现openssl/ioensslv.h找不到

      c.  sudo apt-get install libncureses5-dev                防止出现curses.h没有找到

      d.  sudo apt-get install build-essential                    防止出现系统建立build时候出错

     

    6. 进行编译:

      a. 按照Documentation/admin-guide/README.rst的所说,第一步先去掉linux-kernel-4.11源码包中的所有.o文件(在文档的112行);

        sudo make mrproper

      b. 转到141行的内容,按照相应的步骤进行编译;

        i. 配置内核,生成.config文件:

          sudo make O=/home/host/build/kernel menuconfig

          在里面我们不需要修改任何东西,然后点击Save,然后确定保存的名字为.config不变,

               这样就会在我们的/home/host/build/kernel/中出现了.config这个配置文件;

            

        ii. 编译内核(这里一次性编译bzImage和modules):

          sudo make O=/home/host/build/kernel –j4

          其中,-j4表示以4线程的方式进行编译内核,这样会比较快,因此笔者的电脑vmwere配置成2核的,

          所以使用4线程的方式编译,节省编译的时间;

        iii: 安装内核和模块到现有的内核中:

           sudo make O=/home/host/build/kernel modules_install install      

              其中 modules_install为安装模块,install为安装内核

        iv. 到此,如果没有出现任何问题的话,内核的编译就已经完成了。

     

    7. 替换当前系统

      a. 找到4.11.07在/lib的位置,并进行mkinitramfs操作:

        sudo find /lib -iname "4.11.7",得到路径为:/lib/modules/4.11.7,那么执行

        mkinitramfs /lib/modules/4.11.7 /boot/initrd.img-4.5.0  

        (注意这时候还是在源码目录中的)

      b. 修改启动的grub

        安装grub:       sudo apt-get install grub2

        更改启动:        update-grub2

        重启系统:           reboot

        查询内核版本: uname -r

       

     

  • 相关阅读:
    POJ 2007 Scrambled Polygon (极角排序)
    POJ 1113 Wall (凸包 + 思维)
    POJ 2074 Line of Sight(求直线交点 + 思维)
    POJ 1584 A Round Peg in a Ground Hole(凸多边形判断 + 点是否在多边形内 + 点到线段的最短距离)
    HDU 4623 Crime (状压DP + 数学优化)
    P4755 Beautiful Pair
    CF235C Cyclical Quest
    luoguP4449 于神之怒加强版
    扩展KMP
    P4397 [JLOI2014]聪明的燕姿
  • 原文地址:https://www.cnblogs.com/Older-Driver-of-Newer/p/7077150.html
Copyright © 2011-2022 走看看