2. 搭建Yocto开发环境

大家好,我是你们的嵌入式Linux讲师。今天咱们正式开始第一课——搭建Yocto开发环境。

说实话,我见过太多人在环境搭建这一步就卡住了。有的装错包,有的磁盘空间不够,还有的Git配置不对导致拉不下来代码。嗯,这节课我就把这些坑一个个给你填平。

宿主机要求:别让你的电脑成为瓶颈

先说说硬件。Yocto编译起来可不是闹着玩的,它会把整个Linux系统从源码编译一遍。你想想看,这得多大的计算量?

硬件项 最低要求 推荐配置
CPU 4核 8核以上
内存 8GB 16GB以上
磁盘 100GB空闲 200GB以上SSD
操作系统 Ubuntu 20.04 LTS Ubuntu 22.04 LTS
⚠️ 重要提醒: 磁盘空间千万别省。我第一次用Yocto时只给了80GB,编译到一半就报磁盘满了。那叫一个崩溃啊,白白浪费了4个小时。

操作系统我推荐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开发环境搭建流程 宿主机准备 CPU/内存/磁盘检查 安装依赖包 apt install 必备工具 获取Yocto源码 git clone poky 配置Git与Repo 用户信息/Repo工具 初始化构建环境 source oe-init-build-env 配置local.conf MACHINE/并行编译 bitbake core-image-minimal → 编译最小系统 等待1-3小时,用 runqemu 启动验证

这张图把整个流程串起来了。从宿主机准备到最终编译成功,每一步都有明确的输入输出。你照着这个流程走,基本不会出大问题。

好了,第一课就到这里。环境搭建是Yocto开发的基础,基础打牢了,后面学起来就轻松了。记住,遇到问题别慌,先看错误日志,再上网搜,最后问社区。这是嵌入式开发的铁律。

可可精品资料库