zoukankan      html  css  js  c++  java
  • Linux编译内核 Ubuntu18.04 -2020.11.04

    Linux编译内核 Ubuntu18.04 -2020.11.04

    关闭虚拟机并备份

    首先关闭虚拟机,其次直接找到.vmdk所在目录,并压缩该目录实现备份

    下载内核源码

    Linux内核官网:https://www.kernel.org/,点击图标下载,摘自https://blog.csdn.net/qq_36290650/article/details/83052315

    将压缩包移动到虚拟机中,并备份/boot/grub/grub.cfg文件这个文件他负责启动你的Ubuntu系统,你编译好内核之后是要把新内核信息加入到这个文件里面,这样你才能在启动Ubuntu的时候运用你的新内核。这个文件也是极其重要的。如果你在编译内核过程中操作不当,将里面的信息破坏了,那么你的系统将无法启动,这样你只能通过恢复这个文件来解决,摘自:https://blog.csdn.net/qq_43688952/article/details/88856354

    准备工作

    安装一系列软件

     sudo apt-get install libncurses5-dev openssl libssl-dev 
     sudo apt-get install build-essential
     sudo apt-get install pkg-config
     sudo apt-get install libc6-dev
     sudo apt-get install bison
     sudo apt-get install flex
     sudo apt-get install libelf-dev
     sudo apt-get install zlibc minizip
     sudo apt-get install libidn11-dev libidn11
    

    解压内核源码

    tar -xavf linux-5.9.3.tar.xz
    

    进入解压后的目录,使用命令make mrproper,这个命令会删除所有的编译生成文件、内核配置文件(.config文件)和各种备份文件,所以几乎只在第一次执行内核编译前才用这条命令

    将boot目录下的当前系统内核的config配置信息复制一份到当前目录下的.config文件中

    linkchen@master:~/UserProgram/linux-5.9.3$ cp /boot/config-4.15.0-121-generic ./.config
    

    确认无误后,输入make menuconfig命令,打开一个图形界面

    移动键盘光标,到Load上,再回车,可以看到确认是当前目录下的.config文件

    选择OK后,再移动到Save上,保存并关闭,最后选择退出Exit

    输入make clean命令,用于删除大多数的编译生成文件,但是会保留内核的配置文件.config,还有足够的编译支持来建立扩展模块。所以你若只想删除前一次编译过程的残留数据,只需执行make clean命令

    在进行编译之前还需要将虚拟机的存储空间扩展,否则会在编译的过程中产生存储空间不足的错误,扩展可参考:https://blog.csdn.net/lhl_blog/article/details/86636217

    编译内核

    输入命令sudo make开始编译,编译过程需要很长时间,至少两个小时左右

    编译完成后,输入命令du -sh查看编译后的目录大小

    可以看到有19GB

    安装内核

    输入make modules_install,安装内核模块

    输入sudo make install,安装内核

    Linux启动过程图解

    参考:https://www.thegeekstuff.com/2011/02/linux-boot-process/

    配置启动内核

    首先查看当前系统内核,输入uname -a

    输入命令,查看initrd.img的不同内核版本

    initrd.img即boot loader initialized RAM disk,就是由 boot loader 初始化的内存盘

    具体可参考:https://blog.csdn.net/li33293884/article/details/53183622

    linkchen@master:~/UserProgram/linux-5.9.3$ sudo mkinitramfs -o /boot/initrd.img-
    initrd.img-4.15.0-118-generic  initrd.img-4.15.0-121-generic  initrd.img-5.9.3 
    

    输入命令

    • sudo mkinitramfs -o /boot/initrd.img-5.9.3

    • sudo update-initramfs -c -k 5.9.3

    • update-grub2

    linkchen@master:~/UserProgram/linux-5.9.3$ sudo mkinitramfs -o /boot/initrd.img-5.9.3 
    [sudo] password for linkchen: 
    linkchen@master:~/UserProgram/linux-5.9.3$ sudo update-in
    update-inetd      update-info-dir   update-initramfs  
    linkchen@master:~/UserProgram/linux-5.9.3$ sudo update-in
    update-inetd      update-info-dir   update-initramfs  
    linkchen@master:~/UserProgram/linux-5.9.3$ sudo update-initramfs -c -k 
    4.15.0-118-generic  4.15.0-121-generic  4.15.0-29-generic   5.9.3               all   
    linkchen@master:~/UserProgram/linux-5.9.3$ sudo update-initramfs -c -k 5.9.3
    update-initramfs: Generating /boot/initrd.img-5.9.3
    linkchen@master:~/UserProgram/linux-5.9.3$ sudo update-grub2
    Sourcing file `/etc/default/grub'
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-5.9.3
    Found initrd image: /boot/initrd.img-5.9.3
    Found linux image: /boot/vmlinuz-4.15.0-121-generic
    Found initrd image: /boot/initrd.img-4.15.0-121-generic
    Found linux image: /boot/vmlinuz-4.15.0-118-generic
    Found initrd image: /boot/initrd.img-4.15.0-118-generic
    Found memtest86+ image: /boot/memtest86+.elf
    Found memtest86+ image: /boot/memtest86+.bin
    done
    linkchen@master:~/UserProgram/linux-5.9.3$ 
    

    输入命令sudo reboot重启计算机,再次检查内核版本,输入uname -a

    发现内核已经成功切换了为新编译的5.9.3版本

  • 相关阅读:
    假期学习2
    假期学习1
    读《需求工程--软件建模和分析》一
    数据清洗
    Mapreduce实例——WordCount
    SEVEN python环境jieba分词的安装 以即热词索引
    SIX Spark Streaming 编程初级实践
    FIVE Spark SQL 编程初级实践
    FOUR spark-shell 交互式编程
    THREE SPAKR
  • 原文地址:https://www.cnblogs.com/linkchen/p/13926846.html
Copyright © 2011-2022 走看看