首页 > 系统相关 >linux内核升级和内核源码编译

linux内核升级和内核源码编译

时间:2023-10-08 11:14:53浏览次数:40  
标签:grub make apt 源码 内核 install linux

一、ubuntu通过命令安装内核版本

1、检查原系统内核版本

uname -r

2、搜索可用linux内核版本

apt-cache search linux| grep linux-headers

3、 通过apt命令安装内核

apt-get install linux-headers-5.4.0-80-generic linux-image-5.4.0-80-generic

4、安装成功后查看/boot目录是否有新安装的内核

cd /boot
ls -lh

5、更新grub

update-grub

6、根据需求修改grub.cfg文件,更改内核的启动顺序

cd /boot/grub
chmod 777 grub.cfg
vim grub.cfg

7、重启后验证内核版本

reboot
uname -r

8、可能出现的错误

按照上述过程重启后进行加载驱动,执行命令sudo modprobe mtd 时出现错误提示如下所示:

modprobe: FATAL: Module mtd not found in directory /lib/modules/5.4.0-80-generic

安装内核对应modules

sudo apt-get install modules-extra-5.4.0-80-generic

二、内核源码编译

1、下载需要安装的内核源码

https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.33.tar.xz

2、安装依赖

apt install build-essential dwarves python3 libncurses-dev flex bison libssl-dev bc libelf-dev zstd gnupg2 wget -y

 3、解压源码

tar xvf linux-5.15.33.tar.xz
cd linux-5.15.33

4、内核配置

cp /boot/config-$(uname -r) .config
make menuconfig

5、选择内核模块

看下图中选择自己配置内核所支持的模块,进行内核定制

选择好后,保存配置重写.config,然后退出

6、使用脚本或命令修改配置

scripts/config --disable SYSTEM_REVOCATION_KEYS

可以关闭一些编译选项

vim .config

可以修改内核编译的一些配置项

7、编译内核

make -j8 (-j为指定用于编译的核心数)
make modules_install
make install

8、更新grub验证内核

update-grub
reboot
uname -r

 9、故障

Linux内核编译错误:make[1]: *** 没有规则可制作目标“debian(https://so.csdn.net/so/search?q=debian&spm=1001.2101.3001.7020)/canonical-certs.pem”,由“certs/x509_certificate_list” 需求。 停止。**
解决办法:
CONFIG_MODULE_SIG_KEY="cert/signing_key.pem" #这个可能不需要删除,删除了反而可能出其他问题make modules_install时报错
CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem" #这个要删除
make menuconfig错误——make[2]: *** [scripts/kconfig/lexer.lex.c] 错误 127
解决办法 apt install bison flex
 fatal error: openssl/bio.h: 没有那个文件或目录
 解决办法:
 apt-get install libssl-dev
报BTH错误,安装dwarves解决

 

标签:grub,make,apt,源码,内核,install,linux
From: https://www.cnblogs.com/dinmin/p/17748404.html

相关文章

  • Linux-grep或和与操作
    一、或(or)操作1、使用选项-Egrep-E'a1|a2’filename//找出文件(filename)中包含a1或者包含a2的行2、使用egrepegrep‘a1|a2’filename//用egrep同样可以实现3、使用选项-e使用grep-e选项,只能传递一个参数。在单条命令中使用多个-e选项grep-ea1-ea2filename//......
  • linux跳过cmake,安装高版本的wgrib2
    一、安装依赖包yumgroupinstall'DevelopmentTools'yuminstallzlib-devel-yyuminstalllibpng-devel-yyuminstallopenssl-devel-yyum-yinstallgccgcc-c++opensslopenssl-develtar二、下载wgrib2编译包并且解压,修改makefiletarxvfwgrib2.tgz.v3.1.2......
  • PHP内核的学习--创建PHP扩展
    开始看PHP内核也有一段时间了,现在开始边学边总结,今天就总结一下如何创建自己的PHP扩展。我的环境如下:系统:Ubuntu14.04php版本:5.5.19参考摘录:用C/C++扩展你的PHPPHP取得成功的一个主要原因之一是它拥有大量的可用扩展。web开发者无论有何种需求,这种需求最有可能在PHP发行包里......
  • Rockchip RK3399 - linux下抓取usb数据包
    ----------------------------------------------------------------------------------------------------------------------------开发板:NanoPC-T4开发板eMMC:16GBLPDDR3:4GB显示屏:15.6英寸HDMI接口显示屏u-boot:2017.09linux:4.19----------------------------------......
  • 基于 Linux、C++实现的高性能内存池
    1.引入内存池的意义  内存池(MemoryPool)是一种内存分配方式,又被称为固定大小区块规划(fixed-size-blocksallocation)。通常我们习惯直接使用new、malloc等API申请分配内存,但是这种方式非常容易产生内存碎片,早晚都会申请内存失败。并且在比较复杂的代码或者继承的屎山......
  • Linux系统目录结构
    linux系统目录结构 linux的/目录linux目录:一切从/开始,/是最顶级的目录 类似Windows只有一个C盘 linux的一级目录bin:二进制命令所在的目录,这个目录存放着最经常使用的命令。dev:硬件设备所在的目录磁盘光驱,home:普通用户的家目录 root:管理员用户的家目录mn......
  • 部署项目到Linux踩的坑
    一、tomcat版本不一致在windows上开发时用的tomcat9,实现javax.servlet.Filter的实现类无需重写init()和destroy(),但我在Linux上安装的tomcat是8.5,javax.servlet.Filter的实现类需要重写init()和destory()。导致我能访问到linux上tomcat主页,但是不能访问部署的项目,在日志文件中......
  • Linux---0.11---asm.s硬件中断类型介绍
    _divide_error这是一个标记,通常用于表示与除法错误相关的处理程序或函数。当发生除以零的错误时,处理器可能会跳转到与此标记关联的处理程序,以处理该错误。_debug_debug:这是一个标记,通常用于表示与调试相关的处理程序或函数。调试处理程序通常用于在调试模式下捕获和处理调试事......
  • Linux - 安装MySQL
    下载地址:https://downloads.mysql.com/archives/community/安装步骤:mkdirmysqltar-xvfmysql-8.0.26-1.el7.x86_64.rpm-bundle.tar-Cmysqlrpm-ivhmysql-community-common-8.0.26-1.el7.x86_64.rpmrpm-ivhmysql-community-client-plugins-8.0.26-1.el7.x86_64.rp......
  • 在Linux中如何查找包含特定文本(字符串)的所有文件?
    内容来自DOChttps://q.houxu6.top/?s=在Linux中如何查找包含特定文本(字符串)的所有文件?如何在文件内容中查找包含特定文本字符串的所有文件?以下方法不起作用,似乎显示了系统中的每个文件。find/-typef-execgrep-H'text-to-find-here'{}\;请执行以下操作:grep-r......