Systemd system manager 252-ի թողարկում UKI (Unified Kernel Image) աջակցությամբ

Հինգ ամիս մշակումից հետո ներկայացվեց systemd 252 համակարգի կառավարչի թողարկումը: Նոր տարբերակի հիմնական փոփոխությունը արդիականացված բեռնման գործընթացի աջակցության ինտեգրումն էր, որը թույլ է տալիս ստուգել ոչ միայն միջուկը և բեռնիչը, այլև բաղադրիչները: հիմնական համակարգի միջավայրը՝ օգտագործելով թվային ստորագրությունները:

Առաջարկվող մեթոդը ներառում է միջուկի միասնական պատկերի UKI (Unified Kernel Image) օգտագործումը բեռնման ժամանակ, որը միավորում է UEFI-ից միջուկը բեռնելու համար մշակող (UEFI boot stub), Linux միջուկի պատկեր և հիշողության մեջ բեռնված initrd համակարգի միջավայր, որն օգտագործվում է: սկզբնական սկզբնավորման համար այն փուլում, նախքան արմատային FS-ը տեղադրելը: UKI պատկերը փաթեթավորվում է որպես մեկ գործարկվող ֆայլ PE ձևաչափով, որը կարող է բեռնվել ավանդական բեռնախցիկների միջոցով կամ զանգահարել անմիջապես UEFI որոնվածից: UEFI-ից զանգահարելիս հնարավոր է ստուգել ոչ միայն միջուկի, այլև initrd-ի բովանդակության թվային ստորագրության ամբողջականությունն ու հուսալիությունը:

TPM PCR (Trusted Platform Module Platform Configuration Register) ռեգիստրների պարամետրերը հաշվարկելու համար, որոնք օգտագործվում են ամբողջականությունը վերահսկելու և 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 preset») առաջին բեռնման ժամանակ: Բեռնման ժամանակի նախադրյալները միացնելու համար անհրաժեշտ է կառուցել «-Dfirst-boot-full-preset» տարբերակով, սակայն նախատեսվում է այն լռելյայն միացնել ապագա թողարկումներում:
  • Օգտատերերի կառավարման միավորները ներառում են պրոցեսորային ռեսուրսների վերահսկիչ, որը հնարավորություն է տվել ապահովելու, որ CPUWeight-ի կարգավորումները կիրառվեն բոլոր հատվածային միավորների վրա, որոնք օգտագործվում են համակարգը մասերի բաժանելու համար (app.slice, background.slice, session.slice)՝ ռեսուրսները մեկուսացնելու համար: օգտվողների տարբեր ծառայություններ, որոնք մրցում են պրոցեսորի ռեսուրսների համար: CPUWeight-ը նաև աջակցում է «անգործուն» արժեքը՝ ակտիվացնելու համապատասխան ռեսուրսների տրամադրման ռեժիմը:
  • Ժամանակավոր («անցողիկ») ստորաբաժանումներում և systemd-repart կոմունալում թույլատրվում է գերակայող կարգավորումներ՝ ստեղծելով բացվող ֆայլեր /etc/systemd/system/name.d/ գրացուցակում:
  • Համակարգի պատկերների համար սահմանվում է աջակցությամբ ավարտված դրոշակը՝ որոշելով այս փաստը՝ հիմնվելով /etc/os-release ֆայլում նոր «SUPPORT_END=» պարամետրի արժեքի վրա:
  • Ավելացվել են «ConditionCredential=» և «AssertCredential=» կարգավորումները, որոնք կարող են օգտագործվել միավորները անտեսելու կամ խափանելու համար, եթե որոշակի հավատարմագրեր չկան համակարգում:
  • System.conf-ում և user.conf-ում ավելացվել է «DefaultSmackProcessLabel=» և «DefaultDeviceTimeoutSec=» կարգավորումները՝ սահմանելու SMACK-ի լռելյայն անվտանգության մակարդակը և միավորի ակտիվացման ժամկետը:
  • «ConditionFirmware=» և «AssertFirmware=» կարգավորումներում ավելացվել է SMBIOS առանձին դաշտեր նշելու հնարավորությունը, օրինակ՝ միավոր գործարկելու համար միայն այն դեպքում, եթե /sys/class/dmi/id/board_name դաշտը պարունակում է «Custom» արժեքը։ Տախտակ», կարող եք նշել «ConditionFirmware=smbios» -field(board_name = «Custom Board»)»:
  • Նախաստորագրման գործընթացում (PID 1) SMBIOS դաշտերից հավատարմագրերի ներմուծման հնարավորությունը (Type 11, «OEM վաճառող տողեր») ավելացվել է ի լրումն դրանց սահմանման qemu_fwcfg-ի միջոցով, ինչը հեշտացնում է հավատարմագրերի տրամադրումը վիրտուալ մեքենաներին և վերացնում է անհրաժեշտ է երրորդ կողմի գործիքներ, ինչպիսիք են ամպի մեկնարկը և բռնկումը:
  • Անջատման ժամանակ վիրտուալ ֆայլային համակարգերի (proc, sys) ապամոնտաժման տրամաբանությունը փոխվել է, և ֆայլային համակարգերի ապամոնտաժումն արգելափակող գործընթացների մասին տեղեկատվությունը պահվում է գրանցամատյանում:
  • Համակարգային զանգերի զտիչը (SystemCallFilter) թույլ է տալիս մուտք գործել riscv_flush_icache համակարգի զանգը լռելյայնորեն:
  • sd-boot bootloader-ն ավելացնում է խառը ռեժիմով բեռնման հնարավորություն, որի դեպքում 64-բիթանոց Linux միջուկը աշխատում է 32-բիթանոց UEFI որոնվածից: Ավելացվեց ESP-ում (EFI համակարգի բաժանում) հայտնաբերված ֆայլերից SecureBoot ստեղները ավտոմատ կերպով կիրառելու փորձնական հնարավորություն:
  • Նոր տարբերակներ են ավելացվել bootctl կոմունալ. «—all-architectures»՝ բոլոր աջակցվող EFI ճարտարապետությունների համար երկուականներ տեղադրելու համար, «—root=» և «—image=»՝ գրացուցակի կամ սկավառակի պատկերի հետ աշխատելու համար, «—install-source =» տեղադրման աղբյուրը սահմանելու համար, «-efi-boot-option-description=" բեռնման մուտքերի անունները կառավարելու համար:
  • «list-automounts» հրամանն ավելացվել է systemctl կոմունալ ծրագրին՝ ավտոմատ կերպով տեղադրված դիրեկտորիաների ցանկը ցուցադրելու և «--image=» տարբերակը՝ նշված սկավառակի պատկերի հետ կապված հրամաններ կատարելու համար: «--state=» և «--type=» տարբերակներն ավելացվել են «ցուցադրել» և «կարգավիճակ» հրամաններին:
  • systemd-networkd-ն ավելացրել է ընտրանքներ «TCPCongestionControlAlgorithm=»՝ TCP գերբեռնվածության կառավարման ալգորիթմն ընտրելու համար, «KeepFileDescriptor=»՝ TUN/TAP ինտերֆեյսերի ֆայլերի նկարագրիչը պահպանելու համար, «NetLabel=»՝ NetLabels-ը կարգավորելու համար, «RapidCommit=»՝ DHCPv6a-ի միջոցով կազմաձևումը արագացնելու համար: (RFC 3315): «RouteTable=» պարամետրը թույլ է տալիս նշել երթուղային աղյուսակների անունները:
  • systemd-nspawn-ը թույլ է տալիս օգտագործել հարաբերական ֆայլերի ուղիները «--bind=" և "--overlay=" տարբերակներում: Ավելացվել է «rootidmap» պարամետրի աջակցությունը «--bind=" տարբերակին՝ կոնտեյների մեջ գտնվող արմատային օգտվողի ID-ն կապելու հյուրընկալող կողմում տեղադրված գրացուցակի տիրոջը:
  • systemd-resolved-ը լռելյայն օգտագործում է OpenSSL-ը որպես գաղտնագրման հիմք (gnutls-ի աջակցությունը պահպանվում է որպես տարբերակ): Չաջակցվող DNSSEC ալգորիթմներն այժմ դիտվում են որպես ոչ անվտանգ՝ սխալ վերադարձնելու փոխարեն (SERVFAIL):
  • systemd-sysusers-ը, systemd-tmpfiles-ը և systemd-sysctl-ն իրականացնում են կարգավորումները հավատարմագրերի պահպանման մեխանիզմի միջոցով փոխանցելու հնարավորությունը:
  • Systemd-analyze utility-ին ավելացրել է «compare-versions» հրամանը՝ տողերը տարբերակների համարների հետ համեմատելու համար (նման է «rpmdev-vercmp» և «dpkg --compare-versions»): «Systemd-analyze dump» հրամանին ավելացվել է միավորները դիմակով զտելու հնարավորությունը:
  • Բազմաստիճան քնի ռեժիմ ընտրելիս (կասեցնել-այնուհետև-ձմեռել), սպասման ռեժիմում անցկացրած ժամանակը այժմ ընտրվում է մարտկոցի մնացած ժամկետի կանխատեսման հիման վրա: Ակնթարթային անցում քնի ռեժիմին տեղի է ունենում, երբ մարտկոցի լիցքավորումը մնում է 5%-ից պակաս:
  • «journalctl»-ում ավելացվել է նոր ելքային ռեժիմ «-o short-delta», որը ցույց է տալիս ժամանակի տարբերությունը տարբեր հաղորդագրությունների մատյանում:
  • 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-ն առանձնացված են:

Source: opennet.ru

Добавить комментарий