Container-Optimized OS 基于 开源 Chromium OS 项目。如果愿意,您可以直接使用 Container-Optimized OS 源代码自行构建 Container-Optimized OS 映像。
前提条件
要构建 Container-Optimized OS 映像,您需要在开发机器上安装以下工具:
- “
git
”和“curl
” - 一个名为
depot_tools
的 Chromium 脚本程序包,其中包含repo
和cros_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
(x86 映像)或 lakitu-arm64
(Arm image) 作为板名称,如下所示:
x86 映像
build_packages --board=lakitu
build_image --board=lakitu test
Arm 映像
build_packages --board=lakitu-arm64
build_image --board=lakitu-arm64 test
除了 test
,您还可以通过将适当的参数传递给 ./build image
脚本命令来构建 base
或 dev
映像。如果未指定参数,则默认构建 dev
映像。
dev
映像包含在 base
映像的基础之上安装的一些附加调试工具。test
映像包含 dev
映像中的调试工具,以及运行自动 Container-Optimized OS 测试所需的工具。
署名要求
制作 Container-Optimized OS 映像时,您需要满足第三方许可的各种归属要求。build 生成的图片包含 /opt/google/chrome/resources/about_os_credits.html
中的所有相关归属信息。作为单独的 build 工件,它还可在 build 输出目录中作为 license_credits.html
文件提供。
运行您的映像
构建好 Container-Optimized OS 映像后,您可以使用 KVM 运行映像,或将映像导入 Compute Engine 实例。
在 Hypervisor 中运行
如需在 Hypervisor 中启动映像,请运行以下命令:
x86 映像
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
Arm 图片
sudo apt-get install qemu-system-arm qemu-efi
dd if=/dev/zero of=/tmp/flash0.img bs=1M count=64
dd if=/usr/share/qemu-efi/QEMU_EFI.fd of=/tmp/flash0.img conv=notrunc
sudo qemu-system-aarch64 -m 1024 -cpu cortex-a57 -M virt -nographic \ -pflash /tmp/flash0.img \ -device virtio-scsi-pci,id=scsi \ -drive if=none,file=src/build/images/lakitu-arm64/latest/chromiumos_test_image.bin,id=hd0 \ -device scsi-hd,drive=hd0,bootindex=0 \ -net nic \ -net user,hostfwd=tcp::9222-:22
以这种方式启动时,系统会将虚拟机的串行端口连接到控制台,让您无需使用 SSH 即可登录。如果您运行的是 test
映像,则可以使用用户名/密码对“root/test0000”登录。
启动虚拟机后,您可以使用 SSH 访问 dev
或 test
映像。要通过 SSH 登录映像,请使用系统为该映像生成的密钥,如下所示:
x86 图片
ssh root@localhost -p 9222 -i src/build/images/lakitu/latest/id_rsa
Arm 图片
ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/latest/id_rsa
在 Compute Engine 上运行
要将映像导入 Compute Engine 实例,您必须将映像压缩为 .tar
文件。要压缩映像,请运行以下命令:
x86 图片
tar -Sczf compressed-image.tar.gz images/lakitu/latest/chromiumos_image.bin --transform 's|images/lakitu/latest/chromiumos_image.bin|disk.raw|'
Arm 映像
tar -Sczf compressed-image.tar.gz images/lakitu-arm64/latest/chromiumos_image.bin --transform 's|images/lakitu-arm64/latest/chromiumos_image.bin|disk.raw|'
创建 .tar
文件后,您可以按照 Compute Engine 文档中的说明导入现有映像。