第二章:Yocto开发环境搭建
好,咱们正式开始动手了。搭建开发环境这件事,说简单也简单,说坑也多。我见过不少新手,一上来就急着编译,结果卡在依赖问题上半天。其实,把环境收拾利索了,后面能省一大半时间。
2.1 宿主机要求
先说说宿主机。Yocto对硬件和系统都有要求,别拿个老古董来跑,会哭的。
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 双核 x86_64 | 4核以上 |
| 内存 | 4GB | 8GB+ |
| 磁盘 | 50GB空闲 | 120GB+ SSD |
| 操作系统 | Ubuntu 20.04 / CentOS 7 | Ubuntu 22.04 LTS |
为什么会这样?因为Yocto在构建过程中会创建大量符号链接和临时文件,跨文件系统的性能损耗非常明显。我在项目中吃过这个亏,整整多等了两个小时。
2.2 安装必要软件包
系统装好了,接下来装依赖。不同发行版的包名略有差异,我以Ubuntu为例。
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 pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool
嗯,这里要注意。不同Yocto版本对Python版本有要求。比如Yocto 4.0 (Kirkstone) 要求Python 3.8以上。我建议你装完先跑一下 python3 --version 确认一下。
2.3 配置Git与Repo
Git是Yocto的命根子。几乎所有代码都通过Git管理。先配好你的身份信息:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global color.ui auto
Repo工具是Google开发的,用来管理多Git仓库。Yocto用它来拉取Poky及其所有子模块。
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH
记得把 export PATH=~/bin:$PATH 加到你的 ~/.bashrc 里,不然每次开终端都要重新设置。我刚开始就老忘,后来干脆写了个脚本一键初始化。
2.4 下载Poky源码
Poky是Yocto的参考发行版,也是我们学习的起点。用Repo来拉取:
mkdir yocto-project
cd yocto-project
repo init -u https://git.yoctoproject.org/poky -b kirkstone
repo sync
这个过程取决于你的网速。我第一次拉的时候等了快半小时,中间还断了一次。别急,断了就重新 repo sync,它会断点续传。
2.5 首次构建最小系统
源码到手了,咱们来编译一个最小系统。先设置环境变量:
cd poky
source oe-init-build-env build
这个脚本会帮你创建 build 目录,并设置好所有环境变量。你想想看,如果没有这个脚本,光设置几十个环境变量就够你受的。
然后修改 conf/local.conf,把目标机器设成qemu模拟器:
MACHINE ?= "qemux86-64"
最后,开始构建:
bitbake core-image-minimal
第一次构建会下载所有源码包并编译工具链,时间比较长。在我的4核8G机器上,大概需要40分钟。你可以去泡杯咖啡,或者看看文档。
screen 或 tmux 来跑构建任务,这样即使断网也不会中断。
构建完成后,你会得到一个完整的根文件系统镜像和内核。用QEMU启动看看:
runqemu qemux86-64
看到登录提示符了吗?恭喜你,你的Yocto环境搭建成功了。
本章知识体系
下面这张图帮你理清整个搭建流程的逻辑关系:
搭建环境是Yocto学习的第一道坎。跨过去,后面就顺了。记住,耐心是关键,第一次构建慢是正常的。