UKI (Нэгдсэн цөмийн зураг) дэмжлэгтэй systemd системийн менежер 252-г гаргасан

Таван сарын хөгжүүлэлтийн дараа системийн менежер systemd 252 хувилбарыг танилцуулав.Шинэ хувилбарын гол өөрчлөлт нь зөвхөн цөм болон ачаалагчийг төдийгүй бүрэлдэхүүн хэсгүүдийг шалгах боломжийг олгодог орчин үеийн ачаалах процессын дэмжлэгийг нэгтгэсэн явдал юм. тоон гарын үсэг ашиглан системийн үндсэн орчны.

Санал болгож буй арга нь ачаалах үед цөмийг UEFI (UEFI ачаалах stub), Линуксийн цөмийн дүрс болон санах ойд ачаалагдсан initrd системийн орчинг ачаалах зохицуулагчийг хослуулсан UKI (Нэгдсэн цөмийн дүрс)-ийг ашиглах явдал юм. root FS-ийг холбохоос өмнөх шатанд анхны эхлүүлэхийн тулд . UKI дүрсийг PE форматаар нэг гүйцэтгэгдэх файл хэлбэрээр багцалсан бөгөөд үүнийг уламжлалт ачаалагч ашиглан ачаалах эсвэл UEFI програм хангамжаас шууд дуудаж болно. UEFI-ээс дуудлага хийх үед зөвхөн цөмийн дижитал гарын үсгийн бүрэн бүтэн байдал, найдвартай байдлыг шалгах боломжтой бөгөөд мөн initrd-ийн агуулгыг шалгах боломжтой.

UKI дүрсний бүрэн бүтэн байдлыг хянах, тоон гарын үсэг үүсгэхэд ашигладаг TPM PCR (Итгэмжлэгдсэн платформ модулийн платформын тохиргооны бүртгэл) регистрүүдийн параметрүүдийг тооцоолохын тулд шинэ хэрэгсэл systemd-measure-ийг оруулсан болно. Гарын үсэгт ашигласан нийтийн түлхүүр болон дагалдах ПГУ-ын мэдээллийг шууд UKI ачаалах зурагт (түлхүүр болон гарын үсгийг '.pcrsig' болон '.pcrkey' талбарт PE файлд хадгалсан) оруулж, гаднаас нь гаргаж авах боломжтой. эсвэл дотоод хэрэгслүүд.

Ялангуяа systemd-cryptsetup, systemd-cryptenroll болон systemd-creds хэрэгслүүдийг энэ мэдээллийг ашиглахад тохируулсан бөгөөд үүний тусламжтайгаар та шифрлэгдсэн дискний хуваалтууд дижитал гарын үсэгтэй цөмд холбогдсон эсэхийг баталгаажуулах боломжтой (энэ тохиолдолд шифрлэгдсэн хуваалт руу нэвтрэх боломжтой). Зөвхөн UKI дүрс нь TPM-д байрлах параметрүүд дээр үндэслэн тоон гарын үсгээр баталгаажуулсан тохиолдолд л олгоно).

Нэмж дурдахад, systemd-pcrphase хэрэгслийг багтаасан бөгөөд энэ нь TPM 2.0 тодорхойлолтыг дэмждэг криптопроцессоруудын санах ойд байрлах параметрүүдийг ачаалах янз бүрийн үе шатуудыг хянах боломжийг олгодог (жишээлбэл, та LUKS2 хуваалтын кодыг тайлах түлхүүрийг зөвхөн энд ашиглах боломжтой болгож болно). initrd дүрсийг татаж аваад дараагийн үе шатанд хандах хандалтыг хааж болно).

Бусад зарим өөрчлөлтүүд:

  • Тохиргоонд өөр хэл заагаагүй бол өгөгдмөл хэл C.UTF-8 байхыг баталгаажуулна.
  • Одоо анхны ачаалах үед үйлчилгээний урьдчилан тохируулсан үйлдлийг (“systemctl preset”) гүйцэтгэх боломжтой боллоо. Ачаалах үед урьдчилан тохируулгыг идэвхжүүлэхийн тулд "-Dfirst-boot-full-preset" сонголтыг хийх шаардлагатай боловч дараагийн хувилбаруудад анхдагч байдлаар идэвхжүүлэхээр төлөвлөж байна.
  • Хэрэглэгчийн удирдлагын нэгжүүд нь CPU-ийн нөөцийн хянагчтай бөгөөд энэ нь системийг хооронд нь тусгаарлахын тулд системийг хэсэг болгон (app.slice, background.slice, session.slice) хуваахад ашигладаг бүх зүсмэлийн нэгжүүдэд CPUWeight-ийн тохиргоог ашиглах боломжийг олгосон. CPU-ийн нөөцийн төлөө өрсөлдөж буй өөр өөр хэрэглэгчийн үйлчилгээ. CPUWeight нь мөн нөөцийн зохих горимыг идэвхжүүлэхийн тулд "сул зогссон" утгыг дэмждэг.
  • Түр зуурын ("түр зуурын") нэгжүүд болон systemd-repart хэрэгсэлд /etc/systemd/system/name.d/ директорт унадаг файлуудыг үүсгэх замаар тохиргоог хүчингүй болгохыг зөвшөөрдөг.
  • Системийн зургуудын хувьд /etc/os-release файл дахь “SUPPORT_END=” шинэ параметрийн утга дээр үндэслэн энэ баримтыг тодорхойлох, дэмжигдсэн тугийг тохируулсан.
  • “ConditionCredential=” болон “AssertCredential=” тохиргоог нэмсэн бөгөөд энэ нь системд тодорхой итгэмжлэл байхгүй тохиолдолд нэгжийг үл тоомсорлох эсвэл эвдэхэд ашиглаж болно.
  • "DefaultSmackProcessLabel=" болон "DefaultDeviceTimeoutSec=" тохиргоог system.conf болон user.conf-д нэмсэн бөгөөд SMACK аюулгүй байдлын өгөгдмөл түвшин болон нэгжийг идэвхжүүлэх хугацааг тодорхойлсон.
  • "ConditionFirmware=" ба "AssertFirmware=" тохиргоонд SMBIOS талбаруудыг тусад нь зааж өгөх, жишээлбэл, /sys/class/dmi/id/board_name талбарт "Custom" гэсэн утгыг агуулж байгаа тохиолдолд л нэгжийг ажиллуулах боломжтой болсон. Самбар”, та “ConditionFirmware=smbios” -талбар(board_name = "Захиалгат самбар")"-г зааж өгч болно.
  • Эхлүүлэх явцад (PID 1) SMBIOS талбаруудаас итгэмжлэлүүдийг импортлох боломжийг (11-р төрөл, "OEM борлуулагчийн мөрүүд") qemu_fwcfg-ээр дамжуулан нэмсэн бөгөөд энэ нь виртуал машинд итгэмжлэл олгохыг хялбарчилж, Cloud -init болон ignition зэрэг гуравдагч талын хэрэгслүүдийн хэрэгцээ.
  • Унтраах үед виртуал файлын системийг (proc, sys) салгах логик өөрчлөгдсөн бөгөөд файлын системийг салгахад саад болж буй процессуудын талаарх мэдээллийг бүртгэлд хадгалсан.
  • Системийн дуудлагын шүүлтүүр (SystemCallFilter) нь анхдагчаар riscv_flush_icache системийн дуудлагад хандах боломжийг олгодог.
  • Sd-boot ачаалагч нь холимог горимд ачаалах чадварыг нэмдэг бөгөөд 64 битийн Линукс цөм нь 32 битийн UEFI програм хангамжаас ажилладаг. ESP (EFI системийн хуваалт) дээр олдсон файлуудаас SecureBoot товчлууруудыг автоматаар ашиглах туршилтын чадварыг нэмсэн.
  • Bootctl хэрэгсэлд шинэ сонголтууд нэмэгдсэн: "-бүх архитектурууд" нь дэмжигдсэн бүх EFI архитектурын хоёртын файлуудыг суулгах, "-root=" ба "-image=" директор эсвэл дискний дүрстэй ажиллах, "-install-source" =” суулгацын эх сурвалжийг тодорхойлоход "-efi-boot-option-description=" нь ачаалах оруулгын нэрийг удирдах болно.
  • 'list-automounts' командыг systemctl хэрэгсэлд нэмсэн бөгөөд автоматаар холбогдсон лавлах сангуудын жагсаалтыг харуулах ба "--image=" сонголт нь заасан дискний дүрстэй холбоотой тушаалуудыг гүйцэтгэх болно. 'Show' болон 'status' командуудад "--state=" болон "--type=" сонголтуудыг нэмсэн.
  • systemd-networkd нь TCP түгжрэлийг хянах алгоритмыг сонгоход “TCPCongestionControlAlgorithm=”, TUN/TAP интерфэйсүүдийн файлын тодорхойлогчийг хадгалахад “KeepFileDescriptor=”, NetLabels-ыг тохируулах “NetLabel=”, DCPv6-аар дамжуулан тохиргоог хурдасгахын тулд “RapidCommit=” гэсэн сонголтыг нэмсэн. (RFC 3315). “RouteTable=” параметр нь чиглүүлэлтийн хүснэгтийн нэрийг зааж өгөх боломжийг олгодог.
  • systemd-nspawn нь "--bind=" болон "--overlay=" сонголтуудад харьцангуй файлын замыг ашиглах боломжийг олгодог. "--bind=" сонголтод "rootidmap" параметрийн дэмжлэгийг нэмсэн.
  • systemd-resolved нь анхдагчаар OpenSSL-г шифрлэлтийн арын хэсэг болгон ашигладаг (gnutls-ийн дэмжлэгийг сонголт болгон хадгалдаг). Дэмжигдээгүй DNSSEC алгоритмуудыг одоо алдаа (SERVFAIL) буцаахын оронд аюултай гэж үзэж байна.
  • systemd-sysusers, systemd-tmpfiles болон systemd-sysctl нь итгэмжлэл хадгалах механизмаар дамжуулан тохиргоог шилжүүлэх боломжийг хэрэгжүүлдэг.
  • 'rpmdev-vercmp' болон 'dpkg --харьцуулах-хувилбарууд'-тай төстэй) мөрүүдийг хувилбарын дугаартай харьцуулахын тулд systemd-analyze-д 'харьцуулах-хувилбарууд' командыг нэмсэн. 'Systemd-analyze dump' команд дээр нэгжүүдийг маскаар шүүх боломжийг нэмсэн.
  • Олон үе шаттай унтах горимыг (түдгэлзүүлэх, дараа нь ичээнд оруулах) сонгохдоо зогсолтын горимд зарцуулах хугацааг одоо үлдсэн батерейны ашиглалтын таамаглал дээр үндэслэн сонгоно. Батерейны цэнэгийн 5% -иас бага байх үед унтах горимд нэн даруй шилжих болно.
  • "-o short-delta" гаралтын шинэ горимыг "journalctl"-д нэмсэн бөгөөд энэ нь бүртгэл дэх өөр өөр мессежүүдийн цагийн зөрүүг харуулдаг.
  • systemd-repart нь Squashfs файлын систем болон dm-verity-д зориулсан хуваалтууд, түүний дотор дижитал гарын үсэг бүхий хуваалтуудыг үүсгэх дэмжлэгийг нэмдэг.
  • Тодорхой хугацааны дараа идэвхгүй сессийг дуусгахын тулд systemd-logind дээр "StopIdleSessionSec=" тохиргоог нэмсэн.
  • Systemd-cryptenroll "--unlock-key-file=" сонголтыг нэмсэн бөгөөд энэ нь хэрэглэгчийг сануулахын оронд файлаас шифр тайлах түлхүүрийг задлах болно.
  • Systemd-growfs хэрэгслийг udev-гүй орчинд ажиллуулах боломжтой боллоо.
  • systemd-арын гэрэлтүүлэг нь олон график карттай системүүдийн дэмжлэгийг сайжруулсан.
  • Баримт бичигт заасан кодын жишээнүүдийн лицензийг CC0-оос MIT-0 болгон өөрчилсөн.

Тохиромжтой байдлыг зөрчсөн өөрчлөлтүүд:

  • ConditionKernelVersion зааврыг ашиглан цөмийн хувилбарын дугаарыг шалгахдаа '=' ба '!=' операторуудад энгийн мөрийн харьцуулалтыг ашиглаж байгаа бөгөөд хэрэв харьцуулах операторыг огт заагаагүй бол glob-mask тохирохыг ашиглаж болно. тэмдэгтүүд '*', '?' Мөн '[', ']'. Stverscmp() загварын хувилбаруудыг харьцуулахын тулд '<', '>', '<=' болон '>=' операторуудыг ашиглана уу.
  • Нэгж файлын хандалтыг шалгахад ашигладаг SELinux шошго нь хандалтыг шалгах үед биш харин файлыг ачаалах үед уншдаг.
  • "ConditionFirstBoot" нөхцөл нь системийн эхний ачаалах үед зөвхөн ачаалах үе шатанд л идэвхждэг бөгөөд ачаалж дууссаны дараа нэгжийг дуудах үед "худал" гэсэн хариу өгдөг.
  • 2024 онд systemd нь системийн 1-р хувилбар дээр хуучирсан cgroup v248 нөөцийг хязгаарлах механизмыг дэмжихээ зогсоохоор төлөвлөж байна. Администраторуудад cgroup v2-д суурилсан үйлчилгээг cgroup v1 руу шилжүүлэхээс өмнө анхаарахыг зөвлөж байна. cgroups v2 ба v1-ийн гол ялгаа нь CPU-ийн нөөцийг хуваарилах, санах ойн хэрэглээг зохицуулах, оролт гаралтын хувьд тусдаа шатлалын оронд бүх төрлийн нөөцийн хувьд нийтлэг бүлгүүдийн шатлалыг ашиглах явдал юм. Тусдаа шатлал нь зохицуулагчид хоорондын харилцан үйлчлэлийг зохион байгуулахад хүндрэл учруулж, өөр өөр шатлалд иш татсан процессын дүрмийг хэрэглэх үед цөмийн нөөцийн нэмэлт зардалд хүргэдэг.
  • 2023 оны хоёрдугаар хагаст бид /usr нь эхээс тусад нь суурилагдсан, эсвэл /bin болон /usr/bin, /lib ба /usr/lib тусгаарлагдсан директоруудын шатлалын дэмжлэгийг зогсоохоор төлөвлөж байна.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх