第2章:Yocto项目环境搭建——宿主机准备、安装必要工具、配置Git与Repo、首次构建最小系统

好,咱们正式开始动手。这一章的目标很明确:在你的电脑上搭出一套能用的Yocto构建环境,然后跑通第一次编译。别小看这一步,我见过太多人卡在环境配置上,一卡就是一两天。说白了,环境没搭好,后面全是白搭。

2.1 宿主机选型与准备

Yocto项目对宿主机的操作系统有明确要求。我个人习惯用Ubuntu LTS版本,目前推荐20.04或22.04。为什么?因为社区支持最全,遇到问题搜一下基本都有答案。

宿主机最低配置建议:

  • CPU:4核以上(8核更佳)
  • 内存:8GB起步,16GB才舒服
  • 磁盘:至少100GB空闲空间(SSD优先)
  • 网络:稳定的宽带连接(首次构建需要下载大量源码)

嗯,这里要注意:千万别用虚拟机跑在机械硬盘上。我曾经在一台老笔记本上试过,一次完整构建花了将近8个小时——你想想看,这谁受得了?

2.2 安装必要工具包

Yocto构建系统依赖一堆基础工具。别慌,一条命令就能搞定。我建议你直接复制下面这条,别自己一个个装,容易漏。

sudo apt update
sudo apt 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

装完之后,验证一下关键工具是否到位:

gcc --version
python3 --version
git --version
make --version

小提示:如果你用的是Ubuntu 22.04,记得确认Python版本是3.10以上。Yocto的某些层对Python版本有硬性要求,版本不对会报一些莫名其妙的错。

2.3 配置Git与Repo

Git是Yocto的命根子。所有源码、补丁、配置都通过Git管理。先配好你的Git全局信息:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global color.ui auto

接下来是Repo工具。Repo是Google开发的一个多仓库管理工具,Yocto用它来管理多个Git仓库的协同工作。安装Repo很简单:

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 里,不然每次开终端都要重新执行一遍。这个坑我踩过,当时还纳闷怎么每次repo命令都找不到。

2.4 首次构建最小系统

好,环境准备好了,咱们来真的。先创建一个工作目录,然后初始化Yocto项目:

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

repo sync 这一步会下载所有源码,时间取决于你的网速。我建议你找个网络好的时段做这件事,或者干脆挂一晚上。下载完成后,目录结构大概是这样:

目录/文件 说明
poky/ Yocto核心元数据(BitBake、OpenEmbedded核心层)
meta/ OpenEmbedded核心层
meta-poky/ Poky参考发行版配置
meta-yocto-bsp/ Yocto参考板级支持包
scripts/ 辅助脚本工具

接下来,设置构建环境并初始化:

cd poky
source oe-init-build-env build

这条命令会创建一个 build 目录,并自动切换到该目录。同时会生成两个关键配置文件:

  • conf/local.conf:本地构建配置(目标机器、并行任务数等)
  • conf/bblayers.conf:层配置(哪些层参与构建)

在开始构建之前,我建议你优化一下 local.conf:

# 根据你的CPU核心数设置并行编译
BB_NUMBER_THREADS = "4"
PARALLEL_MAKE = "-j 4"

# 指定目标机器(这里用qemux86-64做测试)
MACHINE = "qemux86-64"

# 开启一些调试信息
INHERIT += "rm_work"

警告:别把 BB_NUMBER_THREADS 设得比你的CPU核心数还大。我曾经图快设成16,结果系统直接卡死,连鼠标都动不了。老老实实按核心数来,稳一点。

好了,万事俱备,开始构建最小系统镜像:

bitbake core-image-minimal

这条命令会编译一个最精简的Linux系统,包含内核、根文件系统和基本的BusyBox工具。首次构建时间很长,通常1-3小时不等。你可以去喝杯咖啡,或者看看文档。

构建完成后,你会看到类似这样的输出:

NOTE: Tasks Summary: Attempted 1234 tasks of which 0 didn't need to be rerun and all succeeded.

生成的镜像文件在 tmp/deploy/images/qemux86-64/ 目录下。你可以用QEMU直接启动它:

runqemu qemux86-64

看到系统启动、登录提示出现的那一刻,恭喜你——Yocto环境搭建成功了。

避坑指南:我曾经在构建过程中遇到磁盘空间不足的错误。建议你在构建前用 df -h 确认一下磁盘余量。如果空间紧张,可以在 local.conf 里设置 DL_DIR 和 SSTATE_DIR 到其他分区。

2.5 本章知识体系

下面这张图帮你理清本章的核心逻辑:

第2章:Yocto环境搭建核心流程 宿主机准备 安装必要工具 配置Git与Repo repo init & sync 配置local.conf bitbake构建 关键提醒 • 首次构建耗时1-3小时,建议用SSD + 8核以上CPU • 网络不稳定时,可先下载源码包再离线构建 • 遇到错误先看日志:tmp/log/cooker.log

这张图把本章的六个关键步骤串起来了。从宿主机准备开始,一步步走到首次构建成功。每一步都有坑,但只要你按顺序来,基本不会出大问题。

嗯,环境搭建这部分就到这里。记住:第一次构建慢是正常的,别着急。后面咱们会在这个基础上加入MQTT和OTA升级的功能,那才是真正精彩的部分。