2、搭建Yocto开发环境:宿主机要求与源码下载
说实话,搭建Yocto环境这件事,看着简单,但坑真不少。我见过太多新手一上来就卡在环境配置上,折腾半天连个bitbake都跑不起来。今天咱们就把这事彻底捋清楚。
2.1 宿主机要求:Ubuntu还是Debian?
Yocto官方推荐的是Ubuntu LTS版本。我个人习惯用Ubuntu 20.04或22.04,这两个版本我都在项目中验证过,兼容性最好。
为什么推荐Ubuntu?说白了,社区支持最全。你遇到问题,Google一搜,八成能找到答案。Debian也行,但有些包名不一样,新手容易懵。
硬件要求:
- CPU:4核以上(我建议8核,编译时间能省一半)
- 内存:至少8GB(16GB更稳,我遇到过内存不够导致编译崩溃的情况)
- 硬盘:至少100GB空闲空间(SSD最好,机械硬盘编译一次能让你等到怀疑人生)
- 系统:Ubuntu 20.04 LTS 或 22.04 LTS(64位)
注意:千万别用虚拟机跑Yocto,除非你给虚拟机分配了足够资源。我曾经在4GB内存的虚拟机上编译,等了6个小时,最后OOM崩溃了...嗯,从那以后我都是物理机或者高性能云服务器。
2.2 安装必要软件包
Yocto对系统依赖挺多的。你想想看,它要交叉编译整个Linux系统,缺一个工具链都不行。
先更新包管理器:
sudo apt update
sudo apt upgrade -y
然后安装核心依赖:
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版本需要的包略有差异。我建议你装完后跑一下Yocto自带的检查脚本:
# 进入poky目录后执行
source oe-init-build-env
# 系统会自动检查缺失的依赖
我的经验:如果你用的是Ubuntu 22.04,记得额外安装python3-venv,否则后面跑一些Python脚本会报错。这个坑我踩过,当时排查了半天才发现是虚拟环境的问题。
2.3 配置Git与Repo
Git是Yocto的命根子。所有源码管理都靠它。配置其实很简单,但有些细节不注意,后面会出幺蛾子。
先设置你的身份信息:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
然后配置一些实用参数:
git config --global color.ui auto
git config --global core.editor vim # 或者你喜欢的编辑器
git config --global http.postBuffer 524288000 # 解决大文件推送问题
Repo工具是Google开发的,用来管理多个Git仓库。Yocto的源码结构很复杂,用Repo能一次性拉取所有子项目。
安装Repo:
mkdir -p ~/.local/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.local/bin/repo
chmod a+x ~/.local/bin/repo
export PATH=$PATH:~/.local/bin
记得把~/.local/bin加到.bashrc里,不然每次开终端都要重新export。
注意:国内网络环境下载Repo可能会很慢。我建议你提前准备好代理,或者用国内镜像源。否则光下载Repo就能卡半天。
2.4 下载Yocto源码(Poky)
Poky是Yocto的参考发行版,也是我们最常用的起点。下载方式有两种,我分别说说。
方式一:直接用Git克隆
这种方式适合只想用Poky,不涉及其他层的情况:
git clone git://git.yoctoproject.org/poky
cd poky
git checkout -b my-branch <tag-name> # 切换到特定版本
方式二:用Repo拉取完整源码
这种方式适合需要同时管理多个层(meta层)的项目。我项目中用的就是这种方式:
mkdir yocto-project
cd yocto-project
repo init -u git://git.yoctoproject.org/poky -b <branch-name>
repo sync
这里<branch-name>可以填kirkstone、dunfell等稳定分支。我个人推荐新手用kirkstone,它是LTS版本,支持周期长,社区活跃。
版本选择建议:
| 版本代号 | Yocto版本 | 推荐场景 |
|---|---|---|
| kirkstone | 4.0.x | 新手首选,LTS支持到2026年 |
| dunfell | 3.1.x | 老项目维护,LTS已结束 |
| mickledore | 4.2.x | 尝鲜新特性,非LTS |
下载完成后,验证一下是否成功:
cd poky
source oe-init-build-env
# 如果看到类似 "You had no conf/local.conf file. This configuration file has therefore been..." 的提示,说明环境搭建成功
避坑指南:我曾经在下载源码时遇到网络超时,原因是公司防火墙限制了Git端口。解决办法是改用HTTPS协议:git clone https://git.yoctoproject.org/poky。如果还不行,试试国内镜像源,比如清华大学的镜像。
好了,到这里你的Yocto开发环境就搭好了。下一步就是创建你的第一个镜像,咱们下一章见。