第二章:Yocto开发环境搭建

好,咱们正式开始动手了。搭建开发环境这件事,说简单也简单,说坑也多。我见过不少新手,一上来就急着编译,结果卡在依赖问题上半天。其实,把环境收拾利索了,后面能省一大半时间。

2.1 宿主机要求

先说说宿主机。Yocto对硬件和系统都有要求,别拿个老古董来跑,会哭的。

项目 最低要求 推荐配置
CPU 双核 x86_64 4核以上
内存 4GB 8GB+
磁盘 50GB空闲 120GB+ SSD
操作系统 Ubuntu 20.04 / CentOS 7 Ubuntu 22.04 LTS
注意:千万别用Windows子系统WSL1来跑Yocto,文件系统性能太差。WSL2勉强可以,但我个人还是推荐原生Linux。

为什么会这样?因为Yocto在构建过程中会创建大量符号链接和临时文件,跨文件系统的性能损耗非常明显。我在项目中吃过这个亏,整整多等了两个小时。

2.2 安装必要软件包

系统装好了,接下来装依赖。不同发行版的包名略有差异,我以Ubuntu为例。

sudo apt-get update
sudo apt-get install gawk wget git diffstat unzip texinfo gcc build-essential \
    chrpath socat cpio python3 python3-pip python3-pexpect xz-utils \
    debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa \
    libsdl1.2-dev pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool

嗯,这里要注意。不同Yocto版本对Python版本有要求。比如Yocto 4.0 (Kirkstone) 要求Python 3.8以上。我建议你装完先跑一下 python3 --version 确认一下。

小技巧:如果你用的是CentOS/RHEL,记得先启用EPEL源。我曾经帮一个同事排查了半天,最后发现就是少了个EPEL。

2.3 配置Git与Repo

Git是Yocto的命根子。几乎所有代码都通过Git管理。先配好你的身份信息:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global color.ui auto

Repo工具是Google开发的,用来管理多Git仓库。Yocto用它来拉取Poky及其所有子模块。

mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH

记得把 export PATH=~/bin:$PATH 加到你的 ~/.bashrc 里,不然每次开终端都要重新设置。我刚开始就老忘,后来干脆写了个脚本一键初始化。

2.4 下载Poky源码

Poky是Yocto的参考发行版,也是我们学习的起点。用Repo来拉取:

mkdir yocto-project
cd yocto-project
repo init -u https://git.yoctoproject.org/poky -b kirkstone
repo sync

这个过程取决于你的网速。我第一次拉的时候等了快半小时,中间还断了一次。别急,断了就重新 repo sync,它会断点续传。

核心知识点:Poky本质上是一个聚合仓库,它包含了BitBake构建引擎、OpenEmbedded核心元数据以及一系列参考BSP。你下载的不仅仅是代码,而是一整套构建生态。

2.5 首次构建最小系统

源码到手了,咱们来编译一个最小系统。先设置环境变量:

cd poky
source oe-init-build-env build

这个脚本会帮你创建 build 目录,并设置好所有环境变量。你想想看,如果没有这个脚本,光设置几十个环境变量就够你受的。

然后修改 conf/local.conf,把目标机器设成qemu模拟器:

MACHINE ?= "qemux86-64"

最后,开始构建:

bitbake core-image-minimal

第一次构建会下载所有源码包并编译工具链,时间比较长。在我的4核8G机器上,大概需要40分钟。你可以去泡杯咖啡,或者看看文档。

避坑指南:我曾经在构建过程中把终端关了,结果所有临时文件都丢了。建议用 screen 或 tmux 来跑构建任务,这样即使断网也不会中断。

构建完成后,你会得到一个完整的根文件系统镜像和内核。用QEMU启动看看:

runqemu qemux86-64

看到登录提示符了吗?恭喜你,你的Yocto环境搭建成功了。

本章知识体系

下面这张图帮你理清整个搭建流程的逻辑关系:

Yocto开发环境搭建流程 宿主机准备 CPU/内存/磁盘/OS 安装依赖包 gcc/python/git等 配置Git/Repo 用户信息/工具安装 下载Poky源码 repo init + repo sync 设置构建环境 oe-init-build-env 首次构建 bitbake core-image-minimal 验证启动 runqemu qemux86-64 每个步骤都有对应的避坑指南,详见正文

搭建环境是Yocto学习的第一道坎。跨过去,后面就顺了。记住,耐心是关键,第一次构建慢是正常的。

可可精品资料库