3. 开发环境准备:Ubuntu系统安装、必要软件包安装、Git配置、Repo工具安装、磁盘空间规划
说实话,很多人在Yocto项目上栽跟头,不是因为技术多难,而是开发环境没搭好就开始干。我见过太多同事,装到一半发现磁盘不够,或者Git没配好导致拉代码失败,折腾半天心态就崩了。这一章,咱们就把地基打牢。
3.1 Ubuntu系统安装
Yocto对宿主机的操作系统有要求。我个人习惯用 Ubuntu 20.04 LTS 或 22.04 LTS,这两个版本社区支持最好,遇到问题也容易搜到解决方案。
推荐版本:Ubuntu 22.04 LTS (Jammy Jellyfish)
原因:Python 3.10 原生支持,GCC 11 兼容性好,glibc 版本够新。
安装时注意几点:
- 分区方案:建议手动分区。根分区(/)给 50GB 足够,重点是把
/home或专门的数据分区留大,因为Yocto构建产物会吃掉大量空间。 - 交换分区:如果你的内存小于 16GB,建议给 8GB 交换空间。Yocto编译时内存吃紧,交换分区能救命。
- 不要装虚拟机:如果你用VMware或VirtualBox,记得给虚拟机分配至少 4 核 CPU 和 8GB 内存。我曾在虚拟机里编译,结果跑了 6 个小时还没完——后来发现是磁盘IO瓶颈。
避坑:我曾经在 WSL2 上尝试构建Rockchip镜像,结果文件系统权限和符号链接问题搞得我焦头烂额。建议直接用原生Linux或完整虚拟机,别在WSL上折腾。
3.2 必要软件包安装
Yocto官方文档列了一堆依赖包,但实际项目中,我总结了一个精简版清单。你直接复制下面这条命令就行:
sudo apt update
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 pylint3 xterm python3-subunit \
mesa-common-dev zstd liblz4-tool file locales libacl1
装完之后,记得检查一下Python版本:
python3 --version
# 输出应该是 Python 3.8 以上
小技巧:如果你用的是Ubuntu 20.04,默认Python是3.8,够用。但22.04自带3.10,体验更好。我建议直接上22.04,省得后面折腾Python版本问题。
3.3 Git配置
Git是Yocto的命脉。拉取代码、管理补丁、提交修改,全得靠它。我每次搭新环境,第一件事就是配Git。
先设置全局用户信息:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
然后配置一些实用参数:
git config --global core.editor vim
git config --global pull.rebase false
git config --global init.defaultBranch main
为什么要配这些?
pull.rebase false:默认用merge方式拉取,避免新手搞乱历史。init.defaultBranch main:现在GitHub默认分支都改main了,保持一致。
重点:如果你在公司内网,记得配代理。Yocto的源码仓库在国外,不配代理拉取速度会让你怀疑人生。
git config --global http.proxy http://你的代理地址:端口
git config --global https.proxy http://你的代理地址:端口
3.4 Repo工具安装
Repo是Google开发的工具,专门用来管理多Git仓库的项目。Yocto的Rockchip BSP就是典型的多仓库结构——kernel、u-boot、build配置、硬件驱动各占一个仓库。
安装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=$PATH:~/bin' >> ~/.bashrc
source ~/.bashrc
验证安装:
repo --version
# 正常会显示repo版本号和Python版本
注意:Repo依赖Python 3。如果你系统里同时有Python 2和Python 3,确保 python 命令指向Python 3。我遇到过因为默认Python是2.7,Repo直接报错的情况。
3.5 磁盘空间规划
这是最容易忽略的一环。Yocto构建一次Rockchip镜像,少说吃掉 50GB,多则 100GB+。我见过有人把项目放根目录,编译到一半磁盘满了,进退两难。
我的建议是:
- 单独挂载一个分区给Yocto项目用,比如
/data/yocto,至少 200GB。 - 构建目录和下载目录分开。Yocto默认把下载的源码包放
downloads/,构建产物放build/。这两个目录可以软链接到不同磁盘。
具体做法:
# 假设你的大磁盘挂载在 /data
mkdir -p /data/yocto/downloads
mkdir -p /data/yocto/build
# 在项目目录里创建软链接
cd ~/rockchip-yocto
ln -s /data/yocto/downloads downloads
ln -s /data/yocto/build build
这样做的好处是:
- 下载的源码包可以复用,多个项目共享同一份
downloads。 - 构建产物单独放,方便清理。
经验之谈:我习惯把 downloads 目录放在SSD上,build 目录放HDD。因为下载包主要是读操作,SSD快;构建产物写操作多,HDD容量大。这样搭配性价比最高。
3.6 环境验证清单
在正式开始之前,我建议你跑一遍这个检查清单,确保环境没问题:
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| Ubuntu版本 | lsb_release -a |
20.04 或 22.04 |
| Python版本 | python3 --version |
≥ 3.8 |
| Git版本 | git --version |
≥ 2.25 |
| Repo版本 | repo --version |
显示版本号 |
| 磁盘空间 | df -h /data/yocto |
可用 ≥ 100GB |
| 必要软件包 | dpkg -l | grep gawk |
显示已安装 |
嗯,到这里,你的开发环境就准备好了。别急着往下走,先确认每一项都通过。我当年第一次搭环境时,漏了 chrpath 这个包,结果编译到一半报错,排查了半天才发现。这种坑,踩一次就够了。
一句话总结:环境准备花 1 小时,后面省 10 小时。别图快,慢慢来。