Mem-build Container-Optimized OS dari sumber

Container-Optimized OS didasarkan pada, dan dibuat menggunakan, alat dari project Chromium OS open source. Jika mau, Anda dapat mem-build image Container-Optimized OS sendiri langsung dari kode sumber Container-Optimized OS.

Prasyarat

Untuk mem-build image Container-Optimized OS, Anda harus menginstal alat berikut di mesin pengembangan:

  • git dan curl
  • Paket skrip Chromium yang disebut depot_tools yang menyertakan alat seperti repo dan cros_sdk.

Mendapatkan kode sumber Container-Optimized OS

Anda dapat mendownload kode sumber untuk Container-Optimized OS menggunakan alat repo yang disertakan dalam depot_tools.

Pertama, buat direktori untuk menyimpan kode sumber. Misalnya, cos-src di direktori utama Anda:

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

Sekarang download kode sumber menggunakan perintah berikut:

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

Mem-build image Container-Optimized OS

Untuk mem-build Container-Optimized OS, Anda harus membuat lingkungan chroot yang sesuai. Anda dapat menggunakan alat cros_sdk yang disertakan dalam depot_tools untuk membuat dan memasukkan chroot yang siap untuk kompilasi OS yang Dioptimalkan untuk Container dengan menjalankan perintah berikut di direktori sumber yang Anda buat di langkah sebelumnya:

cd $HOME/cos-src
cros_sdk --enter

Setelah berada di dalam chroot, Anda dapat mem-build image disk. Untuk mem-build Container-Optimized OS, tentukan lakitu (image x86) atau lakitu-arm64 (image Arm) untuk nama board sebagai berikut:

Image x86

   build_packages --board=lakitu
   build_image --board=lakitu test

Gambar lengan

   build_packages --board=lakitu-arm64
   build_image --board=lakitu-arm64 test

Selain test, Anda dapat mem-build image base, atau dev dengan meneruskan parameter yang sesuai ke perintah skrip ./build image. Jika Anda tidak menentukan parameter, image dev akan di-build secara default.

Image dev berisi beberapa alat debug tambahan yang diinstal di atas image base. Image test menyertakan alat debug dari image dev serta alat yang diperlukan untuk menjalankan pengujian Container-Optimized OS otomatis.

Persyaratan Atribusi

Saat membuat image Container-Optimized OS, Anda harus memenuhi berbagai persyaratan atribusi lisensi pihak ketiga. Gambar yang dihasilkan oleh build berisi semua informasi atribusi yang relevan di /opt/google/chrome/resources/about_os_credits.html. Sebagai artefak build terpisah, file ini juga tersedia sebagai file license_credits.html di direktori output build.

Menjalankan Image

Setelah mem-build image Container-Optimized OS, Anda dapat menjalankan image menggunakan KVM, atau mengimpor image ke instance Compute Engine.

Berjalan di hypervisor

Untuk mem-booting image di hypervisor, jalankan perintah berikut:

Image 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

Gambar lengan

   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
   

Dengan melakukan booting dengan cara ini, port serial VM akan tetap terhubung ke konsol, sehingga Anda dapat login tanpa menggunakan SSH. Jika menjalankan image test, Anda dapat login dengan pasangan nama pengguna/sandi "root/test0000".

Setelah VM dimulai, Anda dapat mengakses image dev atau test menggunakan SSH. Untuk mengakses image melalui SSH, gunakan kunci yang dibuat untuk image tersebut, sebagai berikut:

Image x86

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

Gambar lengan

   ssh root@localhost -p 9222 -i src/build/images/lakitu-arm64/latest/id_rsa

Berjalan di Compute Engine

Untuk mengimpor image ke instance Compute Engine, Anda harus mengompresi image menjadi file .tar. Untuk mengompresi image, jalankan perintah berikut:

Image x86

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

Gambar lengan

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

Setelah membuat file .tar, Anda dapat mengikuti petunjuk untuk mengimpor image yang ada di dokumentasi Compute Engine.