תראו באיזו תקופה אנו חיים: אנחנו רוצים להריץ Linux על Windows או ההיפך? רוצים לנסות הפצת לינוקס חדשה? לבחון אפליקציה בסביבה סגורה? לראות מה וירוס יכול לעולל למכונה? אין שום בעיה. מתקינים תוכנת וירטואליזציה קניינית או חינמית, מגדירים מכונה וירטואלית, מכניסים את ה-ISO (או את התקליטור הפיזי) ותוך שניות ספורות המכונה הוירטואלית שועטת. מבחינת מערכת ההפעלה, מדובר במחשב לכל דבר ועניין, ומבחינתכם זוהי עוד אפליקציה שמאפשרת להנות מכמה עולמות: גם מס’ מערכות הפעלה וגם המשך עבודה עם המערכת הפעלה הנוכחית.
פעם, זה לא היה כך. עד לפני מס’ שנים הפתרונות היו .. “אילתורים” לרוב, במיוחד בצד של לינוקס. היית יכול להריץ אפליקציות ל-DOS ואפילו כמה משחקים שנכתבו עבור DOS, אבל אפליקציות ל-Windows היו אגוז קשה לפיצוח. Wine לא היה בדיוק הדבר שאיפשר לכל אפליקציה לרוץ על לינוקס, ולשם כך קמו להן כל מיני פתרונות (שהיו במקור רצים על מערכות יוניקס מתחרות) שידעו לקחת את ההתקנה של Windows, להרביץ לה עם ערימת טלאים ואיכשהו לגרום ל-Windows לרוץ, אבל גם אז, התאימות לא היתה משהו לרוץ לספר לחבר’ה. זה הריץ אפליקציות של Windows 95/98 אך לא מעבר לכך.
ואז הגיעו VMWare, חברה שהקים יהודי נחמד בשם ד”ר מנדל רוזנבלום שהיה עוזר פרופסור ואחראי על מחקר מערכות הפעלה ווירטואליזציה בסטנפורד (שם הם עשו מחקר רציני, והרימו את SimOS שהיתה מערכת וירטואליזציה נחמדה שאפשרה להריץ IRIX 5.3 ועוד מערכות על המעבדים שלא נכתבו עבורם מערכות אלו. VMWare פרצו את הדרך בוירטואליזציה ב-PC (מי שפרץ את הדרך בוירטואליזציה במקור היו בכלל IBM על MainFrame). היו כמובן וירטואליזציות בלינוקס, אך הן רצו באיטיות מטורפת, כמו לדוגמא פרויקט Bochs שאיפשר לך להריץ כל מערכת הפעלה שיועדה ל-PC על לינוקס, סולאריס ומערכות יוניקס אחרות שאין להן אפילו מעבד X86, אך מכיוון שהתוכנה עשתה סימולציה לכל רבע צ’יפ שקיים ב-PC, תוצאות ה”וירטואליזציה” היו בהתאם. בואו נאמר שלא הייתי ממליץ לנסות להריץ על זה פוטושופ
בעולם הלינוקס, כמו תמיד, ישנם גם פרויקטים שאחרים מפתחים והם לא תמיד מודעים לפרויקטים אחרים שמפותחים ברחבי האינטרנט. כך קם לו פרויקט שגם הוא התחיל באוניברסיטה ושמו היה Xen, ו-Xen הצליח לעשות משהו מעניין: להריץ מערכות הפעלה במהירות כמעט כמו המהירות שמערכת ההפעלה הרגילה היתה רצה, רק לשם כך, היה צריך לשנות כמה דברים בליבה של מערכת ההפעלה. בלינוקס הקוד פתוח והמפתחים של Xen עשו את השינויים והריצו לינוקס במהירויות מרשימות (יחסית לוירטואליזציה כמובן).
פרויקט אחר שהתחיל היה פרויקט QEMU. הפרויקט הומצא ע”י אדם אחד, ידיד יקר בשם פאבריס בלארד, גאון מחשבים בנשמתו שהחליט לכתוב ללינוקס שרץ על Main Frame להריץ אפליקציות User Level שנכתבו ל-Windows. יום אחד מצאתי אותו ב-IRC והכרתי לו את bochs ולפאבריס נולד רעיון: לכתוב את רוב חלקי bochs מחדש רק ללא צורך בסימולציה של X86, אך במקביל לאפשר לעשות אמולציה דינמית של מעבדים אחרים (ARM, PowerPC ועוד), כך שב-QEMU תוכל לבחור את המעבד, הצ’יפים הנלווים וכו’, ותוכל להרים מערכות וירטואליזציה שתרצה. פאבריס נכנס לאטרף כתיבה (הוא שד!) והפרויקט החל לקרום עור וגידים והצטרפו אליו מפתחים נוספים. מי שהיה עוקב אחרי רשימת התפוצה היה מופתע מחדש כל פעם למצוא עוד מפתח שכתב תוסף שמדמה צ’יפ נוסף: פה בקר IDE נוסף, USB, כרטיס גרפי והרשימה ארוכה.
מבחינת וירטואליזציה, QEMU התקדם לא רע, כאשר הקבוצה היתה נתקלת מחדש בכל פעם בבאגים מעצבנים בחומרה עצמה שהיה צריך לעשות להם סימולציה, כך לדוגמא ידוע הסיפור על באג מעצבן מאוד וחמקן בבקר IDE שכאשר ניסית להתקין Windows 2000 על QEMU, ההתקנה היתה נעצרת עם הודעת Disk Full, ולא חשוב מה גודל הדיסק שיצרת. החסרון המהותי של QEMU היה חוסר “Hypervisor”, אותו מודול שהיה “תופס” קריאות של מערכת הפעלה לברזלים ברמה של טבעת 0, ונותן למערכת ההפעלה משהו אחר במקום. פאבריס לא רצה לכתוב את זה בהתחלה כי הוא חשש שאחרים יקחו את זה וזה לא יהיה שווה לו. לאחר שיחה שכללה המון דאחקות, צחוקים וכו’ עם כותב שורות אלו, נאות פאבריס לכתוב מודול כזה אך ללא שחרור הקוד שלו (הוא רצה להרוויח מזה), ולאחר שהוא הוציא את המודול, QEMU החל לתת ביצועים הרבה יותר טובים ולאחר זמן מה הוא שיחרר את המודול הזה (שנקרא KQEMU) ברשיון GPL. באותה תקופה החלו אנשים מסויימים להתעניין מאוד ב-QEMU ולשלב אותו במוצר שלהם. הם נקראו Android.
נחזור ל-XEN: החבר’ה שפיתחו אותו עקבו אחרי QEMU והחליטו “להשאיל” את הקוד כדי לשלב אותו ב-XEN, מה שנתן ל-XEN חלקים חסרים (אמולציה של ציודים וכו’). במקביל אינטל הכריזה כי היא מפתחת תוסף למעבדים שיאפשר להריץ מכונות וירטואליות ברמה של המעבד (אם כי עדיין ללא הפרדה של DMA ברמת הברזל).
פה בארץ במקביל ישבו כמה חבר’ה שעקבו אחרי QEMU ואחרי ההכרזה של אינטל והקימו משהו מתחרה ל-XEN, הלו הוא KVM והוא פותח במסגרת סטאאט אפ שנקרא Qumranet והמפתח הראשי שלו (אבי קיויתי) היה שותף בפיתוח QEMU והוא זה שהצליח להכניס את קוד ה-KVM לתוך הליבה של לינוקס.
כך הגענו בסביבות שנות 2005 למצב שבו היה פתרון מסחרי לוירטואליזציה (VMWare), ופתרונות וירטואליזציה מבוססי קוד פתוח: KVM, QEMU ו-Xen.
בחלק הבא נסקור את הפתרונות וירטואליזציה לשולחן העבודה.
הפעם זה נשמע שאתה בונה על הבורות של הקוראים שלך…. (אולי אני טועה
רק תסביר בבקשה מה הקשר של הפיסקא האחרונה "כך הגענו לפיתרון וירטואליזציה מסחרי וכו" כאילו ויש איזה קשר בין הפתרון של VMWARE לבין כל הפתרונות שיוצרות סימולציה מסוימת של רכיב חומרה כמו QEMU והשאר שהזכרת.
ואשמח אם תסביר מה הקשר של כל הפתרונות האלו ל-Android (אם אני מבין נכון אתה מתכוון לאנדרוייד של גוגל Android, שממש אני לא מבין איך הוא קשור לסימולציה ווירטואליציה)
ת'אמת, הרשומה הזאת נשמעת כמו שרצית לספר על היידע שלך בתחום, מאשר להסביר לקוראים איזה עמדה או סקירה על התחום,
אותי זה מאוד מעניין אז אני יקווה שהפוסט הבא על וירטאליזציה, יהיה בו הרבה מידע קונקרטי, ופחות יחצנות שלא נותנת לקוראים שום דבר ברור,
פינגבאק: כמה מילים על מכונות וירטואליות (חלק 2/3: שולחן עבודה) | כמה מילים, ברשותכם