19 内核开发-内核源码编译


19 内核开发-内核源码编译

(1)开始准备


安装好virtual box + ubuntu 系统后,即可下载内核代码,进行编译

历史内核源码地址:https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/
下载 linux-5.10.102.tar.gz 的包,可以使用wget 命令
创建编译目录 /home/peach/lkd_kernels/productionk
然后解压到磁盘上 /home/peach/lkd_kernels/productionk
tar -zxf linux-5.10.102.tar.gz --directory=/home/peach/lkd_kernels/productionk/

(2)安装必备编译软件
sudo apt update 
sudo apt upgrade 
sudo apt install build-essential dkms ssh -y
sudo apt install linux-headers-$(uname –r) ssh -y
(3)进行kernel config 配置
lsmod > /tmp/lsmod.now
make LSMOD=/tmp/lsmod.now localmodconfig


# 备份执行文件:
cp –af .config ~/lkd_kernels/kconfig_prod01

# 执行编译 
make -j8

我们已经看到生成了我们需要文件 bzImage和vmlinux 文件。


注意:make LSMOD=/tmp/lsmod.now localmodconfig 该命令将执行以下操作。

设置环境变量 LSMOD 为 /tmp/lsmod.now。
执行 localmodconfig 目标。
localmodconfig 目标通常用于配置内核模块,它将创建一个名为 .config 的文件,其中包含用于编译内核模块的配置选项。
因此,该命令将使用 /tmp/lsmod.now 文件中的选项配置内核模块,然后编译该模块。
请注意,/tmp/lsmod.now 文件必须存在并且包含有效的内核模块配置选项。


(4)遇到错误

错误:一些包没有安装

make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'.  Stop.
make: *** [Makefile:1868: certs] Error 2


#解决
scripts/config --disable SYSTEM_TRUSTED_KEYS

错误:
make[1]: *** No rule to make target 'debian/canonical-revoked-certs.pem', needed by 'certs/x509_revocation_list'.  Stop.
make: *** [Makefile:1868: certs] Error 2

#解决
scripts/config --disable SYSTEM_REVOCATION_KEYS

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

一般是系统缺少dwarves软件包导致。

#解决
sudo apt-get install dwarves

报错:

FAILED: load BTF from vmlinux: Unknown error -2make: *** [Makefile:1179: vmlinux] Error 255

排查
peach@peach:~/lkd_kernels/productionk/linux-5.10.102$  sudo dmesg | grep pahole

[ 3353.221446] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice/user-1000.slice/session-6.scope,task=pahole,pid=92508,uid=1000
[ 3353.221459] Out of memory: Killed process 92508 (pahole) total-vm:2031180kB, anon-rss:1651324kB, file-rss:4kB, shmem-rss:0kB, UID:1000 pgtables:4036kB oom_score_adj:0
[ 3565.138510] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice/user-1000.slice/session-6.scope,task=pahole,pid=97364,uid=1000
[ 3565.138525] Out of memory: Killed process 97364 (pahole) total-vm:2031180kB, anon-rss:1647620kB, file-rss:4kB, shmem-rss:0kB, UID:1000 pgtables:4040kB oom_score_adj:0
[ 3714.551892] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice/user-1000.slice/session-6.scope,task=pahole,pid=102077,uid=1000
[ 3714.551907] Out of memory: Killed process 102077 (pahole) total-vm:2031180kB, anon-rss:1665776kB, file-rss:4kB, shmem-rss:0kB, UID:1000 pgtables:4032kB oom_score_adj:0

有人说要 10g 内存, 我的版本时 5.10 的,我分配了8g 就编译通过了,其实没有那么夸张。

Just quick FYI: Current linux build needs at least 10GB of RAM!

I was just trying to build kernel 6.5 and noticed the process was being killed after both SWAP+RAM was getting full. I started with 4.0 of RAM on my VM, then increased until it passed.

I noticed the linux building process needing about 10GiB of RAM to finish building without throwing that error. This is crazy on how much RAM it needs.

内存不够 oom killed了

# 调大虚拟机的内存 该为8g 

报错:
/bin/sh: 1: zstd: not found

#安装
 sudo apt install zstd

(5)总结

建议虚拟机磁盘设计大一点 25G 以上,否则可能编译多个版本内核后,磁盘文件就满了

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

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

相关文章

Linux字符设备驱动(二) - 与设备驱动模型的关系

一,从/dev目录说起 从事Linux嵌入式驱动开发的人,都很熟悉下面的一些基础知识, 比如,对于一个char类型的设备,我想对其进行read wirte 和ioctl操作,那么: 1)我们通常会在内核驱动中…

【数据库原理及应用】期末复习汇总高校期末真题试卷03

试卷 一、选择题 1 数据库中存储的基本对象是_____。 A 数字 B 记录 C 元组 D 数据 2 下列不属于数据库管理系统主要功能的是_____。 A 数据定义 B 数据组织、存储和管理 C 数据模型转化 D 数据操纵 3 下列不属于数据模型要素的是______。 A 数据结构 B 数据字典 C 数据操作 D…

QT开发(四) 制作一个JSON检查小工具

1、JSON概念 1.1 定义 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人类阅读和编写,同时也易于机器解析和生成。JSON基于JavaScript语言的子集,但是独立于编程语言,因此可以被多种…

根据相同的key 取出数组中最后一个值

数组中有很多对象 , 需根据当前页面的值current 和 数组中的key对比 拿到返回值 数据结构如下 之前写法 const clickedItem routeList.find(item > item.key current) // current是当前页 用reduce遍历数组返回最后一个值 const clickedItem routeList.reduce((lastIte…

音频可视化:原生音频API为前端带来的全新可能!

音频API是一组提供给网页开发者的接口,允许他们直接在浏览器中处理音频内容。这些API使得在不依赖任何外部插件的情况下操作和控制音频成为可能。 Web Audio API 可以进行音频的播放、处理、合成以及分析等操作。借助于这些工具,开发者可以实现自定义的音…

IPD-开发流程

2024-5-6记录于PR办公室 在上一家公司做硬件产品经理的时候,Richard Li曾花费“巨资”请了华为前战略专家给我们培训,讲授IPD这门课的模式都很IPD,当时完全没重视,光想着不可能靠这个能把产品做好,这样做产品必定是一批…

wordpress外贸建站公司歪建站新版网站上线

wordpress外贸建站公司 歪猫建站 歪猫WordPress外贸建站,专业从事WordPress多语言外贸小语种网站建设与外贸网站海个推广、Google SEO搜索引擎优化等服务。 https://www.waimaoyes.com/dongguan

【driver2】设备读写,同步和互斥,ioctl,进程休眠,时间和延时,延缓

文章目录 1.实现设备读写:write函数中一个进程写没问题,两进程写:第一个进程运行到kzalloc时,第二个进程也执行了kzalloc,只第二个进程地址保存在c中,第一个进程分配内存空间地址丢失造成内存泄漏。第一个进…

题目:排序疑惑

问题描述: 解题思路: 做的时候没想到,其实这是以贪心题。我们可以每次排最大的区间(小于n,即n-1大的区间),再判断是否有序 。因此只需要分别判断排(1~n-1)和(…

我独自升级崛起下载教程 我独自升级崛起一键下载

动作RPG游戏基于广大喜爱的动画和在线漫画《我独自升级崛起》在5月8日,这款新的游戏首次在全球亮相,意在给那些对游戏情有独钟的玩家带来更加丰富和多种多样的游戏体验。这个网络武侠题材的游戏设计非常具有创意,其主要故事围绕着“独孤求败”…

数据分析——业务指标分析

业务指标分析 前言一、业务指标分析的定义二、业务问题构建问题构建的要求 三、业务问题的识别在识别问题的阶段对于企业内部收益者的补充 四、竞争者分析竞争者分析的内容竞争者分析目的案例 五、市场机会识别好的市场机会必须满足的条件市场机会案例 六、风险控制数据分析师常…

【字符串】Leetcode 二进制求和

题目讲解 67. 二进制求和 算法讲解 为了方便计算,我们将两个字符串的长度弄成一样的,在短的字符串前面添加字符0;我们从后往前计算,当遇到当前计算出来的字符是> 2’的,那么就需要往前面进位和求余 注意&#xf…

在企业中软件产品测试报告可以运用的场景

在企业应用场景中,测试报告的应用场景十分广泛且重要。以下是几个主要的应用场景: 产品质量评估与保证:测试报告是企业评估软件或产品质量的重要依据。通过测试报告,企业可以了解产品在不同场景下的性能表现、安全性、稳定性以及…

1.4 初探JdbcTemplate操作

实战目的 掌握Spring框架中JdbcTemplate的使用,实现对数据库的基本操作。理解数据库连接池的工作原理及其在实际开发中的重要性。通过实际操作,加深对Spring框架中ORM(对象关系映射)的理解。 关键技术点 JdbcTemplate操作&…

辐射类案例分析

辐射类案例分析 1.1 接地对辐射实验的影响 金属外壳接地已经成为了一种共识,很多人可能会认为金属外壳就该接地,接地可以改善EMC性能,对于抗干扰类实验,情况可能是这样,但是对于辐射类实验而言,有时候会有…

Java八股文系列之五(分布式事务)

什么是分布式事务 事务是一个程序执行单元,里面的所有操作要么全部执行成功,要么全部执行失败。在分布式系统中,这些操作可能是位于不同的服务中,那么如果也能保证这些操作要么全部执行成功要么全部执行失败呢?这便是…

直播预告|第一批 Vision Pro 开发者开始弃坑了吗? 本周六一起听听三位 XR 开发者的真实想法!

随着技术的进步,扩展现实(XR)行业正在迅速发展,成为连接现实与虚拟世界的桥梁。XR 技术,包括虚拟现实(VR)、增强现实(AR)和混合现实(MR)&#xff…

Web测试需要测试什么

Web测试可以涵盖以下方面的测试: 1.功能测试:确保Web应用的各项功能按照需求规格说明书的要求正常工作。测试包括用户注册、登录、搜索、数据提交、页面导航等功能。 2.用户界面测试:验证Web应用的用户界面是否符合设计和用户体验要求。测试…

【0day】湖南建研工程质量检测系统InstrumentUsageRecordExport接口处存在任意文件读取漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

2024-05-06 问AI: 介绍一下深度学习中的LSTM网络

文心一言 当谈到深度学习中的LSTM(Long Short-Term Memory)网络时,它是一种特殊的循环神经网络(RNN)架构,旨在解决传统RNN在处理长序列时遇到的梯度消失和梯度爆炸问题。LSTM网络因其能够捕捉序列数据中的…