2. Yocto 开发环境搭建:宿主机要求与基础配置
搭建 Yocto 开发环境是进入嵌入式 Linux 定制世界的第一步。一个稳定、符合要求的宿主机环境能避免大量编译过程中的“坑”。本章将详细说明宿主机软硬件要求、必要软件包安装、Git 与 Repo 工具配置,以及如何通过镜像加速源码获取。
2.1 宿主机硬件与操作系统要求
Yocto 构建过程对 CPU、内存和磁盘有较高要求,尤其是首次构建时需下载大量源码并编译整个工具链和根文件系统。建议使用以下配置:
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 双核 x86-64 处理器 | 4 核及以上,支持多线程 |
| 内存 | 4 GB RAM | 8 GB 或更高 |
| 磁盘空间 | 50 GB 空闲 | 120 GB 以上 SSD |
| 操作系统 | Ubuntu 20.04 LTS / Debian 11 | Ubuntu 22.04 LTS / Debian 12 |
| 文件系统 | ext4 | ext4(避免 NTFS/FAT) |
⚠️ 重要提示: 不要将 Yocto 构建目录放在 NTFS 或 FAT 格式的分区上,否则会导致符号链接和权限问题,引发构建失败。建议使用 ext4 或 btrfs。
2.2 安装必要软件包
Yocto 构建依赖大量系统工具和库。以下命令适用于 Ubuntu/Debian 系发行版,请根据你的系统版本选择对应的软件包组。
2.2.1 Ubuntu 22.04 / Debian 12 通用包
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 \
libegl1-mesa libsdl1.2-dev xterm python3-subunit \
mesa-common-dev zstd liblz4-tool file locales libacl1
2.2.2 额外工具(推荐安装)
sudo apt install -y \
vim tmux htop tree \
python3-venv python3-wheel \
libssl-dev libncurses5-dev \
bison flex
💡 小贴士: 如果使用 Ubuntu 20.04,请额外安装
python3-distutils 和 python3-setuptools,否则部分 Yocto 脚本可能报错。
2.3 配置 Git 与 Repo 工具
Yocto 项目使用 Git 管理源码,并通过 Google 的 repo 工具来管理多个 Git 仓库的协同工作。正确配置 Git 和 Repo 是后续同步源码的基础。
2.3.1 Git 全局配置
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global color.ui auto
git config --global core.editor vim
2.3.2 安装 Repo 工具
# 创建本地 bin 目录(如果不存在)
mkdir -p ~/.local/bin
# 下载 Repo 脚本
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.local/bin/repo
# 赋予执行权限
chmod a+x ~/.local/bin/repo
# 将 ~/.local/bin 加入 PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# 验证安装
repo --version
🔑 关键点: Repo 本身是一个 Python 脚本,它通过 manifest XML 文件定义多个 Git 仓库的拉取策略。Yocto 的
poky 仓库就使用 Repo 来管理 meta 层集合。
2.4 设置 Yocto 源码镜像加速
Yocto 构建需要从 GitHub、Yocto 官方服务器、各种上游项目仓库下载大量源码包。在国内网络环境下,直接下载速度极慢且容易中断。配置镜像加速是提升构建效率的关键步骤。
2.4.1 配置 PREMIRROR 与 SSTATE_MIRROR
Yocto 提供了 PREMIRROR 和 SSTATE_MIRROR 机制,允许你指定本地或内网镜像服务器。以下是一个典型的 local.conf 配置片段:
# 源码包预镜像(Source Package Pre-mirror)
PREMIRRORS:prepend = "\
git://.*/.* http://mirrors.ustc.edu.cn/yocto/sources/ \n \
ftp://.*/.* http://mirrors.ustc.edu.cn/yocto/sources/ \n \
http://.*/.* http://mirrors.ustc.edu.cn/yocto/sources/ \n \
https://.*/.* http://mirrors.ustc.edu.cn/yocto/sources/ \n"
# 共享状态缓存镜像(Shared State Cache Mirror)
SSTATE_MIRRORS:prepend = "\
file://.* http://mirrors.ustc.edu.cn/yocto/sstate/PATH \n"
2.4.2 国内常用 Yocto 镜像源
| 镜像站 | 源码镜像地址 | sstate 缓存地址 |
|---|---|---|
| 中科大 USTC | http://mirrors.ustc.edu.cn/yocto/sources/ |
http://mirrors.ustc.edu.cn/yocto/sstate/ |
| 清华 TUNA | https://mirrors.tuna.tsinghua.edu.cn/yocto/sources/ |
https://mirrors.tuna.tsinghua.edu.cn/yocto/sstate/ |
| 阿里云 | https://mirrors.aliyun.com/yocto/sources/ |
https://mirrors.aliyun.com/yocto/sstate/ |
2.4.3 使用 DL_DIR 本地缓存
除了镜像,你还可以设置 DL_DIR 指向一个共享的本地下载目录,避免每次构建重复下载:
# 在 local.conf 中设置
DL_DIR = "/opt/yocto/downloads"
⚠️ 注意: 如果使用公司内网镜像,请确保镜像服务器与宿主机网络连通,且镜像内容与 Yocto 版本匹配。不匹配的 sstate 缓存可能导致构建失败。
2.5 开发环境搭建流程总览
下图展示了从宿主机准备到首次构建的完整环境搭建流程,帮助你建立全局视角:
2.6 环境验证清单
完成上述配置后,建议执行以下命令验证环境是否就绪:
# 1. 验证 Git 配置
git config --list | grep user
# 2. 验证 Repo 可用
repo --version
# 3. 验证 Python 版本(需 3.8+)
python3 --version
# 4. 验证必要工具
which gawk wget git unzip texinfo gcc make
# 5. 测试镜像连通性
curl -I http://mirrors.ustc.edu.cn/yocto/sources/
✅ 验证通过标准: 所有命令返回正常版本号或路径,镜像 URL 返回 HTTP 200 状态码。如果某一步失败,请返回对应小节检查配置。
至此,你的宿主机已经准备好迎接 Yocto 源码同步和首次构建。下一阶段我们将深入 Poky 源码结构,理解 meta 层的组织方式。