轻松学习yocto: 10-Yocto 学习路线
到此 我可以重建core-image-minimal 带有ssh-dropbear, pi image IP设置好了 windows也可以用putty 连接pi2, 接下来我学什么你现在其实已经跨过了一个非常重要的坎你不再只是“会编译 Yocto”而是已经能从 recipe → BitBake → rootfs → WIC → SD Card →Raspberry Pi → SSH完整跑通一条链。文章摘要本文为 Yocto 学习者规划了一条从“会编译”到“能定制”的清晰进阶路径。作者基于读者已成功构建并运行带 SSH 的 Raspberry Pi 镜像这一基础提出了Yocto 第二阶段的九个核心实验旨在帮助读者建立完整的嵌入式 Linux 产品开发思维从零编写最小 Recipe通过一个纯 Shell Script 的hello-yocto.bb掌握从 Recipe 到最终在 Pi 上运行的完整流程。编写 Systemd Service让应用开机自启理解 Yocto 如何定义系统服务。创建自己的 Layer建立meta-myproduct学习通过 Layer 覆盖和扩展官方配置这是工程化开发的基础。区分 local.conf 与 Layer理解临时构建配置与产品级配置的边界培养配置管理意识。创建自定义 Image Recipe告别core-image-minimal定义属于自己的产品镜像。深入 Kernel 定制在理解上层构建流程后再学习内核配置、模块和设备树。使用 SDK 进行应用开发为自定义镜像生成 SDK在主机上进行交叉编译应用开发。遵循结构化学习路线提供了从 Recipe 到 BSP 的 11 个阶段学习表格避免盲目学习。巩固核心主线强调应专注于 BitBake → Recipe → Package → Rootfs → Image 这条核心构建链暂缓学习 Docker 等外围技术。全文核心思想是Yocto 是一个构建系统其目标是让你能够定义和构建属于自己的完整 Linux 产品而不仅仅是编译软件。下一步建议立即动手实践第一个实验编写hello-yocto.bb。结合我们前面已经做过的 busybox.bb、busybox.inc、task dependency、do_compile/do_install/do_package、WIC 和 Dropbear我建议不要马上去学别的 recipe。下一阶段应该进入Yocto 第二阶段从“构建系统”进入“定制系统”我建议你按下面顺序走。1. 我最建议你下一课自己写一个最小 recipe不要再解剖 BusyBox 了。BusyBox 已经完成了它的教学使命让你理解recipe ↓ BitBake metadata ↓ task ↓ do_compile ↓ do_install ↓ do_package ↓ package ↓ rootfs ↓ image现在我们反过来自己写一个 recipe然后亲眼看它如何进入 Raspberry Pi 的 rootfs。例如做一个hello-yocto最终 SSH 到 Pi2rootraspberrypi2:~# hello-yoctoHello Yocto!这个练习非常关键因为你会真正掌握hello-yocto.bb │ ├── SRC_URI ├── do_compile ├── do_install ├── FILES:${PN}▼ package ▼ core-image-minimal ▼ WIC ▼ SD Card ▼ Raspberry Pi2这个练习非常关键因为你会真正掌握hello-yocto.bb │ ├── SRC_URI ├── do_compile ├── do_install ├── FILES:${PN}▼ package ▼ core-image-minimal ▼ WIC ▼ SD Card ▼ Raspberry Pi2这次我们甚至可以不依赖任何复杂源码先做一个纯 shell script recipe。具体建议与补充说明结构优化将这句关键提示从单纯的引用块提升为一个小节标题例如“1.1 从最简单的 Shell Script Recipe 开始”使其在视觉上更突出逻辑层次更清晰。逻辑深化在此处补充一个简短的段落解释“为什么从 Shell Script 开始”从纯 Shell Script 开始可以让你完全专注于 Recipe 的元数据metadata和任务task流程本身而无需被 C/C 编译环境、交叉编译工具链、源码补丁等复杂因素干扰。这是理解 BitBake 如何“打包”和“部署”一个软件的最干净起点。案例补充紧接着提供一个极简的hello-yocto.bb示例框架让抽象概念立刻变得具体可操作# hello-yocto.bbSUMMARYA simple hello-yocto scriptLICENSEMITSRC_URIfile://hello-yocto.shdo_install(){install-d${D}${bindir}install-m0755${WORKDIR}/hello-yocto.sh${D}${bindir}/hello-yocto}FILES:${PN}${bindir}/hello-yocto并附上对应的hello-yocto.sh脚本内容#!/bin/shechoHello Yocto!行动指引在案例后增加一个“下一步动作”提示引导读者立即实践动手试试在你的 layer 中创建上述两个文件然后运行bitbake hello-yocto。观察tmp/work/目录下生成的日志和文件特别是do_install任务将脚本安装到了哪个临时目录以及最终它如何被包含进core-image-minimal的包列表中。承上启下最后用一句话衔接至下一个实验systemd service强化学习路径的连贯性当你成功在 Pi2 上运行hello-yocto命令后你将获得对 Recipe 生命周期的完整感性认识。接下来我们就可以让这个“Hello World”在系统启动时自动运行进入systemd service的实验。然后做第二个实验自己写 systemd service比如hello-yocto.service让 Pi 启动之后自动运行hello-yocto然后你 SSH 进去systemctl status hello-yocto这一步会把你带到一个非常重要的概念recipe ↓ 安装文件 ↓ /etc/systemd/system/xxx.service ↓ systemd ↓ 开机启动你会开始真正理解Yocto 不只是“把软件编译出来”而是决定目标 Linux 系统里面有什么以及它怎么启动。3. 第三个实验正式创建自己的 Layer现在你应该从poky/ meta-openembedded/ meta-raspberrypi/开始建立自己的meta-myproduct/例如meta-myproduct/ ├── conf/ │ └── layer.conf ├── recipes-example/ │ └── hello-yocto/ │ └── hello-yocto.bb └── recipes-core/ └──...然后bitbake-layers create-layer../meta-myproduct bitbake-layers add-layer../meta-myproduct以后你自己的所有东西都放进去meta-myproduct │ ├── recipes ├── configuration ├── services ├── patches ├── kernel config └── device tree这一步非常重要。因为从这里开始你不应该再修改poky/meta/... meta-raspberrypi/...而是通过自己的 layer 覆盖/扩展别人提供的东西。这是 Yocto 真正的工程工作方式。4. 第四个实验学习 local.conf 和 layer 的边界你现在应该开始刻意区分临时实验build-rpi2/conf/local.conf和产品级配置meta-myproduct/例如MACHINE “raspberrypi2”可以是 machine/build 配置。而IMAGE_INSTALL:append dropbear虽然可以放 local.conf但如果你要做正式产品就应该逐渐移动到自己的 layer / image recipe 中。最终形成local.conf ↓ 开发者个人/机器相关配置 meta-myproduct ↓ 产品本身的配置这个思想非常重要。第五个实验不要再只用 core-image-minimal你现在应该创建自己的 imagemy-product-image.bb例如my-product-image │ ├── dropbear ├── busybox ├── hello-yocto ├── your-service └── your-config然后bitbake my-product-image最终my-product-image-raspberrypi2.rootfs.wic这时候你就真正开始从“我在编译 Yocto 的 image”变成“我在定义自己的 Linux 产品。”6. 第六阶段Kernel等上面的东西真正理解之后再进入 kernel。这一阶段非常值得你在 Pi2 上做Yocto │ └── Linux Kernel ├── kernel config ├── module ├── device tree └── patch例如bitbake virtual/kernel然后研究bitbake -c menuconfig virtual/kernel再研究KERNEL_DEVICETREE然后自己加一个 kernel configuration。这一阶段你会第一次真正理解Yocto 并不是 Linux kernel。Yocto 是构建系统而 kernel 只是 Yocto 构建出来的一个组件。7. 第七阶段SDK等你已经能做自己的 image 后再学bitbake -c populate_sdk然后Yocto PC │ SDK ▼ Application Developer ▼ your-app ▼ ARM/Raspberry Pi然后你可以在 PC 上写#include stdio.hintmain(){printf(Hello Raspberry Pi\n);return0;}使用 Yocto SDK 编译aarch64-poky-linux-gcc …或者根据你的 Pi2 配置对应的 ARM toolchain。这时候就进入Yocto Embedded Linux Application Development8. 所以我给你安排的路线是不要一下子学 20 个东西。我们就按这个顺序我尤其建议你现在不要急着学 Docker、systemd 全家桶、Linux 驱动等因为你现在最宝贵的是刚刚建立起来的这条“主线”。我们应该趁热打铁然后我们把箭头反过来这会是你真正从“使用 Yocto”进入“掌握 Yocto”的转折点。下一步我建议我们直接开始 01从零写第一个 hello-yocto.bb。而且这次我会带你用我们之前解剖 BusyBox 的方法一行一行追踪它从 .bb 文件到最终出现在 Pi2 /usr/bin/hello-yocto 的全过程

相关新闻

工业物联网时序数据库选型与实践指南

工业物联网时序数据库选型与实践指南

1. 工业IoT场景下的时序数据挑战在工业物联网领域,设备产生的数据具有典型的时序特性——每台机床、传感器、PLC控制器都在以固定间隔生成带时间戳的状态数据。某汽车制造厂的实践显示,一条焊接产线每小时就能产生超过200万条数据点,包含电流…

2026/10/25 2:16:40 阅读更多 →
Codex Security 深度解析:当 LLM Agent 开始接管代码安全审计

Codex Security 深度解析:当 LLM Agent 开始接管代码安全审计

🌊 专注 AI 大模型与前沿科技深度解析,习惯从工程师视角拆解技术热点,让我们一起在技术浪潮中保持清醒与好奇 🚀Codex Security 深度解析:当 LLM Agent 开始接管代码安全审计 过去十年,应用安全领域一直被一…

2026/10/24 16:24:15 阅读更多 →
GPU算力瓶颈下,Hugging Face模型高效部署与成本优化实战指南

GPU算力瓶颈下,Hugging Face模型高效部署与成本优化实战指南

如果你最近在尝试运行一个开源大模型,或者想微调自己的LLM,大概率会碰到同一个问题: GPU不够用 。这不仅仅是个人开发者面临的困境,连Hugging Face这样的AI基础设施巨头,其CEO Clement Delangue最近也被曝出亲赴西雅…

2026/10/25 16:58:20 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/25 22:36:10 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/26 4:52:12 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/26 5:00:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/26 3:16:46 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 13:21:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →