צילום מסך של מאסטרו
חלודה צברה מספיק פופולריות עד כדי כך שהיא הפכה לאחת מאלה שנבחרו להשתלב כשפה משנית בלינוקס, כמו גם במערכות הפעלה אחרות, כמו למשל אנדרואיד, שכבר יש לה חלק מהקוד ב-Rust, Windows שגם נתן את האישור, בין היתר.
חלודה הוכיחה את עצמה כשפה חזקה ויצרה אמון כזה כמה מערכות הפעלה אפילו נוצרו עם שפת התכנות הזו ורק כדי להזכיר כמה יש לנו: חיזור, יש לנו גם Kernels שנכתבו מאפס כגון קרלה או הגרעין המשמש ב- לוויין שסין שיגרה לאחרונה.
הסיבה להזכיר זאת היא שלאחרונה נתקלתי בחדשה שמשכה את תשומת ליבי והיא הוצג פרויקט בו מפתחים Kernel שנכתב ב-Rust ואשר תואם חלקית ללינוקס.
שמו של הפרויקט הזה הוא "מוֹרֶה" וכאמור, הוא ליבה דמוית יוניקס שנכתבה ב-Rust המיישמת תת-קבוצה של קריאות מערכת מ-Linux מספיק כדי ליצור סביבות עבודה סטנדרטיות. ככזה, פרויקט "מאסטרו" אינו דבר חדש, שכן היזם מזכיר שהפרויקט נולד בשנת 2018, אך באותה תקופה הוא נכתב ב-C ובשל היתרונות והמאפיינים השונים של Rust, הפרויקט נכתב מחדש מ- אֶפֶס.
בעמוד הפרויקט הסיבות לשינוי מתוארות:
באותו רגע החלטתי לעבור ל-Rust (הפרויקט הראשון שלי בשפה זו), שייצג מספר יתרונות:
- הפעל מחדש את הפרויקט מההתחלה, תוך שימוש בלקחים שנלמדו מטעויות קודמות.
- היה קצת יותר חדשני מסתם כתיבת ליבה דמוי לינוקס ב-C. אחרי הכל, פשוט השתמש בלינוקס באותו זמן.
- השתמש באבטחה של שפת Rust כדי לנצל כמה קשיי תכנות הליבה. שימוש במערכת הכתיבה Rust מאפשר להעביר חלק מהאחריות על בטיחות הזיכרון מהמתכנת לקומפיילר.
בפיתוח ליבה, איתור באגים קשה מאוד מכמה סיבות:
- לעתים קרובות קשה למצוא תיעוד ומימושי BIOS עלולים להיות באגיים (לעיתים קרובות יותר ממה שאתה חושב).
- בעת האתחול, לקרנל יש גישה מלאה לזיכרון והוא יכול לכתוב היכן שהוא לא צריך (קוד משלו, למשל).
- פתרון בעיות של דליפות זיכרון אינו קל. לא ניתן להשתמש בכלים כמו valgrind.
- ניתן להשתמש ב-gdb עם QEMU ו-VMWare, אך הליבה עשויה להתנהג בצורה שונה כאשר היא פועלת על אמולטור או מכונה וירטואלית אחרת. כמו כן, ייתכן שהאמולטורים האלה לא יתמכו ב-gdb (למשל VirtualBox).
- חלק מהתכונות חסרות בתמיכה ב-gdb ב-QEMU או VMWare ו-gdb עלול אפילו לקרוס לפעמים
ביחס ל המאפיינים של הפרויקט, בולט שהקרנל הוא מונוליטי והוא נתמך כרגע רק במערכות x86 במצב 32 סיביות. בסיס קוד הליבה מכסה כ-49 אלף שורות, ניתנים להפעלה הן על חומרה אמיתית והן בסביבות וירטואליות, כגון QEMU או VirtualBox.
בפיתוח הנוכחי של "מאסטרו", 31% יושמו (135 מתוך 437) של שיחות מערכת לינוקס. זה מספיק כדי לטעון סביבת קונסולה המבוססת על Bash וספריית Musl סטנדרטית C. בנוסף, הסביבה המבוססת על Maestro יכולה להפעיל כמה כלי עזר מחבילת GNU coreutils ומאריזה בסיסית מכל מערכת Unix. נכון לעכשיו, מתבצעת עבודה על הטמעת ערימת רשת ועבודה נעשית גם על פיתוח
בין התכונות הזמינות של מאסטרו בולטות הבאים::
- בקרים למקלדת PS/2 ומסוף עם מצב טקסט ותמיכה חלקית ברצפי ANSI.
- מערכת הקצאת זיכרון עם תמיכה בזיכרון וירטואלי.
- מתזמן משימות מבוסס על אלגוריתם round-robin עם תמיכה באותות POSIX.
- הגדרה של התקני PCI.
- בקר IDE/PATA.
- מערכת קבצים Ext2.
- תמיכה במערכות קבצים וירטואליות /tmp ו-/proc.
- יכולת לעלות מחיצות דיסק FS, MBR ו-GPT.
- תמיכה ב-initramfs.
- בקר RTC לטיימר וזמן מדויק.
- תמיכה בטעינת מודולי ליבה.
- יכולת להפעיל קבצי הפעלה בפורמט ELF.
עבור מעוניין ללמוד קצת יותר על הפרויקט, אתה יכול לבדוק את הפרטים בקישור הבא. לגבי המעוניינים בקוד הפרויקט, הם צריכים לדעת שכן מופץ תחת רישיון MIT.