2、开发环境搭建:Linux主机准备、安装必要软件包、下载Yocto源码、配置Git和Repo
好,咱们正式开始动手了。这一章我带你把开发环境搭起来。说实话,很多新手在Yocto上栽跟头,一半是因为环境没配好。我当年第一次搞Yocto,光装依赖包就折腾了两天——嗯,那时候还不懂什么叫“最小系统”。
2.1 Linux主机准备
Yocto对宿主机的操作系统有要求。我个人习惯用Ubuntu 20.04 LTS或22.04 LTS,这两个版本社区支持最好,踩坑也最少。你问能不能用CentOS?可以,但我不建议——包管理器的差异会让你多花不少时间。
- CPU:4核以上(8核更佳)
- 内存:至少8GB(16GB是舒适区)
- 磁盘:至少100GB空闲空间(SSD优先)
- 网络:稳定的宽带连接(第一次构建要下载大量源码)
为什么磁盘要这么大?因为Yocto构建过程中会下载源码包、生成中间文件、最终产出镜像。我见过有人用40GB的虚拟机,结果构建到一半磁盘满了——那叫一个尴尬。
2.2 安装必要软件包
Yocto依赖一堆工具链。别怕,一条命令搞定。这是Ubuntu/Debian系的安装命令:
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 xterm python3-subunit mesa-common-dev zstd liblz4-tool
如果你用的是Ubuntu 22.04,还需要额外装一个:
sudo apt-get install python3-venv
我曾经帮一个同事排查问题,他死活编译不过,最后发现是没装chrpath。这种小工具平时不起眼,但Yocto构建过程中会调用它们。所以,老老实实把列表里的包都装上,别偷懒。
2.3 下载Yocto源码
Yocto的源码托管在Git仓库里。我们用的是Poky——它是Yocto的参考发行版,也是大多数嵌入式项目的起点。
先创建一个工作目录:
mkdir ~/yocto
cd ~/yocto
然后克隆Poky仓库。我个人习惯用特定版本分支,而不是master——因为master可能不稳定。比如我们要用Kirkstone(4.0 LTS):
git clone git://git.yoctoproject.org/poky -b kirkstone
这个过程取决于你的网速。我第一次下载时等了快半小时,心里直打鼓。别急,这是正常的。
下载完成后,你会看到poky目录下有一堆子目录:
meta/— 核心元数据meta-poky/— Poky发行版配置meta-yocto-bsp/— 参考板级支持包scripts/— 各种辅助脚本bitbake/— BitBake构建引擎
2.4 配置Git和Repo
Yocto项目使用Git管理源码,而Repo工具用于管理多个Git仓库。虽然小项目只用Git就够了,但一旦涉及多个层(meta层),Repo就派上用场了。
2.4.1 配置Git
先设置你的Git全局信息:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
然后推荐设置一些有用的别名:
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"
我个人还喜欢设置默认的推送行为:
git config --global push.default simple
这样推送时只会推送当前分支,不会误推其他分支。嗯,这个习惯救过我一次——有一次我差点把实验分支推到生产仓库。
2.4.2 安装和配置Repo
Repo是Google开发的工具,用于管理多Git仓库。安装很简单:
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:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
验证安装:
repo --version
export http_proxy=http://你的代理地址:端口
export https_proxy=http://你的代理地址:端口
Repo的典型用法是配合manifest文件。比如你要构建一个包含多个层的项目,可以这样初始化:
repo init -u git://your-manifest-repo/manifest.git -b branch-name
repo sync
不过对于咱们这个课程,大部分时候直接用Git操作poky就够了。Repo更多用在大型团队协作场景中。
2.5 验证环境
环境搭好了,咱们验证一下。进入poky目录,试试能不能初始化构建环境:
cd ~/yocto/poky
source oe-init-build-env
如果看到类似这样的输出,说明环境没问题:
You had no conf/local.conf file. This configuration file has therefore been
created for you with some default values. You may wish to edit it to use a
different MACHINE (target hardware) or enable parallel build options.
The Yocto Project has extensive documentation about OE including a reference
manual which can be found at:
http://yoctoproject.org/documentation
source oe-init-build-env才能使用BitBake命令。我习惯在.bashrc里加一个别名:
alias yocto='cd ~/yocto/poky && source oe-init-build-env build'
这样每次输入yocto就自动进入构建环境了。
2.6 常见问题与避坑
最后,分享几个我踩过的坑:
- 磁盘空间不足: 构建一次Yocto至少需要50GB。我建议你预留100GB以上。可以用
df -h检查剩余空间。 - 网络超时: 国内用户下载Yocto源码可能会很慢。可以考虑使用国内镜像源,或者配置代理。
- Python版本不匹配: Yocto Kirkstone要求Python 3.8以上。用
python3 --version检查一下。 - 权限问题: 不要在
/root或/opt等系统目录下构建Yocto。用普通用户在自己的home目录下操作。
我曾经有一次在/tmp目录下构建,结果系统重启后所有文件都没了——嗯,那次我学会了什么叫“临时目录”。
好了,环境搭好了,下一章咱们就开始第一次构建。你会看到BitBake是怎么工作的,也会第一次感受到Yocto的“慢”——但别急,慢工出细活嘛。