首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Yocto Project 构建自定义嵌入式 Linux 发行版具体流程

使用 Yocto Project 构建自定义嵌入式 Linux 发行版具体流程

构建 Linux 发行版本节将展示如何使用 Poky(参考构建系统)构建一个基本的嵌入式 Linux 系统。这里描述的流程构建参考了发行版以及构建该发行版所需的所有工具。如果您愿意的话,也可以下载预编译好的二进制文件,以避免编译的需要。请阅读 Yocto Project Quick Start Guide(参见 ),了解有关的更多信息。
工具本身仅在 Linux 平台上受支持,特别是 Ubuntu、Fedora、CentOS 和 openSUSE。注意,虽然这些系统的最新发行版尚未列入受支持之列,但它们通常是支持该工具的,其他许多 Linux 发行版可能也支持该工具。
如果您的主机系统没有运行 Linux,或者如果您希望不安装任何东西就能继续运作,那么您可以下载 Yocto Project Build Appliance。这台虚拟机预安装了最新的官方 Yocto Project 发行版。Build Appliance 可在 VMWare Player 或 VirtualBox 中运行,并直接启动到 Hob GUI。如果您使用的是 Build Appliance,那么下面的大部分步骤已经完成,您可以直接跳到  一节。不过,我建议您还是阅读一下中间部分的内容,以便了解 Hob 在做些什么。另外,应该阅读 Yocto Project 网站上的一些 Hob 文档,参见 。
下载 Yocto Project 工具使用两种方法中的任意一种下载 Yocto Project。确保使用一个至少有 50GB 空闲空间的磁盘。建议空闲空间是 100GB。
  • 您可以从 Yocto Project 下载页面下载最新测试完毕的发行版的一个 tar 文件。下载 tar 文件,然后将其解压到一个目录,如  所示。清单 1. 下载 poky
    1
    2
    3
    4
    $ wget \
    http://downloads.yoctoproject.org/releases/yocto/yocto-1.2/poky-denzil-7.0.tar.bz2
    $ tar xjf poky-denzil-7.0.tar.bz2
    $ cd poky-denzil-7.0




  • 您可以使用 git 获取最新发行版(或任何特定分支),尽管主开发分支可能不如 tar 文件中测试过的发行版稳定。 显示了如何使用 git 下载最新版本。清单 2. 使用 git 获取 poky
    1
    2
    $ git clone git://git.yoctoproject.org/poky.git
    $ cd poky




    注意,本例中的子目录简单地使用了 poky 这一名称,不带版本号,因为随时可以使用 git 更新它。
初始化环境要初始化您的工作环境,请遵循以下步骤:
  • 首先,从您的主机系统的软件库中选择并安装所有必需的开发包。如果已经以前在主机上开发过软件,那么有可能已经安装好了大部分开发包。清单 3456 显示了如何在各种发行版上安装所需的程序包。
    清单 3. 在 Ubuntu 上安装必备组件
    1
    2
    3
    4
    5
    $ sudo apt-get install sed wget subversion git-core coreutils \
    unzip texi2html texinfo libsdl1.2-dev docbook-utils fop gawk \
    python-pysqlite2 diffstat make gcc build-essential xsltproc \
    g++ desktop-file-utils chrpath libgl1-mesa-dev libglu1-mesa-dev \
    autoconf automake groff libtool xterm libxml-parser-perl




    清单 4. 在 Fedora 上安装必备组件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ sudo yum groupinstall "development tools"
    $ sudo yum install python m4 make wget curl ftp tar bzip2 gzip \
    unzip perl texinfo texi2html diffstat openjade \
    docbook-style-dsssl sed docbook-style-xsl docbook-dtds fop xsltproc \
    docbook-utils sed bc eglibc-devel ccache pcre pcre-devel quilt \
    groff linuxdoc-tools patch cmake \
    perl-ExtUtils-MakeMaker tcl-devel gettext chrpath ncurses apr \
    SDL-devel mesa-libGL-devel mesa-libGLU-devel gnome-doc-utils \
    autoconf automake libtool xterm




    清单 5. 在 CentOS 上安装必备组件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ sudo yum -y groupinstall "development tools"
    $ sudo yum -y install tetex gawk sqlite-devel vim-common redhat-lsb xz \
      m4 make wget curl ftp tar bzip2 gzip python-devel \
      unzip perl texinfo texi2html diffstat openjade zlib-devel \
      docbook-style-dsssl sed docbook-style-xsl docbook-dtds \
      docbook-utils bc glibc-devel pcre pcre-devel \
      groff linuxdoc-tools patch cmake \
      tcl-devel gettext ncurses apr \
      SDL-devel mesa-libGL-devel mesa-libGLU-devel gnome-doc-utils \
      autoconf automake libtool xterm




    清单 6. 在 openSUSE 上安装必备组件
    1
    2
    3
    $ sudo zypper install python gcc gcc-c++ libtool fop \
    subversion git chrpath automake make wget xsltproc \
    diffstat texinfo freeglut-devel libSDL-devel




  • 使用所提供的脚本设置您的 shell 环境。运行该脚本之后,您的工作目录是 build 子目录,您可以从该位置运行您的版本。
    1
    2
    $ cd poky
    $ . ./oe-init-build-env




  • 检查主配置文件 (conf/local.conf)。默认情况下,建立配置文件是为了创建 qemux86 映像,即模拟 32 位 x86 处理器的一个 QEMU 实例。如果您有一个多处理器主机,强烈建议您取消注释以下并行性选项来加速编译。目前暂时将这两个值设置为处理器核心数的两倍(例如,对于一个 4 核处理器,应该将该值设置为 8)。
    1
    2
    BB_NUMBER_THREADS = "8"
    PARALLEL_MAKE = "-j 8"




执行初始构建初始构建使用主机的编译器来构建交叉编译工具链和其他任何所需的构建工具。BitBake 还需要下载所有软件包,因此这可能需要花费一段时间。完成这些下载之后,您可以在 tmp/deploy/images 子目录中找到生成的映像。
清单 7. 初始构建映像
1
2
3
4
5
6
7
8
9
$ ls tmp/deploy/images
bzImage-3.2.11+gi...1.bin
bzImage-qemux86.bin
core-image-minimal-qemux86-20120506194741.rootfs.ext3
core-image-minimal-qemux86-20120506194741.rootfs.tar.bz2
core-image-minimal-qemux86.ext3
core-image-minimal-qemux86.tar.bz2
modules-3.2.11-yocto-standard-r1-qemux86.tgz
README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt




另外,查看一下 tmp/deploy/IMAGE/license.manifest 中的内容。这是整个映像中使用的所有许可的列表。
启动新映像完成构建之后,就可以使用模拟 32 位 x86 处理器的 QEMU 来启动映像。为此,只需运行:
1
$ runqemu qemux86




您可以作为 root 用户登录到机器,无需输入密码。祝贺您!您已成功构建了一个嵌入式 Linux 发行版。
您可以对最终映像、组成最终映像的程序包以及进程本身进行许多定制。构建系统是使用 Python 编写的,具有完整的文档记录。
测试插件 HobHob 是帮助自动化前面描述的一些过程的 GUI。Hob 的目标在于让构建过程更可见且易于理解。实际上,Hob 是一个 BitBake 前端,在 Hob 中可以执行的操作也可以从命令行执行(和脚本化)。不过,Hob 以图形方式显示了决策制定过程,描述了哪些程序包会构建到最终映像中。Hob 的一些其他功能包括修改现有映像、将自定义映像保存为模板、使用 QEMU 运行映像、将映像部署到某个 Universal Serial Bus (USB) 磁盘,以便在目标设备上实时启动。针对功能性和易用性的其他许多功能目前正在开发中。
要运行 Hob,只需从您的构建目录输入 hob,然后主界面会出现。首选选择一个架构(在本例中是 qemux86),然后 Hob 会解析可用配方,如 图 1 所示。
图 1. 图 1 Hob 映像配置然后您可以选择一个基本映像(前面的示例构建了 core-image-minimal,因此这些二进制文件已经存在)。选择 core-image-minimal,然后单击 View recipesView packages图 2 中的界面显示了 View packages 中的滚动列表。您可以选择或取消选择复选框,以包含程序包或将其移出构建项目。单击列标题,根据该列进行排序。
图 2. Hob 包在 Packages 选项卡上可以注意到,Python 没有包含在最低版本中。您可以通过选择 python-2.7.2-r2.14 复选框将其添加进来,如 图 3 所示。所有依赖项和子包也会立即包含在其中。
图 3. 在 Hob 中添加程序包单击 Build image,Hob 会根据您的选择构建一个新映像。在构建过程中,您可以查看日志,了解进展如何,或者单击 Issues 选项卡,看看是否存在任何问题。
然后您可以单击 Run Image,在 QEMU 仿真器中运行生成的映像,如  所示。
图 4. Hob 映像细节现在您可以通过检查确保 Python 已经包含在构建项目中,如  所示。
图 5. 验证添加成功
返回列表