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-ағашының нұсқасы болып табылады. Жадты басқарудың кейбір ішкі жүйелері үйеңкі ағашына ауыстырылды, бұл олардың жұмысына оң әсер етті. Болашақта үйеңкі ағашын диапазонды құлыптауды жүзеге асыру үшін пайдалануға болады.
    • BPF ішкі жүйесіне crash_kexec() қоңырауы арқылы төтенше жағдайда өшіруді бастау үшін арнайы әзірленген «бұзатын» BPF бағдарламаларын жасау мүмкіндігі қосылды. Мұндай BPF бағдарламалары белгілі бір уақытта апаттық қоқыс жасауды бастау үшін жөндеу мақсатында қажет болуы мүмкін. BPF бағдарламасын жүктеген кезде деструктивті әрекеттерге қол жеткізу үшін BPF_F_DESTRUCTIVE жалауын көрсету, sysctl kernel.destructive_bpf_enabled белсендіру және CAP_SYS_BOOT құқықтары болуы керек.
    • BPF бағдарламалары үшін топ элементтерін санауға болады, сонымен қатар белгілі бір ағынның немесе тапсырманың ресурстарын (файлдар, 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) жинағына түрлендіруді бастау мүмкіндігі беріледі.
    • FS жүйесінде кіру құқықтарын пайдалана отырып userfaultfd() жүйелік шақыруының функционалдығына қол жеткізуге мүмкіндік беретін /dev/userfaultfd құрылғысын іске асыру қосылды. userfaultfd функциясы пайдаланушы кеңістігінде бөлінбеген жад беттеріне (бет ақаулары) қатынасу үшін өңдегіштерді жасауға мүмкіндік береді.
    • GNU Make утилитасының нұсқасына қойылатын талаптар ұлғайтылды - енді ядроны құру үшін кемінде 3.82 нұсқасы қажет.
  • Дискінің ішкі жүйесі, енгізу/шығару және файлдық жүйелер
    • Btrfs файлдық жүйесінде өнімділікті айтарлықтай оңтайландырулар жасалды; басқа нәрселермен қатар, FIEMAP ioctl шақыруының өнімділігі үлкен тапсырыстармен арттырылды. io_uring пайдаланатын қолданбалар үшін асинхронды буферленген жазуларға қолдау қосылды. «Жіберу» әрекетіне fs-verity арқылы қорғалған файлдарға қолдау қосылды.
    • ext4 файлдық жүйесінде журналға қызмет көрсетуге және тек оқуға арналған операцияға қатысты өнімділікті оңтайландырулар қосылды.
    • Тек оқу режимінде қол жетімді бөлімдерде пайдалануға арналған EROFS (Жетілдірілген тек оқуға арналған файл жүйесі) файлдық жүйесі әртүрлі файлдық жүйелерде қайталанатын деректерді ортақ пайдалану мүмкіндігін жүзеге асырады.
    • statx() жүйелік шақыруы файлға тікелей енгізу/шығару қолданыла алатындығы туралы ақпаратты көрсету үшін қосылды.
    • O_TMPFILE жалаушасы бар уақытша файлдарды жасауға қолдау FUSE (Пайдаланушы кеңістігіндегі файлдық жүйелер) ішкі жүйесіне қосылды.
  • Виртуализация және қауіпсіздік
    • CFI (Control Flow Integrity) қорғау механизмін енгізу ауыстырылды, функцияның әрбір жанама шақыруының алдында қалыпты орындау тәртібінің (басқару ағынының) бұзылуына әкелуі мүмкін анықталмаған әрекеттің кейбір нысандарын анықтау үшін тексерулер қосылды. жадта сақталған функцияларға көрсеткіштерді өзгертетін эксплуаттарды пайдалану нәтижесі . LLVM жобасынан CFI стандартты іске асырылуы Clang қолдануға негізделген опциямен ауыстырылды, бірақ төмен деңгейлі ішкі жүйелер мен операциялық жүйе ядроларын қорғау үшін арнайы бейімделген. LLVM жүйесінде жаңа енгізу Clang 16 шығарылымында ұсынылады және «-fsanitize=kcfi» опциясымен қосылады. Жаңа іске асырудың негізгі айырмашылығы - ол сілтеме уақытын оңтайландыруға (LTO) байланысты емес және функция көрсеткіштерінің өту кестесіндегі сілтемелермен ауыстырылуына әкелмейді.
    • LSM модульдері үшін (Linux қауіпсіздік модулі) аттар кеңістігін жасау үшін әрекеттерді тоқтататын өңдеушілерді жасауға болады.
    • BPF бағдарламаларындағы PKCS#7 цифрлық қолтаңбаларын тексеруге арналған құралдар берілген.
    • 5.6 ядросында байқаусызда жойылған блокталмаған режимде (O_NONBLOCK) ашу мүмкіндігі /dev/random қалпына қайтарылды.
    • X86 архитектурасы бар жүйелерде бір уақытта орындауға және жазуға мүмкіндік беретін ядроның ішкі жүйелері арқылы жад беттерін салыстыру жағдайында ескерту қосылды. Болашақта мұндай жад картасына толығымен тыйым салу мүмкіндігі қарастырылуда.
    • Ядродағы инициализацияланбаған жадты пайдалануды, сондай-ақ пайдаланушы кеңістігі мен құрылғылар арасында инициализацияланбаған жадтың ағып кетуін анықтау үшін KMSAN (ядро жадын тазартқыш) жөндеу механизмі қосылды.
    • Кездейсоқ қоңырауда пайдаланылатын крипто-қауіпсіз псевдокездейсоқ сандар генераторы CRNG жақсартулар жасалды. Өзгерістерді VPN WireGuard авторы Джейсон А. Доненфельд дайындады және псевдокездейсоқ бүтін сандарды алу қауіпсіздігін жақсартуға бағытталған.
  • Желілік ішкі жүйе
    • TCP стегі аттар кеңістігі көп жүйелердегі өнімділікті жақсартатын сокет хэш кестелерін әрбір аттар кеңістігі үшін бөлек пайдалану мүмкіндігін (әдепкі бойынша өшірілген) қамтамасыз етеді.
    • Бұрынғы DECnet протоколын қолдау үшін жойылған код. DECnet пайдаланатын қолданбаларды құрастыруға рұқсат беру үшін пайдаланушы кеңістігінің API түтіктері орнында қалдырылады, бірақ бұл қолданбалар желіге қосыла алмайды.
    • 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 және жаңарақ графикалық процессорлар DP 2.0 (DisplayPort) интерфейсін қолдайды. Alder Lake S микроархитектурасына негізделген бейне карталар үшін идентификаторлар қосылды.
    • Apple Silicon, Intel SkyLake және Intel KabyLake процессорларында енгізілген аудио ішкі жүйелеріне қолдау қосылды. CS35L41 HDA аудио драйвері ұйқы режимін қолдайды. Apple Silicon, AMD Rembrant DSP, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake және Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSPs, Qualcomm i.MX8280ULP DSPs, Qualcomm i.MX8250ULP, Qualcomm 8450SM4392, AMD Pink Sardine ACP XNUMX аудио чиптеріне 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, B116XAN01.6E, B116XAN21 LCD панельдеріне қолдау қосылды. 116WH M-N2, INX N116BCA- EA1 , INX N0800BCN-EA9, Multi-Inno технологиясы MIXNUMXFT-XNUMX.
    • Baikal-T1 SoC жүйесінде қолданылатын AHCI SATA контроллерлеріне қолдау қосылды.
    • MediaTek MT7921, Intel Magnetor (CNVi, біріктірілген қосылым), Realtek RTL8852C, RTW8852AE және RTL8761BUV (Edimax BT-8500) Bluetooth чиптеріне қолдау қосылды.
    • Qualcomm сымсыз модульдеріне арналған ath11k драйвері 160 МГц диапазонында спектрлік сканерлеуге қолдауды қосты, көп ағынды NAPI енгізді және Qualcomm WCN6750 Wi-Fi чиптеріне қолдауды жақсартты.
    • PinePhone пернетақтасы, InterTouch сенсорлық тақталары (ThinkPad P1 G3), X-Box адаптивті контроллері, PhoenixRC ұшу контроллері, VRC-2 автомобиль контроллері, DualSense Edge контроллері, IBM операциялық тақтасы, XBOX One Elite қашықтан басқару пульті, XP-PEN Deco Pro S планшеттері үшін драйверлер қосылды. және Intuos Pro Small (PTH-460).
    • Aspeed HACE (Хэш және 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, IPQKron, IPQ8062/ BL i.MX8065MM OSM-S, MT8 (Acer Tomato), Radxa ROCK 8195C+, NanoPi R4S Enterprise Edition, JetHome JetHub D4p. 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 ескірген драйверлерін тазалау түзетілді.

Ақпарат көзі: opennet.ru

пікір қалдыру