2. 开发环境搭建:宿主机要求与Yocto源码下载
搭建一个靠谱的开发环境,是Yocto项目的第一步。这一步要是没走稳,后面编译到一半报错,那才叫头疼。我个人习惯在开始一个新项目前,先把环境彻底清理一遍,确保没有旧版本的库文件干扰。
2.1 宿主机操作系统要求
Yocto官方推荐的是Ubuntu或Debian系的发行版。为什么?因为社区支持最完善,遇到问题搜一下,基本都有答案。我见过有人在Fedora上折腾了两天,最后还是切回了Ubuntu。
| 操作系统 | 推荐版本 | 我的评价 |
|---|---|---|
| Ubuntu | 20.04 LTS / 22.04 LTS | 最省心,社区资源最多 |
| Debian | 11 (Bullseye) / 12 (Bookworm) | 稳定,但包可能略旧 |
| 其他发行版 | — | 能跑,但需要自己踩坑 |
2.2 安装必要软件包
Yocto对宿主机有一堆依赖包。说白了,就是编译工具链、Python、Perl这些基础件。Ubuntu 22.04上,我一般这么装:
sudo apt update
sudo apt install gcc g++ make cmake \
python3 python3-pip python3-venv \
chrpath diffstat gawk wget git-core \
unzip texinfo libssl-dev libncurses-dev \
xz-utils zstd
嗯,这里要注意。不同Yocto版本对Python版本有要求。比如Yocto 4.0 (Kirkstone)要求Python 3.8以上。我曾在Python 3.6的老系统上硬跑,结果bitbake直接报语法错误。
python3 --version 和 gcc --version。确认版本没问题再往下走。我曾经因为gcc版本太新,导致某些旧内核模块编译失败。
2.3 配置Git与Repo
Yocto的源码管理依赖Git和Repo。Repo是Google搞的一个Python脚本,用来管理多个Git仓库。说白了,Yocto项目由上百个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 core.editor vim
git config --global color.ui auto
git config --global pull.rebase false
2.3.2 安装Repo工具
Repo其实就是一个Python脚本。安装方式很简单:
mkdir -p ~/.local/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.local/bin/repo
chmod a+x ~/.local/bin/repo
然后把 ~/.local/bin 加到PATH里。编辑 ~/.bashrc,加上:
export PATH=$PATH:~/.local/bin
记得 source ~/.bashrc 一下。
git clone 从Gerrit镜像拉取。如果你也遇到网络问题,可以试试国内镜像源。
2.4 下载Yocto源码
环境搭好了,现在开始拉代码。Yocto的源码托管在 git://git.yoctoproject.org/poky。Poky是Yocto的参考发行版,包含了BitBake、OpenEmbedded Core和一系列元数据。
2.4.1 使用Repo初始化
先创建一个工作目录,比如 ~/yocto:
mkdir ~/yocto
cd ~/yocto
repo init -u git://git.yoctoproject.org/poky -b kirkstone
repo sync
-b kirkstone 指定分支。Yocto每两年出一个LTS版本,Kirkstone是2022年的LTS。你想想看,选LTS版本的好处是稳定,社区支持周期长。
2.4.2 直接Git Clone
如果你不想用Repo,也可以直接Git Clone:
git clone git://git.yoctoproject.org/poky -b kirkstone
cd poky
git checkout kirkstone
但这样只拉了Poky核心仓库。如果你还需要其他层(比如meta-openembedded、meta-raspberrypi),就得手动一个个clone。我个人还是推荐用Repo,省心。
2.4.3 验证下载结果
下载完成后,看看目录结构:
cd ~/yocto/poky
ls -la
你应该能看到 bitbake/、meta/、meta-poky/、meta-yocto-bsp/ 这些目录。其中 meta/ 是OpenEmbedded Core,包含了最基础的配方和类。
2.5 环境搭建知识图谱
下面这张图,帮你理清整个环境搭建的脉络:
2.6 常见问题与避坑
环境搭建这块,我踩过的坑不少。挑几个典型的说说:
- Python版本冲突: 系统自带的Python可能是2.7,但Yocto需要Python 3。别慌,用
update-alternatives切换默认版本。 - 磁盘空间不足: Yocto一次完整构建,轻松吃掉50GB以上。我建议至少留100GB空闲空间。用
df -h先看看。 - 网络代理问题: 公司内网通常有代理。记得设置
http_proxy和https_proxy环境变量,不然git clone会卡住。 - Repo初始化失败: 如果报
fatal: cannot get https://gerrit.googlesource.com/git-repo,说明被墙了。可以用git clone git://git.omapzoom.org/repo替代。
setup.sh 脚本,把安装包、配置Git、下载源码这些步骤自动化。这样换机器或重装系统后,一行命令就能恢复环境。你也试试?
好了,环境搭好了,源码也拉下来了。下一步就是真正开始构建了。不过别急,先确认你的环境没问题。跑一下 bitbake --version,如果能看到版本号,说明一切就绪。