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 开发环境搭建流程总览

下图展示了从宿主机准备到首次构建的完整环境搭建流程,帮助你建立全局视角:

Yocto 开发环境搭建流程 Yocto 开发环境搭建流程总览 硬件与 OS 检查 安装系统依赖包 配置 Git & Repo 配置镜像加速 repo sync 同步源码 首次构建测试 📌 关键说明: • 步骤 1-3 只需执行一次,后续构建可跳过。 • 步骤 4 的镜像配置建议在首次 repo sync 前完成。 • 首次构建(步骤 6)耗时最长,建议使用 sstate 缓存加速。

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 层的组织方式。