מיקרוסופט הכריזה על הקוד הפתוח של השכבה לפרוירטואליזציה של OpenHCL ועל צג המכונה הווירטואלית OpenVMM, שפותחה במיוחד לארגון העבודה של OpenHCL. קוד OpenVMM ו-OpenHCL כתוב ב-Rust ומופץ תחת רישיון MIT. OpenVMM מתייחס ל-hypervisors ברמה שנייה הפועלים באותה טבעת אבטחה עם ליבת מערכת ההפעלה, בדומה למוצרים כגון VirtualBox ו-VMware Workstation. הוא תומך בהפעלה על גבי מערכות מארחות המבוססות על לינוקס (x86_64), Windows (x86_64, Aarch64) ו-macOS (x86_64, Aarch64), באמצעות ממשקי API של KVM, SHV (Microsoft Hypervisor), WHP (Windows Hypervisor Platform) ו-Hypervisor וירטואליזציה. לפי נתוני מערכת ההפעלה.
בין התכונות הנתמכות ב-OpenVMM:
- אתחול במצבי UEFI ו-BIOS, אתחול ישיר של ליבת לינוקס;
- תמיכת פרוירטואליזציה המבוססת על מנהלי התקנים של Virtio (virtio-fs, virtio-9p, virtio-net, virtio-pmem)
- תמיכה בפאראווירטואליזציה מבוססת VMBus (storvsp, netvsp, vpci, framebuffer);
- אמולציה של vTPM, NVMe, UART, i440BX + PIIX4 ערכת שבבים, IDE HDD, PCI ו-VGA;
- קצה אחורי להעברת גרפיקה, התקני קלט, קונסולות, אחסון וגישה לרשת;
- ניהול באמצעות ממשק שורת פקודה, קונסולה אינטראקטיבית, gRPC ו-ttrpc.
OpenHCL ממוקמת כסביבה עם רכיבי paravirtualization (paravisor) הפועלים על גבי היפרוויזר OpenVMM. תכונה מרכזית של מערכות וירטואליזציה המבוססות על OpenVMM ו-OpenHCL היא שהרכיבים לפאר-וירטואליזציה מבוצעים לא בצד המערכת המארחת, אלא באותה מכונה וירטואלית עם המערכת האורחת. בידוד שכבת הפרוירטואליזציה ממערכת ההפעלה האורחת מובטח על ידי היפרוויזר הרמה השניה OpenVMM. בשימוש בדרך זו, ניתן לראות ב-OpenHCL כקושחה וירטואלית הפועלת ברמת הרשאות גבוהה יותר ממערכת ההפעלה הפועלת בסביבת האורח.
ההפרדה בין מערכת האורח ורכיבי OpenHCL מתבצעת תוך שימוש בתפיסה של רמות אמון וירטואליות (VTL, Virtual Trust Level), לצורך הטמעתם ניתן להשתמש גם במנגנוני תוכנה וגם בטכנולוגיות חומרה, כגון Intel TDX (Trust Domain Extensions) ), AMD SEV-SNP (Secure Encrypted Virtualization-Secure Nested Paging) ו-ARM CCA (ארכיטקטורת מחשוב סודי). כדי להפעיל רכיבי OpenHCL, נעשה שימוש ב-build מופשט של ליבת לינוקס, הכוללת רק את הרכיבים המינימליים הדרושים להפעלת OpenVMM.

OpenHCL יכול לפעול על פלטפורמות x86-64 ו-ARM64, ותומך בהרחבות Intel TDX, AMD SEV-SNP ו-ARM CCA לבידוד נוסף. OpenHCL כולל סט שירותים, מנהלי התקנים ואמולטורים המשמשים לארגון גישה לציוד, הבטחת פעולתם של מכשירים וירטואליים בצד המערכת האורחת וחיקוי התקני חומרה (לדוגמה, ניתן לחקות שבב לאחסון מפתחות הצפנה - vTPM).
כדי לתרגם גישה לחומרה בצד מערכת האורחת, נעשה שימוש במנהלי התקנים קיימים התומכים בפארא-וירטואליזציה, או שניתן לחבר התקנים ישירות למכונה הווירטואלית, מה שמאפשר להעביר מערכות אורח קיימות לסביבה מבוססת OpenHCL ללא שינוי. OpenHCL כולל גם רכיבי אבחון וניפוי שגיאות. מכונות וירטואליות, מבוצע באמצעות הרחבות כדי להבטיח מחשוב סודי.
בניגוד לפרויקט הקוד הפתוח הקיים COCONUT-SVSM (Secure VM Service Module), המספק שירותים והתקנים מדומים עבור מערכות אורח הפועלות בסביבה סודית מכונות וירטואליות (CVM, מכונה וירטואלית סודית), OpenHCL מאפשר שימוש בממשקים סטנדרטיים במערכות אורח, בעוד ש-COCONUT-SVSM דורש ארגון של אינטראקציה מיוחדת עם SVSM, ביצוע שינויים במערכת האורחת ושימוש בדרייברים נפרדים.
בין היישומים של ה-OpenHCL paravisor מוזכרים תרחישים כמו מעבר של מערכות קיימות לשימוש במאיצי חומרה של Azure Boost ללא צורך בביצוע שינויים בתמונת הדיסק של המערכת האורחת; הפעל אורחים קיימים במכונות וירטואליות המספקות מחשוב סודי (לדוגמה, מבוסס על Intel TDX ו-AMD SEV-SNP); ארגון אתחול מאומת של מכונות וירטואליות באמצעות UEFI Secure Boot ומצב vTPM.
יצוין בנפרד שפרויקט OpenVMM מתמקד בשימוש עם OpenHCL ועדיין אינו מוכן לשימוש עצמאי במערכות מארחות להטמעות ייצור על ידי משתמשי קצה. בין הבעיות של OpenVMM המונעות את השימוש בה בסביבות מארחות בהקשר מסורתי, מחוץ ל-OpenHCL, מוזכרות הבאות: תיעוד לקוי של ממשק הבקרה; היעדר אופטימיזציה נכונה של ביצועי הקצה האחורי עבור אחסון, רשת וגרפיקה; חוסר תמיכה במנהלי התקנים מסוימים (לדוגמה, כונני IDE ועכברי PS/2); אין ערובה ליציבות ופונקציונליות של API. במקביל, השילוב של OpenVMM ו-OpenHCL כבר הגיע לרמת הטמעה תעשייתית ומשמש את מיקרוסופט בפלטפורמת ה-Azure (Azure Boost SKU) לתמיכה בתפעול של יותר מ-1.5 מיליון מכונות וירטואליות.
מקור: OpenNet.ru
