在本文中,我们的重点是使用Ubuntu平台上的Yocto项目创建最小的Linux发行版。 Yocto项目在嵌入式Linux世界中非常有名,因为它的灵活性和易用性。 Yocto项目的目的是为嵌入式硬件和软件制造商创建一个Linux发行版。 将为qemu创建一个新的最小的Linux发行版,因为(qemu是一个基本的软件仿真器)目标机,我们将在qemu中运行它。
开发机器的先决条件
- 至少4 - 6 GB RAM。
- 最近的Ubuntu操作系统(在这种情况下为16.04 LTS)。
- 磁盘上至少有60-80 GB的可用空间。
- 在创建新的Linux发行版之前安装以下软件包。
- 下载最新的Yocto(Poky这是最小的开发环境)稳定的分支。
apt-get update
apt-get install wget git-core unzip make gcc g++ build-essential subversion sed autoconf automake texi2html texinfo coreutils diffstat python-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-dev libglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawk fop
如下图所示,安装所需的开发包需要几乎1 GB的大小。
在本教程中,系统上克隆了“愚蠢”的稳定版本。
git clone -b morty git://git.yoctoproject.org/poky.git
进入“poky”目录并运行以下命令来设置/导出一些用于yocto开发的变量。
source oe-init-build-env
如下图所示,运行开放式嵌入式(oe)构建环境脚本后,终端中的路径位置将更改为“build”目录,以进一步配置和编译新的分发。
上面的屏幕截图显示了在“conf”目录中创建的“local.conf”文件。 这是yocto的配置文件,其中指定了目标机器的详细信息以及所需架构的SDK。
如下图所示,设置目标机“qemux86-64”。
取消注释“local.conf”文件中的参数,如屏幕截图所示。
DL_DIR ?= "${TOPDIR}/downloads"
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
TMPDIR ?= "${TOPDIR}/tmp"
PACKAGE_CLASSES ?= "package_rpm"
SDKMACHINE ?= "i686"
如下图所示,为基于Yocto的Linux设置一个空白密码,并在local.conf文件中包含以下参数。 否则,用户将无法登录新的发行版。
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
我们没有使用任何GUI工具(如烤面包机(不再支持))来创建Linux操作系统。
Yocto编制和建设过程
现在运行bitbake实用程序的以下命令,以启动所选目标机器的软件包的下载和编译。
bitbake core-image-minimal
以普通的Linux用户而不是root用户身份运行上述命令很重要。 如以下sscreenshot所示,当以root用户运行bitbake命令时,会生成错误。
再次运行环境变量脚本(oe-init-build-env)的导出,并重新运行相同的命令来启动下载和编译过程。
如下所示,构建脚本实用程序的第一步是解析配方。
以下截图显示构建脚本的解析步骤的完成。 它还显示了将生成新的基于yocto的发行版的构建系统的细节。
下载SDK和必要的库后,下一步是下载和编译软件包。 以下屏幕截图显示了新发行版的任务。 这个步骤需要2-3个小时,因为首先,它下载所需的软件包,然后编译新的Linux发行版。
以下屏幕截图显示了任务列表的完成。
目标机器类型“qemux86-64”的编译新映像位于“build / tmp / deploy / images / qemux86-64”路径内,如下所示。
如下所示,如果在Putty中运行,以上命令将产生错误。
以上命令再次通过Ubuntu平台上的rdp在终端内运行。
另一个屏幕为qemu模拟器打开了新的基于yocto的Linux发行版。
新发行版的登录屏幕如下所示,同时显示了yocto项目的参考版本。 默认用户名为root,空白密码。
最后,用root用户名和空密码登录新的发行版。 如下面的屏幕截图所示,基本命令(date,ifconfig和uname)在最小版本的Linux中运行。
本文的目的是了解使用yocto项目创建新的Linux发行版的过程。