2. 环境搭建:宿主机要求、安装必要软件包、配置Git和Repo、下载Yocto源码、首次构建前的检查清单
好,咱们正式开始动手了。这一章,说白了就是搭台子。台子搭不好,后面唱戏肯定要摔跟头。我见过太多新手,一上来就急着跑 bitbake,结果环境不对,报一堆莫名其妙的错,心态直接崩了。
别急,跟着我一步步来。把基础打牢,后面才顺。
2.1 宿主机要求:别拿老爷机折腾
Yocto 是个吃资源的大户。你想想看,它要下载几百个源码包,编译整个 Linux 系统,包括内核、根文件系统、各种库。这活儿不轻。
硬件最低要求:
- CPU: 4 核起步。我建议 8 核或以上。核心越多,并行编译越快。
- 内存: 至少 8GB。16GB 是舒适区。我曾经在 4GB 的虚拟机上跑,结果 swap 分区被撑爆,系统直接卡死。嗯,血的教训。
- 硬盘: 至少 100GB 空闲空间。注意是 空闲。一个完整的构建,轻松吃掉 50-80GB。我建议用 SSD,机械硬盘会让你等到怀疑人生。
- 操作系统: 推荐 Ubuntu 22.04 LTS 或 Debian 12。CentOS 也行,但社区支持不如 Ubuntu 活跃。
2.2 安装必要软件包:缺啥补啥
Yocto 依赖一堆工具链。Ubuntu/Debian 系统下,一行命令搞定:
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 \
xterm python3-subunit mesa-common-dev zstd liblz4-tool file locales libacl1
为什么装这么多?我刚开始也嫌烦。但后来发现,少一个包,编译到一半就报错,回头再装,浪费时间。所以,一次性装全,省心。
2.3 配置 Git 和 Repo:版本管理的基石
Yocto 的源码管理,用的是 Git + Repo。Repo 是 Google 搞的一个工具,专门用来管理多个 Git 仓库。Yocto 项目有上百个 layer,每个 layer 都是一个独立的 Git 仓库。用 Repo,一次拉取所有。
先配 Git:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
这步别偷懒。没有配置,后面 repo init 会报错。我见过有人卡在这里半小时,就为了省这两行命令。
再装 Repo:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
然后把 ~/bin 加到 PATH 里。编辑 ~/.bashrc,加一行:
export PATH=~/bin:$PATH
然后 source ~/.bashrc 让它生效。
https://mirrors.tuna.tsinghua.edu.cn/git/git-repo 就行。
2.4 下载 Yocto 源码:动手吧
好,现在开始拉代码。我习惯建一个专门的目录来放 Yocto 项目:
mkdir ~/yocto
cd ~/yocto
然后初始化 Repo。以 Yocto 的长期支持版本 Kirkstone(4.0)为例:
repo init -u https://git.yoctoproject.org/poky -b kirkstone
这条命令会创建一个 .repo 目录,里面记录了所有需要拉取的仓库信息。然后执行:
repo sync
这一步会下载所有源码。网络好的话,几分钟搞定。慢的话...去喝杯咖啡吧。
同步完成后,你会看到 poky 目录。这就是 Yocto 的核心元数据。里面包含了 OpenEmbedded 构建系统、BitBake 工具、以及各种参考 BSP。
~/yocto 下再建一个 sources 目录,把 poky 和其他第三方 layer 都放进去。这样结构清晰,方便管理。
2.5 首次构建前的检查清单:别急着跑
代码拉下来了,是不是可以开干了?别急。先过一遍检查清单。我每次搭建新环境,都会走一遍这个流程,确保万无一失。
| 检查项 | 说明 | 验证方法 |
|---|---|---|
| 磁盘空间 | 确保有足够空间 | df -h 查看剩余空间 |
| 网络连接 | 能访问源码仓库 | ping git.yoctoproject.org |
| 依赖包 | 所有必要包已安装 | 重新运行 apt-get install 命令,看是否还有未安装的 |
| Git 配置 | 用户名和邮箱已设置 | git config --list |
| Repo 工具 | Repo 可执行且版本正确 | repo --version |
| 源码完整性 | repo sync 成功完成 | 检查 poky 目录是否存在,且包含 meta、meta-poky 等子目录 |
| Python 版本 | Python 3.8 或更高 | python3 --version |
每一项都确认无误后,再往下走。别嫌麻烦。我曾经因为少装了一个 chrpath,编译到 80% 的时候报错,回头排查花了一个小时。你说亏不亏?
source oe-init-build-env。这个脚本会设置环境变量,并创建一个 build 目录。如果这一步没报错,恭喜你,环境搭建成功了!
好了,台子搭好了。下一章,咱们开始真正地构建第一个镜像。到时候你会发现,前面这些准备工作,都是值得的。