搭建Yocto开发环境:宿主机要求、安装必要软件包、配置Git和Repo
好,咱们正式开始动手。搭建开发环境这件事,说难不难,说简单也不简单。我见过太多人卡在这一步——不是缺包就是版本不对,折腾半天连个bitbake都跑不起来。所以这一节,咱们把环境搭得稳稳当当的。
宿主机要求:别拿玩具当工具
Yocto是个吃资源的家伙。我刚开始用的时候,拿一台4GB内存的笔记本跑,结果编译到一半直接OOM(内存溢出),系统卡死。后来换了台16GB的机器,才算舒坦。
说白了,宿主机就是你的工作台。台子不稳,活干不好。
硬件最低要求:
- CPU:4核以上,建议8核
- 内存:8GB起步,16GB更稳
- 磁盘:至少100GB空闲空间(SSD优先)
- 网络:稳定的宽带连接(第一次下载量很大)
你想想看,一个完整的Yocto构建,光是下载源码包就得好几个G。编译过程中还会产生大量中间文件。我有个项目,最终镜像才200MB,但构建目录占了40GB。嗯,磁盘空间一定要留足。
操作系统选择
Yocto官方推荐Ubuntu LTS版本。我个人习惯用Ubuntu 22.04 LTS,踩坑少,社区支持好。当然,Debian、Fedora、CentOS也能用,但你要做好自己解决依赖问题的准备。
| 操作系统 | 推荐版本 | 我的评价 |
|---|---|---|
| Ubuntu | 22.04 LTS / 24.04 LTS | 最省心,社区资料最多 |
| Debian | 12 (Bookworm) | 稳定,但包版本偏旧 |
| Fedora | 40+ | 包新,但偶尔有兼容问题 |
| CentOS/RHEL | 9+ | 企业级,但配置稍麻烦 |
注意:千万别用Windows直接跑Yocto。虽然WSL2能凑合,但我试过几次,文件系统性能差、路径问题多。老老实实用Linux物理机或虚拟机吧。
安装必要软件包:一个都不能少
Yocto对宿主机软件包有明确要求。缺一个包,编译到一半就报错,那才叫崩溃。我曾经因为少了chrpath这个包,排查了整整一下午。
在Ubuntu 22.04上,执行以下命令安装所有必需包:
sudo apt update
sudo apt install -y \
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 python3-subunit \
zstd liblz4-tool file locales libacl1-dev \
libssl-dev libncurses-dev libgmp-dev \
libmpfr-dev libmpc-dev flex bison \
libelf-dev
这里我多说一句:python3-pexpect这个包很容易被忽略。没有它,一些自动化测试脚本就跑不起来。还有zstd和liblz4-tool,这是Yocto新版本用来压缩sstate缓存用的,能大幅提升二次构建速度。
小技巧:装完包后,运行oe-check-sstate(在poky目录下)可以验证环境是否完整。不过这个工具需要先下载poky,咱们后面会讲。
配置Git:你的版本控制管家
Yocto的整个构建系统都依赖Git来管理代码。配置好Git,能省去很多麻烦。
先设置你的身份信息:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
我个人习惯再加几个配置:
git config --global core.editor vim
git config --global color.ui auto
git config --global pull.rebase true
pull.rebase true这个配置,能让你拉取代码时自动变基,避免产生多余的合并提交。我在团队协作时吃过这个亏——一堆合并提交把历史搞得乱七八糟,后来强制大家用rebase,清爽多了。
配置Repo:管理多仓库的瑞士军刀
Yocto项目由几十个Git仓库组成。手动一个个克隆?不现实。Google开发的repo工具就是干这个的。
安装repo:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
然后把~/bin加到PATH里:
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc
注意:repo脚本会定期更新。如果遇到repo sync报错,先检查repo版本:repo --version。我遇到过因为repo版本太旧,导致manifest解析失败的情况。
验证环境:跑个简单的测试
环境搭好了,咱们验证一下。先创建一个工作目录:
mkdir ~/yocto-test
cd ~/yocto-test
初始化poky仓库(Yocto的参考发行版):
repo init -u https://git.yoctoproject.org/poky -b kirkstone
repo sync
这个过程会下载几十个仓库,大概需要几分钟到半小时,取决于你的网速。我第一次同步时,等得都快睡着了。
同步完成后,试试能不能运行bitbake:
source oe-init-build-env
bitbake --version
如果看到类似BitBake Build Tool Core version 2.0.x的输出,恭喜你,环境搭好了!
核心要点回顾:
- 宿主机至少8GB内存、100GB磁盘
- Ubuntu 22.04 LTS是最省心的选择
- 安装所有必需包,一个都不能少
- Git配置好用户信息和rebase策略
- Repo工具用于管理多仓库项目
嗯,环境搭好了,咱们就可以开始真正玩Yocto了。下一节,我会带你创建一个最简单的配方,让你感受一下Yocto的构建流程。别急,一步一步来。
我的经验:第一次搭建环境时,别急着跑大型项目。先拿poky自带的core-image-minimal练手,编译成功后再逐步加料。这样出了问题,排查范围小得多。
可可精品资料库