פיתוח מערכת הפעלה שמותאמת לקונטיינרים מהמקור

מערכת הפעלה שמותאמת לקונטיינרים מבוססת על כלים מפרויקט הקוד הפתוח מערכת ההפעלה Chromium, ונבנית באמצעותם. אם רוצים, אפשר ליצור תמונה של מערכת הפעלה שמותאמת לקונטיינרים באופן עצמאי ישירות מקוד המקור של מערכת ההפעלה שמותאמת לקונטיינרים.

דרישות מוקדמות

כדי ליצור תמונה של מערכת הפעלה שמותאמת לקונטיינרים, צריך להתקין את הכלים הבאים במחשב הפיתוח:

  • git וגם curl
  • חבילה של סקריפטים של Chromium בשם depot_tools, שכוללת כלים כמו repo ו-cros_sdk.

קבלת קוד המקור של מערכת ההפעלה שמותאמת לקונטיינרים

אפשר להוריד את קוד המקור של מערכת הפעלה שמותאמת לקונטיינרים באמצעות הכלי repo שכלול ב-depot_tools.

קודם יוצרים ספרייה לאחסון קוד המקור. לדוגמה, cos-src בספריית הבית:

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

עכשיו מורידים את קוד המקור באמצעות הפקודות הבאות:

repo init https://cos.googlesource.com/cos/manifest.git
repo sync

פיתוח תמונה של מערכת הפעלה שמותאמת לקונטיינרים

כדי ליצור את מערכת הפעלה שמותאמת לקונטיינרים, צריך ליצור סביבה מתאימה chroot. אתם יכולים להשתמש בכלי cros_sdk שכלול ב-depot_tools כדי ליצור chroot שמוכן לקומפילציה של מערכת הפעלה שמותאמת לקונטיינרים. לשם כך, מריצים את הפקודה הבאה בספריית קובצי המקור שיצרתם בשלב הקודם:

cd $HOME/cos-src
cros_sdk --enter

אחרי שנכנסים אל chroot, אפשר ליצור את תמונת הדיסק. כדי ליצור מערכת הפעלה שמותאמת לקונטיינרים, מציינים את lakitu (תמונת x86) או lakitu-arm64 (תמונת Arm) בשם הלוח, באופן הבא:

תמונת x86

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

תמונה של הזרוע

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

בנוסף ל-test, אפשר ליצור תמונת base או dev על ידי העברת הפרמטר המתאים לפקודת הסקריפט ./build image. אם לא מציינים פרמטר, תמונת dev נוצרת כברירת מחדל.

תמונת dev מכילה כמה כלי ניפוי באגים נוספים שהותקנו על תמונת base. התמונה test כוללת את כלי הניפוי באגים מהתמונה dev, וגם כלים שדרושים להרצת בדיקות אוטומטיות של מערכת הפעלה שמותאמת לקונטיינרים.

דרישות בנושא ייחוס

כשיוצרים תמונה של מערכת הפעלה שמותאמת לקונטיינרים, צריך לעמוד בדרישות שונות של ייחוס לרישיונות של צד שלישי. התמונה שנוצרת על ידי build מכילה את כל פרטי השיוך הרלוונטיים ב-/opt/google/chrome/resources/about_os_credits.html. בנוסף, הוא זמין כארטיפקט build נפרד כקובץ license_credits.html בספריית הפלט של ה-build.

הפעלת התמונה

אחרי שיוצרים את קובץ האימג' של מערכת ההפעלה שמותאמת לקונטיינרים, אפשר להריץ את קובץ האימג' באמצעות 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

תמונה של הזרוע

   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.

אחרי שהמכונה הווירטואלית מופעלת, אפשר לגשת לתמונה של dev או test באמצעות SSH. כדי להתחבר ל-SSH לתמונה, משתמשים במפתח שנוצר עבור התמונה הזו, באופן הבא:

תמונת x86

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

תמונה של הזרוע

   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|'

תמונה של הזרוע

   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.