65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在虚拟机中运行 Yocto Linux OS。

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2016年2月18日

CPOL

5分钟阅读

viewsIcon

32958

在本文中,我将介绍如何创建 Yocto 的可运行镜像,如何在 QEMU(一个基本的软件模拟器)中进行测试,以及如何在 Hypervisor(如 Windows 上的 Microsoft Hyper-V)中运行它。

获取新的 Intel® IoT Developer Kit,这是一个完整的软硬件解决方案,使开发人员能够使用 Intel® Galileo 和 Intel® Edison 板创建令人兴奋的新解决方案。请访问 Intel® Developer Zone for IoT

有时我们需要一个完整的开发环境来编译、部署和测试我们的解决方案,但有时我们无法直接在硬件上操作,或者提供的 SDK 无法满足我们的开发计划。例如,Intel Edison 或 Galileo 就是这种情况:如何在 Yocto Linux 操作系统上编译整个框架、运行时及其依赖项?

在本文中,我将介绍如何创建 Yocto 的可运行镜像,如何在 QEMU(一个基本的软件模拟器)中进行测试,以及如何在 Hypervisor(如 Windows 上的 Microsoft Hyper-V)中运行它。

使用本教程的先决条件

  • Debian/Ubuntu (在 Debian 8.2 amd64 上测试过)
  • 互联网连接
  • 磁盘上至少有 100 GB 免费空间

构建机的初步准备

以 root 用户(或通过 "sudo")运行以下命令

# 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:以上命令的成功取决于您使用的 Ubuntu/Debian 版本。最终,要解决包的依赖关系,您可以运行 "aptitude" 并强制安装所需包的正确版本(例如,“aptitude install libsdl1.2-dev”)。

注意 2:对于其他 Linux 发行版,如 RadHat、CentOS、Fedora、SuSe、Gentoo 等,我建议使用正确的包管理器(例如,zypper、yum 等)检查上述包的相应版本。

第一步:设置工作文件夹

作为没有特权的普通用户(非 root)

# cd
# mkdir yocto-2.0
# cd yocto-2.0
# wget http://downloads.yoctoproject.org/releases/yocto/yocto-2.0/poky-jethro-14.0.0.tar.bz2
# tar xvjf poky-jethro-14.0.0.tar.bz2
# cd poky-jethro-14.0.0/

注意 3:您可以访问 Yocto 发行版中的其他开发分支,请访问此链接:https://www.yoctoproject.org/downloads。在本教程中,我们将使用当前最新版本“Jocto Poky 2.0.14.0.0 代号 Jethro”。

注意 4:如果您想获取 Yocto 源代码的最新前沿版本,可以获取 master 开发分支,您需要用以下命令替换 wget 操作

# git clone git://git.yoctoproject.org/poky.git
# cd poky

注意 5:您还可以通过其代号选择特定的开发分支。例如

# git clone -b jethro git://git.yoctoproject.org/poky.git

第二步:为您的系统 shell 设置环境变量

Yocto 开发人员提供了一个非常易于使用的脚本。

# . ./oe-init-build-env

运行脚本后,如果成功,您的位置将更改为 build 子目录,该子目录将是您的新工作区。类似于 /home/<您的用户名>/yocto-2.0/poky-jethro-14.0.0/build/

第三步:设置 Bitbake

执行上述脚本后,将创建一个 conf/local.conf 文件。

配置文件需要设置 bitbake,即 Yocto 的构建引擎(Yocto Project 的核心组件)。

使用您喜欢的文本编辑器编辑 bitbake 配置文件。在本教程中,我们将使用 nano,一个用于类 Unix 环境的简单命令行文本编辑器,如下所示

# cd conf/
# nano local.conf

取消注释以下行

DL_DIR ?= "${TOPDIR}/downloads"
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
TMPDIR ?= "${TOPDIR}/tmp"
SDKMACHINE ?= "i686"

我建议构建镜像中所有可用的额外功能。生成的镜像将非常大(每个约 8GB),但绝对完整且绝对通用,可满足任何开发需求。

EXTRA_IMAGE_FEATURES = "dbg-pkgs dev-pkgs ptest-pkgs tools-sdk tools-debug eclipse-debug tools-profile tools-testapps debug-tweaks"

现在,使用 CTRL+X 键盘组合保存对 local.conf 文件所做的更改。

那么

# cd ..
# hob

现在,Hob(BitBake 的基于 GTK2 的图形用户界面)的一个实例应该会启动,检查构建系统的正确性。

现在,在下拉菜单中选择 qemux86 作为机器。

等待 Hob 完成解析 BitBake 配方并生成依赖树。然后,从上面的“选择一个镜像配方”菜单中选择您喜欢的要构建的目标镜像。在此示例中,我们将选择一个不带 GUI 的完整核心镜像:core-image-full-cmdline

现在单击“高级配置”。

在“镜像类型”面板中,如果您想构建最新稳定版本,请在“发行版”菜单中保留 poky。然后,在“镜像类型”字段中选择您需要的格式:通常,我选择“.iso”、“.vdi”和“.vmdk”,它们是最有用和最方便的格式。

在“输出”面板中,请选择最适合您需求的选项。我建议为您的镜像添加至少 4GB 的可用存储空间,为 i686 架构填充 SDK(如果您在使用 Edison 开发板)。此外,我认为将“deb”作为根文件系统的打包格式非常有用。所以,如下所示

好的,保存。现在,您已准备好构建您的镜像!单击“构建镜像”按钮!

Hob 将为您启动 bitbake core-image-full-cmdline 的一个实例,并使用您喜欢的设置。

注意 7:此过程将花费很长时间来构建最终镜像。但根据您的主机功能,您可以通过修改“BitBake 并行线程”和“Make 并行线程”来更改构建操作中使用的处理器核心数量。您可以在 Hob 设置窗口中修改这些变量。

注意 8:最后,通过 Hob,您有机会决定要在您要构建的镜像中包含哪些包。在开始构建镜像之前,您可以选择“编辑镜像配方”来完成此操作。

然后,通过以下窗口选择要包含的包

现在,当构建过程结束时,您将能够直接尝试您新生成的镜像!单击“运行镜像”,Hob 将为您启动 QEMU 的一个实例来运行新创建的 qemux86 镜像。

但是,在此之前,系统会要求您提供超级用户密码

另一个 UNIX 命令行控制台窗口将打开,显示 Yocto Project 操作系统的加载状态和启动画面。

现在,您已准备好登录您新创建的 Yocto 镜像的 root 帐户。请记住:通过在 conf/local.conf 中的 EXTRA_IMAGE_FEATURES 变量中插入 debug-tweaks 参数,您可以作为 root 登录而无需输入密码。否则,您需要在构建镜像之前在配方中设置 root 密码。

现在,您已准备好开始使用 Yocto QEMU 虚拟机了。

注意 9:按照本教程的介绍构建 Yocto 镜像后,驱动器上占用了 89.8GB 的可用空间。

您将在目录 ~/yocto-2.0/poky-jethro-14.0.0/build/tmp/deploy/images/qemux86/* 中找到您选择的 .iso、.vmdk、.vdi 等格式生成的镜像。现在,您可以将这些镜像加载到您喜欢的虚拟机管理程序或模拟器(Microsoft* Hyper-V、vmWare Fusion、Virtualbox 等)中。

© . All rights reserved.