2、环境准备:Ubuntu系统安装与配置、必要软件包安装、Git与Repo工具配置、磁盘空间规划
好,咱们正式开始动手了。这一章我带你搞定开发环境的基础——Ubuntu系统。说白了,Yocto的整个编译流程都跑在Linux上,Windows用户别挣扎了,老老实实装个Ubuntu双系统或者虚拟机吧。我个人习惯用Ubuntu 20.04 LTS,稳定、社区支持好,踩过的坑网上基本都有答案。
2.1 Ubuntu系统安装与配置
先说说版本选择。Yocto官方推荐Ubuntu 20.04 LTS或22.04 LTS。我建议你用20.04,为什么?因为我在项目中遇到过,22.04的某些软件包版本太新,反而和Yocto的旧版工具链不兼容,折腾半天。当然,如果你非要尝鲜,记得把系统源换成国内的,比如阿里云、清华源,不然下载速度会让你怀疑人生。
安装完成后,第一件事就是更新系统。打开终端,跑一遍:
sudo apt update
sudo apt upgrade -y
嗯,这里要注意,千万别跳过这一步。我见过有人直接跳过,结果编译到一半报错,查了半天发现是系统库版本太老。更新完系统,顺手装个SSH服务,方便远程操作:
sudo apt install openssh-server -y
2.2 必要软件包安装
Yocto对宿主机的软件包有硬性要求。说白了,它需要一堆编译工具、库和脚本环境。你不需要记住所有包名,但得知道怎么装。官方文档里有个列表,我直接给你整理成命令,复制粘贴就行:
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 xterm python3-subunit mesa-common-dev zstd liblz4-tool -y
这里有个坑,我踩过。如果你用的是Ubuntu 22.04,记得额外装一个python3-venv,不然后面跑某些脚本会报错。命令如下:
sudo apt install python3-venv -y
装完这些,你可以验证一下。比如看看gcc版本:
gcc --version
输出里能看到版本号,比如9.4.0,那就对了。
2.3 Git与Repo工具配置
Git是Yocto的命根子。所有代码、层、补丁都通过Git管理。配置Git很简单,但有两件事必须做:设置用户名和邮箱,不然提交时会报错。
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
我个人习惯再加几个配置,让Git用起来更顺手:
git config --global core.editor vim
git config --global color.ui true
git config --global pull.rebase false
接下来是Repo工具。Repo是Google开发的,专门用来管理多Git仓库的项目。Yocto的源码就是由几十个Git仓库组成的,手动一个个clone会疯掉。安装Repo很简单:
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,让配置生效。验证一下:
repo --version
如果看到版本号,比如v2.45,那就搞定了。
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'。我当年第一次配环境时,没设镜像,下载Repo花了半小时,后来学乖了。
2.4 磁盘空间规划
磁盘空间是Yocto新手最容易忽略的问题。我刚开始做Yocto时,给虚拟机分了80GB,结果编译到一半磁盘满了,整个环境崩了,气得我差点砸电脑。后来我总结了一套规划:
| 项目 | 建议空间 | 说明 |
|---|---|---|
| Ubuntu系统 | 40GB | 系统本身、软件包、临时文件 |
| Yocto源码 | 20GB | poky、meta层、BSP等 |
| 编译缓存(sstate-cache) | 30GB | 加速二次编译,建议单独分区 |
| 下载源(downloads) | 20GB | 所有软件包的源码包 |
| 构建输出(tmp) | 50GB | 编译中间文件、镜像文件 |
| 预留空间 | 40GB | 防止磁盘写满,留有余地 |
加起来至少200GB。如果你用SSD,那更好,编译速度能快不少。我建议把sstate-cache和downloads放在单独的目录,甚至单独的分区。这样万一系统崩了,重装后还能复用缓存,不用重新下载所有包。
举个例子,我在/opt下建了个yocto目录,专门放这些东西:
sudo mkdir -p /opt/yocto
sudo chown -R $USER:$USER /opt/yocto
mkdir -p /opt/yocto/sstate-cache
mkdir -p /opt/yocto/downloads
然后在Yocto的local.conf里指定路径:
SSTATE_DIR = "/opt/yocto/sstate-cache"
DL_DIR = "/opt/yocto/downloads"
这样配置后,编译时缓存和下载源都集中管理,清爽多了。
好了,环境准备就这些。你按这个流程走一遍,基本不会出大问题。下一章我们开始拉取Yocto源码,真正进入实战环节。