بعد ستة أشهر من التطوير، تم تقديم إصدار مدير النظام systemd 257 التغييرات الرئيسية: أدوات مساعدة جديدة systemd-sbsign وsystemd-keyutil، ودعم MPTCP عند تنشيطه عبر مأخذ توصيل، والدعم الأولي للبناء باستخدام مكتبة Musl C، أداة updatectl لإدارة تثبيت التحديثات عبر systemd-sysupdate، والقدرة على تشغيل الخدمات في مساحات أسماء PID منفصلة، والحماية من الحذف غير المقصود للملفات عند استخدام "systemd-tmpfiles —purge".
من بين التغييرات في الإصدار الجديد:
- أُضيفت أداة جديدة، systemd-sbsign، لتوقيع الملفات التنفيذية رقميًا بصيغة PE (ملف تنفيذي محمول) المُخصصة للاستخدام عند الإقلاع في وضع EFI Secure Boot. يمكن استخدام المحركات والموفرين المُقدمين من مكتبة OpenSSL لإنشاء التوقيع. يُمكن استخدام systemd-sbsign كبديل لتطبيقي sbsigntool و pesign في أداة ukify عند إنشاء صور نواة شاملة (UKIs)، والتي تجمع بين مُحمل إقلاع UEFI (UEFI boot stub) وصورة نواة في ملف واحد. Linux وتم تحميل بيئة نظام initrd في الذاكرة.
- تمت إضافة أداة مساعدة جديدة، systemd-keyutil، التي تنفذ عمليات متنوعة على المفاتيح الخاصة وشهادات X.509. على سبيل المثال، يمكن استخدام systemd-keyutil لاختبار القدرة على تحميل المفاتيح الخاصة والشهادات، واستخراج المفاتيح العامة منها بتنسيق PEM.
- في وحدات ".socket" المستخدمة لضمان تشغيل آلية تنشيط المقبس (بدء العمليات عند محاولة إنشاء اتصال شبكة)، يتم دعم بروتوكول MPTCP (بروتوكول TCP متعدد المسارات)، وهو امتداد لبروتوكول TCP لتنظيم تشغيل اتصال TCP مع تسليم الحزم في وقت واحد عبر عدة مسارات من خلال واجهات شبكة مختلفة مرتبطة بـ عناوين IP.
- يتضمن التغييرات اللازمة للبناء باستخدام مكتبة Musl C القياسية.
- تدعم الآن مكونات systemd المختلفة التي تعرض مؤشرات التقدم (مثل systemd-repart و systemd-sysupdate/updatectl و importctl) استخدام تسلسلات ANSI لتحريك عروض التقدم. ولا يتم دعم هذه التسلسلات حاليًا إلا في Windows الطرفية (من المتوقع أن يتم نقل ميزة مماثلة بمرور الوقت إلى برامج محاكاة الطرفية لـ Linux).
- تم توسيع قدرات مكون systemd-sysupdate، واستخدامه لاكتشاف التحديثات وتنزيلها وتثبيتها تلقائيًا باستخدام آلية ذرية لاستبدال الأقسام أو الملفات أو الدلائل (يتم استخدام قسمين/ملفات/دلائل مستقلة، يحتوي أحدهما على العمل الحالي المورد، والآخر يقوم بتثبيت التحديث التالي)، وبعد ذلك يتم تبديل الأقسام/الملفات/الدلائل). من الناحية العملية، يتم استخدام systemd-sysupdate بالفعل في نظام التشغيل GNOME OS.
بالإضافة إلى عملية تحديث النظام systemd-sysupdate، تمت إضافة خدمة تحمل الاسم نفسه وتسمح باستخدام D-Bus لإدارة تحديثات النظام بواسطة مستخدم لا يتمتع بالامتيازات. لإدارة الخدمة، يتم أيضًا تضمين أداة مساعدة updatectl جديدة. تمت إضافة علامة "--offline" إلى systemd-sysupdate لتعطيل تنزيل البيانات التعريفية عبر الشبكة واستخدام الإصدارات التي تم تنزيلها بالفعل على النظام المحلي فقط. تمت إضافة دعم للإخراج بتنسيق JSON لجميع الأوامر.
- تم تطبيق خاصية جديدة "PrivatePIDs" للخدمات، والتي يمكنك من خلالها تنظيم إطلاق العمليات باستخدام PID 1 (عملية init) في مساحة معرف عملية منفصلة (مساحة اسم PID). في البيئة التي تم إنشاؤها للعملية التي تم إطلاقها، ستكون العمليات من مساحة الاسم التي تم إنشاؤها لها فقط مرئية.
- تمت إضافة دعم للمطابقات غير الحساسة لحالة الأحرف لقواعد udev (على سبيل المثال، 'ATTR{foo}==i»abcd»'). باستخدام udev، من الممكن تزويد المستخدمين المحليين غير المميزين بإمكانية الوصول ("uaccess") إلى جهاز /dev/udmabuf، وهو أمر ضروري للعمل مع كاميرات IPMI عبر libcamera. يوفر udev التعرف على مختلف محافظ التشفير للأجهزة من خلال واجهة USB وتعيين خاصية ID_HARDWARE_WALLET لها، مما يسمح لك بتطبيق وضع "uaccess" عليها للوصول إليها من قبل المستخدمين غير المميزين.
- تمت إضافة الحقول الجديدة RELEASE_TYPE وEXPERIMENT وEXPERIMENT_URL إلى ملف /etc/os-release. يمكن أن يأخذ "RELEASE_TYPE" القيم "التجريبية" و"التطوير" و"المستقر" و"lts" لفصل الإصدارات الثابتة عن الإصدارات التطويرية والتجريبية. تهدف المعلمتان EXPERIMENT وEXPERIMENT_URL إلى شرح جوهر البناء التجريبي.
- أضافت الأداة المساعدة run0، التي تم تطويرها كبديل لبرنامج sudo، خيار "--shell-prompt-prefix"، الذي يحدد سلسلة البادئة لموجه shell الأوامر. افتراضيًا، يتم عرض الرمز التعبيري "🦸" كبادئة لتسليط الضوء بشكل مرئي على جلسة مرتفعة.
- في systemd-tmpfiles، لتجنب حذف الملفات الخاطئة عن طريق الخطأ، ينطبق خيار "--purge" الآن فقط على الإعدادات الموجودة في tmpfiles.d/ التي تم تعيين العلامة "$" عليها بشكل صريح. تتطلب عملية "--purge" الآن أيضًا تحديد ملف واحد على الأقل من الدليل tmpfiles.d/. بالنسبة للسلاسل ذات النوع "L"، تمت إضافة العلامة "؟"، عند تحديدها، سيتم إنشاء رابط رمزي فقط في حالة وجود الملف الهدف.
- في مدير الخدمة والأدوات المساعدة ذات الصلة، يستمر تحويل رمز تتبع العملية لاستخدام PIDFD بدلاً من PID. يرتبط PIDFD بعملية معينة ولا يتغير، بينما يمكن ربط PID بعملية أخرى بعد انتهاء العملية الحالية المرتبطة بمعرف PID هذا.
- بالنسبة للخدمات، أصبح من الممكن الآن تحديد القيمة "debug" في معلمة "RestartMode"، حيث سيتم إعادة تشغيل الخدمة الفاشلة مع تمكين وضع التصحيح (تم تعيين متغير البيئة DEBUG_INVOCATION=1)، وستكون قيمة LogLevelMax تم رفعه مؤقتًا إلى مستوى التصحيح.
- يتمتع معالج PID 1 بالقدرة على تحميل القواعد لوحدة LSM IPE (فرض سياسة التكامل)، والتي تحدد سياسة التكامل للنظام بأكمله (ما هي العمليات المسموح بها وكيف يجب التحقق من صحة المكونات).
- تمت إضافة خيار “DeferReactivation” إلى ملفات وحدة “.timer”، مما يسمح لك بتخطي تفعيل المؤقت التالي إذا لم تكن الخدمة قد اكتملت تنفيذها بعد منذ آخر تنشيط.
- في معلمة ملف وحدة PrivateUsers، أصبح من الممكن الآن تحديد قيمة "الهوية" لتمكين تعيين معرفات المستخدمين عند إنشاء مساحة اسم مستخدم.
- تمت إضافة دعم للقيمة "غير المتصلة" إلى معلمة ملف وحدة PrivateTmp، والتي ستستخدم مثيلات tmpfs منفصلة للدلائل /tmp/ و/var/tmp/.
- تمت إضافة دعم للأوضاع "الخاصة" و"الصارمة" الجديدة إلى معلمة ملف وحدة ProtectControlGroups، عند التعيين، يتم إنشاء مساحة اسم cgroup جديدة للخدمة وتثبيت cgroupfs. عند تعيين الخيار "صارم"، يتم تثبيت cgroupfs في وضع القراءة فقط.
- توفر معلمات StateDirectory وRuntimeDirectory وCacheDirectory وLogsDirectory وConfigurationDirectory القدرة على استخدام العلامة ':ro' لتقييد الوصول إلى الدلائل المقابلة لوضع القراءة فقط.
- تمت إضافة دعم لقيمة "البرنامج الثابت" إلى معلمة سطر أوامر kernel "systemd.machine_id"، حيث سيتم حساب معرف النظام (معرف الجهاز) بناءً على UUID من SMBIOS/DeviceTree.
- تمت إضافة دعم لوظائف النظام mseal() و listmount() و statmount() التي تم تقديمها في إصدارات النواة الأخيرة. Linux.
- تدعم الآن الأدوات المساعدة Resolvectl وtimedatectl وsystemd-inhibit التفويض التفاعلي باستخدام Polkit.
- أضافت الأداة المساعدة systemctl القدرة على استخدام علامة "--now" في أمر "reenable".
- تمت إضافة خيار "--json" إلى الأداة المساعدة systemd-mount للإخراج بتنسيق JSON (على سبيل المثال، عند تحديده مع "--list-devices"، سيتم إخراج قائمة الأجهزة بتنسيق JSON).
- تمت إضافة خيارات "-l" و"--full" إلى الأداة المساعدة "localectl" لتعطيل قطع الخطوط الطويلة أثناء الإخراج.
- تمت إضافة خيار HibernateOnACPower إلى Sleep.conf، والذي يسمح لك بتأخير التبديل إلى وضع السكون حتى يتم فصل الجهاز عن مصدر الطاقة الثابت.
- في systemd-sysusers، تمت إضافة دعم المعدل "!" إلى الأسطر "u"، والتي يمكنك من خلالها إنشاء حسابات مستخدمين مقفلة بالكامل (في السابق، تم استخدام تعيين كلمة مرور غير صحيحة لحظر مستخدم، على سبيل المثال، لم يؤدي إلى الحظر أثناء المصادقة الرئيسية في SSH ).
- يضيف Systemd-coredump خيار "EnterNamespace" الذي يسمح بالوصول إلى مساحة نقطة التثبيت لأي عمليات معطلة للحصول على رموز تصحيح الأخطاء الخاصة بها. ومن الناحية العملية، يمكن أن يكون هذا الخيار مفيدًا لتنظيم التتبع العكسي للملفات الأساسية من التطبيقات التي تعمل في حاويات معزولة.
- يتضمن systemd-logind معالجة مجموعة Ctrl-Alt-Shift-Esc لإرسال إشارة org.freedesktop.login1.SecureAttentionKey إلى مكونات بيئة المستخدم مع طلب لعرض مربع حوار تسجيل الدخول الآمن. تم تنفيذ إعداد "DesignatedMaintenanceTime" لجدولة العمل تلقائيًا لإكماله في وقت محدد. وقياسًا على دعم أجهزة DRM وevdev، تمت إضافة الدعم لتكوين الوصول للمستخدمين غير المتميزين إلى أجهزة hidraw (وحدات التحكم في الألعاب وعصا التحكم).
- يدعم نظام systemd-machined الآن تسجيلات دخول العملاء غير المميزين. آلة افتراضية والحاويات. يتم توفير الوصول إلى الوظائف التي يتم تشغيلها بواسطة systemd-machined عبر واجهة برمجة تطبيقات Varlink، بالإضافة إلى D-Bus.
- تمت إضافة قسم جديد "[IPv6AddressLabel]" إلى ملف التكوين Networkd.conf لتكوين التسميات والبادئات لعناوين IPv6
- تمت إضافة خيار "--stdin" إلى أمر "networkctledit" للحصول على محتويات الملف من الدفق القياسي. تمت إضافة دعم لتحرير وعرض ملفات .netdev عن طريق تحديد واجهة شبكة لأوامر "networkctledit" و"networkctl cat". تمت إضافة الخيار "--no-ask-password" لتعطيل التفويض التفاعلي.
- تمت إضافة خيار "--certificate-source" إلى الأدوات المساعدة ukify وbootctl وsystemd-keyutil وsystemd-measure وsystemd-repart وsystemd-sbsign لتحميل شهادة X.509 من خلال موفر OpenSSL بدلاً من التحميل مباشرة من ملف ملف.
- يضيف systemd-boot القدرة على استخدام أزرار الصوت للتحرك لأعلى ولأسفل عبر قائمة التمهيد، وهو ما يمكن أن يكون مفيدًا على أجهزة مثل الهواتف الذكية. تمت إضافة دعم تثبيت قاعدة بيانات UEFI Secure Boot بتنسيق ESL(db/dbx/...) لـ systemd-boot إلى الأداة المساعدة bootctl.
- تمت إضافة خيار "--list-invocation" إلى Journalctl لعرض قائمة باستدعاءات الوحدات وخيار "--invocation" ("-I") لعرض السجلات المرتبطة بمكالمة محددة فقط.
- يضيف systemd-nspawn دعمًا للاستخدام غير المميز لـ FUSE (نظام الملفات في مساحة المستخدمين) في الحاويات. عند استخدام خيار "--bind-user"، تتم إعادة توجيه مفاتيح SSH الخاصة بالمستخدم المطلوبة للوصول عبر SSH إلى الحاوية.
- أضاف libsystemd واجهة برمجة جديدة "sd-json" تستخدم تنسيق JSON، بالإضافة إلى واجهة "sd-varlink" التي تستخدم IPC Varlink.
- تمت ترقية إصدار النواة الأساسية الموصى به إلى الإصدار 5.4، الذي تم تشكيله في عام 2019. يخططون في العام المقبل للتوقف عن دعم النوى الأقدم ووضع علامة على الإصدار 5.4 باعتباره الحد الأدنى للإصدار الأساسي المدعوم.
- تم إهمال دعم cgroups v1 وتم تعطيله افتراضيًا (لتمكينه، يجب عليك تحديد SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1 في سطر أوامر kernel بالإضافة إلى تمكينه في إعدادات systemd). يخطط الإصدار التالي من systemd 258 لإزالة التعليمات البرمجية ذات الصلة بـ cgroups v1 بالكامل. من المقرر أيضًا أن يقوم الإصدار 258 من Systemd بإزالة الدعم للبرامج النصية لخدمة System V.
المصدر: opennet.ru
