מערכת הפעלה שמותאמת לקונטיינרים מבוססת על כלים מפרויקט הקוד הפתוח מערכת ההפעלה 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=lakitubuild_image --board=lakitu test
תמונה של הזרוע
build_packages --board=lakitu-arm64build_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-efidd if=/dev/zero of=/tmp/flash0.img bs=1M count=64dd if=/usr/share/qemu-efi/QEMU_EFI.fd of=/tmp/flash0.img conv=notruncsudo 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.