• 编译运行Linux内核


    为什么需要切换Linux内核为自定义参数版本?

    Linux内核是操作系统的核心,也是操作系统最基本的部分。Linux内核的体积结构是单内核的、但是他充分采用了微内核的设计思想、使得虽然是单内核、但工作在模块化的方式下、并且这个模块可以动态装载或卸 载;Linux负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。如是我们在了解Linux内核的基础上根据自己的需要量身定制一个更高效,更稳定的内核,就需要我们手动去编译和配置内核里的各项相关的参数和信息了。

    Linux内核下载

    下载地址
    在这里插入图片描述
    本次实验我选择5.0.5版本的Linux内核
    根据前辈的经验,和我自己解决实验时报错问题的经验首先要提醒大家的是在编译前,首先要安装以下几种依赖

    sudo apt-get install gcc make 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 dwarves
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    在安装完成之后,正式开始实验。由于实验在系统路径下进行,一定不要忘记sudo

    1.将下载的Linux内核文件解压缩到指定文件夹/usr/src/

    如果不sudo无法访问/usr/src

    sudo tar -zxvf xxx.tar.gz -C /usr/src
    
    • 1

    在这里插入图片描述

    2.make menuconfig

    cd到Linux内核文件夹内后,在终端输入sudo make menuconfig

    sudo make menuconfig
    
    • 1

    在这里插入图片描述

    在这里menuconfig可以自定义,我们可以通过编写Kconfig去自定义。
    在这里插入图片描述
    在这里我们先不用修改其中的内容,之间选择Exit退出即可
    这一步选择Yes即可。
    在这里插入图片描述

    3.make 编译

    通过make编译。这一步也是整个实验最耗费时间的,如果没有-j加速需要2个小时。
    通过make -j$(nproc)命令可以自动获取当前机器能够使用的进程数用于加速。
    为了加速编译速度可以使用-j参数,make -j4,其中的number根据自己电脑cpu核心数来决定,一般可以设置为核心数的2倍。
    在这里插入图片描述

    4.安装内核模块
    sudo make modules_install
    
    • 1

    在这里插入图片描述

    5. 安装内核

    在这里插入图片描述

    sudo make install
    
    • 1
    6.验证是否安装成功
    cd /boot
    ls
    
    • 1
    • 2

    在这里插入图片描述

    切换Linux内核

    通过命令查看当前Linux内核版本

    uname -r
    
    • 1

    在这里插入图片描述
    首先使用命令查找新内核,更新grub文件
    在这里插入图片描述
    cd到/boot/grub修改grub.cfg
    在这里插入图片描述
    修改原文件:
    注释 set timeout_style = hidden
    修改timeout的值为10
    在这里插入图片描述
    重启机器,就会自动弹出选择Linux内核的界面了。
    在这里选择Advanced Options
    在这里插入图片描述
    接下来选择想要的Linux内核版本即可。
    在这里插入图片描述
    现在可以查看Linux内核版本了
    在这里插入图片描述
    成功切换Linux内核。

  • 相关阅读:
    Java中的自定义异常
    【Electron】开发实战
    pytest自动化测试-element not interactable、xpath元素定位不到、多页签下子表定位、pip使用问题
    vue中使用图像编辑器tui-image-editor(一)
    如何通过代码混淆绕过苹果机审,解决APP被拒问题
    flutter实用笔记
    java毕业设计校园互助平台校园帮帮网站源码+lw文档+mybatis+系统+mysql数据库+调试
    Cascade R-CNN详解
    【C++基础入门】43.C++中多态的概念和意义
    讲解LCD1602自定义字符原理
  • 原文地址:https://blog.csdn.net/weixin_43898134/article/details/127735487