如何在虚拟机中运行 YOCTO LINUX 操作系统


有时我们需要一个完整的开发环境来编译、部署和测试解决方案,有时无法直接在硬件上操作,或者简单来说,提供的 SDK 不足以实行我们的开发计划。 这可能是,比如,英特尔 Edison 或 Galileo 所面临的情况:如何在 Yocto Linux 操作系统上编译整个框架、运行时,以及它们之间的依赖关系?

本文将为大家介绍如何创建 Yocto* 的可运行映像,如何在基础软件模拟器 QEMU 中测试该映像,以及如何在管理程序(比如 Windows 上的 Microsoft Hyper-V)中运行该映像。

操作本教程的前提条件

  • Debian/Ubuntu(已经过 Debian 8.2 amd64 的测试)
  • 互联网连接
  • 磁盘提供至少 100 GB 可用空间

  • 构建机器的前期准备工作

    以根身份(或通过 "sudo")运行以下命令

    1 # 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-distribution 来说,比如 RadHat、CentOS、Fedora、SuSe、Gentoo 等......建议通过正确的 package-manager(例如 zypper、yum 等)检查上述程序包的相应版本。

    第一步: 设置工作文件夹

    以没有特权的普通用户(没有根身份)

    1 # cd
    2 # mkdir yocto-2.0
    3 # cd yocto-2.0
    4 # wget http://downloads.yoctoproject.org/releases/yocto/yocto-2.0/poky-jethro-1...
    5 # tar xvjf poky-jethro-14.0.0.tar.bz2
    6 # cd poky-jethro-14.0.0/

    注 3:可以点击以下链接 https://www.yoctoproject.org/downloads,选择 Yocto 版本的其他开发分支。 本教程将使用当前最新版本 "Jocto Poky 2.0.14.0.0 codename Jethro"。

    注 4:如欲获取最新版 Yocto 资源,可以获得主开发分支,需要将 wget 操作替换为以下内容:

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

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

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

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

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

    1 # . ./oe-init-build-env

    脚本运行后,如果正常,您的位置将变成一个构建子目录,它将成为您的新工作区。 类似于 /home//yocto-2.0/poky-jethro-14.0.0/build/。

    第三步: 设置 bitbake

    执行之前的脚本,会创建一个 conf/local.conf 文件。

    该配置文件需要设置 Yocto 的构建引擎 bitbake(Yocto 项目的核心组件)。

    采用首选文本编辑器编辑 bitbake 配置文件。 本教程将使用 nano — 面向类似 Unix 的环境的简单命令-行-界面文本编辑器,如下所示:

    1 # cd conf/
    2 # nano local.conf

    取消下列行的注释

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

    建议为该映像构建所有其他的可用特性。 最终的映像将特别大(每个大约 8GB),但绝对完整,可满足所有开发需求。

    1 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 作出的所有更改。

    然后:

    1 # cd ..
    2 # hob

    现在,Hob 实例(面向 BitBake、基于 GTK2 的图形用户界面)将启动,检查构建系统的准确程度。


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

    等 Hob 完成 BitBake 方案解析并生成依赖关系树。 然后选择目标映像,以从上述菜单的 "select an image recipe" 开始构建。 在本示例中,我们选择不包含 GUI 的完整核心映像: core-image-full-cmdline。


    现在点击 "Advanced Configuration"。


    如欲构建最新的稳定版,在 "Image types" 面板中保留 "Distro" 菜单中的 poky。 然后在 "Image types" 字段中选择所需的格式:通常我选择 ".iso"、".vdi" 和 ".vmdk",它们最好用。


    请在 "Output" 面板中选择能够满足要求的最佳选项。 建议为映像增加 4GB 可用存储,以放置面向 i686 架构的 SDK(如果您使用 Edison 开发板)。 另外,我认为将 "deb" 设置为面向根文件系统的打包格式非常有用。 因此,如下所示:


    好的,保存。 现在,您已准备好构建映像! 点击 "Build image" 按钮!


    Hob 将启动 bitbake core-image-full-cmdline 示例,以及您钟爱的设置。


    注 7:这一流程将花费很长时间构建最终映像。 不过,根据您主机功能的不同,可以更改用于在 "BitBake parallel threads" 和 "Make parallel threads" 上执行构建操作的处理器内核的数量。 可从 Hob settings 窗口更改这些变量:


    注 8:您可以借助 Hob 确定将要构建的映像包含哪些包。 为此,可以在开始构建映像之前选择 "Edit image recipe"。


    然后,在下列窗口中选择要包含的包:


    现在,构建流程结束时,您可以直接试用刚刚生成的映像! 点击 “Run image” Hob,启动 QEMU 实例,运行新创建的 qemux86 映像。


    但在这之前,系统会提问是否提供超级用户特权密码:


    另外一个 UNIX 命令行控制台窗口将打开,显示加载状态和 Yocto Project 操作系统的闪烁屏幕。


    现在您可以登录新创建的 Yocto 映像的根账号。 请牢记:在 conf/local.conf 上的 EXTRA_IMAGE_FEATURES 变量中插入 debug-tweaks 参数,以便在密码字段空白时以根身份登录。 否则,在构建映像之前,需要在方案中设置根密码。


    现在,您可以开始操作 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 等)中自由地加载映像。

    文章来源:
    英特尔开发人员专区