מפתחי AerynOS, שנודעה בעבר בשם SerpentOS, פרסמו מאמר מפורט המפרט את הקונספט של הפרויקט ואת היישום הטכני שלו, יחד עם ההיגיון מאחורי ההחלטות הארכיטקטוניות. ראש הפרויקט, אייקי דוהרטי, מדגיש כי AerynOS אינו סתם "עוד הפצה". Linux", אלא פלטפורמה, בסיס וסט כלים שנבנו בהתאם לחזון ברור.
הרעיון המרכזי של הפרויקט מוצג כשאלה: "מה אם מערכת הפעלה הייתה מתנהגת כמו תשתית מודרנית?" AerynOS מוצג כתשובה לשאלה זו - מערכת שנבנתה מהיסוד, במקום לעקוב אחר המודל המסורתי של מוטציות מובנות בתוך הפצה. הפרויקט נשען על ניסיון המחברים בפיתוח הפצות אחרות, כולל Solus ו-Clear. Linux.
בין הפתרונות הטכניים המרכזיים של AerynOS נמנים:
- שימוש בשרשרת הכלים של LLVM במקום ב-GNU, עם libc++ ו-compiler-rt כברירת מחדל. המפתחים מסבירים החלטה זו לא רק כהעדפה ל-LLVM, אלא כבחירה אסטרטגית להשתמש באבחון טוב יותר, להבטיח נכונות וניידות של חבילות. המערכת משתמשת ב-glibc במקום ב-musl, וזו בחירה מכוונת לטובת תאימות וביצועים.
כפי שמציין המאמר: "יתרון הביצועים של glibc על פני musl מתועד היטב, במיוחד עבור עומסי עבודה עתירי מחשוב ויישומים הדורשים ביצועים אופטימליים של ריבוי הליכים." היוצרים מדגישים כי מטרתם היא לבנות מערכת עובדת ושימושית עבור מגוון תרחישי יישומים.
- מושג ה"חוסר מדינה" - חבילות אסורות להכיל קבצים מחוץ לספריית /usr. כפי שמסבירים המפתחים, גישה זו כופה ברירות מחדל הגיוניות בכל הרמות ומבטלת "קונפליקטים נוראיים של מיזוג תלת-כיווניים בעת שדרוג חבילות". אין קונפליקטים מכיוון שכל דבר ב-/etc וב-/var נמצא בבעלות המשתמש, בעוד ש-/usr נמצא בבעלות המערכת באופן בלעדי. הקונספט פותח בתקופת ה-Clear. Linux ו-Solus, וב-AerynOS זה פותח עוד יותר.
- עדכונים אטומיים - כל עסקת מוס היא אטומית. המערכת יוצרת במהירות עץ /usr חדש באמצעות קישורים קשיחים מהמטמון המנותק. לאחר שנוצר והוכן בהצלחה, העץ החדש מוחלף באופן אטומי. הטרנזקציה שהוכנה מוחלפת בפועל עם הספרייה /usr האמיתית באמצעות renameat2 עם הדגל RENAME_EXCHANGE. העדכון מתבצע במלואו או לא מתבצע כלל, ללא מצבי ביניים.
- ניהול אתחול המבוסס על הפרויקטים blsforme ו-disks-rs. הייחודיות של גישה זו היא שהמערכת מייצרת באופן דינמי פרמטרים עבור שורת הפקודה של הליבה על ידי קריאת בלוקי-העל של התקני מערכת הקבצים של השורש, כך של-AerynOS אין קובץ תצורה המכיל את הפרמטר "root=". יתר על כן, מזהה העסקה של moss מקודד בשורת הפקודה של הליבה ומעובד במהלך אתחול מוקדם בקובץ initramfs. "בקיצור, משמעות הדבר היא שכל ליבה מסונכרנת כראוי עם מערכת הקבצים המתאימה לה, והחזרה למצב קודם היא זולה, קלה ונגישה ישירות מתפריט האתחול", מסבירים המפתחים. יתרון נוסף הוא שאין /etc/default/grub, ואם ה-ESP נמחק, moss יכול לבנות אותו מחדש מאפס.
- פורמט החבילה .stone הוא פורמט חבילה בינארי קנייני עם כותרת שאינה תלויה בגרסה כדי להתאים לשינויים עתידיים. כל חבילת .stone מכילה ארבעה סוגי מטען ספציפיים, שכל אחד מהם יכול להתפתח באופן עצמאי הודות לניהול גרסאות:
- מטען תוכן הוא בלוק רציף של נתונים שעברו ביטול כפילויות, כלומר תוכן קבצי החבילה עצמם.
- מטען אינדקס - מכיל קיזוזים עבור מטען תוכן, מאונדקס על ידי ה-hash XXH128 של התוכן (מתוכנן להגר ל-Blake3). זה מאפשר לך למצוא ולחלץ נתונים ביעילות.
- מטען פריסה - מתאר את הפריסה הצפויה של מערכת הקבצים כאשר החבילה מוחלת, כלומר היכן ואילו קבצים יש להתקין.
- מטען מטא-נתונים - רצף של רשומות מטא-נתונים מסומנות ומוקלדות היטב, כגון שם החבילה, היכולות המסופקות וכו'.
כל העומסים נדחסים באמצעות Zstd, המספק ביצועי דקומפרסיה מצוינים תוך שמירה על יחס דחיסה טוב. תהליך ה"התקנת" .stone שונה באופן מהותי ממערכות אחרות. במקום להתקין קבצים ישירות, החבילה מאוחסנת במטמון ותוכנה שזור במאגר משותף הניתן לטיפול בתוכן (CAS). מטא-נתונים ומידע פריסה מאוחסנים בנפרד ומשמשים בעת יצירת עסקה. גישה זו מבטיחה אטומיות של עדכונים ויכולת לבצע ביטול פעולה, מכיוון שכל עסקה יוצרת מחיצת שורש חדשה במקום לשנות מחיצת קיימת.
המפתחים מציינים כי הגישה הנוכחית של אמולציה של ניהול חבילות ציווי היא "חסרת טעם לחלוטין" ו"בעצם מציגה יותר באגים מאשר פותרת". מאחר שנוצרת מערכת קבצי שורש חדשה עבור כל עסקה, התוכנית העתידית היא ליצור גרף חדש עבור כל עסקה, תוך התרחקות משינויים מובנים לטובת גישה הצהרתית בדומה לג'נטו או ניקס.
הבהרה מעניינת נוספת נוגעת לחוסר שינוי. היוצרים מציינים כי AerynOS מתואר לעתים קרובות כמערכת הפעלה בלתי ניתנת לשינוי, אך "זה לא לגמרי נכון". למרות שכל עסקה גורמת לעץ /usr חדש ושינויים מקומיים אינם נשמרים, המערכת אינה בלתי ניתנת לשינוי במובן של גישת קריאה בלבד. בעתיד, מתוכנן ליישם אי-יכולת שינוי אמיתית של המערכת ללא צורך באתחול מחדש באמצעות erofs ו-overlayfs.
נכון לעכשיו, AerynOS נמצאת בפיתוח פעיל, כבר משחררת תמונות ISO עם סביבת GNOME, מתאימה למשחקים (תמיכה במנהלי התקנים של NVIDIA, Steam, Flatpak), יש לה משתמשים אמיתיים שמציינים את היציבות והחדשנות של המערכת. לדברי המפתחים, הפרויקט נמצא בשלב אלפא ואינו חף מבעיות, אך הוא כבר מייצג מערכת שלמה ש"פשוט עובדת".
מקור: OpenNet.ru
