jiyuu-מחשבות פתוחות

הרפתקאות עם lguest

31/08/2007 18:17 ע"י כתריאל טראום

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

למי שלא מכיר, למי שלא שמע, lguest הוא פתרון וירטואליזצה קליל ("רק" 5000 שורות קוד) שכתב ראסטי ראסל (Rusty Russell) ומוזג עם קרנל 2.6.23 לראשונה.

lguest מגיע כמודול (אם רוצים) וכלי userland פשוט לניהול ה-VM-ים אשר יושב בספריית lguest תחת Documentation בעץ הקרנל. קימפול הכלי הוא די פשוט ומוסבר בדוקומנטציה. לפני שתתחילו לעבוד עם lguest, קמפלו אותו.

בהמשך להשוואה שערכתי בפוסט קודם, אציין רק שהחוזק העיקרי של lguest הוא הפשטות וה"קלות" שלו לעומת פתרונות אחרים. הוא משתמש באותו הקרנל בעבור מחשב אורח ומארח, ומדובר רק במודול ולא ארכיטקטורה שלמה.
החסרון העיקרי שלו לעומת המתחרים הוא חוסר תמיכה במערכות אחרות מלינוקס. אישית הנושא של חוסר תמיכה במערכות שאינן לינוקס אינו מפריע. גם כך אינני עובד איתם בבית ביום יום. (למרות שיש לי XP (חוקי, כן, כן, חוקי למהדרין) ב-Dual Boot בשביל הבנק ופתרון VPN שלא נתמך בלינוקס, לכו תבינו).

לפני שמתחילים לעבוד עם lguest, להלן רשימת נושאים שכדאי לדעת לפני. למזלכם, כבר השקעתי את הזמן כדי לפתור את הבעיות עד שעלתה לי מערכת:

  • lguest עדיין לא מגיע עם הפצות נפוצות כרגע, מכיוון שהוא הוכנס כ-Patch רק בגירסא 2.6.23-rc1. מה שאומר בעצם שכרגע, צריך לקמפל קרנל בשביל תמיכה ב-lguest. לא להיט, אבל לא נורא אם יש קצת סבלנות. הערכים שיש לדאוג לאפשר הם:
  CONFIG_HIGHMEM64G=n ("High Memory Support" "64GB")[1]
  CONFIG_TUN=y/m ("Universal TUN/TAP device driver support")
  CONFIG_EXPERIMENTAL=y ("Prompt for development and/or incomplete code/drivers")
  CONFIG_PARAVIRT=y ("Paravirtualization support (EXPERIMENTAL)")
  CONFIG_LGUEST=y/m ("Linux hypervisor example code") 

הערה: CONFIG_LGUEST נמצא תחת Device Drivers

  • ה-console device של מערכת שרצה תחת lguest הוא /dev/hvc0, צריך להוסיף שורה בסגנון של:
1:2345:respawn:/sbin/getty hvc0

לקובץ /etc/inittab של ה-image שבו תשתמשו. ולא לשכוח, כדי ש-root יכול לעשות דרכו לוגין, צריך להוסיף אותו ל-/etc/securetty

  • lguest משתמש ב-tunnel device כדי לתקשר עם מערכת ההפעלה המארחת. דרך אחת היא להשתמש ברשת פרטית ו-NAT כדי לאפשר ל-VM לצאת לעולם, אך הדרך שמצאתי נוחה יותר היא בעזרת Bridge. בפדורה, כדי לקנפג Bridge Interface יש לצור קובץ ifcfg-lg0 שהוא בעצם Bridge ולקשר אליו את eth0.

אצלי זה נראה כך:

  • הקובץ /etc/sysconfig/network-scripts/ifcfg-lg0:
DEVICE=lg0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.10
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
  • והקובץ /etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
BRIDGE=lg0

יותר מאוחר כאשר נצור את ה-VM, נקשר אותו ל-Bridge הנ"ל.

  • הדיסקים של המערכת האורחת נקראים lgba, lgbb וכו'. הייתי צריך לעדכן את ה-fstab של המערכת האורחת כדי שתתאים לשמות החדשים. בנוסף צריך לעשות אחד משני הדברים הבאים כדי שהמערכת תכיר את ה-block devices:
    • לדאוג שלמערכת האורחת יש udev
    • לצור אותם עם mknod. ה-major של lgba הוא 253 ושל lgbb הוא 252. השיטה העדיפה היא כמובן udev.

טוב, אני חושב שזה כל ה-gotchas שצריך לשים לב אליהם. אפשר להתחיל לעבוד.
אני השתמשי ב-image של דביאן בגירסא 3.1 שהורדתי מ-jailtime.org, ושידרגתי בעזרת apt לגירסה 4.
שימו לב : כדי לחסוך בזמן הורדה/מקום, jailtime מספקים rootfs בגודל של 1G בלבד. ניתן לעקוב אחרי ההוראות הבאות כדי להגדיל אותו.

אחרי שהורדתי, פרסתי, מחקתי את המיותר ושיניתי שמות למשהו הגיוני יותר נותרתי עם הקבצים הבאים:

  • root-lgba.img
  • swap-lgbb.img

שלב הבא היה סידור ה-rootfs כדי שיעבוד עם lguest. עיגנתי את root-lgba.img וביצעתי chroot לתוכו. ערכתי את fstab, inittab, securetty והתקנתי udev בשביל יצירה אוטומאטית של devices. זהו, מוכנים להפעיל את lguest כבר?
רק עוד נקודה אחרונה. אין ל-lguest עדיין ניהול קונסול מבריק או יכולות daemon. הכלי lguest (כבר קימפלתם אותו נכון?) מורץ משורת הפקודה, ואם תסגרו את הטרמינל או תריצו pkill lguest, ה-VM שלכם ימות באכזריות. לצורך כך השתמשתי ב-screen כדי להריץ את ה-vm ולשמור לי את היכולת להתנתק ממנו בעת הצורך כדי שלא יתפוס לי טרמינל.

יאללה, לעבודה, הכל מוכן. הפקודה להרצת ה-vm נראית כך:

# screen
# lguest 128m /boot/vmlinux-2.6.23-rc5-lguest --tunnet=bridge:lg0 \
--block=/home/data/vm/web-vm/root-lgba.img \
--block=/home/data/vm/web-vm/swap-lgbb.img root="/dev/lgba ro"

שימו לב שאני משתמש ב vmlinux (שעשיתי לו strip) ולא vmlinuz. לפי הדוקומנטציה ניתן להשתמש ב vmlinuz אך בנסיונות שלי זה לא עבד. אם הכל עבר כשורה, יש לכם כעת VM רץ לשימושכם.

אישית אני משתמש ב-lguest כ-vm לפיתוח של jiyuu. שימושי.

פוטו רצח

31/08/2007 11:47 ע"י כתריאל טראום

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

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

ל-jiyuu יש טיוטות

27/08/2007 23:42 ע"י כתריאל טראום

הבטחתי לעצמי שאצ'פר את עצמי בהוספת יכולת של שמירת בלוג כטויטה לפני פרסום. אז הנה, סוף סוף היה לי את השעה+ זמן פנוי בכדי להוסיף את ה-Feature.

בלי קשר, להלן רשימה של דברים שהוספתי לאחרונה:

  • תמיכה ב-Google Sitemap/AdSense
  • אפשרות ל-Post Preview
  • אפשרות לשמירה כטיוטה לפני פרסום
  • מעבר ל-PDO/sqlite3, הדרך ה"סטנדרטית" (אם יש כזו) של PHP5 לעבוד מול sqlite
  • אופציה למעבר בין URL Rewriting ל- Full URL (אני לא סובל את זה אישית, מכוער מדי)

אשמח לשמוע עוד הצעות ל-Features.

זמן = כסף

22/08/2007 21:23 ע"י כתריאל טראום

חוסר זמן = חוסר כסף?
כן, טוב, לאחרונה אני די עסוק בעבודה ואין לי הרבה זמן להתעדכן וללמוד כמו שהייתי רוצה. כבר הגעתי למצב שמרוב שהתחלתי ולא סיימתי פוסטים מסיבה זו או אחרת (עיפות, הקטנצ'יק שצריך מקלחת ומה לא..), אני כותב את הפוסט הזה כבר שבוע, וכל פעם שומר אותו בפיתקית ב-tomboy. אולי הגיע הזמן להוסיף שמירה כטיוטא ל-jiyuu.

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

מיקרוסופט שוב מוכיחה כמה היא רוצה "הידודיות"

09/08/2007 22:21 ע"י כתריאל טראום

בהרצאה שלו ב-LinuxWorld, אומר סאם רמג'י (Sam Ramji) כי מיקרוסופט לא רואה דרישה רבה לוירטואליזציה של חלונות מעל לינוקס או בכלל לשימוש בלינוקס כשולחן עבודה. <ציניות>אופייני למיקרוספוט כמובן היא העובדה שהמידע הזה הגיע דרך פורום הידודיות של לקוחות מיקרוסופט. כלומר, לקוחות של מיקרוסופט</ציניות>

בעוד מיקרוסופט כן עובדת בשיתוף עם חברות כמו נובל ו-XenSource כדי לשפר את ההידודיות (interoperability) בין מערכות לינוקס וחלונות, לדעתי היא חוטאת למטרה כאשר היא מזניחה שוק שלם של משתמשים ביתיים ועסקיים שכן היו רוצים לשלב בין המערכות ברמת הדסקטופ, ולבחור בשילוב המתאים לה: לינוקס מעל חלונות, או ההפך.
בעצם מה שאומרת מיקרוסופט הוא שהם לא יתמכו בהרצה של XP או Vista (לא יודע למה מישהו ירצה להריץ מפלצת כזו בסביבה וירטואלית, אבל נניח שכן לצורך הדיון) מעל לינוקס בסביבה וירטואלית.

מה שלדעתי שמיקרוסופט כנראה לא מבינה, הוא שצעד זה כנראה יפגע בה לטווח הארוך. עם ההתפשטות ההולכת וגוברת של וירטואליזציה ברמת הדסקטופ, האפשרות להריץ חלונות בסביבה וירטואלית פותר להרבה משתמשים את הבעיה של שימוש בכמה מערכות הפעלה במקביל (אם זה לצרכי פיתוח, בדיקות או סתם כי מתחשמק להם).

אז נכון, חלק יאמרו, מה זה משנה למשתמש הבייתי, העובדה כי זה לא נתמך רשמית, אינה אומרת כי זה לא יעבוד. ואכן, השילוב הזה עובד. היום על כל מעבד חדש ניתן כבר להריץ חלונות מעל לינוקס בעזרת Xen, qemu או פתרונות אחרים, ואפילו לא ממש להרגיש את התקורה על המערכת העיקרית. אבל אסור לשכוח, מה שהמשתמש לומד בבית הוא הרבה פעמים ירצה להביא לעבודה, ולהפך.

אני בטוח שמנהלי מיקרוסופט לא מאבדים על זה שעות שינה: סך הכל עוד כמה "משוגעי קוד פתוח" שביקשו עוד איזה בקשה מוזרה. אבל בתקופה שמיקרוסופט לפחות מנסה להראות פתוחה, תודו שזה זה לא מצלצל טוב.

בא לשכונה בלוג חדש

08/08/2007 23:47 ע"י כתריאל טראום

הנה מתווסף לו עוד בלוג לשכונה. כבר הרבה זמן אני קורא ונהנה מבלוגים של אנשים בקהילה כמו הבלוג של ליאור קפלן, דותן קמבר, שושנה פורבס ואחרים. אני חייב להודות, מעולם, לא הייתי הבן-אדם הכי רהוט ורציף בכתיבתי (גם את בלוג הזה קצת קשה לי להוציא ב"מכה", הכתיבה די קטועה), אבל הרגשתי שזו אולי תהיה דרך לשפר קצת את ה"רהיטות" שלי בכתיבה, ותוך כדי, לכתוב על נושאים שמעניינים אותי: טכניים ואישיים יותר.

מעניין אותי לשמוע אולי מבלוגרים אחרים ש(אולי?)קוראים את הבלוג הזה, איך אתם כותבים? איך באים לכם ה"רעיונות"? בשינה? בעבודה? בשרותים?

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

אז חברים, הנה הנסיון שלי לעשות משהו יצירתי ואחר קצת משרתי Xen, קינפוג WebSphere וגידול קישואים בגינה (שאגב גודלים ממש ממש יפה, והם גם טעימים, אולי אצרף תמונה לבלוג בעתיד).

כמובן, שבלי (אן שאם) קשר לנ"ל, הבלוג הזה יעסוק גם בעניינים טכניים שמעניינים אותי, ובתקווה שגם אתכם הקוראים, כשיהיו כאלו.

וירטואליזציה בלינוקס - חידושים

01/08/2007 18:54 ע"י כתריאל טראום

KernelTrap מדווח על כמה שינויים אשר מוזגו (Merged) למה שיהיה קרנל גירסה 2.6.23 אשר נוגעים לוירטואליזציה. השינויים נוגעים ל- Xen, KVM והבחור החדש בשכונה, lguest.

xen

עד היום xen סופק כחבילה אשר מכילה את כלי ה-userland, את ה-hypervisor kernel וסדרת טלאים אשר בזמן קימפול של Xen שימשו לבנות קרנל שהוא xen enabled. די מגושם.

החל מגרסא 2.6.23 מוזגו כל ה-Core components של Xen לתוך הקרנל הראשי של לינוס, מה שאומר לא עוד טלאים לגירסאות הבאות של Xen. מעניין כמה זמן יקח לחבר'ה ב-Xen לעבור ל-2.6.23.

KVM

הכוכב העולה בתחום הוירטואליזציה. בניגוד ל-Xen, הוא מגיע כמודול פשוט לקרנל, ולא כקרנל בפני עצמו. למי שלא מכיר, KVM הוא פתרון Full Virtualization אשר חייב את הרחבת הוירטואליזציה AMD-V/VT שקיימת בכל המעבדים החדשם שיוצאים היום לשוק. הבעיה מתעוררת כאשר רוצים לנצל מחשב ישן יותר כדי להשתמש ב-KVM, זה פשוט בלתי אפשרי.

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

lguest

זהו פתרון וירטואליזציה חדש, אשר פיתח אחד ממפתחי הקרנל שאני לפחות, יותר מעריך, ראסטי ראסל (Rusty Russell). למי שלא מכיר, ראסטי הוא המפתח של ipchains לקרנל 2.2/2.4 ויותר מאוחר של netfilter עבור קרנל 2.6.

lguest הוא מודול לקרנל (בשונה מ-Xen) אשר לא צריך AMD-V/VT כדי לעבוד (מה ש-KVM חייב). הוא משתמש באותו הקרנל של המערכת הראשית כדי לצור מערכות וירטואליות. כל מה שצריך הוא להכין file system image של המערכת שרוצים לעבוד איתה, modproge lg, ואפשר להתחיל לעבוד (אחרי קמפול קצר של כלי ה-userland).

אני מקווה בקרוב לכתוב בלוג נוסף עם סקירה מעמיקה יותר של lguest אחרי שיצא לי לעבוד איתו קצת.

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