2. 开发环境搭建:宿主机要求与首次构建
说实话,做嵌入式开发,环境搭不好,后面全是坑。我见过太多人花了一周时间折腾Yocto,结果卡在依赖包上。这一章,咱们就把地基打牢。
2.1 宿主机要求
Yocto对宿主机有一定要求。别想着用Windows或者Mac直接跑,虽然能折腾,但那是给自己找麻烦。我个人习惯用Ubuntu LTS版本,稳定,社区支持好。
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Ubuntu 20.04 / Debian 11 | Ubuntu 22.04 LTS |
| CPU | 4核 | 8核及以上 |
| 内存 | 8GB | 16GB+ |
| 磁盘空间 | 100GB空闲 | 250GB+ SSD |
| 文件系统 | ext4 | ext4 (不要用NTFS) |
2.2 安装必要软件包
Yocto构建需要一堆工具链。别怕,一条命令搞定。我建议先更新一下系统包索引:
sudo apt update
sudo apt upgrade -y
然后安装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 xterm python3-subunit \
mesa-common-dev zstd liblz4-tool
嗯,这里要注意。不同Ubuntu版本需要的包略有差异。如果你用的是Ubuntu 22.04,上面这个列表基本够用。如果是Debian,可能还需要额外装一个python3-distutils。
2.3 配置Git和Repo
Yocto用Git管理源码,用Repo管理多个Git仓库。说白了,Repo就是Google写的一个Python脚本,帮你批量操作多个Git仓库。
先配Git,这是基本功:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global color.ui auto
然后装Repo工具。我个人喜欢把它放在~/bin目录下:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc
验证一下是否装好了:
repo --version
如果能看到版本号,说明搞定了。
2.4 下载Yocto源码
Yocto的源码通过Repo来拉取。我们先用Poky作为参考发行版。Poky说白了就是Yocto的官方示例,包含了BitBake构建系统和元数据。
创建一个工作目录,我习惯叫yocto-workspace:
mkdir ~/yocto-workspace
cd ~/yocto-workspace
然后初始化Repo并同步源码。这里以Yocto 4.0 (Kirkstone)为例,这个版本比较稳定,适合学习:
repo init -u https://git.yoctoproject.org/poky -b kirkstone
repo sync
这个过程取决于你的网速。我第一次拉的时候等了将近半小时。别急,去喝杯咖啡。
2.5 首次构建最小系统
源码拉下来了,咱们先构建一个最小系统。目标就是跑通整个流程,验证环境没问题。
先设置环境变量。Yocto提供了一个脚本,帮你搞定一切:
cd ~/yocto-workspace/poky
source oe-init-build-env build
执行完这个命令,你会自动进入build目录。这个脚本做了三件事:
- 设置BitBake和OpenEmbedded的环境变量
- 创建
build/conf目录,生成默认配置文件 - 把当前shell切换到构建目录
然后看一下生成的配置文件:
ls conf/
# 你会看到 bblayers.conf 和 local.conf
对于首次构建,local.conf里有个关键参数要改。用你喜欢的编辑器打开它:
nano conf/local.conf
找到MACHINE变量,默认是qemux86-64。如果你想为真实硬件构建,比如树莓派或BeagleBone,就改成对应的机器名。咱们先保持默认,用QEMU模拟器跑:
MACHINE ??= "qemux86-64"
还有一个参数我建议改一下——并行编译数。根据你的CPU核心数来设:
BB_NUMBER_THREADS = "8"
PARALLEL_MAKE = "-j 8"
好了,开始构建。目标选core-image-minimal,这是Yocto提供的最小系统镜像:
bitbake core-image-minimal
第一次构建会下载所有依赖的源码包,编译交叉工具链,然后构建整个系统。这个过程……嗯,第一次会比较慢。在我的8核机器上,大概需要40分钟到1小时。如果你用4核,可能要2小时以上。
local.conf里添加国内的镜像源。具体配置方法,后面章节会详细讲。
构建完成后,你会看到类似这样的输出:
NOTE: Tasks summary: Attempted 2345 tasks of which 0 didn't need to be rerun, all succeeded
生成的镜像在tmp/deploy/images/qemux86-64/目录下。你可以用QEMU启动它:
runqemu qemux86-64
如果看到QEMU窗口里出现了Linux登录提示符,恭喜你,环境搭建成功了!
downloads目录。下次换机器或者重新构建时,直接拷贝过去,能省掉大量下载时间。这个目录默认在build/downloads下。
2.6 本章知识结构
下面这张图帮你理清整个开发环境的搭建流程:
这张图把整个流程串起来了。从宿主机准备开始,一步步走到首次构建成功。你跟着这个流程走,基本不会出大问题。