Bootstrap

chromium os 编译

Chromium OS开发指南中文版(含Chromium OS编译方法)


        XsLiDian译自:Chromium OS Developer Guide

        原地址:http://lidian.info/wiki/Chromium_OS/developer_guide




目录

  • 提要

    • 本文档的受众
  • Chromium OS 开发入门

    • 先决条件
    • 安装 depot_tools
    • 安装 git
    • 配置 git
    • committer 的准备
    • 决定存放源码的地方
    • 决定是否使用 minilayout
    • 获取源码
    • 创建 chroot
    • 进入 chroot
    • 选择要编译的 board
    • 初始化 board 编译
    • 设置 chronos 用户密码
    • 启用本地用户账户(可选)
    • 为您的 board 编译软件包
    • 为您的 board 编译磁盘映像
    • 查看磁盘映像(可选)
    • 在计算机上运行映像而不验证引导

      • 将映像存入 USB 盘
      • 从 USB 盘引导
    • 在 Chrome OS Notebook 上运行您的映像
    • 在 Chromium OS 进入命令提示符
    • 将 Chromium OS 映像安装到硬盘
    • 编译可在虚拟机中运行的映像
  • 进行变更
  • 开发分支
  • 疑难解答

    • 编译失败,问题出在哪里?
    • 如何修复 chroot 中的网络问题?
  • 进行测试

    • 获取为测试而修改的映像
    • 创建新测试
    • 查看 ebuild 实现了那些测试
    • 更多测试提示
  • 提示与技巧
  • 其他注释

    • 开发模式
  • 深入阅读


  提要

这是 Chromium OS 开发者的入门指南。 本指南的目标受众是所有希望获取、编译或对 Chromium OS 做贡献的人。 本指南不细讲任何方面,而是希望为大家展示常见任务的总体概貌。

本文档的受众
本文档旨在满足任何使用 Chromium OS 的人。 这可能是仅仅是对该项目感兴趣并想更细致地瞅瞅它是什么样的新的开发者,也可能是已经从事 Chromium OS 开发很久的开发者。

鉴于 Google 有大量员工从事 Chromium OS 开发,本文档中有时会出现一两处只与 Google 工程师有关的内容。 这些内容应保持在最少限度,因为 Chromium OS 是开源项目,我们希望尽可能开放。

注:当您生成 Chromium OS 镜像时,您需要满足第三方许可的各种署名要求。当前 build 所生成的镜像不会自动为您完成这些操作。您需要手动修改 ~/chromium/src/chrome/browser/resources/about_os_credits.html贡献者名单。

  Chromium OS 开发入门

先决条件
您需要在 Linux 平台上开发 Chromium OS。 具体而言,(代码库中的脚本)支持的环境是:

  • Ubuntu Linux(10.04 Lucid 版)——大多 Chromium OS 开发者使用 Lucid(Ubuntu 的一款“长期支持”版本)而没有升级到 10.10。译者在 10.10 中正常编译通过。在其他 Linux 发行版可能有用,但使用 Lucid 版可以免除不少麻烦。
  • 使用 64 位系统进行编译(我们希望将来支持 32 位的编译环境)。
  • 能执行 sudo 的账户(运行 chroot 命令与修改装载表(mount table)需要 root 权限。注:不要以 root 权限执行这里提到的任何命令——这些命令会在需要时(自动)执行 sudo 获取 root 权限。
  • 高速多(核)处理器、内存充足的机器可以给您更棒的编译体验。编译系统已为利用所有处理器(内核)而进行优化,采用八核处理器的机器的编译速度将比单核处理器的机器快将近八倍。我们推荐至少有 4GB 的内存,有 8GB 的话更好。如果您只有 4GB 的内存的话,请确保至少(还)有 4GB 的交换空间(swap)。
  • 首次下载(以及后续更新)最好能有良好的 Internet 连接。最小下载量约 2GB。

编译 Chromium OS 要求安装以下 Ubuntu (软件)包(下文中有安装说明):

  • git - 源码控制系统的客户端
  • keychain - ssh key 管理(如果您是 committer)

您还需要安装 depot_tools,这是一组由 Google 维护的工具集,Chromium OS 用得到它。

安装 depot_tools
您需要遵循安装 depot_tools 页面的说明开始。安装后您才可以使用 'repo' 命令获取/同步源码。

安装 git
您还需要安装 git 版本控制系统。在 Ubuntu 系统中,可以采用这句魔咒完成:
  1. sudo aptitude install git gitk git-gui
复制代码
这可以同时安装 git 的图形前端(git gui)以及版本历史浏览器(gitk)。

配置 git
现在您应该配置 git 了。如果不这样做,在以后的操作中您可能会遇到错误/问题。 使用您自己的信息替代下面的 [email protected] 与 Your Name:
  1. git config --global user.email "[email protected]"
  2. git config --global user.name "Your Name"
复制代码
committer 的准备
如果您是 Chromium OS 新手,您不是 committer。 您应该跳过此段落。 在您成为 committer 后请随时回来。

决定存放源码的地方
总有人问及应在文件系统的什嘛地方存放源码。 本文档的作者将他的源码放在 ${HOME}/chromiumos,这在 Chromium OS 开发者中间也很常见。 我建议您将源码放在那儿,本文档中的所有命令也假定您是这样做的。 如果您非常想将源码放在其他地方,也请随便。

重要注释:如果您的 home 目录处于 NFS 文件系统(Google 工程师也是这样),您必须将代码放在其他地方。 从 NFS 直接进行编译会很糟,不是因为性能原因,而是因为可能根本不会起作用(使用 sudo 与 root 的编译脚本没有 NFS 装载的访问权限,除非您的 NFS 服务器有 no_root_squash 选项。 不论您将源码放在哪里,都可以(也推荐您这样)在您的 home 目录创建指向源码目录的符号链接(symbolic link):
  1. mkdir -p /usr/local/path/to/source/chromiumosln -s /usr/local/path/to/source/chromiumos ${HOME}/chromiumos
复制代码
……否则,您应这样创建目录:
  1. mkdir -p ${HOME}/chromiumos
复制代码
边注:有人建议将源码放在 ${HOME}/trunk(本说明也曾这样建议)。 将源码放在 ${HOME}/trunk 允许您以后更马虎地操作(您可以在 build chroot 内外输入同样的命令)。 这可能更方便,但很危险,因为它可能导致您提交只在您的机器上有效,而在(代码不在 ${HOME}/trunk 的)其他机器上无效的的对编译脚本变更。

决定是否使用 minilayout
在获取源码之前,您需要决定是使用“minilayout”(迷你框架)还是“full layout”(完整框架)。 minilayout 可以让您以最少量的源码开始(以后您可以通过 cros_workon 手动选取其他源码。 完整框架可将所有与 Chromium OS 相关的源码都下载到您的硬盘上。

您在以下情况下应该选择完整框架:

  • 您认为您可能打算在源码中通过 grep 检索来熟悉代码。(注:这可能没有您认为的那样重要,因为您还可以使用 Chromium OS 代码搜索搜索全部代码。)
  • 您想获取所有能得到的源码。
  • 您有足够的磁盘空间。
  • 您的网络连接很快。注:首次同步会非常得慢,而且以后的同步也挺慢的。

您在以下情况应该选择迷你框架:

  • 您的网络连接比较慢,或者磁盘剩余空间不大
  • 您可能只开发一小部分软件包。
  • 您希望同步得快些。
  • 您不介意在开始开发以前从未开发过的软件包时的首次同步耗时稍长。

记住:即使您选择了迷你框架,您还可以通过 cros_workon 手动选取想要的软件包的源码。

获取源码
Chromium OS 采用 repo 同步源码。 对不熟悉 repo 的人来说,这是款非常高效的 git 版本控制系统框架,有助于处理大量 git 代码库。 在您根据上文安装 depot_tools 时已安装 repo。

根据您是否是 committer(如果您新来恐怕不是——参阅上文)以及是否需要迷你框架(参阅上文)有四种选项获取源码。

选项 #1:如果您不是 committer'且'想要迷你框架,请输入这些命令
  1. cd ${HOME}/chromiumos
  2. repo init -u http://git.chromium.org/git/manifest -m minilayout.xml
  3. repo sync
复制代码
选项 #2: 如果您是 committer 且想要迷你框架,您的命令为:
  1. cd ${HOME}/chromiumos
  2. repo init -u ssh://[email protected]:9222/manifest -m minilayout.xml
  3. repo sync
复制代码
选项 #3:如果您不是 committer 且想要'完整框架,请输入这些命令:
  1. cd ${HOME}/chromiumos
  2. repo init -u http://git.chromium.org/git/manifest
  3. repo sync
复制代码
选项 #4:如果您是 committer 且想要'完整框架,您的命令为:
  1. cd ${HOME}/chromiumos
  2. repo init -u ssh://[email protected]:9222/manifest
  3. repo sync
复制代码
边注:如果您打算编译特定分支,请将分支名称传递给 repo init(如:repo init -u <URL> [-m minilayout.xml] -b 0.9.94.T)
当您使用 repo init 时,它会询问您确认您的姓名、电子邮件地址以及您是否希望以彩色显示终端文本。这项操作很快。repo sync 要多花很多时间。根据您的网速,您的下载速度可能达到 200-400KB/s,但会有所变动。迷你框架将要下载约 2GB 的数据,耗时大概一小时

;