إصدار مدير نظام systemd 252 مع دعم UKI (صورة النواة الموحدة).

بعد خمسة أشهر من التطوير، تم تقديم إصدار مدير النظام systemd 252. كان التغيير الرئيسي في الإصدار الجديد هو دمج الدعم لعملية التمهيد الحديثة، والتي تسمح لك بالتحقق ليس فقط من النواة ومحمل التشغيل، ولكن أيضًا من المكونات لبيئة النظام الأساسية باستخدام التوقيعات الرقمية.

تتضمن الطريقة المقترحة استخدام صورة نواة موحدة UKI (صورة نواة موحدة) عند التحميل، والتي تجمع بين معالج لتحميل النواة من UEFI (قاعدة تمهيد UEFI)، وصورة نواة Linux وبيئة نظام initrd المحملة في الذاكرة، المستخدمة للتهيئة الأولية في المرحلة التي تسبق تركيب الجذر FS . يتم تجميع صورة UKI كملف واحد قابل للتنفيذ بتنسيق PE، والذي يمكن تحميله باستخدام أدوات تحميل التشغيل التقليدية أو استدعاؤه مباشرة من برنامج UEFI الثابت. عند الاتصال من UEFI، من الممكن التحقق من سلامة وموثوقية التوقيع الرقمي ليس فقط للنواة، ولكن أيضًا محتويات initrd.

لحساب معلمات سجلات TPM PCR (سجل تكوين النظام الأساسي لوحدة النظام الأساسي الموثوق به) المستخدمة لمراقبة السلامة وإنشاء توقيع رقمي لصورة UKI، يتم تضمين أداة قياس النظام المساعدة الجديدة. يمكن تضمين المفتاح العام ومعلومات PCR المصاحبة المستخدمة في التوقيع مباشرة في صورة تمهيد UKI (يتم حفظ المفتاح والتوقيع في ملف PE في الحقلين ".pcrsig" و".pcrkey") واستخراجهما منه عن طريق خارجي أو المرافق الداخلية.

على وجه الخصوص، تم تكييف الأدوات المساعدة systemd-cryptsetup وsystemd-cryptenroll وsystemd-creds لاستخدام هذه المعلومات، والتي يمكنك من خلالها التأكد من أن أقسام القرص المشفرة مرتبطة بنواة موقعة رقميًا (في هذه الحالة، الوصول إلى القسم المشفر يتم توفيره فقط إذا اجتازت صورة UKI التحقق من خلال التوقيع الرقمي بناءً على المعلمات الموجودة في TPM).

بالإضافة إلى ذلك، يتم تضمين الأداة المساعدة systemd-pcrphase، والتي تسمح لك بالتحكم في ربط مراحل التمهيد المختلفة بالمعلمات الموجودة في ذاكرة معالجات التشفير التي تدعم مواصفات TPM 2.0 (على سبيل المثال، يمكنك جعل مفتاح فك تشفير القسم LUKS2 متاحًا فقط في الصورة initrd وحظر الوصول إليها في مراحل التنزيل اللاحقة).

بعض التغييرات الأخرى:

  • يضمن أن اللغة الافتراضية هي C.UTF-8 ما لم يتم تحديد لغة مختلفة في الإعدادات.
  • أصبح من الممكن الآن إجراء عملية إعداد مسبق كاملة للخدمة ("الإعداد المسبق لـ systemctl") أثناء التمهيد الأول. يتطلب تمكين الإعدادات المسبقة في وقت التمهيد إنشاء خيار "-Dfirst-boot-full-preset"، ولكن من المخطط أن يتم تمكينه افتراضيًا في الإصدارات المستقبلية.
  • تشتمل وحدات إدارة المستخدم على وحدة تحكم موارد وحدة المعالجة المركزية، مما جعل من الممكن التأكد من تطبيق إعدادات CPUWeight على جميع وحدات الشرائح المستخدمة لتقسيم النظام إلى أجزاء (app.slice وbackground.slice وsession.slice) لعزل الموارد بين خدمات مستخدم مختلفة، تتنافس على موارد وحدة المعالجة المركزية. يدعم CPUWeight أيضًا القيمة "الخاملة" لتنشيط وضع توفير الموارد المناسب.
  • في الوحدات المؤقتة ("العابرة") وفي الأداة المساعدة systemd-repart، يُسمح بتجاوز الإعدادات عن طريق إنشاء ملفات منسدلة في الدليل /etc/systemd/system/name.d/.
  • بالنسبة لصور النظام، يتم تعيين علامة انتهاء الدعم، وتحديد هذه الحقيقة بناءً على قيمة المعلمة الجديدة "SUPPORT_END=" في ملف /etc/os-release.
  • تمت إضافة إعدادات "ConditionCredential=" و"AssertCredential="، والتي يمكن استخدامها لتجاهل الوحدات أو تعطلها في حالة عدم وجود بيانات اعتماد معينة في النظام.
  • تمت إضافة إعدادات "DefaultSmackProcessLabel=" و"DefaultDeviceTimeoutSec=" إلى system.conf وuser.conf لتحديد مستوى أمان SMACK الافتراضي ومهلة تنشيط الوحدة.
  • في إعدادات "ConditionFirmware=" و"AssertFirmware="، تمت إضافة القدرة على تحديد حقول SMBIOS الفردية، على سبيل المثال، لتشغيل وحدة فقط إذا كان الحقل /sys/class/dmi/id/board_name يحتوي على القيمة "Custom Board"، يمكنك تحديد "ConditionFirmware=smbios" -field(board_name = "Custom Board")".
  • أثناء عملية التهيئة (PID 1)، تمت إضافة القدرة على استيراد بيانات الاعتماد من حقول SMBIOS (النوع 11، "سلاسل بائعي OEM") بالإضافة إلى تعريفها عبر qemu_fwcfg، مما يبسط توفير بيانات الاعتماد للأجهزة الافتراضية ويزيل الحاجة إلى أدوات خارجية مثل cloud -init وignition.
  • أثناء إيقاف التشغيل، تم تغيير منطق إلغاء تثبيت أنظمة الملفات الافتراضية (proc، sys) ويتم حفظ المعلومات حول العمليات التي تمنع إلغاء تثبيت أنظمة الملفات في السجل.
  • يسمح عامل تصفية مكالمات النظام (SystemCallFilter) بالوصول إلى استدعاء النظام riscv_flush_icache بشكل افتراضي.
  • يضيف محمل الإقلاع sd-boot القدرة على التمهيد في الوضع المختلط، حيث يتم تشغيل نواة Linux 64 بت من البرامج الثابتة UEFI 32 بت. تمت إضافة القدرة التجريبية لتطبيق مفاتيح SecureBoot تلقائيًا من الملفات الموجودة في ESP (قسم نظام EFI).
  • تمت إضافة خيارات جديدة إلى الأداة المساعدة bootctl: "—all-architectures" لتثبيت الثنائيات لجميع بنيات EFI المدعومة، و"—root=" و"—image=" للعمل مع دليل أو صورة قرص، و"—install-source" =" لتحديد مصدر التثبيت، "-efi-boot-option-description=" للتحكم في أسماء إدخالات التمهيد.
  • تمت إضافة الأمر "list-automounts" إلى الأداة المساعدة systemctl لعرض قائمة بالأدلة المحملة تلقائيًا وخيار "--image =" لتنفيذ الأوامر فيما يتعلق بصورة القرص المحددة. تمت إضافة خيارات "--state=" و"--type=" إلى أمري "show" و"status".
  • أضافت systemd-networkd خيارات "TCPCongestionControlAlgorithm =" لتحديد خوارزمية التحكم في ازدحام TCP، و"KeepFileDescriptor =" لحفظ واصف الملف لواجهات TUN/TAP، و"NetLabel =" لتعيين NetLabels، و"RapidCommit =" لتسريع التكوين عبر DHCPv6 (RFC 3315). تسمح المعلمة "RouteTable=" بتحديد أسماء جداول التوجيه.
  • يسمح systemd-nspawn باستخدام مسارات الملفات النسبية في الخيارين "--bind=" و"--overlay=". تمت إضافة دعم لمعلمة "rootidmap" إلى خيار "--bind =" لربط معرف المستخدم الجذر في الحاوية بمالك الدليل المثبت على الجانب المضيف.
  • يستخدم systemd-resolved OpenSSL كواجهة خلفية للتشفير بشكل افتراضي (يتم الاحتفاظ بدعم gnutls كخيار). يتم الآن التعامل مع خوارزميات DNSSEC غير المدعومة على أنها غير آمنة بدلاً من إرجاع خطأ (SERVFAIL).
  • يقوم مستخدمو systemd-sysusers وsystemd-tmpfiles وsystemd-sysctl بتنفيذ القدرة على نقل الإعدادات من خلال آلية تخزين بيانات الاعتماد.
  • تمت إضافة أمر "compare-versions" إلى تحليل systemd لمقارنة السلاسل بأرقام الإصدارات (على غرار "rpmdev-vercmp" و"dpkg --compare-versions"). تمت إضافة القدرة على تصفية الوحدات حسب القناع إلى أمر "تفريغ تحليل النظام".
  • عند تحديد وضع السكون متعدد المراحل (التعليق ثم الإسبات)، يتم الآن تحديد الوقت المستغرق في وضع الاستعداد بناءً على توقعات عمر البطارية المتبقي. يحدث الانتقال الفوري إلى وضع السكون عند بقاء شحن البطارية أقل من 5%.
  • تمت إضافة وضع إخراج جديد "-o short-delta" إلى "journalctl"، مما يعرض فارق التوقيت بين الرسائل المختلفة في السجل.
  • يضيف systemd-repart دعمًا لإنشاء أقسام باستخدام نظام الملفات Squashfs وأقسام لـ dm-verity، بما في ذلك التوقيعات الرقمية.
  • تمت إضافة إعداد "StopIdleSessionSec =" إلى systemd-logind لإنهاء الجلسة غير النشطة بعد انتهاء المهلة المحددة.
  • أضاف Systemd-cryptenroll خيار "--unlock-key-file =" لاستخراج مفتاح فك التشفير من ملف بدلاً من مطالبة المستخدم.
  • أصبح من الممكن الآن تشغيل الأداة المساعدة systemd-growfs في بيئات لا تحتوي على udev.
  • قام systemd-backlight بتحسين الدعم للأنظمة التي تحتوي على بطاقات رسومات متعددة.
  • تم تغيير ترخيص أمثلة التعليمات البرمجية المتوفرة في الوثائق من CC0 إلى MIT-0.

التغييرات التي تؤدي إلى كسر التوافق:

  • عند التحقق من رقم إصدار kernel باستخدام توجيه ConditionKernelVersion، يتم الآن استخدام مقارنة سلسلة بسيطة في عاملي التشغيل '=' و'!='، وإذا لم يتم تحديد عامل المقارنة على الإطلاق، فيمكن استخدام مطابقة القناع الشامل باستخدام الأمر الشخصيات '*'، '؟' و '['، ']'. لمقارنة إصدارات نمط stverscmp()، استخدم عوامل التشغيل '<' و'>' و'<=' و'>='.
  • تتم الآن قراءة علامة SELinux المستخدمة للتحقق من الوصول من ملف الوحدة في وقت تحميل الملف، وليس في وقت التحقق من الوصول.
  • يتم الآن تشغيل شرط "ConditionFirstBoot" عند التمهيد الأول للنظام فقط مباشرة في مرحلة التمهيد ويتم إرجاع "خطأ" عند استدعاء الوحدات بعد اكتمال التمهيد.
  • في عام 2024، تخطط systemd للتوقف عن دعم آلية تحديد موارد cgroup v1، والتي تم إهمالها في إصدار systemd 248. ويُنصح المسؤولون بالحرص مسبقًا على ترحيل الخدمات المستندة إلى cgroup v2 إلى cgroup v1. يتمثل الاختلاف الرئيسي بين cgroups v2 وv1 في استخدام تسلسل هرمي مشترك لمجموعات cgroups لجميع أنواع الموارد، بدلاً من التسلسلات الهرمية المنفصلة لتخصيص موارد وحدة المعالجة المركزية، وتنظيم استهلاك الذاكرة، والإدخال/الإخراج. تؤدي التسلسلات الهرمية المنفصلة إلى صعوبات في تنظيم التفاعل بين المعالجات وإلى تكاليف إضافية لموارد kernel عند تطبيق قواعد لعملية مشار إليها في تسلسلات هرمية مختلفة.
  • في النصف الثاني من عام 2023، نخطط لإنهاء دعم التسلسلات الهرمية للدليل المقسم، حيث يتم تثبيت /usr بشكل منفصل عن الجذر، أو يتم فصل /bin و/usr/bin و/lib و/usr/lib.

المصدر: opennet.ru

إضافة تعليق