ubuntu20 从源码编译升级到版本5.15.263


author: hjjdebug
date: 2024年 10月 25日 星期五 15:38:48 CST
description: ubuntu20 从源码编译升级到版本5.15.263


我的内核是 5.15.105, 用apt 下载源码后其版本是5.15.263
为什么要从源码编译内核. 升级内核?
目的: 练练手. 消除内核神秘性. 还可以裁减内核,也是调试内核和模块的基础.


甲: 编译内核


1. 下载源码 $sudo apt-get source linux-hwe-5.15-source-5.15.0

2. 配置内核, 形成.config 文件

make defconfig 是不行的,它形成的.config文件包含的内容太少,形成的内核是不能引导系统的.
所以你需要一个基础点作为.config 的起点.
$cp /boot/config-5.15.0-105-generic .config //选用一个可以运行的配置,作为起点.简化了我们配置
// 你的也许需要修改第一个参数
make menuconfig //你想修改配置,就修改它了,不想修改,直接保存
覆盖一下.config 文件, 直接保存跟copy来的那个基础config 还是会有差别的. 它会修改一些配置例如版本信息等.
config 搞不对,编出的内核会不能运行

注意:需要把内核CONFIG_DEBUG_INFO配置关掉,
不然会因为编译完安装内核时生成的initrd.img-5.15.0-263太大而导致系统启动时报“out of memory”的错误导致系统起不来。
怎样让grub 支持大内核不在本博阐述.

加上debug信息生成的initrd.img 大概有800M左右, 而去掉debug 才64M
make menuconfig -> Kernel hacking -> Compile-time checks and compiler options -> [ ] Compile the kernel with debug info

3. 编译内核

$make -jN
花费时间比较长, 有几个核,N 就写几吧,快点让它编出来.

遇到的错误, 大多是缺少相关工具,flex,bison,zstd等安装即可.
$sudo apt install flex
$sudo apt install bison
$sudo apt install zstd

下面这个比较陌生, 也是缺少工具造成, 解决方法也是安装工具包.
BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
Failed to generate BTF for vmlinux
Try to disable CONFIG_DEBUG_INFO_BTF
Makefile:1127: recipe for target ‘vmlinux’ failed
make: *** [vmlinux] Error 1

分析:
BTF(BPF Type Format)是一种紧凑的格式,用于表达类型信息
BPF(扩展的 Berkeley Packet Filter)是一项强大而灵活的技术。
它允许在内核中运行沙盒化程序,类似于虚拟机环境,为扩展内核功能提供了一种不会导致系统崩溃的安全方法。
pahole 是一个工具, 是dwarves 项目中的一部分,
它主要用于提取数据结构中的调试信息格式(如DWARF和CTF)
缺少该工具,安装之.

解决方法
$ sudo apt install dwarves

编译内核总是会浪费很多时间,尤其是配置一变又要重新编译. 大好时间都浪费在编译上,没办法…
编译成功会有:
Kernel: arch/x86/boot/bzImage is ready (#4)

前边是基础. 新内核怎样让grub 认识.


乙: 升级内核


1. 安装模块及内核, 通常是安装在/boot 目录下

这里说的太专业化了,白话是把新内核和新模块copy 到指定的位置.方便grub 找到它
$make modules_install // 签名,安装也要花不少时间. 靠,等等等…
$make install
要先安装模块,后安装内核,因为后者还要依赖于前者.

$ make -n install , 只显示不安装会让你看到它会运行什么脚本.

2. 更新bootloader

$update-grub   // 这一步其实不用了,因为make install 已经包含该过程了. 再执行一遍也可以.

3. 启用新内核

$reboot, 选择新内核


丙: ubuntu20 怎样把新安装的内核设置成默认项


编辑/etc/default/grub 文件
GRUB_DEFAULT=0
表示选择第一项, 可以更改为其它项

如果开机选择内核目录为两层,则:
GRUB_DEFAULT=‘1->4’
1 表示选择第二个选项(往往对应着高级选项)
4 表示选择第五个内核

保存文件后, $update-grub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/57949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring整合使用xml方式整合Druid数据源连接池

1.普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection加载到内存中,再验证用户名和密码(得花费0.05s~1s的时间)。需要数据库连接的时候,就向数据库要求 一个,执行完成后再断…

【WIN】WIN10_WSL_Ubuntu18.04_ROS_rviz_docker

WIN10安装WSL Microsoft Store 安装编译套件 sudo apt-get install build-essential apt换源 Debian / Ubuntu 的官方源在国内访问很慢,咱们更换为清华大学 TUNA 的软件源镜像 执行下面命令,备份 apt 安装源: sudo cp /etc/apt/sources.l…

【问题解决】pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

今天配置完poetry环境变量之后pnpm不能用了 具体报错 pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1pnpm run dev~~~~ Ca…

计算机毕业设计Python+大模型租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 用到的技术: 1. python…

大一物联网要不要转专业,转不了该怎么办?

有幸在2014年,踩中了物联网的风口,坏消息,牛马的我,一口汤都没喝上。 依稀记得,当时市场部老大,带我去上海参加电子展会,印象最深的,一些物联网云平台,靠着一份精美PPT&a…

2024年项目管理新风向:敏捷开发与瀑布开发,哪个更优?

一、项目管理的多样格局 2024 年,项目管理领域展现出丰富多样的格局。数字化趋势愈发明显,项目管理软件普及度不断提高,据相关资料显示,随着云计算、大数据等技术的成熟,项目管理软件将更加普及,实现项目信…

OpenCV双目相机外参标定C++

基于OpenCV库实现双目测量系统外参标定过程。通过分析双目测量系统左右相机拍摄的棋盘格标定板图像,包括角点检测、立体标定、立体校正和畸变校正的步骤,获取左右相机的相对位置关系和姿态。 a.检测每张图像中的棋盘格角点,并进行亚像素级精…

Python游戏开发超详细(基础理论知识篇)

一、引导: Python游戏开发是一个非常有趣且富有挑战性的领域。通过Python,你可以利用其强大的库和框架来创建各种类型的游戏,从简单的2D游戏到复杂的3D游戏。以下是第一课的基础理论知识,帮助你入门Python游戏开发。 二、理论知识…

使用Prometheus对微服务性能自定义指标监控

背景 随着云计算和容器化技术的不断发展,微服务架构逐渐成为现代软件开发的主流趋势。微服务架构将大型应用程序拆分成多个小型、独立的服务,每个服务都可以独立开发、部署和扩展。这种架构模式提高了系统的可伸缩性、灵活性和可靠性,但同时…

【数据结构和算法】三、动态规划原理讲解与实战演练

目录 1、什么是动态规划? 2、动态规划实战演练 2.1 力扣题之爬楼梯问题 (1)解题思路1: (2)解题思路2: (3)动态规划(DP):解题思路 (4&#x…

ArcGIS必会的选择要素方法(AND、OR、R、IN等)位置选择等

今天来看看ArcGIS中的几个选择的重要使用方法 1、常规选择、 2、模糊查询、 3、组合复合条件查询(AND、OR、IN), 4、空值NULL查询 5、位置选择 推荐学习: 以梦为马,超过万名学员学习ArcGIS入门到实战的应用课程…

Pandas模块之垂直或水平交错条形图

目录 df.plot() 函数Pandas模块之垂直条形图Pandas模块之水平交错条形图 df.plot() 函数 df.plot() 是 Pandas 中的一个函数,用于绘制数据框中的数据。它是基于 Matplotlib 库构建的,可以轻松地创建各种类型的图表,包括折线图、柱状图、散点…

【纯血鸿蒙】专项测试工具 DevEco Testing

DevEco Testing 为生态合作伙伴接入 HarmonyOS 生态提供专业的测试服务,共筑高品质的智能硬件产品。 云端服务平台面向开发者提供724 小时的远程多终端真机实验室,提供华为专业的应用安全隐私检测,提供基于华为真机的应用自动化测试。 访问地址:https://devecostudio.huawe…

线程的互斥与同步

目录 一、互斥 1、数据不一致问题 2、锁 3、饥饿问题 4、锁的原理 5、封装锁 6、抢票逻辑中加入封装的锁 7、可重入VS线程安全 8、死锁 二、同步 1、什么是同步 2、如何实现同步 3、条件变量 4、生产消费者问题 (1)CP问题 (2&am…

SLAM|2. 差异与统一:坐标系变换与外参标定

本章主要内容 1.坐标系变换 2.相机外参标定 上一章我们了解了相机内参的概念,内参主要解决三维世界与二维图像之间的映射关系。有了内参我们可以一定程度上还原相机看到了什么(但缺乏尺度)。但相机看到的数据只是处于相机坐标系,为…

C# Unity 同步/异步编程和多线程什么关系?async/await和coroutine又是什么?

目录 不用模板生成的目录怎么这么丑啊 1.同步?异步?多线程? 2.async/await和coroutine? 证明 单线程中的同步/异步 同 异 多线程中的同步异步 同 异 1.同步?异步?多线程? 首先&#…

前端经典【面试题】持续更新HTML、CSS、JS、VUE、FLUTTER、性能优化等

HTML/CSS 面试题 什么是语义化 HTML&#xff1f; 说明&#xff1a;语义化 HTML 使用 HTML 标签来描述内容的含义&#xff0c;而不仅仅是其外观。使用语义化标签可以提高可读性和可访问性&#xff0c;并对 SEO 友好。示例&#xff1a; <header><h1>网站标题</h1&…

第二代 GPT-SoVITS V2:解锁语音克隆与合成的无限可能

在 AI 技术蓬勃发展的今天&#xff0c;第二代 GPT-SoVITS V2 如一颗璀璨的明星闪耀登场&#xff0c;为语音处理领域带来了前所未有的变革。它是一款集先进技术与强大功能于一身的声音克隆与语音合成工具&#xff0c;由 RVC 变声器创始人 “花儿不哭” 与 AI 音色转换技术 Sovit…

sharpkeys-键盘部分按键不好用,用其它不常用按键代替

sharpkeys-键盘部分按键不好用&#xff0c;用其它不常用按键代替 文章目录

Rust的move关键字在线程中的使用

为什么使用 move&#xff1f; 在 Rust 中&#xff0c;move 关键字主要用于闭包。当我们在一个线程中创建一个闭包并将其传递给另一个线程时&#xff0c;如果闭包中使用了某些变量&#xff0c;就需要决定这些变量的所有权归属。 不使用 move&#xff1a; 默认情况下&#xff0…