Mem-build Container-Optimized OS dari sumber

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

Prasyarat

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

  • git dan curl
  • Paket skrip Chromium bernama depot_tools yang mencakup alat seperti repo dan cros_sdk.

Mendapatkan kode sumber OS yang Dioptimalkan untuk Container

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

Membuat image OS yang Dioptimalkan untuk Container

Untuk membangun 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 Container-Optimized OS 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 membuat disk image. Untuk mem-build Container-Optimized OS, tentukan lakitu (image x86) atau lakitu-arm64 (arm image) untuk nama board sebagai berikut:

gambar x86

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

Aktifkan gambar

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

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

Gambar 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 secara otomatis.

Persyaratan Atribusi

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

Menjalankan Gambar

Setelah membuat image OS yang Dioptimalkan untuk Container, Anda dapat menjalankan image tersebut menggunakan KVM, atau mengimpor image ke instance Compute Engine.

Berjalan di hypervisor

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

gambar 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

Aktifkan gambar

   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
   

Melakukan booting dengan cara ini membuat port serial VM terhubung ke konsol Anda, 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 melakukan SSH ke dalam image, gunakan kunci yang dihasilkan untuk image tersebut, sebagai berikut:

gambar x86

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

Aktifkan gambar

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

Berjalan di Compute Engine

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

gambar x86

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

Aktifkan gambar

   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 dalam dokumentasi Compute Engine.