使用Yocto构建qemu上的Linux系统
使用Yocto构建qemu上的Linux系统
- 0. 前言
- 1. ubuntu环境
- 2. 源码下载
- 3. 编译
- 4. 运行
参考文章:Yocto官方手册
0. 前言
用了一段时间petalinux后,发现其是基于Yocto的二次开发工程,所以就找了一下教程,尝试实现直接开发Yocto项目。本文基于官方参考手册进行部署,版本是Kirkstone 4.0.30,暂时没有使用最新的Walnascar,减少初期部署的出错概率。
开发环境配置最好高一点,官方推荐是8G RAM + 90G 存储,实测基本为最低配置了,在此基础上越高越好,并最好有科学的网络环境,否则下载过程容易出错导致编译失败。
1. ubuntu环境
笔者使用的是ubuntu 24.04虚拟机,分配 8 核心,8G RAM,350G 存储,依赖包至少需要如下:
sudo apt install build-essential chrpath cpio debianutils diffstat file gawk gcc git iputils-ping libacl1 liblz4-tool locales python3 python3-git python3-jinja2 python3-pexpect python3-pip python3-subunit socat texinfo unzip wget xz-utils zstd
2. 源码下载
Yocto Project poky地址:https://github.com/yoctoproject/poky
笔者下载的是Kirkstone 4.0.30,长期支持的最新稳定版,如想下载其他开发版本,可自行检索不同版本的含义。
3. 编译
poky工程中已存在 bitbake 工具,所以可以直接 source 环境变量后进行编译,执行以下命令:
source oe-init-build-env build-arm
此时在源码目录下会创建 build-arm
目录,命令行也会跳转到该目录下,此时的命令行中已经预加载了 Yocto 工程的环境变量。修改此目录下的 conf/local.conf
配置文件:
然后使用以下命令进行构建:
bitbake core-image-sato
对比 core-image-minimal,core-image-sato 多了个图形化界面。编译过程中,会自动下载此架构的源码包和缓存文件,过程很慢,编译完成后,可以将此目录下的downloads目录和sstate-cache目录移动到其他位置,在下次编译同架构
工程时,修改local.conf文件中的资源路径,减少编译时间。
4. 运行
使用runqemu qumearm64
命令,即可运行编译好的镜像系统: