בקורס הזה נשתמש במערכת בנוייה מכמה חלקים:
נגן למכונה וירטואלית - Virtualbox או VMWare - בכללי VMWare יותר טוב אבל אם יש לכם בעיות איתו או השני כבר מותקן, אין בעיה
מעל הנגן, מכונה וירטואלית של אובנטו (הפצה של לינוקס)
אמולטור - QEMU - כבר מותקן אם משתמשים במכונה של הפתוחה
XV6 - מערכת הפעלה קלה לצרכי למידה - נקבל גרסה חדשה בכל ממ"ן, ונריץ על גבי QEMU, בתוך האובנטו
אין צורך בהתקנת Eclipse בקורס הזה, השינויים שנעשים הם מאוד קטנים, ואפשר לעשות אותם בעורך הבסיסי של אובנטו. בנוסף אין צורך לעבוד עם דיבוג של מערכת ההפעלה - זה אולי נותן ניסיון אבל זה ממש לא הכרחי בקורס הזה.
ווינדוס - התקינו את הנגן VMWare מכאן (הקישור הוא מאתר הקורס) או את VirtualBox. מאק - הורידו את VirtualBox.
חלצו את הזיפ שהורד
עבור VMWare פתחו את הקובץ עם סיומת vmx באמצעות בחור אפליקציה ← VMWare. עבור VirtualBox כנסו לאפליקציה, לחץ Open (הפלוס הירוק) ולחץ את הקובץ עם סיומת vbox.
למשתמשי VMWare - גררו את התיקייה xv6-11 מתוך תיקיית הממ"ן לתוך המכונה. אם לא עובד לגרור כבו את האובנטו, צרו תיקייה במחשב שלכם שתשמש כתיקייה משותפת. כנסו להגדרות של המכונה והוסיפו תיקייה משותפת חדשה. כנסו שוב למכונה ופתחו את VMWare_MountShared שנמצא בשולחן עבודה. התיקייה המשותפת תופיע שם.
למשתמשי VirtualBox - כבו את האובנטו. צרו תיקייה במחשב שלכם שתשמש כתיקייה משותפת. כנסו להגדרות של המכונה והוסיפו תיקייה משותפת חדשה. כנסו שוב למכונה, אם התיקייה לא מופיעה בשולחן העבודה אז כנסו למערכת הקבצים, לתיקיית הבית של המשתמש ואז לתיקייה media. התקייה המשותפת תופיע בשם sf_your_folder_name.
רק אם התקנתם מכונה שהיא לא של האוניברסיטה השתמשו בשורה הפקודה כדי להתקין את QEMU עם השורה: sudo apt install qemu-system. בנוסף התקינו את שפת הסקריפט expect של הטסטרים של הקורס עם השורה: sudo apt install expect.
כעת נשאר רק להפעיל את מכונת ה-XV6. פתחו את שורת הפקודה בתוך התיקייה של XV6 והריצו את 3 הפקודות הבאות, אחד אחד. אחרי שהמכונה מופעלת מומלץ לחזור לטרמינל הסגול במקום השחור (בשחור העכבר בדרך כלל נתקע)
make clean
make
make qemu
הסבר זה מבוסס על מדריך מאתר הקורס שסטודנט כתב.
למי שאין לו brew מותקן
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
אם המערכת תומכת בפקודות של 32 סיביות (כנראה שהיא לא)
brew install qemu x86_64-elf-gdb x86_64-elf-gcc
export TOOLPREFIX=x86_64-elf-
export QEMU=qemu-system-i386
make
make qemu
אחרת, אם המערכת לא תומכת בפקודות של 32 סיביות
brew install qemu
brew install i686-elf-gcc
brew install i686-elf-binutils
brew install expect
brew install i386-elf-gdb //i386 here isn't mistake, i686-elf-gdb doesn't exist in homebrew
sudo ln -s $(brew --prefix qemu)/bin/qemu-system-i386 /usr/local/bin/qemu-system-i686
בתיקייה של XV6 בקובץ sh.c מעל שורה 56 [void runcmd(struct cmd *cmd)] הוסיפו
__attribute__((noreturn))
בראש הקובץ mp.c הוסיפו
#pragma GCC diagnostic ignored "-Warray-bounds"
פתחו את הטרמינל בתוך התיקייה של XV6 והריצו:
export TOOLPREFIX=i686-elf-
אם זה לא עבד אז הריצו:
export PATH=TOOLPREFIX=i686-elf-
בנוסף, הריצו:
export QEMU=qemu-system-i686
/bin/chmod 777 *.pl
כעת נשאר רק להפעיל את מכונת ה-XV6:
make clean; make; make qemu
יש דרכים אחרים לבצע את המטלות, לרוב בצורה הרבה יותר נוחה, אבל אבל כמובן אין את ההבטחה שזאת אותה סביבה של המרצים.
למשתמשי ווינדוס - בעקרון אפשר להשתמש ב-WSL, וזה הרבה פחות כבד על המחשב מאשר מכונה וירטואלית, מניסיון זה עובד מעולה.
הסבר יבוא בהמשך איך לבצע את המטלות עם Google Console.