3. Yocto开发环境搭建:宿主机要求、安装必要工具、配置Git和Repo

说实话,很多人在Yocto上栽跟头,不是因为不会写配方,而是开发环境没搭对。我见过太多同事花了两天时间编译,最后报个莫名其妙的错,一查发现是Ubuntu版本不对,或者硬盘空间不够。嗯,咱们先把地基打牢。

3.1 宿主机硬件要求

Yocto编译是个吃硬件的活。你别指望拿个4GB内存的笔记本就能跑,那会把你逼疯的。我个人建议,至少满足以下配置:

硬件项 最低要求 推荐配置
CPU 4核 8核及以上
内存 8GB 16GB或更高
硬盘 100GB空闲 250GB+ SSD
网络 宽带连接 稳定光纤
注意: 我曾经在虚拟机里跑Yocto,结果编译到一半磁盘满了,整个构建目录废了,又得重来。如果你用虚拟机,建议给动态扩展磁盘,或者至少预留200GB。

3.2 操作系统要求

Yocto官方对宿主机的Linux发行版有明确要求。说白了,你最好用长期支持版(LTS)的Ubuntu或Debian。我自己的主力机是Ubuntu 22.04 LTS,跑Yocto 4.x(Kirkstone)非常稳。

支持的发行版列表(以Yocto 4.0 Kirkstone为例):

  • Ubuntu 22.04 LTS(推荐)
  • Ubuntu 20.04 LTS
  • Debian 11 (Bullseye)
  • Fedora 36+
  • CentOS 7 / RHEL 8
小技巧: 如果你用Ubuntu,千万别用非LTS版本。我有个朋友用Ubuntu 22.10,结果某个依赖包版本太新,和Yocto不兼容,折腾了一整天。LTS版本经过社区充分测试,省心很多。

3.3 安装必要工具

Yocto构建系统依赖一堆基础工具。你想想看,它要下载源码、打补丁、编译、打包,每一步都需要对应的命令行工具。我习惯用一个命令把基础包全装了:

sudo apt-get update
sudo apt-get install -y \
    gcc g++ make cmake \
    git repo \
    python3 python3-pip python3-venv \
    chrpath diffstat texinfo \
    gawk wget file unzip \
    bzip2 xz-utils zstd \
    libssl-dev libncurses-dev \
    locales

这里我重点说几个容易忽略的:

  • chrpath:用于修改ELF文件的rpath,Yocto在打包时会用到。少了它,编译到一半会报错。
  • diffstat:生成补丁的统计信息。虽然不影响编译结果,但Yocto的构建日志会依赖它。
  • texinfo:生成info文档。有些包的configure脚本会检查它。
  • zstd:高压缩比的压缩工具。Yocto从Honister版本开始,默认用zstd压缩sstate缓存。

核心要点: 安装完成后,建议运行以下命令验证环境:

python3 --version
git --version
repo --version
chrpath --version 2>/dev/null && echo "chrpath OK" || echo "chrpath MISSING"

3.4 配置Git

Yocto的源码管理重度依赖Git。你想想看,它要从几百个Git仓库拉取代码,如果Git没配好,后面全是坑。我个人习惯先配好全局用户信息:

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

然后,我建议把Git的缓存调大一点。Yocto的仓库都很大,默认的缓存容易撑爆:

git config --global http.postBuffer 524288000
git config --global core.compression 0

为什么要关掉压缩?因为Yocto的很多仓库已经是压缩过的,再压缩反而降低性能。我在项目中遇到过,开着压缩拉取poky仓库,速度慢得让人抓狂。

避坑指南: 如果你在公司内网,记得配代理。我曾经忘了配,结果repo sync卡在某个仓库上,排查了半天才发现是代理问题。
git config --global http.proxy http://proxy.example.com:8080
git config --global https.proxy http://proxy.example.com:8080

3.5 配置Repo工具

Repo是Google开发的仓库管理工具,Yocto用它来管理多个Git仓库。说白了,一个Yocto项目可能包含poky、meta-openembedded、meta-raspberrypi等十几个仓库,Repo帮你一键同步。

安装Repo很简单:

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

记得把~/bin加到.bashrc里,不然每次开终端都要重新export:

echo 'export PATH=$PATH:~/bin/repo' >> ~/.bashrc

验证Repo是否安装成功:

repo --version

如果看到版本号,说明搞定了。

3.6 整体环境搭建流程

我把整个流程画了张图,方便你对照操作:

Yocto开发环境搭建流程 ① 硬件检查 ② 安装Ubuntu 22.04 ③ 安装必要工具包 ④ 配置Git ⑤ 安装并配置Repo ⑥ 环境验证 💡 关键提醒 • 磁盘至少100GB空闲 • 内存建议16GB以上 • 使用SSD硬盘加速编译 ⚠️ 常见问题 • 缺少chrpath导致编译中断 • Git未配代理导致拉取失败

3.7 环境验证清单

全部配置完成后,我建议你对照这个清单检查一遍,确保万无一失:

检查项 验证命令 预期结果
Python版本 python3 --version ≥ 3.8
Git版本 git --version ≥ 2.25
Repo版本 repo --version 显示版本号
chrpath chrpath --version 显示版本号
磁盘空间 df -h 空闲 ≥ 100GB
我的习惯: 每次搭建新环境,我都会先跑一个最小构建测试——只编译core-image-minimal。如果这个能过,说明环境没问题。如果报错,八成是某个依赖包没装全。别急着往下走,先把环境调稳了再说。