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 https://cos.googlesource.com/cos/manifest.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 映像檔),如下所示:
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 映像檔時,您必須遵守第三方授權的各種歸屬要求。建構作業產生的圖片會包含 /opt/google/chrome/resources/about_os_credits.html
中的所有相關歸屬資訊。由於這是獨立的建構構件,因此也可在建構輸出目錄中做為 license_credits.html
檔案使用。
執行映像檔
建構 Container-Optimized OS 映像檔後,您可以執行使用 KVM 的映像檔,或將映像檔匯入至 Compute Engine 執行個體。
在管理程序中執行
如要在 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
以這種方式啟動後,VM 的序列埠會連線至控制台,讓您不必使用 SSH 即可登入。如果您執行的是 test
映像檔,可以使用「root/test0000」使用者名稱/密碼組合登入。
啟動 VM 後,您可以使用 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 說明文件的操作說明來匯入現有映像檔。