尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
轻松学习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 的全过程
RELATED

相关推荐

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

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

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

📅 2026/9/10 8:29:57
隐私计算安全攻防:同态加密与多方计算漏洞解析

隐私计算安全攻防:同态加密与多方计算漏洞解析

1. 隐私计算安全攻防现状剖析 在数据要素市场化配置的时代背景下,隐私计算技术作为平衡数据流通与隐私保护的关键手段,正面临前所未有的安全挑战。过去三年间,同态加密方案被曝出21个CVE漏洞,安全多方计算协议实现缺陷导致的实际攻…

📅 2026/10/9 5:48:48
Day 45 | Sentinel流量治理:从限流到熔断降级再到系统自适应保护

Day 45 | Sentinel流量治理:从限流到熔断降级再到系统自适应保护

专栏:《Java高级进阶》90天进阶系列 版本环境:Spring Boot 3.2.x Spring Cloud Alibaba 2023.0.1.0 Sentinel 1.8.6 一、开篇:大促那一夜,限流救了我们 有一年双 11,公司搞了一场优惠券秒杀。接口上线前压测明明过了…

📅 2026/10/3 0:16:19
MORE NEWS

更多资讯

📰

YOLOv11对抗攻击与防御实战:从FGSM到鲁棒性提升

YOLOv11 实战系列走到第 19 篇,我打算聊一个平时不太会被关注、但只要模型一上线就容易踩坑的话题:模型安全与鲁棒性。先说个真实经历,我之前做某个目标检测相关项目时,一开始只盯着 mAP、FPS、显存占用这些常规指标,模…

📰

PB客户端远程连接SQL Server完整方案:动态IP与DDNS自动重连实战

简介:这是一份针对PowerBuilder与SQL Server远程连接场景的工程包,主要服务于需要在外网或动态IP环境下维护数据库应用的PB开发人员。资源围绕“远程连接”与“动态IP适配”两大核心问题展开,不仅讲解ODBC/ADO等数据访问接口的配置方式&#…

📰

RAG技术2025复盘与2026展望:混合检索、重排序与工程落地

简介:这是一份围绕RAG技术2025年复盘与2026年展望的源码包,面向关注检索增强生成技术演进规律的开发者、研究者与技术决策者。资源以HTML页面呈现完整分析内容,并附带inscode配置与gitignore文件,便于在云端环境直接浏览或二次整理…

📰

Java流媒体直播服务器:从RTMP到HTTP-FLV的架构设计与实践

简介:一份面向音视频服务端开发与运维学习者的Java流媒体直播服务器实现资料,涵盖RTMP/HLS协议接入、Java NIO高并发连接管理、音视频编码与转码等关键环节,有助于理解从推流接收、数据处理到多客户端分发的完整链路。压缩包共31个文件&#…

📰

1 Java入门

1 软件介绍 系统软件 windowslinuxmacIOS安卓鸿蒙 应用软件 wechatQQstreamwegame 2 Java介绍 Java是软件开发中的高级编程语言 语言的发展历程: 1 机器语言 101010 执行效率最高 开发效率极低 2 汇编语言 3 高级语言:C C(Cpp) java C# .net java…

📰

Agent开发不是模型训练:前端工程师的工程化转行指南

“Agent 开发不是模型训练”——这句话我最早是在一次内部技术分享上听到的,当时台下坐着一群前端,包括我。说这话的人没有继续解释,但那一瞬间我确实愣住了。因为在那之前,我作为前端,对“Agent”这三个字的理解一直模…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬