2. 搭建Yocto开发环境
大家好,我是你们的嵌入式Linux讲师。今天咱们正式开始第一课——搭建Yocto开发环境。
说实话,我见过太多人在环境搭建这一步就卡住了。有的装错包,有的磁盘空间不够,还有的Git配置不对导致拉不下来代码。嗯,这节课我就把这些坑一个个给你填平。
宿主机要求:别让你的电脑成为瓶颈
先说说硬件。Yocto编译起来可不是闹着玩的,它会把整个Linux系统从源码编译一遍。你想想看,这得多大的计算量?
| 硬件项 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 4核 | 8核以上 |
| 内存 | 8GB | 16GB以上 |
| 磁盘 | 100GB空闲 | 200GB以上SSD |
| 操作系统 | Ubuntu 20.04 LTS | Ubuntu 22.04 LTS |
操作系统我推荐Ubuntu 22.04 LTS。为什么?因为Yocto官方测试最充分的就是这个版本。你用其他发行版也行,但可能会遇到一些奇奇怪怪的问题,到时候排查起来很头疼。
安装必要软件包:一个都不能少
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 file locales libacl1
运行完这条命令,基本就齐活了。不过我个人习惯再装几个小工具:
sudo apt install vim tree htop neofetch
这些不是必须的,但调试时很有用。比如tree可以看目录结构,htop监控CPU和内存使用情况。
locale-gen en_US.UTF-8 确保locale设置正确。我曾经因为locale没配好,编译出来的镜像中文显示全是乱码。
获取Yocto源码:选对分支很重要
Yocto项目托管在GitHub上。我们用的是Poky,它是Yocto的参考发行版。说白了,就是官方给你搭好的一个样板工程。
先创建个工作目录:
mkdir ~/yocto
cd ~/yocto
然后克隆Poky仓库。这里要注意分支选择:
git clone git://git.yoctoproject.org/poky -b kirkstone
我为什么选kirkstone分支?因为它是LTS(长期支持)版本,稳定可靠。你想想看,做产品开发最怕什么?最怕版本迭代太快,今天学的明天就过时了。LTS版本至少维护两年,够你慢慢折腾。
其他常用分支:
- kirkstone(推荐):LTS版本,稳定
- dunfell:上一个LTS版本,有些老项目还在用
- master:开发分支,天天变,别用
配置Git与Repo:别小看这一步
Git配置其实很简单,但很多人会忘。Yocto提交代码时需要知道你是谁:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
嗯,这里有个坑。邮箱最好用GitHub上注册的那个,不然以后push代码时会报权限错误。我当初就因为这个折腾了半天。
再说说Repo工具。Repo是Google开发的一个工具,用来管理多个Git仓库。Yocto项目很大,包含上百个组件,用Repo可以一键拉取所有源码。
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
装好后验证一下:
repo --version
看到版本号就说明成功了。不过说实话,初学者用Poky就够了,Repo更多用在大型项目中。咱们先学会走,再学跑。
首次构建最小系统:见证奇迹的时刻
环境搭好了,源码也拉下来了,现在咱们来编译一个最小系统。这个系统叫core-image-minimal,说白了就是一个能启动的Linux内核加根文件系统,没有图形界面,没有多余软件包。
先初始化构建环境:
cd ~/yocto/poky
source oe-init-build-env build
这条命令会创建一个build目录,并切换到里面。你还会看到一些提示信息,告诉你配置文件在哪。
接下来配置目标平台。Yocto默认是qemux86-64,也就是在虚拟机里跑。咱们先用这个,省得折腾硬件:
cd conf
vim local.conf
找到MACHINE这一行,确认是:
MACHINE ??= "qemux86-64"
然后设置并行编译数。这个很关键,能大幅提升编译速度:
BB_NUMBER_THREADS = "8"
PARALLEL_MAKE = "-j 8"
8是线程数,一般设为CPU核心数的1.5倍。你如果是4核CPU,就设成6。
bitbake core-image-minimal
这条命令会触发整个编译流程。第一次编译大概需要1-3小时,取决于你的电脑性能。去泡杯咖啡,或者看看书,别干等着。
编译过程中你会看到很多日志输出。别慌,这是正常的。如果报错,仔细看错误信息,大部分问题都能在网上找到答案。
编译完成后,镜像文件在tmp/deploy/images/qemux86-64/目录下。你可以用QEMU启动它:
runqemu qemux86-64
看到登录提示符了吗?输入root,不需要密码,你就进入了这个最小系统。恭喜你,Yocto环境搭建成功了!
disk space错误,赶紧清理tmp目录。我曾经有一次编译到98%报磁盘满,气得我差点砸电脑。后来学乖了,编译前先用df -h检查磁盘空间。
本章知识体系
下面这张图帮你理清整个环境搭建的脉络:
这张图把整个流程串起来了。从宿主机准备到最终编译成功,每一步都有明确的输入输出。你照着这个流程走,基本不会出大问题。
好了,第一课就到这里。环境搭建是Yocto开发的基础,基础打牢了,后面学起来就轻松了。记住,遇到问题别慌,先看错误日志,再上网搜,最后问社区。这是嵌入式开发的铁律。
可可精品资料库