ఐదు నెలల అభివృద్ధి తర్వాత, సిస్టమ్ మేనేజర్ systemd 252 విడుదల చేయబడింది. కొత్త వెర్షన్లో కీలకమైన మార్పు ఆధునికీకరించిన బూట్ ప్రాసెస్కు మద్దతును ఏకీకృతం చేయడం, ఇది కెర్నల్ మరియు బూట్లోడర్ను మాత్రమే కాకుండా భాగాలను కూడా ధృవీకరించడానికి మిమ్మల్ని అనుమతిస్తుంది. డిజిటల్ సంతకాలను ఉపయోగించి ప్రాథమిక సిస్టమ్ పర్యావరణం.
ప్రతిపాదిత పద్ధతిలో లోడ్ అవుతున్నప్పుడు యూనిఫైడ్ కెర్నల్ ఇమేజ్ UKI (యూనిఫైడ్ కెర్నల్ ఇమేజ్) ఉపయోగించడం ఉంటుంది, ఇది UEFI (UEFI బూట్ స్టబ్), Linux కెర్నల్ ఇమేజ్ మరియు మెమరీలోకి లోడ్ చేయబడిన initrd సిస్టమ్ ఎన్విరాన్మెంట్ నుండి కెర్నల్ను లోడ్ చేయడానికి హ్యాండ్లర్ను మిళితం చేస్తుంది. రూట్ FS మౌంట్ చేయడానికి ముందు దశలో ప్రారంభ ప్రారంభానికి. UKI చిత్రం PE ఆకృతిలో ఒకే ఎక్జిక్యూటబుల్ ఫైల్గా ప్యాక్ చేయబడింది, ఇది సాంప్రదాయ బూట్లోడర్లను ఉపయోగించి లోడ్ చేయబడుతుంది లేదా UEFI ఫర్మ్వేర్ నుండి నేరుగా కాల్ చేయబడుతుంది. UEFI నుండి కాల్ చేసినప్పుడు, కెర్నల్ యొక్క డిజిటల్ సంతకం యొక్క సమగ్రత మరియు విశ్వసనీయతను ధృవీకరించడం సాధ్యమవుతుంది, కానీ initrd యొక్క కంటెంట్లు కూడా.
UKI ఇమేజ్ యొక్క సమగ్రతను పర్యవేక్షించడానికి మరియు డిజిటల్ సంతకాన్ని రూపొందించడానికి ఉపయోగించే TPM PCR (విశ్వసనీయ ప్లాట్ఫారమ్ మాడ్యూల్ ప్లాట్ఫారమ్ కాన్ఫిగరేషన్ రిజిస్టర్) రిజిస్టర్ల యొక్క పారామితులను లెక్కించడానికి, కొత్త యుటిలిటీ systemd-మెజర్ చేర్చబడింది. సంతకంలో ఉపయోగించిన పబ్లిక్ కీ మరియు దానితో కూడిన PCR సమాచారాన్ని నేరుగా UKI బూట్ ఇమేజ్లో పొందుపరచవచ్చు (కీ మరియు సంతకం '.pcrsig' మరియు '.pcrkey' ఫీల్డ్లలోని PE ఫైల్లో సేవ్ చేయబడతాయి) మరియు దాని నుండి బాహ్యంగా సంగ్రహించబడతాయి. లేదా అంతర్గత వినియోగాలు.
ప్రత్యేకించి, systemd-cryptsetup, systemd-cryptenroll మరియు systemd-creds వినియోగాలు ఈ సమాచారాన్ని ఉపయోగించడానికి స్వీకరించబడ్డాయి, దీనితో మీరు గుప్తీకరించిన డిస్క్ విభజనలు డిజిటల్ సంతకం చేయబడిన కెర్నల్కు కట్టుబడి ఉన్నాయని నిర్ధారించుకోవచ్చు (ఈ సందర్భంలో, ఎన్క్రిప్టెడ్ విభజనకు యాక్సెస్ TPMలో ఉన్న పారామితుల ఆధారంగా UKI చిత్రం డిజిటల్ సంతకం ద్వారా ధృవీకరణను ఆమోదించినట్లయితే మాత్రమే అందించబడుతుంది).
అదనంగా, systemd-pcrphase యుటిలిటీ చేర్చబడింది, ఇది TPM 2.0 స్పెసిఫికేషన్కు మద్దతు ఇచ్చే క్రిప్టోప్రాసెసర్ల మెమరీలో ఉన్న పారామితులకు వివిధ బూట్ దశల బైండింగ్ను నియంత్రించడానికి మిమ్మల్ని అనుమతిస్తుంది (ఉదాహరణకు, మీరు LUKS2 విభజన డిక్రిప్షన్ కీని మాత్రమే అందుబాటులో ఉంచవచ్చు. initrd ఇమేజ్ మరియు డౌన్లోడ్ల తర్వాత దశలలో దానికి యాక్సెస్ని బ్లాక్ చేయండి).
మరికొన్ని మార్పులు:
- సెట్టింగ్లలో వేరే లొకేల్ పేర్కొనకపోతే డిఫాల్ట్ లొకేల్ C.UTF-8 అని నిర్ధారిస్తుంది.
- మొదటి బూట్ సమయంలో పూర్తి సర్వీస్ ప్రీసెట్ ఆపరేషన్ (“systemctl ప్రీసెట్”) చేయడం ఇప్పుడు సాధ్యమవుతుంది. బూట్ సమయంలో ప్రీసెట్లను ప్రారంభించాలంటే "-Dfirst-boot-full-preset" ఎంపికతో నిర్మించడం అవసరం, కానీ భవిష్యత్ విడుదలలలో డిఫాల్ట్గా ప్రారంభించబడాలని ప్లాన్ చేయబడింది.
- వినియోగదారు నిర్వహణ యూనిట్లు CPU రిసోర్స్ కంట్రోలర్ను కలిగి ఉంటాయి, దీని ద్వారా సిస్టమ్ను భాగాలుగా (app.slice, background.slice, session.slice) విభజించడానికి ఉపయోగించే అన్ని స్లైస్ యూనిట్లకు CPUవెయిట్ సెట్టింగ్లు వర్తింపజేయడం సాధ్యమైంది. విభిన్న వినియోగదారు సేవలు, CPU వనరుల కోసం పోటీ పడుతున్నాయి. CPUWeight తగిన వనరు ప్రొవిజనింగ్ మోడ్ను సక్రియం చేయడానికి “నిష్క్రియ” విలువకు కూడా మద్దతు ఇస్తుంది.
- తాత్కాలిక (“తాత్కాలిక”) యూనిట్లలో మరియు systemd-repart యుటిలిటీలో, /etc/systemd/system/name.d/ డైరెక్టరీలో డ్రాప్-ఇన్ ఫైల్లను సృష్టించడం ద్వారా సెట్టింగులను భర్తీ చేయడం అనుమతించబడుతుంది.
- సిస్టమ్ ఇమేజ్ల కోసం, మద్దతు-ముగింపు ఫ్లాగ్ సెట్ చేయబడింది, /etc/os-release ఫైల్లోని కొత్త పరామితి “SUPPORT_END=” విలువ ఆధారంగా ఈ వాస్తవాన్ని నిర్ధారిస్తుంది.
- సిస్టమ్లో నిర్దిష్ట ఆధారాలు లేకుంటే యూనిట్లను విస్మరించడానికి లేదా క్రాష్ చేయడానికి ఉపయోగించే “ConditionCredential=” మరియు “AssertCredential=” సెట్టింగ్లు జోడించబడ్డాయి.
- డిఫాల్ట్ SMACK భద్రతా స్థాయిని మరియు యూనిట్ యాక్టివేషన్ గడువును నిర్వచించడానికి “DefaultSmackProcessLabel=” మరియు “DefaultDeviceTimeoutSec=” సెట్టింగ్లు system.conf మరియు user.confకి జోడించబడ్డాయి.
- “ConditionFirmware=” మరియు “AssertFirmware=” సెట్టింగ్లలో, వ్యక్తిగత SMBIOS ఫీల్డ్లను పేర్కొనే సామర్థ్యం జోడించబడింది, ఉదాహరణకు, /sys/class/dmi/id/board_name ఫీల్డ్లో “కస్టమ్” విలువ ఉంటే మాత్రమే యూనిట్ను ప్రారంభించడానికి బోర్డ్”, మీరు “కండిషన్ ఫర్మ్వేర్=smbios” -ఫీల్డ్(board_name = "కస్టమ్ బోర్డ్")"ని పేర్కొనవచ్చు.
- ప్రారంభ ప్రక్రియలో (PID 1), SMBIOS ఫీల్డ్ల నుండి ఆధారాలను దిగుమతి చేసుకునే సామర్థ్యం (రకం 11, “OEM వెండర్ స్ట్రింగ్లు”) qemu_fwcfg ద్వారా వాటి నిర్వచనానికి అదనంగా జోడించబడింది, ఇది వర్చువల్ మెషీన్లకు ఆధారాలను అందించడాన్ని సులభతరం చేస్తుంది మరియు తొలగిస్తుంది క్లౌడ్ -ఇనిట్ మరియు ఇగ్నిషన్ వంటి థర్డ్-పార్టీ టూల్స్ అవసరం.
- షట్డౌన్ సమయంలో, వర్చువల్ ఫైల్ సిస్టమ్స్ (proc, sys) అన్మౌంట్ చేయడానికి లాజిక్ మార్చబడింది మరియు ఫైల్ సిస్టమ్ల అన్మౌంట్ను నిరోధించే ప్రక్రియల గురించి సమాచారం లాగ్లో సేవ్ చేయబడుతుంది.
- సిస్టమ్ కాల్ ఫిల్టర్ (SystemCallFilter) డిఫాల్ట్గా riscv_flush_icache సిస్టమ్ కాల్కు యాక్సెస్ను అనుమతిస్తుంది.
- sd-boot బూట్లోడర్ మిక్స్డ్ మోడ్లో బూట్ చేయగల సామర్థ్యాన్ని జోడిస్తుంది, దీనిలో 64-బిట్ లైనక్స్ కెర్నల్ 32-బిట్ UEFI ఫర్మ్వేర్ నుండి నడుస్తుంది. ESP (EFI సిస్టమ్ విభజన)లో కనుగొనబడిన ఫైల్ల నుండి SecureBoot కీలను స్వయంచాలకంగా వర్తించే ప్రయోగాత్మక సామర్థ్యం జోడించబడింది.
- bootctl యుటిలిటీకి కొత్త ఎంపికలు జోడించబడ్డాయి: అన్ని మద్దతు ఉన్న EFI ఆర్కిటెక్చర్ల కోసం బైనరీలను ఇన్స్టాల్ చేయడానికి “—all-architectures”, డైరెక్టరీ లేదా డిస్క్ ఇమేజ్తో పని చేయడానికి “—root=” మరియు “—image=”, “—install-source =” ఇన్స్టాలేషన్ కోసం మూలాన్ని నిర్వచించడానికి, బూట్ ఎంట్రీ పేర్లను నియంత్రించడానికి "-efi-boot-option-description=".
- 'list-automounts' కమాండ్ స్వయంచాలకంగా మౌంట్ చేయబడిన డైరెక్టరీల జాబితాను ప్రదర్శించడానికి systemctl యుటిలిటీకి జోడించబడింది మరియు పేర్కొన్న డిస్క్ ఇమేజ్కి సంబంధించి ఆదేశాలను అమలు చేయడానికి "--image=" ఎంపిక. 'షో' మరియు 'స్టేటస్' ఆదేశాలకు "--state=" మరియు "--type=" ఎంపికలు జోడించబడ్డాయి.
- systemd-networkd TCP రద్దీ నియంత్రణ అల్గారిథమ్ని ఎంచుకోవడానికి “TCPCongestionControlAlgorithm=” ఎంపికలను జోడించింది, TUN/TAP ఇంటర్ఫేస్ల ఫైల్ డిస్క్రిప్టర్ను సేవ్ చేయడానికి “KeepFileDescriptor=”, NetLabelsని సెట్ చేయడానికి “NetLabel=”, “RapidCommit=”ని స్పీడ్ అప్సిపిగు ద్వారా సెట్ చేయడానికి (RFC 6). “RouteTable=” పరామితి రూటింగ్ పట్టికల పేర్లను పేర్కొనడానికి అనుమతిస్తుంది.
- systemd-nspawn "--bind=" మరియు "--overlay=" ఎంపికలలో సంబంధిత ఫైల్ పాత్ల వినియోగాన్ని అనుమతిస్తుంది. కంటైనర్లోని రూట్ యూజర్ IDని హోస్ట్ వైపు మౌంట్ చేసిన డైరెక్టరీ యజమానికి బైండ్ చేయడానికి "--bind=" ఎంపికకు 'rootidmap' పారామీటర్కు మద్దతు జోడించబడింది.
- systemd-పరిష్కారం OpenSSLని డిఫాల్ట్గా దాని ఎన్క్రిప్షన్ బ్యాకెండ్గా ఉపయోగిస్తుంది (gnutls మద్దతు ఒక ఎంపికగా ఉంచబడుతుంది). మద్దతు లేని DNSSEC అల్గారిథమ్లు ఇప్పుడు లోపాన్ని (SERVFAIL) అందించడానికి బదులుగా అసురక్షితంగా పరిగణించబడ్డాయి.
- systemd-sysusers, systemd-tmpfiles మరియు systemd-sysctl క్రెడెన్షియల్ స్టోరేజ్ మెకానిజం ద్వారా సెట్టింగ్లను బదిలీ చేసే సామర్థ్యాన్ని అమలు చేస్తాయి.
- స్ట్రింగ్లను వెర్షన్ నంబర్లతో పోల్చడానికి systemd-analyzeకి 'compare-versions' కమాండ్ జోడించబడింది ('rpmdev-vercmp' మరియు 'dpkg --compare-versions' లాగానే). మాస్క్ ద్వారా యూనిట్లను ఫిల్టర్ చేసే సామర్థ్యాన్ని 'systemd-analyze dump' కమాండ్కు జోడించారు.
- మల్టీ-స్టేజ్ స్లీప్ మోడ్ను ఎంచుకున్నప్పుడు (సస్పెండ్-తర్వాత-హైబర్నేట్), స్టాండ్బై మోడ్లో గడిపిన సమయం ఇప్పుడు మిగిలిన బ్యాటరీ జీవితకాల సూచన ఆధారంగా ఎంపిక చేయబడుతుంది. 5% కంటే తక్కువ బ్యాటరీ ఛార్జ్ మిగిలి ఉన్నప్పుడు స్లీప్ మోడ్కి తక్షణ మార్పు జరుగుతుంది.
- కొత్త అవుట్పుట్ మోడ్ "-o short-delta" 'journalctl'కి జోడించబడింది, లాగ్లోని వివిధ సందేశాల మధ్య సమయ వ్యత్యాసాన్ని ప్రదర్శిస్తుంది.
- systemd-repart Squashfs ఫైల్ సిస్టమ్తో విభజనలను మరియు డిజిటల్ సంతకాలతో సహా dm-verity కోసం విభజనలను సృష్టించడానికి మద్దతునిస్తుంది.
- పేర్కొన్న సమయం ముగిసిన తర్వాత నిష్క్రియ సెషన్ను ముగించడానికి "StopIdleSessionSec=" సెట్టింగ్ని systemd-logindకి జోడించారు.
- Systemd-cryptenroll వినియోగదారుని ప్రాంప్ట్ చేయడం కంటే ఫైల్ నుండి డిక్రిప్షన్ కీని సంగ్రహించడానికి "--unlock-key-file=" ఎంపికను జోడించింది.
- udev లేకుండా పరిసరాలలో systemd-growfs యుటిలిటీని అమలు చేయడం ఇప్పుడు సాధ్యమవుతుంది.
- systemd-backlight బహుళ గ్రాఫిక్స్ కార్డ్లతో సిస్టమ్లకు మెరుగైన మద్దతును అందించింది.
- డాక్యుమెంటేషన్లో అందించబడిన కోడ్ ఉదాహరణల లైసెన్స్ CC0 నుండి MIT-0కి మార్చబడింది.
అనుకూలతను విచ్ఛిన్నం చేసే మార్పులు:
- ConditionKernelVersion డైరెక్టివ్ని ఉపయోగించి కెర్నల్ వెర్షన్ నంబర్ని తనిఖీ చేస్తున్నప్పుడు, ఇప్పుడు '=' మరియు '!=' ఆపరేటర్లలో సరళమైన స్ట్రింగ్ కంపారిజన్ ఉపయోగించబడుతుంది మరియు కంపారిజన్ ఆపరేటర్ని అస్సలు పేర్కొనకపోతే, గ్లోబ్-మాస్క్ మ్యాచింగ్ని ఉపయోగించి ఉపయోగించవచ్చు అక్షరాలు '*', '?' మరియు '[', ']'. stverscmp() శైలి సంస్కరణలను సరిపోల్చడానికి, '<', '>', '<=' మరియు '>=' ఆపరేటర్లను ఉపయోగించండి.
- యూనిట్ ఫైల్ నుండి ప్రాప్యతను తనిఖీ చేయడానికి ఉపయోగించే SELinux ట్యాగ్ ఇప్పుడు యాక్సెస్ తనిఖీ సమయంలో కాకుండా ఫైల్ లోడ్ చేయబడిన సమయంలో చదవబడుతుంది.
- "ConditionFirstBoot" కండిషన్ ఇప్పుడు సిస్టమ్ యొక్క మొదటి బూట్లో నేరుగా బూట్ దశలో మాత్రమే ట్రిగ్గర్ చేయబడుతుంది మరియు బూట్ పూర్తయిన తర్వాత యూనిట్లకు కాల్ చేస్తున్నప్పుడు "తప్పు"ని అందిస్తుంది.
- 2024లో, systemd విడుదల 1లో నిలిపివేయబడిన cgroup v248 రిసోర్స్ లిమిటింగ్ మెకానిజమ్కు మద్దతివ్వడాన్ని ఆపివేయాలని systemd యోచిస్తోంది. cgroup v2-ఆధారిత సేవలను cgroup v1కి తరలించడానికి నిర్వాహకులు ముందుగానే జాగ్రత్త వహించాలని సూచించారు. cgroups v2 మరియు v1 మధ్య ఉన్న ముఖ్యమైన తేడా ఏమిటంటే, CPU వనరులను కేటాయించడం కోసం, మెమరీ వినియోగాన్ని నియంత్రించడం కోసం మరియు I/O కోసం ప్రత్యేక సోపానక్రమాలకు బదులుగా, అన్ని రకాల వనరుల కోసం సాధారణ cgroups సోపానక్రమాన్ని ఉపయోగించడం. వేర్వేరు సోపానక్రమాలలో సూచించబడిన ప్రక్రియ కోసం నియమాలను వర్తింపజేసేటప్పుడు హ్యాండ్లర్ల మధ్య పరస్పర చర్యను నిర్వహించడంలో మరియు అదనపు కెర్నల్ వనరుల ఖర్చులకు ప్రత్యేక సోపానక్రమాలు దారితీస్తాయి.
- 2023 రెండవ భాగంలో, స్ప్లిట్ డైరెక్టరీ సోపానక్రమాలకు మద్దతును ముగించాలని మేము ప్లాన్ చేస్తున్నాము, ఇక్కడ /usr రూట్ నుండి విడిగా మౌంట్ చేయబడుతుంది లేదా /bin మరియు /usr/bin, /lib మరియు /usr/lib వేరు చేయబడతాయి.
మూలం: opennet.ru