انتشار systemd system manager 252 با پشتیبانی UKI (Unified Kernel Image).

پس از پنج ماه توسعه، نسخه مدیریت سیستم systemd 252 ارائه شد. تغییر کلیدی در نسخه جدید ادغام پشتیبانی از یک فرآیند بوت مدرن بود که به شما امکان می دهد نه تنها هسته و بوت لودر، بلکه اجزا را نیز تأیید کنید. محیط اصلی سیستم با استفاده از امضای دیجیتال

روش پیشنهادی شامل استفاده از یک تصویر هسته یکپارچه UKI (تصویر هسته یکپارچه) در هنگام بارگیری است، که ترکیبی از یک کنترل کننده برای بارگیری هسته از UEFI (خرد بوت UEFI)، یک تصویر هسته لینوکس و محیط سیستم initrd بارگذاری شده در حافظه، استفاده می شود. برای مقداردهی اولیه در مرحله قبل از نصب root FS. تصویر UKI به عنوان یک فایل اجرایی واحد در قالب PE بسته بندی شده است که می تواند با استفاده از بوت لودرهای سنتی بارگیری شود یا مستقیماً از فریمور UEFI فراخوانی شود. هنگامی که از UEFI فراخوانی می شود، می توان یکپارچگی و قابلیت اطمینان امضای دیجیتال نه تنها هسته، بلکه محتویات initrd را نیز تأیید کرد.

برای محاسبه پارامترهای رجیسترهای TPM PCR (Trusted Platform Module Platform Configuration Register) که برای نظارت بر یکپارچگی و تولید امضای دیجیتالی تصویر UKI استفاده می شود، یک ابزار جدید systemd-measure گنجانده شده است. کلید عمومی و اطلاعات PCR همراه مورد استفاده در امضا را می‌توان مستقیماً در تصویر راه‌اندازی UKI جاسازی کرد (کلید و امضا در یک فایل PE در فیلدهای '.pcrsig' و '.pcrkey' ذخیره می‌شوند) و توسط خارجی از آن استخراج می‌شوند. یا خدمات داخلی

به طور خاص، ابزارهای systemd-cryptenroll، systemd-cryptenroll و systemd-creds برای استفاده از این اطلاعات تطبیق داده شده‌اند، که با استفاده از آنها می‌توانید اطمینان حاصل کنید که پارتیشن‌های دیسک رمزگذاری‌شده به یک هسته امضاشده دیجیتالی متصل هستند (در این مورد، دسترسی به پارتیشن رمزگذاری‌شده تنها در صورتی ارائه می‌شود که تصویر UKI با امضای دیجیتال بر اساس پارامترهای واقع در TPM تأیید شده باشد.

علاوه بر این، ابزار systemd-pcrphase گنجانده شده است که به شما امکان می دهد اتصال مراحل مختلف راه اندازی به پارامترهای واقع در حافظه پردازنده های رمزنگاری که از مشخصات TPM 2.0 پشتیبانی می کنند را کنترل کنید (به عنوان مثال، می توانید کلید رمزگشایی پارتیشن LUKS2 را فقط در دسترس قرار دهید. تصویر initrd و مسدود کردن دسترسی به آن در مراحل بعدی دانلود).

برخی تغییرات دیگر:

  • مطمئن می شود که محلی پیش فرض C.UTF-8 است مگر اینکه محلی متفاوت در تنظیمات مشخص شده باشد.
  • اکنون می توان یک عملیات از پیش تعیین شده سرویس کامل ("systemctl preset") را در اولین بوت انجام داد. فعال کردن تنظیمات از پیش تعیین شده در زمان بوت نیاز به ساخت با گزینه "-Dfirst-boot-full-preset" دارد، اما برنامه ریزی شده است که به طور پیش فرض در نسخه های بعدی فعال شود.
  • واحدهای مدیریت کاربر شامل یک کنترل کننده منبع CPU هستند که این امکان را فراهم می کند تا اطمینان حاصل شود که تنظیمات CPUWeight برای همه واحدهای برش مورد استفاده برای تقسیم سیستم به بخش (app.slice، background.slice، session.slice) اعمال می شود تا منابع بین آنها جدا شود. خدمات کاربر مختلف، رقابت برای منابع CPU. CPUWeight همچنین از مقدار "idle" پشتیبانی می کند تا حالت تامین منابع مناسب را فعال کند.
  • در واحدهای موقت ("گذرا") و در ابزار systemd-repart، با ایجاد فایل‌های کشویی در فهرست /etc/systemd/system/name.d/، تنظیمات لغو مجاز است.
  • برای تصاویر سیستم، پرچم پایان پشتیبانی تنظیم شده است و این واقعیت را بر اساس مقدار پارامتر جدید "SUPPORT_END=" در فایل /etc/os-release تعیین می کند.
  • تنظیمات "CreditionCredential=" و "AssertCredential=" اضافه شده است، که می توان از آنها برای نادیده گرفتن یا خراب کردن واحدها در صورت عدم وجود اطلاعات کاربری خاص در سیستم استفاده کرد.
  • تنظیمات «DefaultSmackProcessLabel=» و «DefaultDeviceTimeoutSec=» را به system.conf و user.conf اضافه کرد تا سطح امنیتی پیش‌فرض SMACK و زمان فعال‌سازی واحد را تعریف کند.
  • در تنظیمات "ConditionFirmware=" و "AssertFirmware="، امکان تعیین فیلدهای SMBIOS منفرد اضافه شده است، به عنوان مثال، برای راه اندازی یک واحد تنها در صورتی که فیلد /sys/class/dmi/id/board_name حاوی مقدار "Custom" باشد. هیئت مدیره، می توانید "ConditionFirmware=smbios" -field(board_name = "Custom Board")" را مشخص کنید.
  • در طول فرآیند اولیه سازی (PID 1)، امکان وارد کردن اعتبارنامه ها از فیلدهای SMBIOS (نوع 11، "رشته های فروشنده OEM") علاوه بر تعریف آنها از طریق qemu_fwcfg اضافه شده است، که ارائه اعتبار به ماشین های مجازی را ساده می کند و از بین می برد نیاز به ابزارهای شخص ثالث مانند Cloud-init و احتراق.
  • در حین خاموش شدن، منطق باز کردن سیستم فایل مجازی (proc، sys) تغییر کرده است و اطلاعات مربوط به فرآیندهایی که مانع از نصب فایل سیستم‌ها می‌شوند در گزارش ذخیره می‌شوند.
  • فیلتر فراخوانی سیستم (SystemCallFilter) به طور پیش‌فرض اجازه دسترسی به تماس سیستمی riscv_flush_icache را می‌دهد.
  • بوت لودر sd-boot قابلیت بوت شدن در حالت ترکیبی را اضافه می کند که در آن هسته لینوکس 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=» برای سرعت بخشیدن به پیکربندی از طریق DHCPv6a ​​اضافه کرد. (RFC 3315). پارامتر "RouteTable=" اجازه می دهد تا نام جداول مسیریابی را مشخص کنید.
  • systemd-nspawn امکان استفاده از مسیرهای فایل نسبی را در گزینه های "--bind=" و "--overlay=" می دهد. پشتیبانی از پارامتر 'rootidmap' به گزینه "--bind=" اضافه شد تا شناسه کاربر ریشه در کانتینر را به صاحب پوشه نصب شده در سمت میزبان متصل کند.
  • systemd-resolved به طور پیش‌فرض از OpenSSL به عنوان پشتیبان رمزگذاری خود استفاده می‌کند (پشتیبانی gnutls به عنوان یک گزینه حفظ می‌شود). الگوریتم‌های DNSSEC پشتیبانی‌نشده به‌جای بازگرداندن خطا (SERVFAIL) اکنون به عنوان ناامن در نظر گرفته می‌شوند.
  • systemd-sysusers، systemd-tmpfiles و systemd-sysctl توانایی انتقال تنظیمات را از طریق مکانیزم ذخیره‌سازی اعتبار پیاده‌سازی می‌کنند.
  • برای مقایسه رشته‌ها با شماره‌های نسخه (شبیه به «rpmdev-vercmp» و «dpkg --compare-versions»، دستور «مقایسه نسخه‌ها» را به ابزار systemd-analyze اضافه کرد. قابلیت فیلتر کردن واحدها توسط ماسک به دستور 'systemd-analyze dump' اضافه شده است.
  • هنگام انتخاب حالت خواب چند مرحله ای (تعلیق-سپس-هبرنیت)، زمان صرف شده در حالت آماده به کار اکنون بر اساس پیش بینی عمر باتری باقیمانده انتخاب می شود. انتقال فوری به حالت خواب زمانی اتفاق می‌افتد که کمتر از 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 تغییر یافته است.

تغییراتی که سازگاری را از بین می برد:

  • هنگام بررسی شماره نسخه هسته با استفاده از دستور ConditionKernelVersion، اکنون از یک مقایسه رشته ساده در عملگرهای '=' و '!=' استفاده می شود و اگر عملگر مقایسه اصلاً مشخص نشده باشد، می توان از تطبیق glob-mask با استفاده از شخصیت ها '*'، '؟' و '['، ']'. برای مقایسه نسخه های سبک stverscmp() از عملگرهای '<'، '>'، '<=' و '>=' استفاده کنید.
  • تگ SELinux که برای بررسی دسترسی از یک فایل واحد استفاده می شود، اکنون در زمان بارگیری فایل خوانده می شود نه در زمان بررسی دسترسی.
  • شرط "ConditionFirstBoot" اکنون در اولین بوت سیستم فقط مستقیماً در مرحله بوت فعال می شود و هنگام فراخوانی واحدها پس از اتمام بوت، "false" را برمی گرداند.
  • در سال 2024، systemd قصد دارد پشتیبانی از مکانیسم محدودکننده منابع cgroup v1 را متوقف کند، که در نسخه systemd 248 منسوخ شده بود. به مدیران توصیه می شود قبل از انتقال خدمات مبتنی بر cgroup v2 به cgroup v1 مراقب باشند. تفاوت اصلی بین cgroups v2 و v1 استفاده از یک سلسله مراتب مشترک cgroups برای همه انواع منابع، به جای سلسله مراتب جداگانه برای تخصیص منابع CPU، برای تنظیم مصرف حافظه و برای I/O است. سلسله مراتب مجزا منجر به مشکلاتی در سازماندهی تعامل بین کنترل کننده ها و هزینه های اضافی منابع هسته در هنگام اعمال قوانین برای یک فرآیند ارجاع شده در سلسله مراتب های مختلف می شود.
  • در نیمه دوم سال 2023، ما قصد داریم به پشتیبانی از سلسله مراتب دایرکتوری تقسیم‌بندی پایان دهیم، جایی که /usr به طور جداگانه از ریشه نصب می‌شود، یا /bin و /usr/bin، /lib و /usr/lib از هم جدا می‌شوند.

منبع: opennet.ru

اضافه کردن نظر