מסמך זה הוא בעיקרו תרגום של המסמך בקישור הבא.
אחרי מספר נסיונות של התקנת openSUSE\SLES בתור מערכת עצמאית בתוך VMWARE או qemu, והמרת מערכת הקבצים למערכת ש Xen ידע לקרוא, די התייאשתי מאורך התהליך וכמות השינויים שיש לבצע אחרי ההתקנה כדי לקבל מערכת עובדת ב -Xen.
אז שמתי לי למטרה למצוא דרך קלה יותר לבצע את התהליך.
לאחר מעט חשיבה, הגעתי להארה כי openSuSE 10.1 (ו- SLES 10) כבר יודעת להתנהג יפה כמערכת שמותקנת תחת XEN (כמו שפדורה 5\anaconda כבר יודעות), מכיוון שבגירסאות אלו הוכנס מודול לYaST- שמתקין openSuSE כמכונה וירטואלית (מה שאומר שה-initrd שלה כבר יודע לעבוד בסביבה של Xen)
אחרי קצת נסיונות וכמה חיפושים בגוגל, הגעתי למשהו עובד, שמצאתי שמתואר במסמך המקורי בדרך טובה וישירה יותר מאשר אני נקטתי.
היעד היה להתקין openSuSE על פדורה 5, כמו שציינתי, ללא התקנה והעתקה של מערכת ממקור אחר. מדריך זה הוא פירוט הפעולות שלי.
מדריך זה מניח ש- Xen כבר מותקן ועובד.
נשתמש בכלי rpm2cpio על מנת לחלץ את הקבצים הנחוצים, אם ההפצה שלכם אינה מבוססת RPM, תוכלו להשתמש בכלי rpm2targz. במדריך זה אדגים שימוש ב- rpm2cpio.
הכותרת של מדריך זה מדברת על openSuSE ו- SLES. התהליך הוא זהה כמעט לחלוטין, לכן אדגים את התהליך על openSuSE, ואיפה שצריך, אציין את השינויים הדרושים.
ע”מ להתקין openSuSE כמערכת Xen Guest, נצטרך 2 קבצים עיקריים: קרנל מאופשר Xen וסקריפט שיאפשר לנו ליצור initrd של ההתקנה מאותו הקרנל.
הקבצים הנחוצים זמינים בכתובות הבאות:
עבור SLES: את אותם הקבצים (בגרסאות קצת שונות) תמצאו בדיסק הראשון והאחרון בהתאמה.
לצורך הנסיונות שלי, הורדתי את ה-DVD של openSuSE, עשיתי לו mount לספריה מקומית, ויצאתי אותה דרך samba (כמובן שגם NFS\HTTP\FTP יעבדו מצויין, מה שנוח וקל יותר לכם הקוראים)
ניתן בודאי לבצע התקנה רשתית מלאה (דרך אתר מראה של openSuSE), אבל הדבר לא צלח בידי, בכמה נסיונות שונים (אני חייב לציין פה שגם לי זה א עבד. כ.ט.) הפרוצדורה עצמה מתחילה נכון, אבל נראה של-installer יש בעית משאבים, ייתכן וחסר RAM (אני ניסית 256M), ייתכן כי העלאת כמות ה-RAM תפתור את הבעיה.
ישנן 2 גישות: rpm2targz ו- rpm2cpio. מכיוון שמדריך זה מוכוון להתקנה מעל פדורה, נתרכז ב rpm2cpio. התהליך הוא די דומה בעזרת rpm2targz, מה שחשוב, הוא חילוץ הקרנל וקבצי ההתקנה.
ספריית העבודה שלנו תהיה /tmp/suse-xen.
לצורך הכנת ה-initrd, נצור ספריה ב /tmp/suse-xen אשר תכיל את הקבצים החשובים לצורך בניית ה-initrd.
mkdir -p /tmp/suse-xen/prep
בעזרת rpm2cpio, נחלץ את התוכן של 2 ה-RPM-ים שזה עתה הורדנו:
rpm2cpio install-initrd-1.0-19.i586.rpm | cpio -id rpm2cpio kernel-xen-2.6.16.13-4.i586.rpm | cpio -id
כעת, אמורות להיות הספריות “boot”, “lib” ו- “usr” בספרייה הנוכחית (/tmp/suse-xen/prep). במידה ולא, חפשו הודעות שגיאה מתהליך ה rpm2cpio.
עברו לספריה usr/bin (בתוך /tmp/suse-xen/prep):
cd usr/sbin
מכיוון שהקבצים נפרסו ב /tmp/suse-xen/prep, יש צורך לשנות את המשתנה “kernel_dir” בתוך הסקריפט שיוצר את ה-initrd, כדי שיפנה לספריית השורש הנכונה.
ערכו את הקובץ mkinstallinitrd, בשורה 48 שנו את הערך
my $kernel_dir = "";
ל-
my $kernel_dir = "/tmp/suse-xe/prep";
בשלב זה, נריץ את הסקריפט ע”מ שייצור לנו את ה-initrd:
./mkinstallinitrd --kernel=2.6.16.13-4-xen --libdir=/tmp/suse-xen/usr/lib/install-initrd suse10.1-install-initrd
תהליך זה אמור לקחת כדקה, כמובן בתלוי במהירות המחשב שלכם. בתום התהליך, אמור להיות לכם קובץ שנקרא suse10.1-install-initrd בספריה הנוכחית. העתיקו אותו ל /tmp/suse-xen.
בנוסף, נצטרך את הקרנל שחילצנו כעת ע”מ להתחיל את ההתקנה, העתיקו את הקובץ boot/vmlinuz-<VERSION>-xen לתוך /tmp/sus-xen.
גם כאן, יש לנן 2 גישות אפשריות, הראשונה היא שיוך מחיצה פיזית או Logical Volume למכונה, או יצירת image file שישמש כדיסק לוגי שהמערכת תראה.
אני אינני משתמש ב LVM כרגע, לכן אדגים כיצד ליצור LV (Logical Volume) אבל אשתמש בדיסק וירטואלי לצורך המשך ההדגמה. ע”מ ליצור LV נריץ את הפקודה:
lvcreate -nsuse101-vm -L4G Xen_VG
פקודה זו תיצור LV בשם suse101-vm בגודל של 4G, ב- Volume Group שנקרא Xen_VG. כדי לצור קובץ שישמש כדיסק וירטואלי, נשתמש בפקודה:
dd if=/dev/zero of=/tmp/suse-xen/suse101-disk.img bs=1M count=1 seek=4000
פקודה זו תיצור קובץ ריק, שיוכל לגדול עד 4G, ושישמש לנו כדיסק וירטואלי.
בשלב זה אנו נצטרך 2 קבצי קונפיגורציה, אחד בשביל ההתקנה ואחד בשביל ריצה רגילה. הסיבה לכך היא שה-initrd (והאופציות שמועברות אליו) שמשמש להתקנה אינו יכול לשמש עבור ריצה. בשלב זה נצור את קובץ הקונפיגורציה לצורך התקנה, /tmp/suse-xen/suse101-inst.cfg
name = 'suse10.1-inst' kernel = '/tmp/suse-xen/vmlinuz-2.6.16.13-4-xen' ramdisk = '/tmp/suse-xen/suse10.1-install-initrd' memory = '256' vif = [ '' ] root = '/dev/ram0' extra = 'vnc=1 ramdisk_size=65000'
אם אתם משתמשים ב-LVM, השתמשו בשורה הבא
disk = '[phys:/data/Xen_VG/suse101-vm,hda1,w]'
או ב
disk = '[file:/tmp/suse-xen/suse101-disk.img,xvda,w]'
עבור דיסק לוגי.
הערך “vnc=1” שמועבר ל-initrd יגרום להתקנה להיות מורצת מעל VNC. ה-installer יבקש סיסמא עבור VNC כשתתחיל ההתקנה.
שמרו את הקונפיגורציה בקובץ /tmp/suse-xen/suse10.1-install ואתחלו את ה guest domain:
xm create -c suse10.1-install
בשלב זה אמור להתחיל תהליך ההתקנה, בצעו את ההתקנה לפי השלבים, אם אתם צריכים עוד עזרה בהתקנה של openSuSE יש תמיד את מדריך ההתקנה
scp /boot/initrd-2.6.16.13-4-xen root@xen-dom0:/tmp/suse-xen
נצור את הקובץ /tmp/suse-xen/suse10.1-vm עם הערכים הבאים:
name = 'suse10.1-vm' kernel = '/tmp/suse-xen/vmlinuz-2.6.16.13-4-xen' ramdisk = '/tmp/suse-xen/initrd-vmlinuz-2.6.16.13-4-xen' memory = '256' vif = [ '' ] root = '/dev/xvda2'
שוב, אם אתם משתמשים ב-LVM, השתמשו בשורה הבא
disk = '[phys:/data/Xen_VG/suse101-vm,hda1,w]'
או ב
disk = '[file:/tmp/suse-xen/suse101-disk.img,xvda,w]'
עבור דיסק לוגי.
ייתכן ותרצו להעתיק את קובץ הקונפיגורציה ל /etc/xen
xm create -c /tmp/suse-xen/suse10.1-vmזהו, לא היה קשה במיחוד, נכון? תהנו מה openSusE\SLES שלכם.