Linux 6.1 ядросунун чыгарылышы

Эки айлык иштеп чыгуудан кийин, Линус Торвалдс Linux ядросунун 6.1. Эң көрүнүктүү өзгөрүүлөрдүн арасында: Rust тилинде драйверлерди жана модулдарды иштеп чыгууну колдоо, колдонулган эс баракчаларын аныктоо механизмин модернизациялоо, BPF программалары үчүн атайын эс менеджери, эс тутум көйгөйлөрүн диагностикалоо системасы KMSAN, KCFI (Kernelk Control) -Flow Integrity) коргоо механизми, Maple түзүмү дарагын киргизүү.

Жаңы версияда 15115 иштеп чыгуучунун 2139 оңдоосу камтылган, патчтын көлөмү 51 МБ, бул 2 жана 6.0 ядролорунун патчтарынын өлчөмүнөн болжол менен 5.19 эсе кичине. Өзгөртүүлөр 13165 716247 файлга таасирин тийгизип, 304560 45 сап код кошулуп, 6.1 14 сап өчүрүлгөн. 14де киргизилген бардык өзгөртүүлөрдүн 3%га жакыны түзмөктүн драйверлерине тиешелүү, өзгөрүүлөрдүн болжол менен 3%ы аппараттык архитектураларга мүнөздүү кодду жаңыртууга, XNUMX%ы тармактык стекке, XNUMX%ы файл тутумдарына жана XNUMX%ы тиешелүү. ички ядронун подсистемалары менен байланышкан.

6.1 ядросундагы негизги инновациялар:

  • Эстутум жана система кызматтары
    • Драйверлерди жана ядро ​​модулдарын иштеп чыгуу үчүн Rust тилин экинчи тил катары колдонуу мүмкүнчүлүгү кошулду. Rustту колдоонун негизги себеби - эс тутум менен иштөөдө ката кетирүү ыктымалдыгын азайтуу аркылуу коопсуз жана сапаттуу түзмөк драйверлерин жазууну жеңилдетүү. Rust колдоосу демейки боюнча өчүрүлгөн жана Rust зарыл болгон ядро ​​куруу көз карандылыгы катары кошулушуна алып келбейт. Ядро азырынча патчтардын минималдуу, кыскартылган версиясын кабыл алды, ал коддун 40тан 13 миң сапка чейин кыскартылды жана Rust тилинде жазылган жөнөкөй ядро ​​модулун куруу үчүн жетиштүү болгон зарыл болгон минималдуу гана камсыз кылат. Келечекте, Rust-for-Linux бутагынан башка өзгөртүүлөрдү өткөрүп, учурдагы функцияларды акырындык менен жогорулатуу пландаштырылууда. Буга катар эле NVMe дисктери, 9p тармак протоколу жана Rust тилинде Apple M1 GPU үчүн драйверлерди иштеп чыгуу үчүн сунушталган инфраструктураны колдонуу боюнча долбоорлор иштелип чыгууда.
    • EFI менен AArch64, RISC-V жана LoongArch архитектурасына негизделген системалар үчүн кысылган ядро ​​сүрөттөрүн түздөн-түз жүктөө мүмкүнчүлүгү ишке ашырылган. Түздөн-түз EFI zbootтен чакырылган ядро ​​сүрөттөрүн жүктөө, иштетүү жана түшүрүү үчүн иштеткичтер кошулду. EFI протоколдор базасынан протоколдорду орнотуу жана жок кылуу үчүн иштеткичтер да кошулган. Мурда таңгактан чыгаруу өзүнчө жүктөгүч тарабынан ишке ашырылса, эми муну ядронун өзүндөгү иштеткич жасай алат - ядронун сүрөтү EFI тиркемесинде түзүлөт.
    • Композиция эстутумду башкаруунун көп баскычтуу моделин ишке ашыруу менен патчтардын бир бөлүгүн камтыйт, ал ар кандай иштөө мүнөздөмөлөрү менен эстутум банктарын бөлүүгө мүмкүндүк берет. Мисалы, эң көп колдонулган барактар ​​эң тез эстутумда сакталышы мүмкүн, ал эми эң сейрек колдонулган барактар ​​салыштырмалуу жай эстутумда сакталышы мүмкүн. Ядро 6.1 катуу колдонулган баракчалардын жай эс тутумда жайгашкан жерин аныктоо механизмин киргизет, ошондуктан алар тез эс тутумга көтөрүлөт, ошондой эле эс тутумдун деңгээли жана алардын салыштырмалуу иштеши жөнүндө жалпы түшүнүк менен тааныштырат.
    • Ал MGLRU (Көп муундук LRU) механизмин камтыйт, ал эки кезекке негизделген эски LRU (Эң азыраак колдонулган) ишке ашырууну алмаштырат, ал көп баскычтуу структурасы менен кайсы эстутум барактары иш жүзүндө колдонулуп жатканын жана кайсынысын түртүп чыгарууга болоорун жакшыраак аныктайт. алмашуу бөлүмү.
    • Oracle инженерлери тарабынан сунушталган "клен дарагы" маалымат структурасына колдоо кошулду, ал "кызыл-кара дарак" структурасын натыйжалуу алмаштыруучу катары жайгаштырылган. Клен дарагы диапазонун индексациясын колдогон жана заманбап процессорлордун кэшин эффективдүү пайдалануу үчүн иштелип чыккан B-дарактын бир варианты. Эстутумду башкаруунун кээ бир подсистемалары буга чейин клен дарагына которулган, бул алардын иштешине оң таасирин тийгизген. Келечекте, клен дарагы диапазонун кулпусун ишке ашыруу үчүн колдонулушу мүмкүн.
    • Crash_kexec() чалуу аркылуу авариялык өчүрүүнү баштоо үчүн атайын иштелип чыккан "кыйратуучу" BPF программаларын түзүү мүмкүнчүлүгү BPF подсистемасына кошулду. Мындай BPF программалары мүчүлүштүктөрдү оңдоо максатында, белгилүү бир учурда авариялык таштандыны түзүүнү баштоо үчүн талап кылынышы мүмкүн. BPF программасын жүктөөдө кыйратуучу операцияларга жетүү үчүн, BPF_F_DESTRUCTIVE желекчесин көрсөтүп, sysctl kernel.destructive_bpf_enabled активдештирип, CAP_SYS_BOOT укуктарына ээ болушуңуз керек.
    • BPF программалары үчүн cgroup элементтерин санап чыгуу, ошондой эле белгилүү бир жиптин же тапшырманын ресурстарын (файлдарды, vma, процесстерди ж.б.) санап чыгууга болот. Колдонуучунун буферлерин түзүү үчүн жаңы карта түрү ишке ашырылды.
    • BPF программаларында эстутумду бөлүштүрүү үчүн атайын чалуу кошулду (эстутумду бөлүштүргүч), ал BPF контекстинде стандарттуу kmalloc()га караганда коопсузраак эстутумду бөлүштүрүүнү камсыз кылат.
    • Өзгөртүүлөрдүн биринчи бөлүгү интеграцияланган, ал BPF программалары түрүндө ишке ашырылган HID (Адам интерфейси түзмөк) интерфейси менен киргизүү түзүлүштөрү үчүн драйверлерди түзүү мүмкүнчүлүгүн камсыз кылат.
    • Ядро 5.1 релизинде эскирген жана 5.18 жана 5.19 версияларынан бери негизги архитектуралар үчүн өчүрүлгөн a.out аткарылуучу файл форматын колдоо үчүн кодду толугу менен алып салды. a.out форматы Linux тутумдарында көптөн бери эскирген жана a.out файлдарын генерациялоо демейки Linux конфигурацияларында заманбап куралдар тарабынан колдоого алынбайт. a.out файлдары үчүн жүктөгүч толугу менен колдонуучу мейкиндигинде ишке ашырылышы мүмкүн.
    • Loongson 3 5000 процессорлорунда колдонулган жана MIPS жана RISC-Vге окшош жаңы RISC ISAны ишке ашыруучу LoongArch инструкциялар комплексинин архитектурасына негизделген системалар үчүн аткарууну өлчөө окуяларын (perf окуялар), kexec, kdump жана BPF JIT компиляциясын колдоо ишке ашырылат. .
    • io_uring асинхрондук киргизүү/чыгаруу интерфейси жаңы IORING_SETUP_DEFER_TASKRUN режимин сунуштайт, ал шакекче буферине байланышкан ишти колдонмо сурамы жасалганга чейин убактылуу кийинкиге жылдырууга мүмкүндүк берет, ал пакеттик иштин алдын алуу жана кечиктирүү маселелерин алдын алуу үчүн колдонулушу мүмкүн. туура эмес убакыт.
    • Колдонуучу мейкиндигиндеги процесстерге кадимки эстутум барактарынын диапазонун чоң эс тутум барактарынын жыйындысына (Transparent Huge-Pages) айландыруу мүмкүнчүлүгү берилет.
    • /dev/userfaultfd түзмөгүн ишке ашыруу кошулду, ал FSде кирүү укуктарын колдонуу менен userfaultfd() тутумунун чалуусунун функционалдуулугуна жетүүгө мүмкүндүк берет. userfaultfd функциясы колдонуучу мейкиндигинде бөлүштүрүлбөгөн эстутум барактарына (барактын каталары) кирүү үчүн иштеткичтерди түзүүгө мүмкүндүк берет.
    • GNU Make утилитасынын версиясына талаптар көбөйтүлдү – ядрону куруу үчүн азыр жок дегенде 3.82 версиясы талап кылынат.
  • Диск подсистемасы, киргизүү/чыгаруу жана файл системалары
    • Btrfs файлдык тутумуна олуттуу оптималдаштыруулар жасалды; башка нерселер менен катар, FIEMAP ioctl чалуусунун аткаруусу чоңдук буйруктары менен көбөйтүлдү. io_uring колдонгон тиркемелер үчүн асинхрондук буфердик жазууларды колдоо кошулду. "Жөнөтүү" операциясына fs-verity менен корголгон файлдарды колдоо кошулду.
    • Ext4 файл тутуму журналды тейлөөгө жана окуу үчүн гана иштөөгө байланыштуу иштөө оптималдаштыруусун кошту.
    • Окуу үчүн гана режимде жеткиликтүү болгон бөлүмдөрдө колдонуу үчүн иштелип чыккан EROFS (Enhanced Read-Only File System) файл системасы ар кандай файл системаларында кайталанган маалыматтарды бөлүшүү мүмкүнчүлүгүн ишке ашырат.
    • statx() тутумунун чалуусу файлга тике киргизүү/чыгаруу колдонулушу мүмкүн экендиги жөнүндө маалыматты көрсөтүү үчүн кошулган.
    • O_TMPFILE желеги менен убактылуу файлдарды түзүүнү колдоо FUSE (Колдонуучу мейкиндигиндеги файл тутумдары) подсистемасына кошулду.
  • Виртуалдаштыруу жана коопсуздук
    • CFI (Control Flow Integrity) коргоо механизминин ишке ашырылышы алмаштырылды, функциянын ар бир кыйыр чалуусунун алдында текшерүүлөр кошулду, бул аныкталбаган жүрүм-турумдун кээ бир формаларын аныктоо үчүн, бул кадимки аткаруу тартибин (башкаруу агымын) бузууга алып келиши мүмкүн. эстутумда сакталган функцияларга көрсөткүчтөрдү өзгөрткөн эксплуатацияларды колдонуунун натыйжасы. LLVM долбоорунан CFI стандарттык ишке ашыруу Clang колдонууга негизделген вариант менен алмаштырылды, бирок төмөнкү деңгээлдеги подсистемаларды жана операциялык системанын өзөктөрүн коргоо үчүн атайын ыңгайлаштырылган. LLVMде жаңы ишке ашыруу Clang 16 релизинде сунушталат жана "-fsanitize=kcfi" опциясы менен иштетилет. Жаңы ишке ашыруунун негизги айырмасы, ал шилтеме убактысын оптималдаштырууга (LTO) байланыштуу эмес жана функция көрсөткүчтөрүнүн секирүү таблицасындагы шилтемелер менен алмаштырылышына алып келбейт.
    • LSM модулдары үчүн (Linux Security Module) аттар мейкиндигин түзүү үчүн операцияларды токтоткон иштеткичтерди түзсө болот.
    • BPF программаларында PKCS#7 санарип кол тамгаларын текшерүү үчүн куралдар берилген.
    • 5.6 ядросунда байкабай өчүрүлгөн бөгөттөлбөгөн режимде (O_NONBLOCK) ачуу мүмкүнчүлүгү /dev/randomга кайтарылды.
    • X86 архитектурасы бар системаларда, бир эле учурда аткарууга жана жазууга мүмкүндүк берүүчү өзөктүк подсистемалары менен эстутум барактары картага түшүрүлгөн учурда эскертүү кошулган. Келечекте мындай эс тутум картасына толук тыюу салуу мүмкүнчүлүгү каралып жатат.
    • Ядродогу инициализацияланбаган эстутумду колдонууну, ошондой эле колдонуучу мейкиндиги менен түзмөктөр арасында инициализацияланбаган эстутумдун агып кетишин аныктоо үчүн KMSAN (Ядро эстутумун тазалоочу) мүчүлүштүктөрдү оңдоо механизми кошулду.
    • Кокустук чалууда колдонулган крипто-коопсуз CRNG псевдококустук сан генераторуна жакшыртуулар жасалды. Өзгөртүүлөр VPN WireGuard автору Джейсон А. Доненфельд тарабынан даярдалган жана псевдо-кокус бүтүн сандарды алуунун коопсуздугун жакшыртууга багытталган.
  • Тармактык подсистема
    • TCP стек ар бир аттар мейкиндиги үчүн розетка хэш таблицаларын өзүнчө колдонуу мүмкүнчүлүгүн (демейки боюнча өчүрүлгөн) камсыз кылат, бул көп сандагы аттар мейкиндиги бар системаларда иштөөнү жакшыртат.
    • Эски DECnet протоколун колдоо үчүн код алынып салынды. Колдонуучунун мейкиндигиндеги API бүдөмүктөрү DECnetти колдонгон тиркемелерди компиляциялоого уруксат берүү үчүн ордунда калтырылган, бирок бул колдонмолор тармакка туташа албайт.
    • Netlink протоколу документтештирилген.
  • жабдуулар
    • Amdgpu драйвери өтө жогорку резолюцияларды колдогон экрандар менен маалымат алмашууда маалыматтарды жоготуусуз кысуу үчүн DSC (Display Stream Compression) багыттоо колдоосун кошту. AMD RDNA3 (RX 7000) жана CDNA (Instinct) платформаларына колдоо көрсөтүү боюнча иштер улантылууда. DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x жана GMC 11.x IP компоненттери үчүн кошумча колдоо. amdkfd драйвери (Polaris сыяктуу дискреттик AMD GPU үчүн) GFX 11.0.3 үчүн колдоо көрсөтөт.
    • i915 (Intel) драйвери Meteor Lake GPU үчүн колдоону камтыйт. Meteor Lake жана жаңы GPU'лар DP 2.0 (DisplayPort) интерфейсин колдойт. Alder Lake S микроархитектурасынын негизинде видеокарталар үчүн идентификаторлор кошулду.
    • Apple Silicon, Intel SkyLake жана Intel KabyLake процессорлорунда ишке ашырылган аудио подсистемалары үчүн кошумча колдоо. CS35L41 HDA аудио драйвери уйку режимин колдойт. Apple Silicon, AMD Rembrant DSPs, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake жана Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSPs, Qualcomm i.MX8280ULP DSP8250, Qualcomm 8450SM4392, интегралдык аудио чиптерге ASoC (ALSA System on Chip) колдоосу кошулду. SMXNUMX жана Texas Instruments SRCXNUMX
    • Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120XAN1, B116AXA01.6. 116WH M-N21, INX N116BCA- EA2 , INX N116BCN-EA1, Multi-Inno Technology MI0800FT-9.
    • Байкал-T1 SoCде колдонулган AHCI SATA контроллерлору үчүн кошумча колдоо.
    • Bluetooth чиптери MediaTek MT7921, Intel Magnetor (CNVi, Integrated Connectivity), Realtek RTL8852C, RTW8852AE жана RTL8761BUV (Edimax BT-8500) үчүн кошумча колдоо.
    • Qualcomm зымсыз модулдары үчүн ath11k драйвери 160 МГц диапазонунда спектрдик сканерлөө үчүн колдоону кошту, көп жиптүү NAPIди ишке ашырды жана Qualcomm WCN6750 Wi-Fi чиптерин жакшыртты.
    • PinePhone клавиатурасы, InterTouch сенсордук панелдери (ThinkPad P1 G3), X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM Operation Panel, XBOX One Elite пульттары, XP-PEN Deco Pro S планшеттери үчүн драйверлер кошулду. жана Intuos Pro Small (PTH-460).
    • Aspeed HACE (Hash жана Crypto Engine) криптографиялык тездеткичтери үчүн драйвер кошулду.
    • Интегралдык Thunderbolt/USB4 Intel Meteor Lake контроллерлору үчүн кошумча колдоо.
    • Sony Xperia 1 IV, Samsung Galaxy E5, E7 жана Grand Max, Pine64 Pinephone Pro смартфондоруна колдоо кошулду.
    • ARM SoC жана тактайлар үчүн кошумча колдоо: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 жана RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8065/ BL i.MX8MM OSM-S, MT8195 (Acer Tomato), Radxa ROCK 4C+, NanoPi R4S Enterprise Edition, JetHome JetHub D1p. SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom жана NXP үчүн жаңыртылган драйверлер.

Ошол эле учурда Латын Америкасынын Эркин Программалык Фонду 6.1 толугу менен бекер ядронун версиясын - Linux-libre 6.1-gnu түздү, прошивканын элементтеринен жана эркин эмес компоненттерди же коддун бөлүмдөрүн камтыган драйверлерден тазаланды, анын көлөмү өндүрүүчүсү тарабынан чектелген. Жаңы релиз AArch8852 архитектурасына негизделген процессорлор менен ар кандай Qualcomm жана MediaTek SoC үчүн жаңы rtw64b драйверин жана DTS файлдарын тазалайт. amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI драйверлеринде жана подсистемаларында жаңыртылган blob тазалоо коду. tm6000 сыналгы карталары, cpia2 v4l, sp8870, av7110 эскирген драйверлерин тазалоо оңдолду.

Source: opennet.ru

Комментарий кошуу