Екі айлық әзірлеуден кейін Линус Торвальдс ядроны шығарды. Linux 6.1. Ең маңызды өзгерістердің қатарында: Rust тілінде драйверлер мен модульдерді әзірлеуді қолдау, пайдаланылған жад беттерін анықтау механизмін жаңғырту, BPF бағдарламалары үшін арнайы жад менеджері, KMSAN жад мәселелерін диагностикалау жүйесі, KCFI (Kernelk Control-Flow Integrity) қорғау механизмі және үйеңкі ағашы құрылымын енгізу.
Жаңа нұсқа 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 000-нан 13 000 жолға дейін қысқартылды және Rust тілінде жазылған қарапайым ядро модулін құру үшін қажетті ең аз мөлшерді ғана қамтамасыз етеді. Болашақта біз Rust-for- тармағынан басқа өзгерістерді көшіріп, бар функционалдылықты біртіндеп кеңейтуді жоспарлап отырмыз.LinuxСонымен қатар, ұсынылған инфрақұрылымды NVMe дискілеріне, 9p желілік хаттамасына және Rust қаласындағы Apple M1 графикалық процессорына арналған драйверлерді әзірлеу үшін пайдалану жобалары жүзеге асырылуда.
- 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 (ядро жадын тазартқыш) жөндеу механизмі қосылды.
- Getrandom шақыруында қолданылатын криптографиялық тұрғыдан қауіпсіз жалған кездейсоқ сандар генераторына (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, шектеулі ауқымы бар бос емес компоненттерді немесе код бөлімдерін қамтитын микробағдарлама және драйвер элементтерінен тазартылды. Бұл шығарылымға AArch64 негізіндегі процессорлары бар әртүрлі Qualcomm және MediaTek SoC үшін жаңа rtw8852b драйвері мен DTS файлдарын тазалау кіреді. Blob тазалау коды amdgpu, i915, brcmfmac, r8188eu, rtw8852c және Intel ACPI драйверлері мен ішкі жүйелері үшін жаңартылды. tm6000 теледидар карталары, cpia2 v4l, sp8870 және av7110 үшін ескірген драйверлерді тазалау реттелді.
Ақпарат көзі: opennet.ru
