linux内核安装编译

2023-11-16

Linux内核下载及编译

下载Linux内核

可以从官网下载linux内核,也可以通过第三方网站进行下载。

官网网址:https://www.kernel.org/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D3ePcYYI-1665817721405)(linux内核安装编译/image-20221014164444815.png)]

由于官网可能存在被墙的原因,所以下在很慢,这里也提供一个更加便捷的下载地址:http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7GMHq4Qv-1665817721406)(linux内核安装编译/image-20221014164656643.png)]

根据自己的需求下载相应的版本,我这里下载在的是“linux-5.19.tar.gz”版本。

解压linux内核

使用以下命令进行加压下载的linux内核压缩包:

tar -zxvf linux-5.19.tar.gz 

解压后使用ls命令展示文件夹类存在的文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ImfswuFn-1665817721407)(linux内核安装编译/image-20221014190053609.png)]

在清理多余的中间配置文件,使用make distclean命令。清理后文件夹内部信息将会发生变化。

选择参考配置文件

使用以下命令选择配置文件,便于后续config配置:

cp /boot/config-5.15.0-46-generic .config

具体操作如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KmaUImaQ-1665817721408)(linux内核安装编译/image-20221014190519931.png)]

配置内核

在使用make命令前,需要先安装一些相关的依赖库,便于后续的运行。主要需要执行以下命令:

sudo apt-get update
sudo apt install make
sudo apt-get install gcc
sudo apt-get install libncurses5-dev
sudo apt-get install flex
sudo apt-get install bison

使用“make manuconfig“进行打开可视化终端,按照自己的需要进行更改参数设置。如果不需要更改,则保存退出就可以继续执行后面操作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9S6ygR8C-1665817721408)(linux内核安装编译/image-20221014160251442.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wesFvJ0W-1665817721409)(linux内核安装编译/image-20221014160032148.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IkAnqnl9-1665817721409)(linux内核安装编译/image-20221014160202555.png)]

编译内核

执行make bzImage命令,需要较长的时间(1~2小时左右,耐心等待)。

其中可能会出现scripts/sign-file.c:25:10: fatal error: openssl/opensslv.h: 没有那个文件或目录等问题。于是执行以下命令安装相关的依赖,应该一次性全部安装完相关的所有依赖,要不然耗时更长。

sudo apt-get install libssl-dev
sudo apt-get install libelf-dev
sudo apt-get install dwarves
sudo apt-get install zstd

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uqZdcMPO-1665817721410)(linux内核安装编译/image-20221014160533758.png)]

如果中间出现以下等错误:make[1]: *** 没有规则可制作目标“[debian](https://so.csdn.net/so/search?q=debian&spm=1001.2101.3001.7020)/canonical-certs.pem”,由“certs/x509,那么打开**.config**文件,如下方所是,删除部分内容:如删除“debian/canonical-certs.pem”和“debian/canonical-revoked-certs.pem”内容,修改为下下图形式。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f2IlXNhr-1665817721410)(linux内核安装编译/image-20221014162314015.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jKI9Yh6E-1665817721411)(linux内核安装编译/image-20221014163503371.png)]

修改完毕后在次执行“make bzImage”命令将进行编译内核。

最终内核编译成功将会出现以下信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MYmgd3iS-1665817721412)(linux内核安装编译/image-20221014185317402.png)]

编译内核模块

使用以下命令进行编译linux内核模块:

make modules

将会开始进行编译内核模块,大致需要(2~3小时)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HUgHvdyB-1665817721414)(linux内核安装编译/image-20221014185706907.png)]

编译成功后将会出现以下信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NW15J8Y2-1665817721415)(linux内核安装编译/image-20221014224442860.png)]

安装内核模块

使用以下命令进行安装内核模块,大概耗时10分钟:

make modules_install

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-96VoNgnA-1665817721416)(linux内核安装编译/image-20221014224843183-16657589315391.png)]

完成安装后,编译好的内核模块会从源码目录复制到/lib/modules/目录下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fb9UUV2U-1665817721417)(linux内核安装编译/image-20221014225332915-16657592149231.png)]

到此,嵌入式Linux内核便下载在编译成功了。

后续也可以通过参考文献[1]将编译好的Linux进行安装和部署。

Reference

[1]https://blog.csdn.net/qq_44631615/article/details/118305753#commentBox

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux内核安装编译 的相关文章

  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • arm-linux-gnueabi 编译器选项

    我在用 ARM Linux gnueabi gcc在 Linux 中为 ARM 处理器编译 C 程序 但是 我不确定它编译的默认 ARM 模式是什么 例如 对于 C 代码 test c unsigned int main return 0x
  • SONAR - 使用 Cobertura 测量代码覆盖率

    我正在使用声纳来测量代码质量 我不知道的一件事是使用 Cobertura 测量代码覆盖率的步骤 我按照以下步骤操作http cobertura sourceforge net anttaskreference html http cober
  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 并行运行 make 时出错

    考虑以下制作 all a b a echo a exit 1 b echo b start sleep 1 echo b end 当运行它时make j2我收到以下输出 echo a echo b start a exit 1 b star
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然
  • Locale.getDefault() 始终返回 en

    unix 机器上的服务器始终使用 en 作为默认区域设置 以下是区域设置输出 LANG en US LC CTYPE C LC NUMERIC C LC TIME C LC COLLATE C LC MONETARY C LC MESSAG
  • 为什么我收到的数据包数据大小大于mss?

    我在两台 PC 上使用 ifconfig ethX mtu 300 修改了 MTU 并使用 netperf 测试网络 我用 WireShark 嗅探了 SYN 数据包中的 MSS 260 但我得到了一些大于 260 的数据包 为什么 嗅探器
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • 何时使用 pthread 条件变量?

    线程问题 看来 只有在其他线程调用 pthread cond notify 之前调用 pthread cond wait 时 条件变量才起作用 如果在等待之前发生通知 那么等待将被卡住 我的问题是 什么时候应该使用条件变量 调度程序可以抢占
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue
  • 强制卸载 NFS 安装目录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • Linux 中的无缓冲 I/O

    我正在写入大量的数据 这些数据数周内都不会再次读取 由于我的程序运行 机器上的可用内存量 显示为 空闲 或 顶部 很快下降 我的内存量应用程序使用量不会增加 其他进程使用的内存量也不会增加 这让我相信内存正在被文件系统缓存消耗 因为我不打算
  • 抑制 makefile 中命令调用的回显?

    我为一个作业编写了一个程序 该程序应该将其输出打印到标准输出 分配规范需要创建一个 Makefile 当调用它时make run gt outputFile应该运行该程序并将输出写入一个文件 该文件的 SHA1 指纹与规范中给出的指纹相同
  • 如何检测并找出程序是否陷入死锁?

    这是一道面试题 如何检测并确定程序是否陷入死锁 是否有一些工具可用于在 Linux Unix 系统上执行此操作 我的想法 如果程序没有任何进展并且其状态为运行 则为死锁 但是 其他原因也可能导致此问题 开源工具有valgrind halgr
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp

随机推荐

  • JAVA常用的七种设计模式

    学习设计模式之前 我们先要了解一下设计模式的怎么来的 对于设计人员 特别是开发人员吗 往往受限于眼界或经验不能够体会到设计原则的实用性 或者在处理具体问题时 不知道如何把设计原则应用到到设计和代码 因此产生了 模式 随着参与的项目越来越多
  • 数据结构练习题-算法设计题-线性表

    算法设计题 1 将两个递增的有序链表合并为一个递增的有序链表 要求结果链表仍使用原来两个链表的存储空间 不另外占用其它的存储空间 表中不允许有重复的数据 题目分析 合并后的新表使用头指针Lc指向 pa和pb分别是链表La和Lb的工作指针 初
  • vue项目中封装手动上传单个图片并支持修改和移除

    现有的组件库无法满足手动上传文件到服务器 并支持通过按钮修改和移除文件的操作 所以我利用原生input进行封装 如有需要请拿走 1 页面部分 div class upload picture div class uploadItem div
  • 通信原理及系统系列38——图解过采样和欠采样

  • 【华为OD机试真题 JS】关联子串

    标题 关联子串 时间限制 1秒 内存限制 262144K 语言限制 不限 给定两个字符串str1和str2 如果字符串str1中的字符 经过排列组合后的字符串中 只要有一个字符串是str2的子串 则认为str1是str2的关联子串 若str
  • uni-app左右平分九宫格样式

    效果图 1 template 布局
  • 对区块链技术的一些思考

    作者 朱金灿 来源 clever101的专栏 为什么大多数人学不会人工智能编程 gt gt gt 缘起 本想把标题起为有些扯淡的区块链 但想想咱们还是别标题党了 实在一些吧 前段时间有个朋友向我介绍区块链技术 提到区块链技术如何牛逼 说到
  • OSI七层模型与TCP/IP五层模型

    一 OSI参考模型 1 OSI的来源 OSI Open System Interconnect 即开放式系统互联 一般都叫OSI参考模型 是ISO 国际标准化组织 组织在1985年研究的网络互连模型 ISO为了更好的使网络应用更为普及 推出
  • python—test2021.11.2

    1 filter 函数的语法格式如下 newIter filter function iterable 正因为该函数是根据自定义的过滤函数进行过滤操作 所以支持更加灵活的过滤规格 其中 各个参数的含义如下 function 可传递一个用于判
  • Android P PowerManagerService分析(一)

    1 概述 PowerManagerService是负责管理 协调设备电源管理的系统服务之一 设备常见功能如亮灭屏 亮度调节 低电量模式 保持CPU唤醒等 都会通过PMS的协调和处理 其继承自SystemService 因此具有SystemS
  • 创建线程的三种方式,常用线程池介绍

    进程和线程 线程是在一个进程中 并发执行的多个程序逻辑 线程是进程执行的单位 一个进程中至少有一个线程 而这个线程被称为主线程 主线程是一个程序的入口 main 就是由主线程来执行的 线程创建三种方式 1 继承Thread类 2 实现Rnn
  • 深度前馈网络(DNN):理解、应用和Python示例

    目录 1 引言 2 什么是深度前馈网络 3 深度前馈网络的原理 3 1 神经元和激活函数 3 2 前馈传播 3 3 反向传播和参数更新 4 深度前馈网络的应用 4 1 图像分类 4 1 1 数据预处理 4 1 2 模型选择与训练 4 1 3
  • /etc/目录下的passwd文件内容详解

    etc passwd中一行记录对应着一个用户 每行记录又被冒号 分隔为7个字段 其格式和具体含义如下 用户名 口令 用户标识号 组标识号 注释性描述 主目录 登录Shell 1 用户名 是代表用户账号的字符串 通常长度不超过8个字符 并且由
  • 《数据库系统内 幕》存储引擎

    数据库系统内幕 存储引擎 负责内存和磁盘上存储 检索和管理数据 章一 TPC C基准 acid属性 设计存储引擎 章二 b树的平衡 基于磁盘存储的树 不太了解 分页二叉树 总结 章三 文件格式 章四 页头 搜索 分裂合并 平衡 压缩 清扫维
  • html输入框文字颜色_HTML5颜色输入

    html输入框文字颜色 Currently supported in all modern browsers with the exception of Safari and Internet Explorer the potential
  • 使用正则匹配标签

    在我写上一个试题管理项目时 有一个需求是需要匹配HTML文档节点的 因为有些试题是有图片的 所以需要把图片给匹配出来 他储存在数据库的形式如下 img src xxx xx x x png xxxxxxxxxxxxxxxxxxxxxxxxx
  • An exception occurred processing JSP page

    今天在整个Mybatis SSM 练习时 运行程序一直报一下错误 说是 An exception occurred processing JSP page处理JSP页面时发生异常 Type Exception Report Message
  • JMS 学习 一

    JMS 作为一个ActiveMQ的实现 在JAVA开发中经常使用 一 环境准备 从最新的网站上获取最新版本 下载地址为 http activemq apache org download html 可以看到有2个版本 一个windows版本
  • MySQL为什么使用B+树作为索引? 索引原理?

    目录 一 Mysql索引主要有两种结构 B Tree索引和Hash索引 什么是索引 为什么要使用索引 举例说明使用索引的好处 数据库中使用什么数据结构作为索引 各种树的名字 平衡二叉树 为什么平衡二叉树也不适合作为索引 B Tree适合作为
  • linux内核安装编译

    Linux内核下载及编译 下载Linux内核 可以从官网下载linux内核 也可以通过第三方网站进行下载 官网网址 https www kernel org 由于官网可能存在被墙的原因 所以下在很慢 这里也提供一个更加便捷的下载地址 htt