эки ай иштеп кийин, Линус Torvalds ядро чыгаруу . Эң көрүнүктүү өзгөрүүлөрдүн арасында: exFAT файлдык тутумунун жаңы ишке ашырылышы, UDP туннелдерин түзүү үчүн bareudp модулу, ARM64 үчүн көрсөткүчтүн аутентификациясынын негизинде коргоо, BPF программаларын LSM иштетүүчүлөрүнө тиркөө мүмкүнчүлүгү, Curve25519 жаңы ишке ашырылышы, бөлүү. кулпу детектору, PREEMPT_RT менен BPF шайкештиги, коддогу 80 белгиден турган сызык өлчөмүндөгү чектөөнү алып салуу, тапшырма пландаштыргычтагы CPU температурасынын индикаторлорун эске алуу, башка группада процесстерди жаратуу үчүн clone() колдонуу мүмкүнчүлүгү, жазуудан коргоо userfaultfd аркылуу эстутумга.
Жаңы версия 15033 иштеп чыгуучунун 1961 оңдоосун камтыйт,
патчтын көлөмү - 39 МБ (өзгөрүүлөр 11590 файлга таасирин тийгизди, 570560 сап код кошулду,
297401 саптар алынып салынды). Бардык 41% га жакыны 5.7де көрсөтүлгөн
өзгөртүүлөр түзмөк драйверлерине байланыштуу, өзгөрүүлөрдүн болжол менен 16%
Аппараттык архитектураларга мүнөздүү кодду жаңылоого карата мамиле, 13%
тармактык стек менен байланышкан, 4% файлдык системаларга жана 4% ички
ядронун подсистемалары.
:
- Диск подсистемасы, киргизүү/чыгаруу жана файл системалары
- Жаңы exFAT драйверин ишке ашыруу кошулду, Samsung тарабынан анын үчүн иштелип чыккан учурдагы "sdfat" (2.x) код базасында Android-смартфондор. Ядрого мурда кошулган драйвер эскирген Samsung кодуна (1.2.9 версиясы) негизделген жана жаңы драйверден иштөө жагынан болжол менен 10% артта калган. Эске сала кетсек, ядрого exFAT колдоосун кошуу Microsoftтон кийин мүмкүн болгон. жалпыга жеткиликтүү мүнөздөмөлөр жана exFAT патенттерин акысыз колдонууга жеткиликтүү кылды Linux.
- Btrfs жаңы ioctl() буйругун ишке ашырат - BTRFS_IOC_SNAP_DESTROY_V2, ал бөлүмдү анын идентификатору боюнча жок кылууга мүмкүндүк берет. Саптык кеңейтүүлөрдү клондоо үчүн толук колдоо көрсөтүлөт. Кайра бөлүштүрүү операциялары үчүн жокко чыгаруу пункттарынын саны кеңейтилди, бул “баланс жокко чыгаруу” буйругун аткарууда көп күтүүлөрдү азайтты. Артка шилтемелерди даражага чейин аныктоо тездетилди (мисалы, тесттик скриптти аткаруу убактысы бир сааттан бир нече мүнөткө чейин кыскарды). Дарактын ар бир инодуна файлдын кеңейтүүлөрүн тиркөө мүмкүнчүлүгү кошулду. Бөлүмчөлөргө жазууда жана NOCOWды кошпогондо колдонулган бөгөттөө схемасы кайра иштелип чыкты. диапазондор үчүн fsync аткаруунун жакшыртылган натыйжалуулугу.
- XFS метадайындарды текшерүүнү жана жигердүү бөлүмдөр үчүн fsckди жакшыртты. Келечекте xfs_repair кайра иштетүү жана бөлүмдү ажыратпастан калыбына келтирүү мүмкүнчүлүгүн ишке ашыруу үчүн колдонула турган btree структураларын кайра куруу үчүн китепкана сунушталды.
- SMB3 сактагычтарында своп бөлүмүн жайгаштыруу үчүн эксперименталдык колдоо CIFSге кошулду. SMB3.1.1 спецификациясында аныкталган readdirге POSIX кеңейтүүлөрү ишке ашырылды. Кэш=катуу режим иштетилгенде жана 64+ протокол версиялары колдонулганда 2.1КБ барактар үчүн жакшыртылган жазуу натыйжалуулугу.
- FS EXT4 bmap жана iopollдан iomapты колдонууга өткөрүлдү.
- F2FS zstd алгоритмин колдонуу менен маалыматтарды кысуу үчүн кошумча колдоо көрсөтөт. Демейки боюнча, кысуу үчүн LZ4 алгоритми колдонулат. "chattr -c commit" буйругуна колдоо кошулду. Монтаждоо убактысы көрсөтүлөт. Кысылган блоктордун саны жөнүндө маалымат алуу үчүн ioctl F2FS_IOC_GET_COMPRESS_BLOCKS кошулду. statx аркылуу кошумча кысуу маалымат чыгаруу.
- Ceph файл системасы серверден жооп күтпөстөн (асинхрондук режимде иштөө) файлдарды түзүү жана жок кылуу операцияларын локалдык түрдө аткаруу мүмкүнчүлүгүн кошту. Өзгөртүү, мисалы, rsync утилитасын иштетүүдө иштин натыйжалуулугун бир топ жакшыртат.
- OVERLAYFSге жогорку деңгээлдеги файл системасы катары virtiofs колдонуу мүмкүнчүлүгү кошулду.
- VFSдеги жолду өтүү коду, символдук шилтемени талдоо коду кайра иштетилди жана монтаждоо чекитинин өтүшү бирдиктүү болду.
- Scsi подсистемасында артыкчылыксыз колдонуучуларга ZBC буйруктарын аткаруу.
- dm_writecache ичинде блоктун максималдуу иштөө мөөнөтүн белгилеген max_age параметринин негизинде кэшти акырындык менен тазалоо мүмкүнчүлүгү.
- dm_integrity менен "таштоо" операциясын колдоо.
- null_blk ичинде сыноо учурунда каталарды имитациялоо үчүн каталарды алмаштырууну колдоо.
- бөгөттөөчү түзүлүштүн өлчөмүн өзгөртүү жөнүндө udev эскертмелерин жөнөтүү мүмкүнчүлүгү.
- Тармактык подсистема
- Netfilter камтылган , чоң дал келүүчү тизмелерди (nftables топтомдорун) иштеп чыгууну кыйла тездетүү, бул үчүн субсеттердин, тармак портторунун, протоколдорунун жана MAC даректеринин айкалышын текшерүү керек.
Оптимизациялар nft_set_pipapo (PIle пакеттик саясаттары) модулуна, ал пакеттин мазмунун чыпкалоо эрежелеринде колдонулган ыктыярдуу талаа абалынын диапазондору менен дал келүү маселесин чечет, мисалы, IP жана тармак портунун диапазондору (nft_set_rbtree жана nft_set_hash интервалдык дал келүүнү жана маанилердин түз чагылдырылышын манипуляциялайт. ). AMD Epyc 256 процессору бар системада 2-бит AVX7402 нускамаларын колдонуу менен векторлоштурулган пипапо версиясы порт-протокол айкалыштарын кошкондо 420 миң жазууну талдоодо 30% өндүрүмдүүлүгүн көрсөттү. 1000 жазууну талдоодо подтармактын жана порт номеринин айкалышын салыштырганда өсүш IPv87 үчүн 4% жана IPv128 үчүн 6% түздү. - bareudp модулу, ал сизге MPLS, IP жана NSH сыяктуу ар кандай L3 протоколдорун UDP туннелине киргизүүгө мүмкүндүк берет.
- MPTCP (MultiPath TCP) компоненттерин интеграциялоо, ар кандай IP даректерге байланган ар кандай тармак интерфейстери аркылуу бир эле учурда бир нече маршруттар боюнча пакеттерди жеткирүү менен TCP байланышынын иштешин уюштуруу үчүн TCP протоколунун кеңейтилиши улантылды.
- 802.11 (Wi-Fi) ичинде Ethernet алкактарын капсулдаштыруу үчүн аппараттык ылдамдатуу механизмдерин колдоо.
- Түзмөктү бир тармактын аттар мейкиндигинен экинчисине жылдырганда, sysfs ичиндеги тиешелүү файлдарга кирүү укуктары жана ээликтери жөнгө салынат.
- Root эмес колдонуучулар үчүн SO_BINDTODEVICE желегин колдонуу мүмкүнчүлүгү кошулду.
- Патчтардын үчүнчү бөлүгү кабыл алынды, ethtool инструменттери ioctl()дан netlink интерфейсин колдонууга айландырды. Жаңы интерфейс кеңейтүүлөрдү кошууну жеңилдетет, каталарды башкарууну жакшыртат, абал өзгөргөндө эскертмелерди жөнөтүүгө мүмкүндүк берет, ядро менен колдонуучу мейкиндигинин ортосундагы өз ара аракеттенүүнү жөнөкөйлөтөт жана синхрондоштуруу керек болгон аталган тизмелердин санын азайтат.
- Туташууларды көзөмөлдөө операцияларын аткаруу үчүн атайын аппараттык тездеткичтерди колдонуу мүмкүнчүлүгү кошулду.
- Нетфильтрде чыгуучу пакеттердин классификаторлорун туташтыруу үчүн илгич, кирүүчү пакеттер (кирүү) үчүн мурда болгон илгичти толуктаган.
- Netfilter камтылган , чоң дал келүүчү тизмелерди (nftables топтомдорун) иштеп чыгууну кыйла тездетүү, бул үчүн субсеттердин, тармак портторунун, протоколдорунун жана MAC даректеринин айкалышын текшерүү керек.
- Виртуалдаштыруу жана коопсуздук
- Көрсөткүчтүн аутентификациясынын аппараттык камсыздоосу кошулду (), кайтарууга багытталган программалоонун (ROP) ыкмаларын колдонуу менен чабуулдардан коргоо үчүн атайын ARM64 CPU инструкцияларын колдонот, мында чабуулчу өзүнүн кодун эстутумга жайгаштырууга аракет кылбайт, бирок жүктөлгөн китепканаларда бар болгон машина нускамаларынын бөлүктөрүндө иштейт. контролдук кайтаруу инструкциясы менен. Коопсуздук ядро деңгээлинде кайтаруу даректерин текшерүү үчүн санариптик кол тамгаларды колдонуудан келип чыгат. Кол коюу көрсөткүчтүн өзүндө колдонулбаган жогорку биттерде сакталат. Программалык камсыздоону ишке ашыруудан айырмаланып, санариптик кол тамгаларды түзүү жана текшерүү процессордун атайын нускамаларын колдонуу менен ишке ашырылат.
- колдонуучу мейкиндигинде барактын каталарын (бөлүнбөгөн эстутум барактарына жетүү) иштетүү үчүн иштелип чыккан userfaultfd() тутумдук чалуу аркылуу эс тутум аймагын жазуудан коргоо мүмкүнчүлүгү. Идея userfaultfd() функциясын жазуудан корголгон деп белгиленген барактарга кирүүнүн бузулушун аныктоо жана мындай жазуу аракеттерине жооп бере ала турган иштеткичти чакыруу үчүн да колдонуу болуп саналат (мисалы, иштеп жаткан процесстердин жандуу сүрөттөрүн түзүү учурундагы өзгөртүүлөрдү иштетүү, абал эстутумдун калдыктарын дискке таштаганда, бөлүшүлгөн эстутумду ишке ашырууда, эстутумдагы өзгөрүүлөргө байкоо жүргүзүү). Функционалдык SIGSEGV сигнал иштеткич менен бирге mprotect() колдонуп, бирок ал тезирээк иштейт.
- Түштүк-чыгыштаLinux Эрежелерди иштетүү учурунда эстутумду коргоону текшерүүнү өчүрүүгө мүмкүндүк берген (эрежелерге карабастан аткарылуучу эстутум аймактарын колдонууга мүмкүндүк берген) "checkreqprot" параметри эскирип калды. Kernfs символикалык шилтемелерине эми ата-эне каталогдорунун контекстин мурастоого уруксат берилет.
- түзүлүш модулу , бул сизге BPF программаларын ядродогу каалаган LSM илгичтерине тиркөөгө мүмкүндүк берет. Бул өзгөртүү сизге LSM модулдарын түзүүгө мүмкүндүк берет (Linux Коопсуздук модулу) аудит жана милдеттүү түрдө кирүүнү көзөмөлдөө көйгөйлөрүн чечүү үчүн BPF программалары түрүндө.
- RNG нускамаларын жекече чакыруунун ордуна CRNG баалуулуктарын топтоо менен /dev/random иштешин оптималдаштырат. RNG инструкциялары менен камсыз кылуучу ARM64 системаларында getrandom жана /dev/random жакшыртылды.
- Эллиптикалык ийри сызыкты ишке ашыруу Curve25519 китепканадан тандоо үчүн , бул үчүн формалдуу ишенимдүүлүгүн текшерүүнүн математикалык далили.
- бош эстутум баракчалары жөнүндө маалымат берүү механизми. Бул механизмди колдонуу менен конок системалары хост тутумунда колдонулбай калган баракчалар жөнүндө маалыматты өткөрүп бере алат жана хост барактын маалыматтарын кайра ала алат.
- vfio/pci ичинде SR-IOV (Single-Root I/O Virtualization) үчүн колдоо.
- Эстутум жана система кызматтары
- 80ден 100 белгиге чейин баштапкы тексттердеги саптардын максималдуу узундугуна чектөө. Ошол эле учурда, иштеп чыгуучулар дагы эле ар бир сапта 80 белгинин чегинде калуу сунушталат, бирок бул мындан ары катуу чек эмес. Кошумчалай кетсек, сызык өлчөмүнүн чегинен ашып кетсе, текшерүү патч утилитасы "--strict" опциясы менен иштетилгенде гана куруу эскертүүсүнө алып келет. Өзгөртүү иштеп чыгуучуларды алаксытпоого мүмкүндүк берет боштуктар менен жана кодду тегиздөөдө эркин сезиңиз, ошондой эле ашыкча сызыктарды бузуу, кодду түшүнүү жана издөө.
- атайын жүктөгүчтү колдонбостон, 64 биттик процессордо иштеген 32 бит микропрограммасынан 64 биттик ядрону жүктөөгө мүмкүндүк берген EFI аралаш жүктөө режимин колдоо.
- бөлүнгөн кулпуларды аныктоо жана оңдоо системасы (""), атомдук буйрукту аткарууда маалыматтар эки CPU кэш сызыгын кесип өткөндүгүнө байланыштуу эс тутумдагы теңдештирилбеген маалыматтарга жетүү учурунда пайда болот. Мындай бөгөттөө аткаруунун олуттуу соккусуна алып келет (бир кэш сызыгына түшкөн маалыматтар боюнча атомдук операцияга караганда 1000 цикл жайыраак). "split_lock_detect" жүктөө параметрине жараша, ядро мындай кулпуларды тез эле таап, эскертүүлөрдү бере алат же кулпуга себеп болгон тиркемеге SIGBUS сигналын жөнөтө алат.
- Тапшырма пландоочу температура сенсорлорун көзөмөлдөөнү камсыз кылат () жана тапшырмаларды коюуда ысып кетүүнү эске алуу менен ишке ашырылат. Берилген статистиканы колдонуп, жылуулук башкаруучу ашыкча ысып кеткенде CPU максималдуу жыштыгын тууралай алат жана тапшырма пландоочу азыр тапшырмаларды аткарууну пландаштырууда жыштыктын төмөндөшүнөн улам эсептөө кубаттуулугунун кыскарышын эске алат (мурда пландоочу өзгөрүүлөргө жооп берген. белгилүү бир кечигүү менен жыштыкта, бир нече убакытка чейин жеткиликтүү эсептөө ресурстары жөнүндө жогорулатылган божомолдорго негизделген чечимдерди кабыл алуу).
- тапшырма пландоочу камтыйт учурдагы CPU иш жыштыгына карабастан, жүктү туура баалоого мүмкүндүк берет. Өзгөртүү чыңалуудагы жана CPU жыштыгындагы динамикалык өзгөрүүлөрдүн шарттарында тапшырмалардын жүрүм-турумун такыраак болжолдоого мүмкүндүк берет. Мисалы, 1 МГц процессинде процессордун ресурстарынын 3/1000 бөлүгүн жеген тапшырма жыштык 2 МГцке түшкөндө ресурстардын 3/500 бөлүгүн керектейт, бул мурда ал толук кубаттуулукта иштеп жатат деген жалган божомолду жараткан (б.а. тапшырмалар пайда болгон) жыштыкты азайтуу аркылуу гана пландоочуга чоңураак, бул schedutil cpufreq губернаторунда туура эмес чечимдердин кабыл алынышына алып келди).
- Иштөө режимдерин тандоо үчүн жооптуу Intel P-state драйвери колдонууга которулду .
- ядро реалдуу убакыт режиминде иштеп турганда BPF подсистемасын колдонуу мүмкүнчүлүгү ишке ашырылган (PREEMPT_RT). Мурда, PREEMPT_RT иштетилгенде, BPF өчүрүлүшү керек болчу.
- BPF программасынын жаңы түрү кошулду - BPF_MODIFY_RETURN, ал өзөктөгү функцияга тиркелет жана бул функция тарабынан кайтарылган маанини өзгөртүүгө болот.
- Кошулган Clone3() тутумунун чалуусунун жардамы менен круппада негизги группадан айырмаланган процессти түзүү, ата-энелик процесске чектөөлөрдү колдонууга жана жаңы процессти же жипти чыгаргандан кийин дароо эсепти иштетүүгө мүмкүндүк берет. Мисалы, тейлөө менеджери жаңы кызматтарды өзүнчө топторго түздөн-түз бөлүштүрө алат жана жаңы процесстер "тоңдурулган" топторго жайгаштырылса, дароо токтотулат.
- Kbuild ичинде ядрону курууда Clang/LLVM инструменттерине өтүү үчүн "LLVM=1" чөйрө өзгөрмөсүн колдоо. Binutils версиясына талаптар көтөрүлдү (2.23).
- /sys/kernel/debug/kunit/ бөлүмү күнүт сыноолорунун натыйжалары менен мүчүлүштүктөрдү аныктоого кошулду.
- Кошулган ядронун жүктөө параметри pm_debug_messages (/sys/power/pm_debug_messages аналогу), ал энергияны башкаруу тутумунун иштеши жөнүндө мүчүлүштүктөрдү оңдоо маалыматын чыгарууга мүмкүндүк берет (күтүү жана күтүү режиминдеги көйгөйлөрдү оңдоодо пайдалуу).
- Асинхрондук киргизүү/чыгаруу интерфейсине колдоо кошулду и .
- Perf инструменттер топтомун колдонуу менен жакшыртылган топтун профили. Мурда perf конкреттүү круппада профилдик тапшырмаларды гана аткара алган жана учурдагы үлгү кайсы топко таандык экенин таба алган эмес. perf азыр ар бир үлгү үчүн топтун маалыматын алат, бул сизге бирден ашык топту профилдештирүү жана сорттоо боюнча колдонууга мүмкүндүк берет
отчеттордо cgroup. - cgroupfs, cgroups башкаруу үчүн псевдо-FS, кеңейтилген атрибуттарды (xattrs) колдоону кошту, анын жардамы менен, мисалы, колдонуучу мейкиндигинде иштетүүчүлөр үчүн кошумча маалымат калтырсаңыз болот.
- Cgroup эстутум контроллерунда жана топтун мүчөлөрүнө берилген оперативдүү эстутумдун минималдуу көлөмүн жөнгө салган “memory.low” маанисин рекурсивдүү коргоону колдоо. Cgroup иерархиясын "memory_recursiveprot" опциясы менен орнотуп жатканда, төмөнкү түйүндөр үчүн коюлган "memory.low" мааниси бардык бала түйүндөргө автоматтык түрдө бөлүштүрүлөт.
- Uacce (Unified/User-Space-access-intended Accelerator Framework) процессор менен перифериялык түзүлүштөрдүн ортосунда виртуалдык даректерди (SVA, Shared Virtual Addressing) бөлүшүү үчүн фреймворк, аппараттык акселераторлорго негизги CPUдагы маалымат структураларына кирүү мүмкүнчүлүгүн берет.
- Аппараттык архитектура
- ARM архитектурасы үчүн эстутумду ысык алуу мүмкүнчүлүгү ишке ашырылат.
- RISC-V архитектурасы үчүн процессорлорду ысык туташтыруу жана алып салуу (CPU hotplug) кошулду. 32-бит RISC-V үчүн eBPF JIT ишке ашырылат.
- KVM конок чөйрөлөрүн иштетүү үчүн 32 биттик ARM системаларын колдонуу мүмкүнчүлүгү алынып салынды.
- s390 архитектурасы үчүн "жаман" NUMA ишке ашыруу алынып салынды, ал үчүн майнаптуулукту жакшыртуу үчүн эч кандай колдонуу учурлары табылган жок.
- ARM64 үчүн, ARMv8.4-те аныкталган жана тапшырма пландаштыргычтагы жыштык масштабын оңдоо факторлорун эсептөө үчүн колдонулган аткаруу эсептегичтерин камсыз кылуучу AMU (Активдүүлүк Мониторлор Бирдиги) кеңейтүүсү үчүн кошумча колдоо.
- Жабдуулар
- virtio спецификацияларына ылайык келген маалымат алмашуу каналын колдонгон vDPA түзмөктөрүн колдоо. vDPA түзмөктөрү физикалык жактан туташкан жабдуулар же программалык эмуляцияланган виртуалдык түзүлүштөр болушу мүмкүн.
- GPIO подсистемасында өзгөрүүлөргө мониторинг жүргүзүү үчүн жаңы ioctl() буйругу, ар кандай GPIO линиясынын абалынын өзгөрүшү жөнүндө процесске маалымат берүүгө мүмкүндүк берет. Жаңы буйрукту колдонуунун мисалы катары gpio-саат утилитасы.
- Intel видео карталары үчүн i915 DRM драйверинде Tigerlake («Gen12») чиптерин демейки колдоо жана OLED жарыкты башкаруу үчүн баштапкы колдоону кошту. Ice Lake, Elkhart Lake, Baytrail жана Haswell чиптери үчүн жакшыртылган колдоо.
- Amdgpu драйверинде ASIC үчүн USBC чипине микропрограмманы жүктөө мүмкүнчүлүгү. AMD Ryzen 4000 "Renoir" чиптери үчүн жакшыртылган колдоо. Азыр OLED панелдерин башкаруу үчүн колдоо бар. Мүчүлүштүктөрдү оңдоолордо микропрограмманын статусун көрсөтүү камсыздалган.
- OpenGL 4ти конок системаларында колдонуу мүмкүнчүлүгү VMware виртуалдаштыруу системалары үчүн vmwgfx DRM драйверине кошулган (мурда OpenGL 3.3 колдоого алынган).
- TI Keystone платформа дисплей системасы үчүн жаңы DRM айдоочу tidss кошулду.
- LCD панелдер үчүн драйверлер кошулду: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech F101CT01, F350CT54004DXNUMXri
- Электр энергиясын башкаруу системасына Atom негизделген Intel Jasper Lake (JSL) платформасын колдоо.
- Rockchip RK3399, Pine64 PineTab планшетине жана смартфонуна негизделген Pinebook Pro ноутбукуна колдоо кошулду Allwinner A64 негизинде.
- Жаңы аудио кодектер жана чиптер үчүн колдоо кошулду:
Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc. - ARM такталары жана платформалары үчүн кошумча колдоо Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron “sl28”, 11 i.MX6 TechNexion Pico тактасынын варианттары, үч жаңы Toradex Colibri опциясы, Samsung S7710 Galaxy Xco негизиндеги Samsung S2 -Ericsson u8500, DH Electronics DHCOM SoM жана PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.
Source: opennet.ru
