因为工作中会用到一些嵌入式linux相关的知识,所以开始学一学。
Yocto 是 Linux基金会旗下的用于构建针对嵌入式设备Linux的一整套工具。
也就是通过 Yocto 我们可以创建自已的linux系统给自己的嵌入式设备使用,可以定制裁剪所需要的模块,可以把自己写的应用打包进去。
假如我想开发一个智能硬件设备,我就可以事先根据设备的硬件信息构建一个linux系统。这样在开发的时候就不用太考虑对硬件的底层操作了,可以像开发普通的linux程序那样开发了。
今天这篇讲一下 Yocto 的 hello world ,从头构建一个可以在qemu虚拟机里跑的 linux 系统。
构建出来的系统叫 Poky 是 Yocto 项目的参考系统,可以以这个为模板修改创建出自己的系统。
原文在这里:
https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html
首先要准备一个linux环境,主流的发行版都可以,我的电脑装的是 Ubuntu 20.04。所以下面就只写ubuntu下的操作。
安装必要的包:
$ 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
git 下载 Poky 源码
$ git clone git://git.yoctoproject.org/poky
查看所有的分支:
$ cd poky
$ git branch -a
会显示一大堆的分支,在这个例子里要切换到 honister
分支:
$ git checkout -t origin/honister -b my-honister
$ git pull
构建镜像
-
初始化构建环境:
$ cd poky $ source oe-init-build-env
-
检查本地配置文件:
运行上面的命令后,会进入build/conf
文件夹,里面有一个local.conf
文件,这个文件包含了很多构建镜像相关的配置,比如若没有指定构建的目标机器,默认的构建镜像是qemux86
,其他的一些配置包括使用的包管理工具是什么之类的,因为我也是初学,就不介绍了。 -
开始构建:
$ bitbake core-image-sato
整个构建过程会花大概一两个小时,如果你的网络不好可能会花更多的时间,在构建过程中,它会下载很多软件包。构建完后会占用几十G硬盘空间,包括各种下载和生成的文件。
-
用 QEMU 运行构建出来的镜像
$ runqemu qemux86-64
运行时会弹出一个 QEMU 的窗口,就像电脑开机一样,先是划过一片字符,之后是启动画面,最后进入系统界面。
我简单地用了用,发现鼠标划进去时不会显示光标,还不清楚什么原因,不过鼠标点击是好用的,键盘也是好用的。
- 关闭 QEMU
点右上角的红叉就能关掉了。