Linux学习之Ubuntu 20.04安装内核模块

news/2024/11/16 10:24:30/

参考博客:Ubuntu20.04编译内核教程

sudo lsb_release -a可以看到我当前的系统是Ubuntu 20.04.4sudo uname -r可以看到我的系统内核版本是5.4.0-100-generic
在这里插入图片描述
sudo apt-get install -y libncurses5-dev flex bison libssl-dev安装所需要的依赖。
在这里插入图片描述

sudo apt-get install linux-source按两下Tab,看一下可以下载的源码。
在这里插入图片描述

然后输入sudo apt-get install linux-source-5.4.0就可以下载源码。
在这里插入图片描述

sudo find / -name linux-source-5.4.0看一下源码下载位置,ls -l /usr/src/linux-source-5.4.0看一下目录下边的内容。
在这里插入图片描述

sudo tar xjf /usr/src/linux-source-5.4.0/linux-source-5.4.0.tar.bz2 -C /usr/src/linux-source-5.4.0/把源码压缩包解压到/usr/src/linux-source-5.4.0/目录下。
在这里插入图片描述

cd /usr/src/linux-source-5.4.0/linux-source-5.4.0/进入到源码顶层目录下。
在这里插入图片描述

sudo make menuconfig进入到配置页面。
在这里插入图片描述
键可以选择目录,键可以选择选项,比如<Select>,< Exit >等。
在这里插入图片描述

键选择 Device Drivers --->,然后按Enter
在这里插入图片描述

键选择Network device support ---> ,然后按Enter
在这里插入图片描述

键选择Universal TUN/TAP device driver support,然后按m,在尖括号里边要有M

在这里插入图片描述
键,选择 < Save >,然后按Enter
在这里插入图片描述

键,选择 < ok >,然后按Enter
在这里插入图片描述

然后再按Enter
在这里插入图片描述

键,选择 < Exit >,然后按Enter
在这里插入图片描述

键,选择 < Exit >,然后按Enter
在这里插入图片描述

键,选择 < Exit >,然后按Enter
在这里插入图片描述

最后退出到命令行。
在这里插入图片描述

重新配置一些参数。

sudo sed -i 's/CONFIG_MODULE_SIG=y/CONFIG_MODULE_SIG=n/g' .config  # 把 CONFIG_MODULE_SIG=y  替换成  CONFIG_MODULE_SIG=n
sudo sed -i 's/CONFIG_MODULE_SIG_ALL=y/CONFIG_MODULE_SIG_ALL=n/g' .config
sudo sed -i 's/CONFIG_SYSTEM_TRUSTED_KEYS="debian\/canonical-certs.pem"/CONFIG_SYSTEM_TRUSTED_KEYS=""/g' .config
sudo sed -i 's/CONFIG_SYSTEM_REVOCATION_KEYS="debian\/canonical-revoked-certs.pem"/CONFIG_SYSTEM_REVOCATION_KEYS=""/g' .config
sudo sed -i 's/CONFIG_SYSTEM_TRUSTED_KEYRING=y/CONFIG_SYSTEM_TRUSTED_KEYRING=n/g' .config  # 把 CONFIG_SYSTEM_TRUSTED_KEYRING=y 替换成 CONFIG_SYSTEM_TRUSTED_KEYRING=n 
cat .config | grep "CONFIG_SYSTEM_TRUSTED_KEYRING=n" # 看一下 CONFIG_SYSTEM_TRUSTED_KEYRING 相关字符串是否成功替换。

在这里插入图片描述
sudo nohup make -j2 all &在后台运行make编译过程,按一下回车键可以再次进入命令输出。
在这里插入图片描述

cat nohup.out可以看一下文件里边的内容。
在这里插入图片描述

使用sudo ps -aux | grep nohup可以看一下sudo nohup make -j2 all &是否还在运行。
在这里插入图片描述

sudo ps -aux | grep nohup要是只有如下所示一条记录,要么执行完成,要么有问题报错了。在这里插入图片描述

cat nohup.out看一下输出文件,发现报错如下:

BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
Failed to generate BTF for vmlinux
Try to disable CONFIG_DEBUG_INFO_BTF
make: *** [Makefile:1139: vmlinux] Error 1

在这里插入图片描述

sudo apt-get install -y dwarves是为了解决上边的报错而安装依赖包。
在这里插入图片描述

sudo nohup make -j2 all &执行之后,nohup: ignoring input and appending output to 'nohup.out'之后按一下回车键,接着让系统进行编译吧。
在这里插入图片描述

ps -aux | grep 459469sudo ps -aux | grep nohup发现这个459469进程已经不执行了。
在这里插入图片描述

sudo tail -n 20 nohup.out看一下/usr/src/linux-source-5.4.0/linux-source-5.4.0/nohup.out最后二十行内容,发现没有报错。结合上边459469已经执行结束,这说明内核已经编译成功了。
在这里插入图片描述
sudo nohup make modules_install &进行内核安装,在nohup: ignoring input and appending output to 'nohup.out'之后按一下回车键。
在这里插入图片描述

ps -aux | grep 555980看一下555980进程是否还在执行,发现已经结束了。
在这里插入图片描述

sudo tail -n 30 nohup.out看一下nohup.out最后三十行输出结果,发现没有报错,结合上边555980进程已经结束,所以内核模块已经安装完成。
在这里插入图片描述

sudo grep 'menuentry' /boot/grub/grub.cfg可以看一下相关信息。
在这里插入图片描述

/etc/default/grub里边的原来内容如下:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="net.ifnames=0 consoleblank=600 console=tty0 console=ttyS0,115200n8 nospectre_v2 nopti noibrs noibpb"# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

具体如何修改/etc/default/grub,可以参考下边两篇博客:
Ubuntu 20.04 LTS修改内核版本
Ubuntu20.04 如何降低内核版本?

sudo vim /etc/default/grub,我把内容修改如下:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'GRUB_DEFAULT="gnulinux-advanced-bbd3ea56-da3b-4e1a-b14e-159e41299ea3>gnulinux-5.4.0-26-generic-advanced-bbd3ea56-da3b-4e1a-b14e-159e41299ea3"
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="net.ifnames=0 consoleblank=600 console=tty0 console=ttyS0,115200n8 nospectre_v2 nopti noibrs noibpb"# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

就是把GRUB_DEFAULT=0改为GRUB_DEFAULT="gnulinux-advanced-bbd3ea56-da3b-4e1a-b14e-159e41299ea3>gnulinux-5.4.0-26-generic-advanced-bbd3ea56-da3b-4e1a-b14e-159e41299ea3"

sudo update-grub更新grubsudo reboot进行重启。
在这里插入图片描述

重启之后输入sudo uname -r可以看到内核已经变为5.4.0-26-generic
在这里插入图片描述


http://www.ppmy.cn/news/977731.html

相关文章

Linux多线程编程中的调度策略编程

多线程编程 我们在进行多线程编程的时间&#xff0c;通常先会对问题领域进行任务的拆解&#xff0c;深入一点的多线程编程&#xff0c;会涉及到任务优先级的考虑&#xff1b;如果再深一点&#xff0c;一般可能就是多核编程&#xff1a;Cache热度、绑核、隔离CPU等。 但多核编…

ARM DAY3 点亮三盏灯

1.汇编代码 .text .global _start _start: //RCC初始化 RCC_INIT://设置GPIOE组使能ldr r0,0x50000A28ldr r1,[r0]orr r1,r1,#(0x1<<4)str r1,[r0]//设置GPIOF组使能 ldr r0,0x50000A28ldr r1,[r0]orr r1,r1,#(0x1<<5)str r1,[r0]//LED1灯初始化 LED1_INIT://设置…

【档案专题】四、电子档案形成与收集

导读&#xff1a;主要针对电子档案形成与收集相关内容介绍。对从事电子档案管理信息化的职业而言&#xff0c;不断夯实电子档案管理相关理论基础是十分重要。只有通过不断梳理相关知识体系和在实际工作当中应用实践&#xff0c;才能走出一条专业化加职业化的道路&#xff0c;从…

【Nodejs】Node.js开发环境安装

1.版本介绍 在命令窗口中输入 node -v 可以查看版本 0.x 完全不技术 ES64.x 部分支持 ES6 特性5.x 部分支持ES6特性&#xff08;比4.x多些&#xff09;&#xff0c;属于过渡产品&#xff0c;现在来说应该没有什么理由去用这个了6.x 支持98%的 ES6 特性8.x 支持 ES6 特性 2.No…

STM32(HAL库)驱动AD8232心率传感器

目录 1、简介 2、CubeMX初始化配置 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 ADC外设配置 2.3 串口外设配置 2.4 GPIO配置 2.5 项目生成 3、KEIL端程序整合 3.1 串口重映射 3.2 ADC数据采集 3.3 主函数代码整合 4 硬件连接 5 效果展示 1、简介 本文通过STM32…

Qt - 信号和槽

文章目录 信号和槽自定义信号和槽代码实现teacher 类申明信号方法student 添加槽并处理绑定信号和槽 当自定义信号和槽出现重载设置按钮点击 信号可以连接信号断开信号 disconnectQt4版本写法Lambda 表达式函数对象参数操作符重载函数参数可修改标示符函数返回值是函数体 总结拓…

运维高级学习---MySQL主从复制

MySQL内建的复制功能是构建大型&#xff0c;高性能应用程序的基础 通过将MySQL的某一台主机 (master)的数据复制到其他主机(slaves)上&#xff0c;并重新执行一遍来执行复制过程中一台服务器充当主服务器&#xff0c;而其他一个或多个其他服务器充当从服务器 为什么要做主从复…

appscan 应用

HCL appscan是个常见的web app DAST 扫描工具 有企业版和standalone 版本。大家常用的都是单机版本。企业版平台&#xff0c;集成了IAST。 appscan 使用比较简单&#xff0c;基本输入url 账号密码就开扫了。 用了一段时间几点体验 1 还是需要手动explore的&#xff0c;他自…