当前位置: 首页 > 科技观察

HowtoCreateYourOwnEmbeddedLinuxDistributionwithYoctoonUbuntu

时间:2023-03-19 15:18:54 科技观察

本文主要关注如何使用Yocto在Ubuntu上创建一个最小的Linux发行版。Yocto项目因其灵活性和易用性而在嵌入式Linux世界中广为人知。Yocto的目标是为嵌入式软件和硬件开发人员创建自己的Linux发行版。在本文中,我们将创建一个可以在QEMU上运行的最小Linux,并在QEMU上实际运行它。开发机的基本条件是至少4-6GB内存。最新版本的Ubuntu系统(本文使用16.04LTS)剩余磁盘空间至少60-80GB。在创建Linux发行版之前,安装以下软件包并下载最新的Yocto(Poky是其最小开发环境)稳定分支持apt-getupdateapt-getinstallwgetgit-coreunzipmakegccg++build-essentialsubversionsedautoconfautomaketexi2htmltexinfocoreutilsdiffstatpython-pysqlite2docbook-utilslibslibsdl1.parglevl1.parg2-devmesa-devlibglu1-mesa-devxsltprocdesktop-file-utilschrpathgrofflibtoolxtermgawkfopInstallprerequisitesforYocto如下所示,为开发环境安装的包大小约为1GB。安装开发包在本教程中,系统上克隆了poky的morty稳定分支。gitclone-bmortygit://git.yoctoproject.org/poky.gitinstallpoky进入poky目录,然后执行以下命令为Yocto开发环境设置(set/export)一些环境变量。sourceoe-init-build-env如下所示。运行openembedded(oe)的构建环境脚本后,终端中的路径会自动切换到构建目录,以便后续配置和构建release。PrepareOEbuildenvironment上面的屏幕截图显示了在conf目录中创建的文件local.conf。这是Yocto用来设置SDK的目标机器详细信息和目标架构的配置文件。如下图,这里设置的目标机器是qemux86-64。如下图所示设置目标机器类型,取消local.conf中以下参数的注释。DL_DIR?="${TOPDIR}/downloads"配置local.conf文件SSTATE_DIR?="${TOPDIR}/sstate-cache"设置SSTATE_DIRTMPDIR?="${TOPDIR}/tmp"设置TMPDIRPACKAGE_CLASSES?="package_rpm"SDKMACHINE?=“i686”如下所示设置PACKAGE_CLASSES和SDKMACHINE,在基于Yocto的Linux的local.conf中设置一个空白密码和一些后续参数。否则用户将无法登录到新的发行版。EXTRA_IMAGE_FEATURES?="debug-tweaks"设置debug-tweaks选项我们不会使用任何图形工具来创建Linux操作系统,例如烤面包机(不再支持hob)。YoctoCompileBuildProcess现在运行下面的bitbake工具命令开始为选定的目标机器下载和编译包。bitbakecore-image-minimalStartbitbake在普通Linux用户下运行上述命令非常重要,而不是使用root用户。如下截图所示,当你在root用户下运行bitbake命令时,会产生如下所示的错误。不要以root身份运行bitbake再次运行导出环境变量的脚本(oe-init-build-env),并重新执行相同的命令以开始下载和编译过程。重新运行命令如下所示。构建脚本组件的第一步是解析配置(配方)。Parsethebuildrecipes下方的屏幕截图显示了解析构建脚本的过程。它还显示了用于构建新的基于yocto的发行版的构建系统的详细信息。构建收益下载SDK和必要的库后,下一步就是下载和编译包。下面的屏幕截图显示了为构建新发行版而执行的任务。此步骤需要2-3小时,因为首先需要下载所需的包,然后针对新的Linux发行版进行编译。Compilationwilltakeseveralhours下面的截图显示任务列表已经完成。编译针对目标机器类型qemux86-64编译的新镜像位于build/tmp/deploy/images/qemux86-64:构建完成如下,上述命令在Putty上运行会报错。puttycommanderror在Ubuntu平台上通过rdp再次运行上面的命令。命令在rdp中运行良好,可以为运行新的基于Yocto的Linux发行版的qemu打开一个新屏幕。OpenQuemu模拟器下方显示了新版本的登录屏幕,还显示了正在使用的yocto项目的版本号。默认用户名是root,密码为空。Linux发行版启动并最终使用root用户名和空密码登录到新发行版。如下面的屏幕截图所示,基本命令(data、ifconfig和uname)在这个最小版本的Linux上运行。测试Linux发行版本文的目标是了解使用Yocto创建新Linux发行版的过程。