2、搭建Yocto开发环境:宿主机要求、安装必要软件包、配置Git与Repo、下载Poky参考发行版
好,咱们正式开始动手了。搭建开发环境这件事,说简单也简单,说复杂也复杂。我见过不少新手,一上来就急着编译,结果卡在各种依赖问题上,折腾半天才发现是环境没配好。所以这一章,咱们把基础打扎实。
2.1 宿主机要求:别让你的电脑拖后腿
Yocto 项目对宿主机是有要求的。说白了,它是个吃资源的家伙。我最早在一台 4GB 内存的笔记本上跑 Yocto,那感觉……嗯,就像在泥潭里跑步。编译到一半,系统直接卡死。
硬件最低要求:
- CPU:4 核以上,推荐 8 核。核心越多,并行编译越快。
- 内存:至少 8GB,推荐 16GB 或更高。低于 8GB 你会很痛苦。
- 硬盘:至少 100GB 空闲空间。一个完整的构建,轻松吃掉 50-80GB。
- 网络:稳定的宽带连接。第一次下载源码包,数据量在几个 GB 级别。
软件要求:
- 操作系统:Ubuntu 20.04/22.04 LTS 是我最推荐的。CentOS 7/8 也可以,但包管理方式不同。
- Shell:bash。别用 zsh 或 fish,虽然也能用,但 Yocto 的脚本对 bash 兼容性最好。
- Python:3.8 以上。Yocto 的 BitBake 工具链依赖 Python 3。
2.2 安装必要软件包:一步到位
在 Ubuntu 系统上,安装依赖包其实很简单。我习惯用一行命令搞定所有东西。你想想看,一个个手动装多麻烦。
sudo apt-get update
sudo apt-get 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
这里有个小坑。我曾经在 Ubuntu 18.04 上装这些包,发现 python3-jinja2 版本太旧,导致 BitBake 解析配方时报错。所以,尽量用 20.04 或更新的版本。
如果你用的是 CentOS/RHEL 系统,命令是这样的:
sudo yum install -y \
gawk make wget tar bzip2 gzip python3 unzip perl patch \
diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo \
chrpath socat perl-Data-Dumper perl-Text-ParseWords \
perl-Thread-Queue python3-pip xz which SDL-devel xterm
python3 --version 和 gcc --version,确认版本没问题。别嫌麻烦,这一步能省掉后面很多排查时间。
2.3 配置 Git 与 Repo:版本控制的基石
Yocto 项目用 Git 管理源码,用 Repo 管理多个 Git 仓库。Repo 是 Google 开发的一个工具,专门用来处理像 Yocto 这种多仓库项目。
配置 Git:
先设置你的用户名和邮箱。这是 Git 提交的基础信息。
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
我个人习惯再加几个配置:
git config --global core.editor vim
git config --global color.ui true
git config --global pull.rebase false
pull.rebase false 这个设置,嗯,是我踩过坑之后才加的。默认的 merge 行为有时候会产生多余的合并提交,看着乱。
安装 Repo:
Repo 其实就是一个 Python 脚本。安装方法很简单:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
然后把 ~/bin 加到 PATH 里。编辑 ~/.bashrc,加上这行:
export PATH=$PATH:~/bin
记得 source ~/.bashrc 让它生效。
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'。我曾经在客户现场折腾了半天,最后发现是网络问题。
2.4 下载 Poky 参考发行版:迈出第一步
Poky 是 Yocto 项目的参考发行版。它包含了 BitBake 构建工具、OpenEmbedded 核心元数据,以及一个完整的 Linux 系统构建示例。说白了,它就是 Yocto 的“官方样板间”。
下载 Poky 有两种方式:
方式一:用 Git 直接克隆(推荐)
这种方式最直接,也最灵活。你可以随时切换分支、查看历史。
git clone git://git.yoctoproject.org/poky
cd poky
git checkout -b my-dunfell origin/dunfell
这里我选了 dunfell 分支,它是 Yocto 3.1 的长期支持版本(LTS)。我个人建议新手从 LTS 版本开始,稳定,文档也多。
方式二:用 Repo 初始化(适合多仓库项目)
如果你需要同时管理多个层(比如 meta-openembedded、meta-raspberrypi 等),用 Repo 更方便。
mkdir my-yocto-project
cd my-yocto-project
repo init -u git://git.yoctoproject.org/poky -b dunfell
repo sync
repo sync 会下载所有相关的仓库。第一次同步会比较慢,取决于你的网速。
repo sync 就行,它会自动恢复。如果还不行,就删掉 .repo 目录重新 init。
下载完成后,你会看到这样的目录结构:
poky/
├── bitbake/ # BitBake 构建引擎
├── meta/ # OpenEmbedded 核心元数据
├── meta-poky/ # Poky 参考发行版配置
├── meta-yocto-bsp/ # 参考 BSP(板级支持包)
├── oe-init-build-env # 环境初始化脚本
└── README.hardware
这个结构,你以后会非常熟悉。每个目录都有自己的作用。比如 meta/ 里存放了各种配方文件(recipes),bitbake/ 是构建系统的核心。
最后,验证一下环境是否正常:
cd poky
source oe-init-build-env
bitbake --version
如果看到 BitBake 的版本号,恭喜你,环境搭建成功了!
嗯,到这里,你的开发环境就准备好了。下一章,我们会真正开始创建第一个层,写第一个配方。别急,基础打牢了,后面才跑得快。