כאשר אתה מתקין אפליקצית וירטואליזציה על מחשב בו מותקנים Hyper-V או שירותים קשורים, יש תקלות שמתרחשות לעתים תכופות. השגיאות שקורות בעת הפעלת מכונות וירטואליות על ידי אפליקציות וירטואליזציה לא- Hyper-V גורמות לבעיות חשובות. בפוסט הבלוג הזה נבהיר מה גורם לשגיאות אלה, איך לתקן אותן וכיצד להפעיל אפליקציות וירטואליזציה אחרות על מחשב עם Hyper-V.
רקע ועקרון פעולה
לאחר שאתה מתקין VMware Workstation, VMware Player, או Oracle VirtualBox על מחשב עם Windows, יתכן שתקבל שגיאות בעת התחלת מכונה וירטואלית באפליקציות הוירטואליזציה הללו. השגיאות מתרחשות גם אם מכונות וירטואליות של Hyper-V לא פועלות באותו זמן. באפשרותך להתקין VMware Workstation ו- VirtualBox, ולהריץ מכונות וירטואליות של VMware ו- VirtualBox על אותו מחשב, אך לא באופן סימולטני. מה מגרים את הבעיה הזו עם Hyper-V? בוא נסתכל קרוב יותר.
VMware Workstation, VMware Player, ו- VirtualBox הם היפרווייזורים מסוג 2, בעוד ש- Hyper-V הוא היפרווייזור מסוג 1. היפרווייזור מסוג 2 מותקן על מערכת ההפעלה שרצה על החומרה. היפרווייזור מסוג 1 מותקן מעל החומרה. כל היפרווייזורים דורשים תוספות לווארטואליזציה של המעבד, שהן סטיו של הוראות לווירטואליזציה של החומרה – Intel VT-x או AMD-V. Hyper-V מקבל שליטה על התוספות לווירטואליזיה בעת האתחול של Windows. התוספות לווירטואליזיה האלה לא זמינות ל- VMware Workstation ו- VirtualBox כאשר Windows מטעינה. רק רכיב תוכנה אחד יכול להשתמש ב- Intel VT-x או AMD-V בכל זמן.
האי תאימות הזה נגרם על ידי Hyper-V מכיוון שהרחבות הווירטואליזציה לא חשופות לסוג 2 של היפרווייזרים שמותקנים על מכונת Windows שבה מאופשר תפקיד ה-Hyper-V.
שגיאות של VMware Workstation:
VMware Workstation ו-Hyper-V אינם תואמים. יש להסיר את תפקיד ה-Hyper-V מהמערכת לפני הפעלת VMware Workstation.
VMware Workstation ו-Device/Credential Guard אינם תואמים. ניתן להפעיל את VMware Workstation לאחר השבתת Device/Credential Guard.
שגיאות של VirtualBox:
BSOD, כגון BSOD עם SYSTEM_SERVICE_EXCEPTION
VT-x אינו זמין (VER_VMX_NO_VMX). E_FAIL (0x80004005).
A VirtualBox VM works too slowly and uses the paravirtualisation (emulation) mode.
המצב המעניין ביותר הוא כאשר משתמש אינו מתקין Hyper-V ועדיין נתקל באחת מהשגיאות המצוינות לעיל בעת השימוש ב-VMware Workstation או VirtualBox. השגיאה מתרחשת כאשר עדכוני Windows אוטומטיים מופעלים. עם העדכונים (Windows 10 v1607 וגרסאות מתאימות של Windows Server החל מ-Windows Server 2016), מתקינים ומאפשרים כמה מתכונות חדשות הקשורות ל-Hyper-V אוטומטית ללא הסכמת משתמשי Windows. התכונות הללו הן Device Guard ו-Credential Guard. עדכוני Windows מכונים פרצות אבטחה ידועות אך יכולים להוסיף בעיות ולהרוס תצורה פועלת. זו הסיבה למה רבים מהמשתמשים אינם אוהבים עדכונים אוטומטיים.
Device Guard הוא קבוצת תכונות אבטחה ב-Windows. הרעיון של הטמעת התכונה הזו הוא לחזק את הביצוע של קוד זדוני. Device Guard זמין ב-Windows 10, ב-Windows Server 2019, וב-Windows Server 2019. הדרישות העיקריות הן: UEFI פועל במצב טבעי ו-Secure Boot מופעל.
צוֹפֶה רישיונות היא תכונה המטרתה למזער את ההשפעה של תקיפות במקרה שקוד זדוני כבר רץ על ידי בידוד סודות מערכת ומשתמש כדי להקשות על נכנס.
מצב אבטחה וירטואלי (VSM) הוא תכונה המשתמשת בהרחבות וירטואליזציה של מעבד המבטיחה את המידע באזור מבודד של הזיכרון. HVCI הוא תקיפות קוד נמוך-שירות שמוגן על ידי ההיפרויזור. LSA הוא הרשאת אבטחה מקומית.
אבטחת מבוססת וירטואליזציה (VBS) היא קבוצת טכנולוגיות שמשתמשות בהרחבות וירטואליזציה, כולל VSM, כדי לספק אבטחה במערכת ההפעלה Windows. נדרש תפקיד ההיפרוויזור (כלי ניהול Hyper-V אינם נדרשים) כדי לאפשר לתכונות אלו לעבוד.
ההיפרוויזור (Hyper-V) נטען ראשון, ואז מערכת ההפעלה (Windows) נטענת. Hyper-V מספק שכבת הזרקה בין החומרה ומערכת ההפעלה. VSM מאפשר תיוג של תהליכים ספציפיים וזיכרון המשמשים על ידם כי הם שייכים למערכת ההפעלה הנפרדת והעצמאית שנשלטת על ידי Hyper-V. העקרון דומה לבידוד של שני VMs שרצים על מארח Hyper-V כאשר כל VM יכולה להשתמש רק במשאבי החומרה שהוקצו לה.
הערה: אם אתה זקוק למעבדה מסוג 1 מ-VMware, השתמש ב-VMware ESXi ובסביבת VMware vSphere. למד עוד בפוסטים הבלוג שלהלן: Hyper-V מול VMware, VMware Workstation מול VMware Player, ו-איך להתקין ESXi על Hyper-V.
בואו נסקור כיצד לפתור את בעיית הלא תיאומיות בין Hyper-V ויישומים שקיומם משתלב באופן וירטואלי במפורט.
שיטה 1: התקלקל על Hyper-V ב-GUI
בדוק מידע מערכת על הפרישה של Windows על ידי הרצת הפקודה הבאה ב-CMD:
msinfo32.exe
A System Information window opens. On the following screenshot, you see that Hyper-V is enabled (a hypervisor has been detected), and Device Guard Virtualization-based security is running. Now you can remove these features.
אתה צריך להיות מודע לכך שתכונות קשורות ל-Hyper-V הבאות לא יהיו זמינות לאחר שתסיר את Hyper-V:
- Hyper-V
- Credential Guard ו-Device Guard
- פלטפורמת מכונות וירטואליות
- חור עלומים של Windows
- WSL2.
הסר את התכונה Hyper-V בממשק המשתמש הגרפי (GUI) באמצעות פנקס השליטה, חיבור תפקידים ואלגוריתם חידושי תכונות.
ב-Windows 10, פתח פנקס השליטה, לחץ על תוכנות ותכונות, ואז לחץ על להדליק תכונות של Windows או לכבות.
החלון תכונות ה-Windows נפתח.
בְּחָר בְּסֵר תְּוּכָּחוֹת הי-V, והקשה אישור.
כדי לסיים את הסרת הי-V, נעלם המחשב.
השלבים להסרת הי-V ב-Windows 10 וב-Windows Server 2016 דומים.
ב-Windows Server 2016, פתח את שרת המנהל ולחץ ניהול > הסרת תפקידים ותכונות. באסימון הסרת תפקידים ותכונות, לך לשלב תפקידי שרת, ובְּסֵר בְּחָר הי-V. הקשה הבא בכל שלב כדי להמשיך. נדרש נעילה כדי לסיים את הסרת תפקיד הי-V.
שיטה 2: השתמש ב-PowerShell להשבת הי-V
אפשר לבצע פעולה דומה באמצעות ממשק שורת הפקודה במקום ה-GUI.
התחבר ל-PowerShell כמנהל מערכת, והפעל את הפקודה להשבת תכונת הי-V:
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor
נעילת מכשיר המארח שלך:
כותרת -r -t 0
שיטה 3: השבת הי-V באמצעות BCDedit
הרעיון מאחורי השיטה זו הוא לערוך נתוני הפריסה הבוקר ולהשבית את הפריסה של הי-V מבלי להסיר את תפקיד הי-V.
התחבר ל-PowerShell כמנהל מערכת, או הפעל את הפקודה ממסד הפקודות המוגדר מרומם כדי להשבית את הי-V:
bcdedit /set hypervisorlaunchtype off
אם אתה צריך להפעיל מחדש את הי-V ולקבוע שוב את הערך הברירת המחדל, הפעל את הפקודה הזו:
bcdedit /set hypervisorlaunchtype auto
לשיפור השליטה והנוחות, השבת את התפריט המהיר ב-Windows 10. פתח את עורכ הרגולטור של Windows, ועבור אל:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power
הגדר את הפרמטר HiberbootEnabled ל-0
אם אתה צריך להשתמש ב-VMs של Hyper-V מדי פעם, צור שני רשומות לטעינת Windows: אחד לטעינת Windows עם Hyper-V ואחר לטעינת Windows ללא Hyper-V. לאחר מכן, בחר את האפשרות הנדרשת לפני שתטען את Windows. זה מונע ממך לרוץ פקודות ב-PowerShell באופן ידני בכל פעם שאתה צריך להפעיל או לבטל את Hyper-V.
bcdedit /copy “{current}” /d “No Hyper-V”
“הרשומה הועתקה בהצלחה ל- {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}.”
העתק והדבק את הערך שלך במקום xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
bcdedit /set “{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}” hypervisorlaunchtype off
הפעל מחדש את המחשב.
ברגע שהמחשב שלך הפעיל מחדש, אתה צריך לראות שתי אפשרויות ב-Windows Boot Manager.
אם אתה רוצה להסיר את רשומת ההתחלה No Hyper-V, השתמש באופציה /delete עבור bcdedit.
קבל רשימה של רשומות ההתחלה הנוכחיות:
bcdedit /v
A list of all entries with their identifiers is displayed in the output. Copy the ID of the entry which you want to remove, and run the following command:
bcdedit /delete “{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}”
שיטה 4: מחק את התפקיד Hyper-V ב-PowerShell עם dism.exe
הרעיון מאחורי שיטה זו הוא להשתמש בכלי שיקום וניהול תמונת פלטפורמה בממשק הפקודה כדי להסיר את Hyper-V.
התחבר ל-CMD או ל-PowerShell כמנהיג. הפעל את הפקודה הבאה כדי להסיר את Hyper-V:
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
אם אתה רוצה להתקין Hyper-V שוב, השתמש בפקודה זו:
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
שיטה 5: כבה את בטחון הוירטואליזציה ב-Windows
שיטה זו משמשת לבטל את Device Guard ו-Credential Guard, שהם תכונות הקשורות ל-Hyper-V.
פתח את מערכת המדיניות של הקבוצה עבור מחשב מקומי. מערכת מדיניות הקבוצה זמינה ב-Windows 10 Pro, Enterprise ו-Education. בשורת הפקודות, הפעל gpedit.msc
עבור אל מדיניות מחשב מקומי > תיקיית המחשב > תיקיית המדיניות השלטונית > מערכת > Device Guard
לחץ פעמיים על הפעל את בטחון הוירטואליזציה. כברירת מחדל, מצב ההגדרה זו הוא לא מוגדר.
בחלון שנפתח, בחר נכבה ולחץ על אישור כדי לשמור את ההגדרות ולסגור את החלון.
ערוך את הרגיסטרי כחלופה
ב-Windows 10 Home, שבו עורך מדיניות הקבוצה אינו קיים, אפשר לבטל אבטחה מבוססת וירטואליזציה ברישום המערכת של Windows.
צור גיבוי של רישום המערכת של Windows לפני שינוי פרטי הרישום כדי להימנע משגיאות ובעיות.
פתח את עורך הרישום. הפעל regedit ב-שורת הפקודה שצריכה להיפתח כמנהל המערכת.
עבור אל HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > DeviceGuard
צור את כניסת EnableVirtualizationBasedSecurity אם כניסה זו חסרה. כדי ליצור כניסה חדשה, לחץ על מקום ריק במדריך DeviceGuard, ובתפריט ההקשר, לחץ על New > DWORD (32-bit) Value. הזן את השם EnableVirtualizationBasedSecurity לכניסה זו ברישום. כברירת מחדל, הערך המוגדר עבור כניסה זו צריך להיות 0 (ראה איור הבא). אפשר ללחוץ פעמיים על EnableVirtualizationBasedSecurity ולהגדיר 0 באופן ידני.
עבור אל HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Lsa
צור כניסה חדשה במדריך Lsa. לחץ על מקום ריק בחלון עורך הרישום. בתפריט ההקשר, לחץ על New > DWORD (32-bit) Value.
הזן את השם LsaCfgFlags עבור הערך זה. הערך זה חייב להיות מוגדר על 0.
סגור את עורך הרישום והפעל מחדש את המחשב שלך.
אפשר להפעיל את הפקודות הבאות ב-PowerShell (כמנהל מערכת) כדי לבטל את Device Guard ו-Credential Guard בתחילת ההתפרס של Windows.
הקפידו על חלוקה UEFI בחלקיק X: (בחרו תיקייה שאינה בשימוש):
mountvol X: /s
העתיקו את C:\Windows\System32\SecConfig.efi ל-X:\EFI\Microsoft\Boot\SecConfig.efi עם אפשרות להחליף את הקובץ אם הקובץ קיים. קובץ זה הוא תמונת התחלה עבור כלי הכונן של תצורת האבטחה של Windows.
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
צור אפשרות חדשה בתפריט ההתחלה עם הסימון {0cb3b571-2f2e-4343-a879-d86a476d7215} והשם DebugTool:
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d “DebugTool” /application osloader
קבע את האפשרות של ההתחלה שיצרת להתחלה בשלב הקודם ל-\EFI\Microsoft\Boot\SecConfig.efi:
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path “\EFI\Microsoft\Boot\SecConfig.efi”
קבע את Windows Boot Manager לעשות את הכניסה החדשה כברירת מחדל להתחלה הבאה. לאחר מכן, התחל את Windows וזה צריך לחזור להתחלה רגילה.
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
קבע את הבולטר להעביר את האפשרויות DISABLE-LSA-ISO,DISABLE-VBS לקובץ SecConfig.efi כשהבולטר מפעיל את הקובץ.
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
הגדר את החלון לדיסק המופעל לכונן X:
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
הורד את הכונן X: מהמערכת:
mountvol X: /d
שיטה 6: עדכון VMware Workstation
אם יש לך גרסת Windows 10 2004 (20H1) בניין 19041 או חדשה יותר במחשב הפיזי שלך, אפשר לשדרג את VMware Workstation ל- VMware Workstation 15.5.6 או חדשה יותר ולרוץ על VMware VMs במחשב Windows שלך מבלי לבטל/לתקן Hyper-V ובטיחות מבוססת תיאוריה (VBS), כולל Device Guard ו- Credential Guard.
בגלל הרבה תלונות מלקוחות, מיקרוסופט ו-VMware החליטו לפתח פרויקט משותף המאמץ באפיוני מערכת היפרוויזר המיקרוסופט (WHP) כדי לאפשר להיפרוויזרים מסוג 2, כמו VMware Workstation, לרוץ על מארח שבו Hyper-V מופעל. ה-APIs מאפשרים ליישומים לנהל משאבי CPU, לקרוא/לכתוב ערכי רגיסטרי, לסגור פעולת CPU, ולייצר הפרעות.
VMware Workstation לפני גרסה 15.5.5 משתמש ב- Virtual Machine Monitor (VMM) שיש לו גישה ישירה ל- CPU ולסטי פקודות התיאוריה (Intel VT-x או AMD-V). VMM פועל במצב מיוחד. אם תכונות מבוססות תיאוריה בטיחות מופעלות במארח Windows, אז שכבת היפרוויזר נוספת (Hyper-V) מוספת בין החומרה ו- Windows. Hyper-V יש גישה ישירה לתכונות ה-CPU המשמשות להתיישבות חומרה, ו- VMM אין גישה לתכונות התיאוריה של CPU.
החברה VMware ביצעה שינויים בארכיטקטורה של VMware Workstation 15.5.6 כדי לאפשר למוצר שלהם להשתמש ב- Microsoft WHP APIs ולתקן את בעיית התאימות. VMM כעת יכול לרוץ ברמת המשתמש (לא במצב הפריבילגי) באמצעות ה-WHP APIs ולהריץ מכונות וירטואליות בלי גישה ישירה להרחבות הוירטואליזציה של המעבד. מצב זה נקרא User Level Monitor (ULM) או מצב Host VBS. אם תסיר תכונות הנוגעות ל-Hyper-V מהמארח של Windows שלך, VMware Workstation יזהה זאת באופן אוטומטי, וה-VMM יופעל בגישה ישירה להרחבות הוירטואליזציה של המעבד (יופעל במצב הפריבילגי).
על מנת לאפשר ל- VMware Workstation להריץ מכונות וירטואליות של VMware על מחשב Windows פיזי יש להתקין את Windows Hypervisor Platform (WHP) על מחשב Windows בו הופעל Hyper-V. ניתן להתקין את תכונת Windows Hypervisor Platform בלוח הבקרה על ידי לחיצה על הפעל או כבה תכונות של Windows.
לכן, ניתן לעדכן את Windows 10 ואת VMware Workstation על המחשב הפיזי שלך לגרסאות התומכות בהרצת תכונות הנוגעות ל-Hyper-V ומכונות וירטואליות של VMware Workstation באותו מחשב.
המגבלות של מצב Host VBS:
- Windows Hypervisor Platform אינו נתמך ב- Windows Server 2016 ובגרסאות ומהדורות אחרות של Windows Server. כתוצאה מכך, אין אפשרות להריץ מכונות וירטואליות במצב VBS במחשבים פיזיים המריצים את Windows Server.
- הווירטואליזציה מקוננת אינה נתמכת. אי אפשר להריץ מכונות וירטואליות מקוננות (מכונות וירטואליות בתוך מכונות וירטואליות של VMware Workstation).
- מכונות וירטואליות של VMware עשויות לרוץ במהירות נמוכה יותר.
- סופרים של מעקב ביצועים של X86 (PMC) אינם נתמכים.
- יכולות המפתח הנתמכות בשכבת המשתמש (PKU) אינן זמינות.
- אין אפשרויות לזיכרון עסקאות מוגבל (RTM) ולהיעלמות נעילת חומרה (HLE) זמינות.
VirtualBox ו־Hyper-V
VirtualBox יכול לקיים קיים יחד עם Hyper-V, Device Guard, ו־Credential Guard החל מ־VirtualBox 6.0. VirtualBox 6 יכול לעבוד עם Hyper-V APIs באופן דומה ל־VMware Workstation ב־Windows 10 v1803 x64.
על מנת לאפשר ל־VirtualBox לעבוד עם Hyper-V APIs במחשב Windows מארח, יש להפעיל את היכולות הבאות:
- Hyper-V
- Windows Hypervisor Platform
אם היכולת Hyper-V מופעלת אך יכולת Windows Hypervisor Platform מנוטרלת, במידע סיכום של הקונפיגורציה של ה-VM בSystem > Acceleration, תוכל לראות שהמצב Paravirtualisation הוא פעיל. אם תנסה להפעיל VM, VirtualBox יזכיר לך להפעיל את Windows Hypervisor Platform ויציג את הודעת השגיאה.
הודעת השגיאה:
WHvCapabilityCodeHypervisorPresent הוא FALSE! ודא שהפעלת את יכולת ‘Windows Hypervisor Platform’.
(VERR_NEM_NOT_AVAILABLE).
VT-x אינו זמין (VERR_VMX_NO_VMX).
אם היכולות הנדרשות הקשורות ל-Hyper-V במערכת ה-Windows מופעלות, המידע הבא מוצג ל-VM בסקשן System:
Acceleration: VT-x/AMD-v, Nested Paging, Paravirtualization Hyper-V
ה-VM צריכה להתחיל בהצלחה. סמל צב ירוק מוצג בלוח התחתון של חלון VirtualBox. סמל זה מציין כי ה-VM פועל במצב הפרא-ווירטואליזציה של Hyper-V במקום המצב הנייטיבי שבדרך כלל משמש על ידי VirtualBox כאשר מתנהלים ישירות עם התוספות לווירטואליזציה של המעבד. ביצועי ה-VM של VirtualBox נמוכים במכונות בהן מופעלות תכונות של Hyper-V ותכונות קשורות. ניתן לנטרל או להסיר את Hyper-V כפי שהוסבר לשמור על הפעלת ה-VM ב-VirtualBox במצב הנייטיבי באמצעות התוספות לווירטואליזציה של המעבד ישירות.
קרא גם את ההשוואה בין VirtualBox ל-Hyper-V ואת ההשוואה בין VirtualBox ל-VMware.
מסקנה
תכונות Windows החדשות כמו אבטחת מבוססת וירטואליזציה (Guard Device ו-Guard Credential), Sandbox של Windows, WSL שמשתמשים במנוע Hyper-V גורמים להרבה בעיות למשתמשים, מנהלים ומפתחי תוכנה המשתמשים בהיפרויזורים אחרים כמו VMware Workstation, VirtualBox, QEMU ו-Android Emulator של Google על מכונות Windows. ישנם שני גישות לפתור את בעיות האי תאימות האלה: לנטרל/להסיר את Hyper-V או להשתמש בגרסאות חדשות של יישומי הווירטואליזציה שתומכים בעבודה עם API של Hyper-V, כמו תקן Windows Hypervisor Platform API שסופק על ידי Microsoft.
הפעלת מכונות וירטואליות על VirtualBox, VMware Workstation והיפרווייזורים אחרים על מכונות עם Hyper-V באמצעות APIs עשוי לפגוע בביצועים של מכונות וירטואליות לא-Hyper-V. גיבוי נתונים חיוני למקרים בהם אפליקציות הווירטואליזציה נכשלות. אם עדיין לא בחרת בפתרון הגיבוי הטוב ביותר עבור הסביבה שלך של Hyper-V, שקול לשקול את NAKIVO גיבוי & שחזור. הפתרון מציע גיבוי חזק, הגנה מפני רנסומוור, שחזור מצבי חירום ועוד. הורד את המהדורה החינמית כדי לראות את הפתרון בפועל.