通过源代码构建 Container-Optimized OS

Container-Optimized OS 基于 Chromium OS 开放源代码项目,使用该项目中的工具构建而成。如果愿意,您可以直接使用 Container-Optimized OS 源代码自行构建 Container-Optimized OS 映像。

前提条件

要构建 Container-Optimized OS 映像,您需要在开发机器上安装以下工具:

  • gitcurl
  • 一个名为 depot_tools 的 Chromium 脚本程序包,其中包含 repocros_sdk 等工具。

获取 Container-Optimized OS 的源代码

您可以使用 depot_tools 中包含的 repo 工具,下载 Container-Optimized OS 的源代码。

首先,创建一个用于存储源代码的目录。例如,在主目录中创建 cos-src

$ mkdir $HOME/cos-src
$ cd $HOME/cos-src

现在,使用以下命令下载源代码:

$ repo init -u https://cos.googlesource.com/cos/manifest.git \
  --repo-url https://chromium.googlesource.com/external/repo.git
$ repo sync

构建 Container-Optimized OS 映像

要构建 Container-Optimized OS,您必须创建合适的 chroot 环境。您可以使用 depot_tools 中包含的 cros_sdk 工具,通过在上一步创建的来源目录中运行以下命令,来创建和输入可用于 Container-Optimized OS 编译的 chroot

$ cd $HOME/cos-src
$ cros_sdk --enter

进入 chroot 后,即可构建磁盘映像。要构建 Container-Optimized OS,请按如下方式指定 lakitu 作为板名称:

(cr) ~/trunk/src/scripts $ ./build_packages --board=lakitu
(cr) ~/trunk/src/scripts $ ./build_image --board=lakitu test

除了 test,您还可以通过将适当的参数传递给 ./build image 脚本命令来构建 basedev 映像。如果未指定参数,则默认构建 dev 映像

dev 映像包含在 base 映像的基础之上安装的一些附加调试工具。test 映像包含 dev 映像中的调试工具,以及运行自动 Container-Optimized OS 测试所需的工具。

运行您的映像

构建好 Container-Optimized OS 映像后,您可以使用 KVM 运行映像,或将映像导入 Compute Engine 实例。

在 KVM 中运行

要在 KVM 中启动映像,请运行以下命令:

~/cos $ kvm -m 1024 -nographic -net nic,model=virtio -net user,hostfwd=tcp:127.0.0.1:9222-:22 -hda src/build/images/lakitu/latest/chromiumos_test_image.bin

以这种方式启动时,系统会将虚拟机的串行端口连接到控制台,让您无需使用 SSH 即可登录。如果您运行的是 test 映像,则可以使用用户名/密码对“root/test0000”登录。

启动虚拟机后,您可以使用 SSH 访问 devtest 映像。要通过 SSH 登录映像,请使用系统为该映像生成的密钥,如下所示:

~/cos $ ssh root@localhost -p 9222 -i src/build/images/lakitu/latest/id_rsa

在 Compute Engine 上运行

要将映像导入 Compute Engine 实例,您必须将映像压缩为 .tar 文件。要压缩映像,请运行以下命令:

~/cos $ tar -Sczf compressed-image.tar.gz images/lakitu/latest/chromiumos_image.bin --transform 's|images/lakitu/latest/chromiumos_image.bin|disk.raw|'

创建 .tar 文件后,您可以按照 Compute Engine 文档中的说明导入现有映像