2. 开发环境搭建:Ubuntu系统准备、必要软件包安装、Git与Repo工具配置、磁盘空间规划
说实话,Yocto 项目对环境的要求不算低。我见过不少新手,一上来就急着编译,结果卡在某个依赖报错上,折腾半天才发现是系统包没装全。这一章,咱们就把地基打牢。
我个人习惯用 Ubuntu 20.04 LTS 或 22.04 LTS 作为宿主系统。为什么?因为 Yocto 官方测试最充分的就是这两个版本。你非要用 Debian 或 Fedora 也不是不行,但遇到奇怪的问题时,社区能给你的帮助会少很多。
2.1 Ubuntu 系统准备
首先,确保你的 Ubuntu 是最小化安装,不要带图形桌面。Yocto 编译时 CPU 跑满,图形界面除了抢资源,没什么用。
系统安装完成后,第一件事就是更新源:
sudo apt update
sudo apt upgrade -y
然后,检查你的系统版本:
lsb_release -a
输出应该类似:
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
2.2 必要软件包安装
Yocto 官方文档里列了一长串依赖包。我把它整理成两组,一组是「必须装」的,一组是「建议装」的。
必须安装的包:
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 libegl1-mesa libsdl1.2-dev \
pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool
建议安装的包(我踩过的坑):
sudo apt install -y locales libacl1-dev libssl-dev bc lrzss screen
为什么要装 screen?因为 Yocto 一次编译动辄一两个小时,网络断开或终端意外关闭,编译就白跑了。用 screen 或 tmux 可以让你随时恢复会话。
另外,locales 包也很关键。Yocto 的某些工具对 locale 设置很敏感。配置一下:
sudo locale-gen en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
2.3 Git 与 Repo 工具配置
Yocto 的源码管理依赖 Git 和 Repo。Repo 是 Google 开发的一个工具,用来管理多个 Git 仓库——Yocto 的 meta 层就是典型的「多仓库项目」。
安装 Git:
sudo apt install -y git
git --version
配置 Git 用户信息,这一步不能省:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
安装 Repo:
mkdir -p ~/.local/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.local/bin/repo
chmod a+x ~/.local/bin/repo
把 ~/.local/bin 加入 PATH:
echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc
source ~/.bashrc
验证安装:
repo --version
~/.bashrc 里加一行:export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'。
2.4 磁盘空间规划
这是最容易忽略的一环。Yocto 编译一次,产生的文件量远超你的想象。
我画了一张图,帮你理解 Yocto 的磁盘空间是怎么被吃掉的:
你看,最占空间的是「构建缓存层」和「编译输出层」。尤其是 tmp/deploy/ 和 tmp/work/,里面存了大量中间文件和临时文件。
我的磁盘规划建议:
| 分区/目录 | 建议大小 | 说明 |
|---|---|---|
/(根分区) |
50 GB | 系统本身 + 工具链 |
/home 或 /work |
200 GB+ | Yocto 源码 + 构建输出 |
swap |
8-16 GB | 内存不够时保命用 |
另外,我习惯把 downloads/ 和 sstate-cache/ 单独放在一个目录,然后在多个项目之间共享。这样每个项目就不用重复下载源码包了。配置方法很简单,在 local.conf 里加两行:
DL_DIR = "/work/yocto/downloads"
SSTATE_DIR = "/work/yocto/sstate-cache"
嗯,到这里,开发环境就基本准备好了。你可能会问:「为什么我装完这些还是编译失败?」别急,下一节我们会用一个小项目来验证环境是否真的配好了。不过那是后面的事,先把眼前这几步走稳。
本章核心要点:
- Ubuntu 20.04/22.04 LTS 是最稳妥的选择
- 依赖包必须装全,尤其是
screen和locales - Git 配置用户信息,Repo 用国内镜像源
- 磁盘至少留 150 GB,SSD 是硬性要求
- 共享
downloads/和sstate-cache/可以省很多时间