当前位置: 首页 > news >正文

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

相关文章:

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 为什么要从源码编译内核. 升级内核? 目的: 练练手. 消除内核神秘性. 还可以裁减内核,也是调试内核…...

php 程序开发分层与验证思想

在PHP程序开发中,合理的层级设计可以提高代码的可维护性、可扩展性和可测试性。以下是常见的层级设计模式及建议: 1. 分层架构 通常可以将PHP应用分为以下几层: 表示层(Presentation Layer): 负责与用户交…...

关于InternVL2的单卡、多卡推理

关于InternVL2的单卡、多卡推理 前言单卡推理多卡推理总结前言 本章节将介绍如何使用上一章节微调后的模型进行推理。推理又分为单卡和多卡,这里介绍的两种方式都是Hugging Face的transformers方法进行推理。模型的话可以使用上一章微调的任意一个非lora模型进行测试。 单卡推…...

Go语言设计Web框架

如何设计一个Web框架 项目规划 在开始设计Web框架之前,我们需要对整个项目进行规划。主要包括以下几个方面: 项目结构依赖管理路由设计控制器设计日志和配置管理 项目结构 首先,我们定义项目的目录结构: ├── cmd/ │ └…...

2024年10月28日练习(双指针算法)

一.11. 盛最多水的容器 - 力扣(LeetCode) 1.题目描述: 这个题目代表的意思就是数组上每个对应的值就相当于每条垂直线的高度,就相当于短板效应,两 个高度的线会取最短的长度因为那样水才不会漏。而两条线的数组的下标…...

Objective-C 音频爬虫:实时接收数据的 didReceiveData_ 方法

在互联网技术领域,数据的获取和处理是至关重要的。尤其是对于音频内容的获取,实时性和效率是衡量一个爬虫性能的重要指标。本文将深入探讨在Objective-C中实现音频爬虫时,如何高效地使用didReceiveData:方法来实时接收数据,并通过…...

提升网站流量和自然排名的SEO基本知识与策略分析

内容概要 在当今数字化时代,SEO(搜索引擎优化)成为加强网站可见度和提升流量的重要工具。SEO的基础知识包括理解搜索引擎的工作原理,以及如何通过优化网站内容和结构来提高自然排名。白帽SEO和黑帽SEO代表了两种截然不同的策略&a…...

雷池社区版compose文件配置讲解--fvm

在现代网络安全中,选择合适的 Web 应用防火墙至关重要。雷池(SafeLine)社区版免费切好用。为网站提供全面的保护,帮助网站抵御各种网络攻击。 docker-compose.yml 文件是 Docker Compose 的核心文件,用于定义和管理多…...

基于51单片机的智能断路器proteus仿真

地址: https://pan.baidu.com/s/16lfGgrgVr9V7JehonMNVQA 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectro…...

(N-154)基于springboot酒店预订管理系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术:AdminLTEBootstrapLayUIHTMLjQuery 服务端技术:springbootmybatis-plusthymeleaf 本项目分前台和后台…...

elasticsearch 8.x 插件安装(三)之拼音插件

elasticsearch 8.x 插件安装(三)之拼音插件 elasticsearch插件安装合集 elasticsearch插件安装(一)之ik分词器安装(含MySQL更新) elasticsearch 8.x插件(二)之同义词安装如何解决…...

快速遍历包含合并单元格的Word表格

Word中的合并表格如下,现在需要根据子类(例如:果汁)查找对应的品类,如果这是Excel表格,那么即使包含合并单元格,也很容易处理,但是使用Word VBA进行查找,就需要一些技巧。…...

手机收银云进销存管理软件,商品档案Excel格式批量导入导出,一键导入Excel的商品档案

如果您有Excel的商品档案,那么就可以批量导入到我们的手机云进销存软件系统里,就不需要人工手工一个个商品的新建商品档案,大大提高工作效率。如果您看下面的步骤不会操作,可以联系我们技术支持,来帮您把商品档案导入。…...

html 中识别\n自动换行

CSS实现&#xff1a;white-space <div style"white-space: pre-wrap;" v-html"str"> </div>white-space: normal|nowrap|pre|pre-line|pre-wrap|initial|inherit;值描述换行符空格和制表符文字换行行尾空格normal默认。空白会被浏览器忽略。合…...

用QWebSocketServer写websocket服务端

1. 引入必要的头文件 #include <QCoreApplication> #include <QWebSocketServer> #include <QWebSocket> #include <QDebug> #include <QObject>QCoreApplication&#xff1a;用于创建控制台应用的事件循环。QWebSocketServer&#xff1a;提供 …...

云原生后端:现代应用架构的核心力量

云原生后端&#xff1a;现代应用架构的核心力量 云原生后端是基于云环境进行设计和开发的一种理念&#xff0c;利用云服务和云原生技术构建的服务端应用。它旨在提供灵活、高效、弹性和可扩展的解决方案&#xff0c;成为推动应用现代化的核心力量。本文将详细探讨云原生后端的…...

arcgis中dem转模型导入3dmax

文末分享素材 效果 1、准备数据 (1)DEM (2)DOM 2、打开arcscene软件 3、加载DEM、DOM数据 4、设置DOM的高度为DEM...

Python自动化测试中的Mock与单元测试实战

在软件开发过程中&#xff0c;自动化测试是确保代码质量和稳定性的关键一环。而Python作为一门灵活且强大的编程语言&#xff0c;提供了丰富的工具和库来支持自动化测试。本文将深入探讨如何结合Mock与单元测试&#xff0c;利用Python进行自动化测试&#xff0c;以提高代码的可…...

物联网海量数据下的时序数据库选型:InfluxDB、TDEngine、MongoDB与HBase对比与建议

随着物联网&#xff08;IoT&#xff09;的普及&#xff0c;各行业纷纷部署大量传感器、设备生成的数据流&#xff0c;面对如此海量的时间序列数据&#xff0c;如何高效存储、查询和分析成为关键。为此&#xff0c;时序数据库&#xff08;Time Series Database, TSDB&#xff09…...

Python中的数据可视化:Matplotlib基础与高级技巧

Python中的数据可视化&#xff1a;Matplotlib基础与高级技巧 数据可视化是数据分析和数据科学中不可或缺的一部分。通过图表&#xff0c;我们可以更直观地观察数据的分布和趋势。Matplotlib作为Python最基础、也是最广泛使用的绘图库之一&#xff0c;不仅支持多种常用图表&…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...