לאחר שישה חודשי פיתוח, מוצגת גרסת מנהל המערכת systemd 257. שינויים עיקריים: כלי עזר חדשים systemd-sbsign ו- systemd-keyutil, תמיכה ב-MPTCP בעת הפעלה דרך socket, תמיכה ראשונית בבנייה עם ספריית Musl C, כלי העזר updatectl לניהול התקנת עדכונים דרך systemd-sysupdate, היכולת להפעיל שירותים במרחבי שמות PID נפרדים, הגנה מפני מחיקה מקרית של קבצים בעת שימוש ב-"systemd-tmpfiles --purge".
בין השינויים במהדורה החדשה:
- כלי עזר חדש, systemd-sbsign, נוסף לחתימה דיגיטלית על קבצי הפעלה בפורמט PE (Portable Executable) המיועד לשימוש בעת אתחול במצב EFI Secure Boot. ניתן להשתמש במנועים ובספקים המסופקים על ידי ספריית OpenSSL ליצירת חתימות. ניתן להשתמש ב-systemd-sbsign כחלופה ליישומי sbsigntool ו-pesign בכלי העזר ukify בעת יצירת תמונות ליבה אוניברסליות (UKIs), המשלבות מטעין אתחול UEFI (stub boot UEFI) ותמונת ליבה בקובץ יחיד. Linux וסביבת המערכת initrd נטענה לזיכרון.
- כלי עזר חדש בשם systemd-keyutil נוסף, אשר מיישם פעולות שונות על מפתחות פרטיים ותעודות X.509. לדוגמה, ניתן להשתמש ב-systemd-keyutil כדי לבדוק את היכולת לטעון מפתחות פרטיים ותעודות, וכן לחלץ מהם מפתחות ציבוריים בפורמט PEM.
- ביחידות ".socket" המשמשות להבטחת פעולת מנגנון הפעלת ה-socket (הפעלת תהליכים בעת ניסיון ליצור חיבור רשת), מיושמת תמיכה ב-MPTCP (Multipath TCP), הרחבה של פרוטוקול TCP לארגון פעולת חיבור TCP עם מסירת חבילות בו זמנית לאורך מספר מסלולים דרך ממשקי רשת שונים הקשורים לנתונים שונים. כתובות IP.
- החבילה כוללת שינויים הנדרשים לבנייה באמצעות ספריית Musl C הסטנדרטית.
- רכיבי systemd שונים המציגים אינדיקטורים של התקדמות (למשל, systemd-repart, systemd-sysupdate/updatectl ו-importctl) תומכים כעת בשימוש ברצפי ANSI כדי להנפיש תצוגות התקדמות. רצפים כאלה נתמכים כעת רק ב- Windows טרמינל (צפוי שעם הזמן, תכונה דומה תועבר לאמולטורי טרמינלים עבור Linux).
- היכולות של רכיב systemd-sysupdate, המשמשות לזיהוי, הורדה והתקנה אוטומטית של עדכונים באמצעות מנגנון אטומי להחלפת מחיצות, קבצים או ספריות (בשימוש שתי מחיצות/קבצים/ספריות עצמאיות, אחת מהן מכילה את משאב העבודה הנוכחי, והשנייה היא המקום בו מותקן העדכון הבא, ולאחר מכן המחיצות/קבצים/ספריות מוחלפות). בפועל, systemd-sysupdate כבר נמצא בשימוש במערכת ההפעלה GNOME.
בנוסף לתהליך systemd-sysupdate, נוסף שירות בעל אותו שם, המאפשר שימוש ב-D-Bus לניהול עדכוני מערכת על ידי משתמש לא מורשה. כלי חדש, updatectl, נוסף גם הוא לניהול השירות. הדגל "--offline" נוסף ל-systemd-sysupdate כדי לאסור הורדת מטא-נתונים דרך הרשת ולהשתמש רק בגרסאות שכבר הורדו למערכת המקומית. נוספה תמיכה בפלט בפורמט JSON עבור כל הפקודות.
- מאפיין חדש בשם "PrivatePIDs" יושם עבור שירותים, שניתן להשתמש בו כדי לארגן את השקת תהליכים עם PID 1 (תהליך התחלתי) במרחב מזהה תהליך נפרד (מרחב שמות PID). בסביבה שנוצרה עבור התהליך שהופעל, רק תהליכים ממרחב השמות שנוצר עבורו יהיו גלויים.
- תמיכה בהתאמה שאינה תלוית רישיות נוספה לכללי udev (למשל 'ATTR{foo}==i»abcd»'). Udev מאפשר כעת למשתמשים מקומיים לא מורשים לגשת להתקן /dev/udmabuf ("uaccess"), הנחוץ לעבודה עם מצלמות IPMI דרך libcamera. udev מזהה כעת ארנקי קריפטו חומרתיים שונים מסוג USB ומגדיר עבורם את המאפיין ID_HARDWARE_WALLET, מה שמאפשר להגדיר אותם ל-"uaccess" עבור משתמשים לא מורשים.
- שדות חדשים RELEASE_TYPE, EXPERIMENT ו-EXPERIMENT_URL נוספו לקובץ /etc/os-release. "RELEASE_TYPE" יכול להיות "experimental", "development", "stable" ו-"lts" כדי להבחין בין גרסאות יציבות לבין גרסאות פיתוח וניסיוניות. הפרמטרים EXPERIMENT ו-EXPERIMENT_URL נועדו להבהיר את אופי הבנייה הניסיונית.
- כלי השירות run0, שפותח כתחליף לתוכנית sudo, עודכן עם האפשרות "--shell-prompt-prefix", המציינת את מחרוזת הקידומת עבור שורת מעטפת הפקודה. כברירת מחדל, הקידומת היא האימוג'י "🦸" כדי להדגיש ויזואלית הפעלה עם הרשאות מוגברות.
- בקובץ systemd-tmpfiles, כדי להימנע ממחיקה בטעות של קבצים שגויים, האפשרות "--purge" חלה כעת רק על הגדרות בקובץ tmpfiles.d/ שבהן הוגדר במפורש הדגל "$". פעולת "--purge" דורשת כעת גם לציין לפחות קובץ אחד מספריית tmpfiles.d/. דגל '?' נוסף לשורות מסוג 'L', אשר ייצור קישור סמלי רק אם קובץ היעד קיים.
- מנהל השירות ושירותי השירות הקשורים המשיכו להעביר את קוד מעקב התהליכים לשימוש ב-PIDFD במקום ב-PID. PIDFD משויך לתהליך ספציפי ואינו משתנה, בעוד ש-PID ניתן להקצות לתהליך אחר לאחר שהתהליך הנוכחי המשויך ל-PID זה הסתיים.
- עבור שירותים, יושמה היכולת לציין את הערך "debug" בפרמטר "RestartMode", ובמקרה כזה הפעלה מחדש של שירות שנכשל תתבצע כאשר מצב ניפוי שגיאות מופעל (משתנה הסביבה DEBUG_INVOCATION=1 מוגדר), וערך LogLevelMax יוגדל באופן זמני לרמת ניפוי השגיאות.
- מטפל PID 1 מיישם את היכולת לטעון כללים עבור מודול ה-IPE (אכיפת מדיניות שלמות) LSM, אשר מגדירים את מדיניות השלמות עבור המערכת כולה (אילו פעולות מותרות וכיצד יש לאמת את האותנטיות של הרכיבים).
- האפשרות "DeferReactivation" נוספה לקבצי היחידה ".timer", מה שמאפשר לך לדלג על הפעלת הטיימר הבאה אם השירות טרם השלים את ביצועו מאז ההפעלה האחרונה.
- פרמטר קובץ היחידה PrivateUsers מאפשר לך כעת לציין ערך "identity" כדי לאפשר מיפוי מזהה משתמש בעת יצירת מרחב שמות של משתמש.
- נוספה תמיכה בערך "מנותק" לפרמטר קובץ היחידה PrivateTmp, מה שיגרום לשימוש במופעי tmpfs נפרדים עבור הספריות /tmp/ ו- /var/tmp/.
- פרמטר קובץ היחידה ProtectControlGroups תומך כעת במצבים החדשים "private" ו-"strict", אשר כאשר הם מוגדרים יוצרים מרחב שמות חדש של cgroup עבור השירות ומרכיבים את cgroupfs. כאשר האפשרות "strict" מוגדרת, cgroupfs מורכב במצב קריאה בלבד.
- הפרמטרים StateDirectory, RuntimeDirectory, CacheDirectory, LogsDirectory ו-ConfigurationDirectory מאפשרים כעת שימוש בדגל ':ro' כדי להגביל את הגישה לספריות המתאימות למצב קריאה בלבד.
- נוספה תמיכה בערך "firmware" לפרמטר שורת הפקודה של הליבה "systemd.machine_id", אשר יגרום לחישוב מזהה המכונה על סמך ה-UUID מ-SMBIOS/DeviceTree.
- נוספה תמיכה בקריאות המערכת mseal(), listmount() ו- statmount() שהוצגו במהדורות הליבה האחרונות. Linux.
- כלי העזר resolvectl, timedatectl ו-systemd-inhibit עודכנו כדי לתמוך בהרשאה אינטראקטיבית באמצעות Polkit.
- כלי השירות systemctl עודכן כדי לתמוך בדגל "--now" בפקודה "reenable".
- לכלי systemd-mount יש אפשרות "--json" לפלט בפורמט JSON (לדוגמה, כאשר מצוין יחד עם "--list-devices", רשימת התקנים תופלט בפורמט JSON).
- כלי השירות "localectl" עודכן עם אפשרויות "-l" ו-"--full" כדי להשבית קיצוץ של שורות ארוכות בפלט.
- האפשרות HibernateOnACPower נוספה ל- sleep.conf, ומאפשרת לך לעכב את המעבר למצב שינה עד לניתוק המכשיר ממקור החשמל הנייח.
- ב-systemd-sysusers, מחרוזות ה-"u" תומכות כעת במתאם "!", שניתן להשתמש בו כדי ליצור חשבונות משתמש נעולים לחלוטין (בעבר, סיסמה שגויה שימשה לנעילת משתמש, מה ש, למשל, לא הוביל לנעילה בעת אימות באמצעות מפתחות ב-SSH).
- האפשרות "EnterNamespace" נוספה לקובץ systemd-coredump, המספק גישה למרחב נקודת ההרכבה של כל תהליך שהסתיים באופן חריג כדי לקבל את סמלי ניפוי השגיאות שלהם. בפועל, אפשרות זו יכולה להיות שימושית לארגון מעקב אחורי של קבצי ליבה מיישומים הפועלים במכולות מבודדות.
- ב-systemd-logind, צירוף המקשים Ctrl-Alt-Shift-Esc מעובד כעת כדי לשלוח את האות org.freedesktop.login1.SecureAttentionKey לרכיבי סביבת המשתמש עם בקשה להציג את תיבת הדו-שיח של כניסה מאובטחת. ההגדרה "DesignatedMaintenanceTime" יושמה כדי לתזמן אוטומטית כיבוי בזמן מוגדר. באנלוגיה לתמיכה במכשירי DRM ו-evdev, נוספה תמיכה לקביעת תצורת גישה עבור משתמשים לא מורשים למכשירי hidraw (בקרי משחקים וג'ויסטיקים).
- systemd-machined תומך כעת בכניסות לקוחות לא מורשים. מכונות וירטואליות ומכולות. גישה לפונקציונליות המעובדת על ידי systemd מסופקת דרך ממשק ה-API של Varlink, בנוסף ל-D-Bus.
- סעיף חדש בשם "[IPv6AddressLabel]" נוסף לקובץ התצורה networkd.conf כדי להגדיר תוויות וקידומות עבור כתובות IPv6
- לפקודה 'networkctl edit' יש כעת את האפשרות "--stdin" לקבלת תוכן קובץ מהזרם הסטנדרטי. הפקודות 'networkctl edit' ו-'networkctl cat' תומכות כעת בעריכה והצגה של קבצי .netdev על ידי ציון ממשק רשת. האפשרות "--no-ask-password" נוספה כדי להשבית אימות אינטראקטיבי.
- כלי העזר ukify, bootctl, systemd-keyutil, systemd-measure, systemd-repart ו-systemd-sbsign כוללים כעת אפשרות "--certificate-source" לטעינת אישור X.509 דרך ספק OpenSSL במקום לטעון אותו ישירות מקובץ.
- systemd-boot תומך כעת בשימוש במקשי עוצמת הקול כדי לנווט למעלה ולמטה בתפריט האתחול, דבר שיכול להיות שימושי במכשירים כמו סמארטפונים. כלי השירות bootctl תומך כעת בהתקנת מסד הנתונים UEFI Secure Boot בפורמט ESL (db/dbx/…) עבור systemd-boot.
- נוספה האפשרות "--list-invocation" ל-journalctl כדי להציג רשימה של קריאות ליחידות ואת האפשרות "--invocation" ("-I") כדי להציג יומנים הקשורים לקריאה ספציפית בלבד.
- systemd-nspawn תומך כעת בשימוש לא מורשה של FUSE (מערכת קבצים במרחב משתמשים) בקונטיינרים. שימוש באפשרות "--bind-user" מבטיח שמפתחות ה-SSH של המשתמש, הנדרשים לגישה באמצעות SSH, יועברו לקונטיינר.
- ל-libsystemd יש API חדש בשם "sd-json" המשתמש בפורמט JSON, ו-API בשם "sd-varlink" המשתמש בפורמט Varlink IPC.
- גרסת הבסיס המומלצת של הליבה הועלתה לגרסה 5.4, שיצאה בשנת 2019. בשנה הבאה, התמיכה בליבות ישנות יותר מתוכננת לבטל את התמיכה וגרסה 5.4 תהיה גרסת הבסיס המינימלית הנתמכת.
- התמיכה ב-cgroups v1 הוצאה משימוש והיא מושבתת כברירת מחדל (כדי להפעיל אותה, ציינו SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1 בשורת הפקודה של הליבה בנוסף להפעלתה בהגדרות systemd). הגרסה הבאה של systemd 258 מתוכננת להסיר לחלוטין קוד הקשור ל-cgroups v1. systemd 258 מתוכנן גם להסיר את התמיכה בסקריפטים של שירות System V.
מקור: OpenNet.ru
