第二章:环境搭建——在Ubuntu 22.04上搭建Yocto开发环境

好,咱们正式开始动手了。这一章的目标很明确:在你的电脑上把Yocto环境跑起来。我见过太多新手卡在这一步,不是缺包就是版本不对,折腾半天连个bitbake都跑不起来。别急,跟着我的步骤来,半小时内搞定。

2.1 为什么选Ubuntu 22.04?

Yocto官方支持的Linux发行版里,Ubuntu一直是最省心的选择。22.04 LTS是长期支持版,到2027年才停止维护。我个人习惯用LTS版本,稳定,不会突然来个包不兼容。

你可能会问:「我用20.04行不行?」行,但有些依赖包的版本可能偏老,你得手动升级。说白了,22.04是目前最省事的起点。

2.2 安装必要依赖包

Yocto对系统依赖要求不少。我第一次搭建时漏装了两个包,编译到一半报错,气得我差点砸键盘。嗯,这里我直接给你整理好的清单。

打开终端,执行以下命令:

sudo apt update
sudo apt 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

这里有个坑:python3-pexpect这个包在Ubuntu 22.04的默认源里可能没有。我曾经遇到过,后来加了universe源才装上。如果你执行时提示找不到,先运行:

sudo add-apt-repository universe
sudo apt update

然后再装一遍。

注意: 不要用Python 2.x!Yocto从Kirkstone版本开始彻底移除了对Python 2的支持。如果你系统里还有Python 2,建议直接卸载,免得后面出幺蛾子。

2.3 配置Git

Yocto的源码管理全靠Git和Repo。Git的配置其实很简单,但很多人忽略了一点——用户名和邮箱必须配好,不然Repo拉代码时会报错。

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输出带颜色,方便看状态。第二个把默认编辑器改成vim——当然,你用nano也行,随你。

2.4 安装Repo工具

Repo是Google开发的工具,用来管理多个Git仓库。Yocto的源码分散在几十个仓库里,手动一个个clone会疯掉的。

安装Repo很简单:

mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

然后把~/bin加到PATH里:

echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

验证一下:

repo --version

如果输出版本号,说明装好了。

小技巧: 国内访问Google的域名有时会超时。如果你遇到curl: (7) Failed to connect,可以用清华的镜像源:curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo。我团队里的小伙伴都用这个,稳得很。

2.5 验证环境

装完别急着走,咱们验证一下。写个简单的测试:

python3 --version
gcc --version
git --version
repo --version

确保所有命令都能正常输出。如果哪个报错,回头检查一下安装步骤。

我还建议你跑一下Yocto自带的依赖检查脚本。不过这个脚本在源码里,得先拉一份Yocto代码。别担心,下一章我们会详细讲怎么拉代码。这里先提一嘴:

# 先拉一个最小的Yocto版本
mkdir yocto-test && cd yocto-test
repo init -u https://git.yoctoproject.org/poky -b kirkstone
repo sync
source oe-init-build-env

如果source oe-init-build-env没报错,恭喜你,环境搭好了!

2.6 避坑指南

最后,分享几个我踩过的坑:

  • 磁盘空间不够:Yocto编译一次至少需要50GB空闲空间。我建议你准备100GB以上。别问我怎么知道的——我第一次编译到一半磁盘满了,整个build目录废掉,重来。
  • 文件系统大小写敏感:Yocto要求源码放在大小写敏感的文件系统上。如果你用WSL或者虚拟机共享文件夹,记得检查。我曾经在macOS的APFS上吃过亏,后来老老实实换到ext4。
  • 网络代理:如果你在公司内网,记得配好HTTP代理。Yocto下载源码时会走wgetgit,这两个都得配。具体配置方法:export http_proxy=http://你的代理:端口,然后加到~/.bashrc里。

好了,环境搭建就到这里。下一章我们正式拉取Yocto源码,开始第一个编译任务。到时候你会发现,前面这些准备工作有多重要。