树莓派内核开发准备(内核源码获取、启动过程、源码目录树)

2023-11-20

1.交叉编译工具的安装

参照我之前的笔记

2.内核源码获取

下载哪个版本取决于树莓派的版本,用命令查看

uname -r

在这里插入图片描述

官网是外网下载慢,这里是提前下载好的树莓派源内核码资源
链接: https://pan.baidu.com/s/1d8KgnJIc8QoDlZMyt4ITDw
提取码: f3d4

官网下载方式(方便以后下载树莓派其他内核版本):
官网地址:https://github.com/raspberrypi/
在这里插入图片描述

3.嵌入式设备带操作系统的启动过程扫盲

在这里插入图片描述

4.Linux内核源码树扫盲

1.内核源码简介

在这里插入图片描述

2.Linux内核源代码目录树结构

tree指令查看

通过安装tree指令方便看内核源码树目录。
树状显示当前文件夹下包络的文件。做第三方工具安装的时候,可用于检查包里的内容是否完整。

  • 安装
sudo apt-get install tree
  • 使用
tree

在这里插入图片描述

内核源码目录树

arch
包含和硬件体系结构相关的代码,每种平台占一个相应的目录。

每个平台中比较重要的包括:

  • kernel(内核核心部分)
  • mm(内存管理)
  • math-emu(浮点单元仿真)
  • lib(硬件相关工具函数)
  • boot(引导程序)
  • pci(PCI总线)
  • power(CPU相关状态)

block
部分块设备(内存之类的存储介质等)驱动程序。

crypto
常用加密和散列算法(如AES、SHA等)(形成了一个标准,不需要自己去写这些算法),还有一些压缩和CRC校验算法。

Documentation
关于内核各部分的通用解释和注释。(大多看不懂)

drivers
设备驱动程序,每个不同的驱动占用一个子目录。

fs
各种支持的文件系统,如ext、fat、ntfs等。

include
头文件。其中,和系统相关的头文件被放置在linux子目录下。

init
内核初始化代码(注意不是系统引导代码)。

ipc
进程间通信的代码。

kernel
内核的最核心部分,包括进程调度、定时器等,和平台相关的一部分代码放在arch/*/kernel目录下。

lib
库文件代码

mm
内存管理代码,和平台相关的一部分代码放在arch/*/mm目录下。

net
网络相关代码,实现了各种常见的网络协议。

scripts
用于配置内核文件的脚本文件。

security
主要是一个SELinux的模块。

sound
常用音频设备的驱动程序等。

usr
实现了一个cpio。

内核源码目录树详细结构介绍,参照博文:https://www.cnblogs.com/senior-engineer/p/4929703.html

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

树莓派内核开发准备(内核源码获取、启动过程、源码目录树) 的相关文章

  • 比较不同文件中的列并打印那些不匹配的列

    我有两个文件 file1 和 file2 我想将 file1 的几列 1 2 3 和 4 与 file2 的几列 1 2 3 和 4 进行比较 并打印 file2 中与 file1 中任何行都不匹配的那些行 E g file1 aaa bb
  • I2C 驱动程序应如何在 ACPI 中与 HID PRP0001 匹配

    我正在尝试实例化这个传感器 https elixir bootlin com linux v5 2 source drivers iio proximity vl53l0x i2c c在 ACPI 中使用设备特定数据 即Name DSD 并
  • 有没有办法使用 perf 工具查找流程中各个功能的性能?

    我正在尝试在流程中实现各个功能的性能 我该如何使用 perf 工具来做到这一点 还有其他工具吗 例如 假设 main 函数调用函数 A B C 我想分别获得主要功能以及功能 A B C 的性能 有没有一个很好的文档来了解 perf 源代码
  • Linux c++:api 与 /proc 文件?

    我正在开发一个应用程序来收集和发送各种系统信息 分区空间 可用空间 笔记本电脑电池信息等 我没有成功地以直接 c api 的形式获取这些信息 尽管它都可以通过 proc 或类似 中的文件获得 所以 我想知道在我的 C 应用程序中读取 解析这
  • 在 bash 中使用 ssh 内的 Expect 执行 sudo

    我想创建一个脚本来自动在多个 Linux 主机上进行安装 我使用 ssh 密钥登录到主机 在登录中我想做一个 sudo 我正在尝试使用 Expect 我在站上有它 但是我的服务器上没有运行脚本 我该怎么做 这是我的尝试 但没有运气 bin
  • msgget() 和 mq_open 之间的区别

    我阅读了有关消息队列操作的信息 例如 msgget msgsnd 和 msgrcv 但是当我在堆栈溢出上搜索消息队列相关问题时 我发现还有另一组消息队列操作 例如 mq open mq send mq receive 谁能告诉我这两种类型的
  • 在远程机器上执行多个命令

    在下面的命令中 我尝试 ssh 命令并执行多个命令 如果任何命令失败 即如果 command1 退出 那么如果 command1 和 commnd 2 退出 否则在远程计算机上执行命令 3 我如何退出 我怎样才能做到这一点 ssh logi
  • Boost 更新失败,现在不确定我拥有哪个版本

    在 Ubuntu 22 04 上运行此命令以获得 Boost 1 82 sudo add apt repository ppa mhier libboost latest sudo apt update sudo apt install l
  • 在 Sublime Text 3 中,我可以将 do 文件的选择发送到 Stata 吗?

    This SO question https stackoverflow com questions 18361667 is there a command line editor that highlights the stata syn
  • cronjob 上的 PHP 错误,在提示时工作正常

    我正在 cronjob 上运行以下脚本 cd etc parselog php run all php gt dev null 并收到以下错误 05 May 2009 20 30 12 PHP Warning PHP Startup Una
  • 如何获取子进程的返回值?

    程序计算从 1 到 N 的数字之和 子进程计算偶数之和 父进程计算奇数之和 我想在父进程中获取子进程的返回值 我怎么做 include
  • 使用 libjpeg 编写 jpeg(段错误)

    尝试使用 libjpeg 从一些原始数据写入 jpeg 文件 它会触发分段错误jpeg start compress 这是代码的相关部分 void write sub image char filename int start int en
  • 为什么我的 git 自动更新 Expect 脚本不起作用?

    我想制作一个脚本来更新我所有的 GitHub 存储库 我只需要输入我的用户名和密码 脚本将遍历存储库列表 调用git push并通过补充 Expect 脚本提供必要的信息 这是我的 bash 脚本 bin bash echo Updatin
  • 为什么链接器要修改--defsym“绝对地址”

    目标 一个使用可执行文件中的函数 不导出符号 的共享库 Means gcc Wl defsym function 0x432238 手册页指出 defsym symbol expression Create a global symbol
  • 为什么我的 sed 命令在使用变量时失败?

    使用 bash 我尝试插入日期变量并搜索该日期的日志文件 然后将输出发送到文件 如果我像这样对日期进行硬编码 它会起作用 sed n Nov 22 2010 p file gt log file 但如果我这样做就会失败 date Nov 2
  • Ruby 脚本即服务

    嗯 标题说明了一切 我有一个 ruby 脚本 我想在我的 Linux 机器上作为一项服务 我可以启动和停止 运行 我找到了如何在 Windows 上执行此操作here https stackoverflow com questions 16
  • 在 Ubuntu 12.04 中打开 eclipse juno 并出现错误“No more handles ...”

    从今天开始 每次我打开 Eclipse 时 都会弹出一个标题为 出现问题 的消息框 内容如下 不再处理 未知的 Mozilla 路径 未设置 MOZILLA FIVE HOME 可能的参数 0 1 2 3 不再有句柄 未知的 Mozilla
  • 安装pipenv导致pip3无法使用

    我安装了pipenv using pip3 install pipenv 这给了我错误ImportError cannot import name main 为了解决这个错误我遵循这些说明 https stackoverflow com q
  • 如何在命名管道 (mkfifo) 上执行非阻塞 fopen?

    如果我有一个程序使用 mkfifo 创建并尝试打开命名管道 如何在不阻塞的情况下打开管道进行读取或写入 具体来说 我正在编写一个 C 程序 它可以在有或没有 GUI 的情况下运行 用 Java 编写 在 C 程序中 我使用 mkfifo 成
  • accept() 创建一个新套接字是什么意思?

    我的问题基于以下理解 套接字由 ip port 定义 服务器和客户端都有自己的套接字 Socket连接由五组server ip server port client ip client port protocol定义 套接字描述符是标识套接

随机推荐

  • hover时效果从中间向两边扩散

    header nav gt li position relative display inline block margin right 20px padding 0 5px font size 16px line height 76px
  • P1433 吃奶酪 题解(勿抄袭)

    P1433 吃奶酪 题目描述 房间里放着 n 块奶酪 一只小老鼠要把它们都吃掉 问至少要跑多少距离 老鼠一开始在 0 0 点处 输入格式 第一行一个正整数 n 接下来每行 2 个实数 表示第i块奶酪的坐标 两点之间的距离公式为 输出格式 一
  • map获取最大值value和其对应的key

    public String getMaxStr Map
  • 光盘 显示0字符 无法读取文件的修复方法!!

    光盘 显示0字符 无法读取文件的修复方法 问题现象 光盘在运行中强制退出 再次重新读入时 无法读出其中内容 右键 gt 属性 可以看到可用空间和已用空间均为0 出错原因分析 光盘强制退出 未在光盘的引导区写入终止符 导致光盘损坏 解决方案
  • unity网络资源导入

    1 找到需要导入的文件 这里导入fbx格式 2 打开unity界面 在Asset目录下创建文件夹FBX 将需要导入的fbx预制体或整个文件夹拖入创建的FBX文件夹下 3 选中需要的fbx预制体并拖至场景中 4 双击定位到当前物体 5 找到需
  • WINDOWS TE开发指南

    下载 gt 操作系统 gt Linux gt Tiny6410 WindowsCE开发指南 div class download l fl div class download top div class download top wrap
  • 实现Tomcat——实现javax.servlet.Servlet接口

    0 环境配置 这里使用IntelliJ IDEA Maven WebApp项目 不过这里我们不会使用 启动Tomcat服务器 本文的目的就是使用Socket实现一个服务器 此服务器是一个Servlet容器 我们需要遵循Servlet接口规范
  • 简单实现链表增删改查

    学习目标 简单实现链表增删改查 学习内容 外部类和内部类 封装方法 其他类使用内部类私有方法 递归算法 代码块 class test public static void main String args Nodelianbiao nlb
  • js下载流文件

    const request new XMLHttpRequest const resourceUrl hostUrl request open POST resourceUrl true request setRequestHeader A
  • rabbitmq消费者启动报队列未找到

    使用的是spring rabbitmq 启动tomcate报错 消费这队列找不到 如果队列不存在消费者会自动创建的 Caused by org springframework amqp AmqpIllegalStateException F
  • 阿里云无影云电脑怎么买?阿里无影云电脑教程

    可以理解成一台普通的远程连接的电脑不能用于建站之类 纯粹处理办公文档一类 阿里云无影云电脑怎么买 云电脑无影在哪里买 阿里云无影云电脑已经底调上线 可以在阿里云官方云小站购买 目前 阿里云无影云电脑针对新用户有优惠活动 mini版无影云电脑
  • 性能测试流程

    性能测试流程 1 性能测试需求分析 2 性能测试计划和方案 3 性能测试用例编写 4 性能测试执行 编写 录制脚本 搭建场景 运行脚本 系统性能调优 5 性能测试报告总结 流程拆分 一 性能测试需求分析 1 1 熟悉被测系统 熟悉被测系统的
  • 在JDK17尝鲜Flink1.17

    在JDK17尝鲜Flink1 17 前言 还没玩明白老版本 Flink1 17就来了 总还是要向前看的 根据官网文档 https nightlies apache org flink flink docs release 1 17 docs
  • 【攻防世界】三 --- php_rce

    题目 php rce 一 writeup 主页中提示使用了ThinkPHP V5 在github中搜一下ThinkPHP V5的相关漏洞 可以找到一些 由于我们不知其具体的版本 随便找一个执行一下 这里选择第一个 会显出了root
  • 前端学习教程:快速入门前端图表插件ECharts

    前言 在前端项目开发中 有很多地方会遇到绘制图表的需求 一般的图表可以通过canvas来绘制 但是遇到复杂一点的图表怎么办呢 不要慌 在下今天就给大家推荐一个前端大佬们用的非常火的图表插件 ECharts ECharts特性简介 EChar
  • mysql不是内部或外部命令,也不是可运行的程序 或批处理文件。

    安装Mysql后 当我们在window r中输入cmd中敲入mysql时会出现 Mysql 不是内部或外部命令 也不是可运行的程序或其处理文件 打开我的电脑在我的电脑右键中选择属性 然后单击选择高级系统设置 在系统属性的 高级 中选择环境变
  • 域名及真实IP-信息收集

    顶级域名 a 国际域名 常用的是 com net org 推荐大家用 com 示范 taobao com dangdang com b 国家域名 中国国家域名 cn 美国国家域名 us 考虑政策原因 cn域名请个人网站谨慎使用 企业网站可以
  • Photoshop、Illustrator、Sketch哪个更好

    以前在交流组经常能看到大家争论哪个设计软件好 到底是你的吗 Illustrator好还是我的CorelDRAW或者他的Photoshop强大 但是跟着UI流行的设计 Sketch软件也加入了争论 让我们和你分享一下这篇文章 让我们来看看平面
  • 怎么检查代码完好?

    怎么检查代码完好 一 前言 在提交代码前 不论是提交到 SVN 还是 Git 仓库 我们都必须保证提交的代码是正确无误 那么咱们怎么才能确保资金调的代码是正确无误的呢 二 问题 1 maven 项目中提交代码前 怎么保证代码正确无误 2 W
  • 树莓派内核开发准备(内核源码获取、启动过程、源码目录树)

    目录 1 交叉编译工具的安装 2 内核源码获取 3 嵌入式设备带操作系统的启动过程扫盲 4 Linux内核源码树扫盲 1 内核源码简介 2 Linux内核源代码目录树结构 tree指令查看 内核源码目录树 1 交叉编译工具的安装 参照我之前