Pärast kahekuulist arendustööd Linus Torvalds kerneli väljalase . Среди наиболее заметных изменений: интеграция VPN-интерфейса WireGuard, поддержка USB4, пространства имён для времени, возможность создания обработчиков перегрузки TCP при помощи BPF, начальная поддержка MultiPath TCP, избавление ядра от проблемы 2038 года, механизм «bootconfig», ФС ZoneFS.
Uus versioon sisaldab 13702 1810 parandust XNUMX arendajalt,
plaastri suurus - 40 MB (muudatused mõjutasid 11577 faili, lisati 610012 koodirida,
294828 rida eemaldatud). Umbes 45% kõigist punktis 5.6
muudatused on seotud seadme draiveritega, ligikaudu 15% muudatustest on
suhtumine riistvaraarhitektuuridele omase koodi uuendamisse, 12%
võrgupaketiga seotud 4%, failisüsteemidega 3% ja sisemiste süsteemidega
kerneli alamsüsteemid.
:
- Võrgu alamsüsteem
- VPN-liidese rakendamine , который реализован на основе современных методов шифрования (ChaCha20, Poly1305, Curve25519, BLAKE2s), прост в использовании, лишён усложнений, хорошо зарекомендовал себя в ряде крупных внедрений и обеспечивает очень высокую производительность (в 3,9 раз опережает OpenVPN по пропускной способности). В WireGuard применяется концепция маршрутизации по ключам шифрования, которая подразумевает привязку к каждому сетевому интерфейсу закрытого ключа и применение для связывания открытых ключей. Обмен открытыми ключами для установки соединения производится по аналогии с SSH. Необходимые для работы WireGuard krüptograafilised primitiivid raamatukogust osana standardsest Crypto API-st ja tuuma sisse .
- MPTCP (MultiPath TCP) toetamiseks vajalike komponentide integreerimine. MPTCP on TCP protokolli laiendus, mis korraldab TCP-ühenduse toimimist pakettide samaaegse edastamisega mitme marsruudi kaudu läbi erinevate võrguliideste, mis on seotud erinevate IP-aadressidega. Võrgurakenduste puhul näeb selline koondatud ühendus välja nagu tavaline TCP-ühendus ja kogu voogude jagamise loogika teostab MPTCP. Multipath TCP-d saab kasutada nii ribalaiuse laiendamiseks kui ka töökindluse suurendamiseks. Näiteks saab MPTCP-d kasutada nutitelefoni andmeedastuse korraldamiseks, kasutades samaaegselt WiFi- ja 4G-ühendusi, või kulude vähendamiseks, ühendades serveri mitme odava lingi abil ühe kalli asemel.
- tugi sch_ets võrgujärjekorra töötlemise distsipliinile (, IEEE 802.1Qaz), mis võimaldab ribalaiust erinevate liiklusklasside vahel jagada. Kui teatud liiklusklassi koormus on väiksem kui etteantud ribalaius, lubab ETS teistel liiklusklassidel kasutada saadaolevat (kasutamata) ribalaiust. Qdisc sch_ets on konfigureeritud PRIO distsipliinina ja kasutab liiklusklasse rangete ja jagatud ribalaiuse piirangute määratlemiseks. ETS töötab distsipliinide kombinatsioonina. и — kui liiklusklassid on rangelt piiratud, kasutatakse PRIO-d, aga kui järjekorras liiklust pole, toimib see nagu DRR.
- Lisatud uut tüüpi BPF-programmid , mis võimaldab kerneli funktsioonide käitlejaid rakendada BPF-i kaudu. Praegu saab seda võimalust juba kasutada TCP ummikute juhtimise algoritmide rakendamiseks BPF-programmidena. Näiteks BPF programm koos algoritmi rakendamisega .
- Südamikusse vastu võetud , tõlketööriistad ioctl() abil Uus liides lihtsustab laienduste lisamist, parandab veakäsitlust, võimaldab oleku muutumisel saata teateid, lihtsustab kerneli ja kasutajaruumi vahelist suhtlust ning vähendab sünkroonitavate nimega loendite arvu.
- Lisatud FQ-PIE (Flow Queue PIE) võrgujärjekorra haldusalgoritmi implementatsioon, mille eesmärk on vähendada vahepealse pakettide puhverdamise negatiivset mõju servavõrgu seadmetele (puhvri paisumine). FQ-PIE demonstreerib suurt efektiivsust kaabelmodemiga süsteemides kasutamisel.
- Ketta alamsüsteem, I/O ja failisüsteemid
- Btrfs-failisüsteemi jaoks DISCARD-operatsiooni asünkroonne teostus (vabastatud plokkide märgistamine, mida ei saa enam füüsiliselt salvestada). Algselt teostati DISCARD-operatsioone sünkroonselt, mis võis kaasa tuua jõudluse languse, kuna draivid pidid ootama vastavate käskude täitmist. Asünkroonne teostus võimaldab teil mitte oodata draivi DISCARD-operatsiooni lõpetamist ja teostada seda toimingut taustal.
- XFS-is Puhastati koodi, mis kasutas vanu 32-bitiseid ajaloendureid (time_t tüüp asendati tüübiga time64_t), mis viis aasta 2038 probleemini. Parandatud vead ja mälu riknemised, mis ilmnesid 32-bitistel platvormidel. Koodi töödeldi ümber, et see töötaks laiendatud atribuutidega.
- ext4 failisüsteemi Jõudluse optimeerimine seoses inode lukustuse käsitlemisega lugemis- ja kirjutamisoperatsioonide ajal. Parandatud ümberkirjutamise jõudlust otsese sisend-/väljundrežiimis. Esimene ja viimane veakood salvestatakse nüüd superplokki, et lihtsustada probleemide diagnoosimist.
- F2FS-failisüsteemis võimalus salvestada andmeid tihendatud kujul. Üksiku faili või kataloogi puhul saab tihendamise lubada käsuga "chattr +c file" või "chattr +c dir; touch dir/file". Terve partitsiooni tihendamiseks saab ühendusutiliit kasutada valikut "-o compress_extension=ext".
- Failisüsteem on kernelisse sisse viidud , mis lihtsustab madala taseme tööd tsoneeritud salvestusseadmetega. Tsoneeritud draivid on kõvaketastel või NVMe SSD-del olevad seadmed, mille salvestusruum on jagatud tsoonideks, mis moodustavad plokkide või sektorite rühmad, kuhu on lubatud ainult järjestikune andmete lisamine kogu plokkide rühma värskendamisega. ZoneFS-i töötas välja Western Digital ja see seob iga draivi tsooni eraldi failiga, mida saab kasutada andmete salvestamiseks toorrežiimis ilma sektori ja ploki tasemel manipuleerimiseta, st võimaldab rakendustel kasutada faili API-t, selle asemel et ioctl-i abil plokkseadmele otse juurde pääseda.
- NFS-is on partitsioonide ühendamine UDP kaudu vaikimisi keelatud. Lisatud on NFS 4.2 spetsifikatsioonis määratletud serverite vahelise otsefailide kopeerimise tugi. Lisatud on uus ühendamisvalik "softreval", mis võimaldab serveri rikke korral kasutada vahemällu salvestatud atribuutide väärtusi. Näiteks kui see valik on määratud, jääb NFS-i partitsioonis teedel navigeerimise ja vahemällu salvestatud teabele juurdepääsu võimalus alles ka pärast serveri kättesaamatus olemist.
- Üksikute failide terviklikkuse ja autentsuse kontrollimiseks kasutatava fs-verity mehhanismi jõudluse optimeerimine. Merkle'i räsipuu kasutamise tõttu suurenenud järjestikuse lugemise kiirus. FS_IOC_ENABLE_VERITY jõudluse optimeerimine olukorras, kus vahemälus pole andmeid (kasutatakse andmetega lehtede ennetavat lugemist).
- Virtualiseerimine ja turvalisus
- Объявлена устаревшей возможность отключения модуля SELinux во время работы, а в будущем выгрузка уже активированного SELinux будет запрещена. Для отключения SELinux потребуется передать параметр «selinux=0» в командной строке ядра.
- aja nimeruumide tugi, mis võimaldab süsteemikella olekut (CLOCK_REALTIME,
CLOCK_MONOTONIC, CLOCK_BOOTTIME), kasutage konteineris oma aega ja konteineri teise hostisse migreerimisel veenduge, et CLOCK_MONOTONIC ja CLOCK_BOOTTIME näidud jäävad samaks (võtke arvesse aega pärast käivitamist, olenemata sellest, kas olete unerežiimis või mitte). - /dev/random lukustusbassein on eemaldatud. /dev/random käitub pärast basseini initsialiseerimist entroopialukustuse vältimise osas rohkem sarnaselt /dev/urandomiga.
- Tuumkernel sisaldab draiverit, mis võimaldab VirtualBoxi all töötavatel külalissüsteemidel ühendada hostkeskkonna (VirtualBoxi jagatud kausta) eksporditud katalooge.
- BPF-alamsüsteemile on lisatud komplekt parandusi () seoses Retpoline'i mehhanismi kasutamisega Spectre V2 rünnakute eest kaitsmiseks, mis võimaldab suurendada BPF-programmide kutsumise efektiivsust nendega seotud sündmuste korral (näiteks võimaldab see kiirendada XDP-käitlejate kutsumist võrgupaketi saabumisel).
- Lisatud draiver AMD APU-de sisseehitatud TEE (Trusted Execution Environment) keskkondade toetamiseks.
- Mälu- ja süsteemiteenused
- BPF toetab nüüd globaalseid funktsioone. See on osa algatusest lisada tugi funktsiooniteekidele, mida saab BPF-i programmidesse ühendada. Järgmine samm on toetada dünaamilisi laiendusi, mis võimaldavad laadida globaalseid funktsioone, sealhulgas asendada olemasolevaid globaalseid funktsioone nende kasutamise ajal. BPF-i alamsüsteem lisab ka toe kaardistamisoperatsiooni variandile (kasutatakse püsivate andmete salvestamiseks), mida saab käivitada partiirežiimis.
- Seade „cpu_cooling”, mis võimaldab ülekuumenenud protsessorit jahutada, lülitades selle lühikeseks ajaks jõudeolekusse.
- Lisatud süsteemikõne , mis pakub failitee eraldusvõime piiramiseks lisalipuke (keela ühenduspunktide ületamine, sümboolsed lingid, maagilised lingid (/proc/PID/fd), "../" komponendid).
- Heterogeensete süsteemide puhul, mis põhinevad big.LITTLE arhitektuuril ja ühendavad ühes kiibis võimsad ja vähem produktiivsed energiasäästlikud protsessori tuumad, määratakse reaalajas ülesannete täitmisel parameeter uclamp_min ( kernelis 5.3 koormuse kinnitamise mehhanism). See parameeter tagab, et ajastaja paigutab ülesande piisava jõudlusega protsessori tuumale.
- Kernel on vabastatud Asendati viimased allesjäänud käitlejad, mis kasutasid epohhilise ajaloenduri jaoks 32-bitist (allkirjaga täisarvulist) tüüpi time_t, mis 1970. aasta aruande põhjal peaks 2038. aastal ületäituma.
- Asünkroonse sisend-/väljundliidese jätkuv täiustamine kus uute toimingute tugi: IORING_OP_FALLOCATE (tühjade alade reserveerimine), IORING_OP_OPENAT,
IORING_OP_OPENAT2,
IORING_OP_CLOSE (failide avamine ja sulgemine),
IORING_OP_FILES_UPDATE (failide lisamine ja eemaldamine kiirpääsuloendist),
IORING_OP_STATX (failiteabe päring),
LOETUD_OP_LOETUD,
IORING_OP_WRITE (IORING_OP_READV ja IORING_OP_WRITEV lihtsustatud analoogid),
IORING_OP_FADVISE,
IORING_OP_MADVISE (posix_fadvise ja madvise kõnede asünkroonsed variandid), IORING_OP_SEND,
IORING_OP_RECV (võrguandmete saatmine ja vastuvõtmine),
IORING_OP_EPOLL_CTL (toimingute sooritamine epoll-failide kirjeldajatega). - Lisatud süsteemikõne , mis võimaldab protsessil hankida avatud faili deskriptori teiselt protsessilt.
- Mehhanism "bootconfig", mis lisaks käsurea valikutele võimaldab määrata kerneli tööparameetreid ka sätete faili kaudu. Selliste failide lisamiseks initramfs-kujutisele on ette nähtud utiliit bootconfig. Seda funktsiooni saab kasutada näiteks kprobe'ide seadistamiseks käivitamise ajal.
- mehhanism, mis ootab andmete kirjutamist ja lugemist nimetutest torudest. Muudatus võimaldas kiiremat ülesannete täitmist, näiteks suurte projektide paralleelset kokkupanekut. Optimeerimine võib aga GNU make'is põhjustada võidujooksu 4.2.1 versioonis 4.3 parandatud vea tõttu.
- Prctl() funktsioonile on lisatud lipp PR_SET_IO_FLUSHER, mida saab kasutada mälu vabastavate protsesside märkimiseks, et need ei oleks mälumahu piirangute all.
- На основе применяемой в Android системы распределения памяти ION реализована подсистема , mis võimaldab teil hallata DMA-puhvrite eraldamist mälualade jagamiseks draiverite, rakenduste ja erinevate alamsüsteemide vahel.
- Riistvara arhitektuurid
- Lisatud tugi ARMv0-s kasutusele võetud E8.5PD laiendusele, mis võimaldab rakendada kaitset rünnakute eest, mis on seotud käskude spekulatiivse täitmisega protsessoris. E0PD-põhine kaitse vähendab üldkulu kui KPTI (tuuma lehetabeli isolatsiooni) kaitse.
- ARMv8.5 arhitektuuril põhinevate süsteemide jaoks on lisatud tugi RNG käsule, mis annab juurdepääsu riistvaralisele pseudojuhuslike arvude generaatorile. Kernelis kasutatakse RNG käsku entroopia genereerimiseks kerneli pakutava pseudojuhuslike arvude generaatori initsialiseerimisel.
- Kernelisse lisatud MPX-i (mälukaitse laienduste) tugi eemaldatud ja võimaldab korraldada pointerite kontrollimist mälupiirkonna piiride järgimise osas. See tehnoloogia ei olnud kompilaatorites laialt levinud ja see eemaldati GCC-st.
- RISC-V arhitektuuri jaoks on rakendatud tugi KASani (Kernel address sanitizer) veatuvastustööriistale, mis võimaldab mäluga töötamisel vigu tuvastada.
- Оборудование
- Spetsifikatsioonile rakendatud tugi , mis põhineb Thunderbolt 3 protokollil ja pakub läbilaskevõimet kuni 40 Gbps, säilitades samal ajal tagasiühilduvuse USB 2.0 ja USB 3.2-ga. Sarnaselt USB 4.0 liides võimaldab erinevate protokollide tunneldamist ühe kaabli kaudu pistiku abil , включая PCIe, Display Port и USB 3.x, а также программные реализации протоколов, например, для организации сетевых линков между хостами. Реализация основана на уже входящем в ядро Linux драйвере Thunderbolt и адаптирует его для работы с хостами и устройствами, совместимыми с USB4. Изменения также добавляют поддержку устройств Thunderbolt 3 в программную реализацию менеджера соединений (Connection Manager), который отвечает за создание туннелей для подключения нескольких устройств через один разъём.
- amdgpu draiveris Esialgne tugi HDCP 2.x (High-bandwidth Digital Content Protection) kopeerimiskaitsetehnoloogiale. Lisatud tugi Raven 2-l põhinevale AMD Pollock ASIC kiibile. Rakendatud võimalus Renoiri ja Navi tooteperekondade GPU-d lähtestada.
- DRM-draiver Inteli videokaartidele DSI VDSC tugi Ice Lake'i ja Tiger Lake'i mikroarhitektuuril põhinevatele kiipidele, LMEM mmap (seadme kohalik mälu) rakendatud, VBT (video BIOS-i tabeli) parsimine täiustatud, HDCP 2.2 tugi Coffee Lake'i kiipidele rakendatud.
- Jätkunud on töö amdkfd draiverikoodi (diskreetsete GPU-de, näiteks Fiji, Tonga, Polaris) ühendamiseks amdgpu draiveriga.
- k10temp draiverit on ümber töödeldud, et toetada AMD Zen protsessorite pinge- ja vooluparameetrite väljundit, samuti Zen ja Zen 2 protsessorites kasutatavate temperatuuriandurite laiendatud teavet.
- Uues juhis Turingi mikroarhitektuuril (GeForce RTX 2000) põhinevate NVIDIA GPU-de kontrollitud püsivara allalaadimisrežiimi tugi, mis võimaldas nendel kaartidel 3D-kiirenduse tuge lubada (nõuab NVIDIA digitaalallkirjaga ametliku püsivara allalaadimist). Lisatud TU10x graafikamootori tugi. Parandatud HD-heli probleemid.
- Lisatud andmete tihendamise tugi DisplayPort MST (Multi-Stream Transport) kaudu edastamisel.
- Uus juht lisatud «» Qualcommi traadita kiipide jaoks, mis toetavad 802.11ax ühendust.
Draiver põhineb mac80211 stackil ja toetab pääsupunkti, tööjaama ja võrgusõlme režiime. - Sysfsi kaudu on ligipääs loetavatele temperatuuriandurite näitudele, mida kasutatakse tänapäevastel kõvaketastel ja SSD-del.
- olulised muudatused ALSA helisüsteemis, mille eesmärk oli vabastada kood (loobutakse 32-bitise time_t tüübi kasutamisest snd_pcm_mmap_status ja snd_pcm_mmap_control liidestes). Lisatud uute helikoodekite tugi.
Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770. - LCD-paneelide draiverid Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0 jaoks
BOE NV140FHM-N49,
Satoz SAT050AT40H12R2,
Terav LS020B1DD01D. - tugi ARM-plaatidele ja platvormidele Gen1 Amazon Echo (OMAP3630-põhine), Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Libre Computer ALL-H3-IT, PineH64 Model B, Aibretech Amlogic GX PC,
Armada SolidRun Clearfog GTR, NXPGateworks GW59xx,
Tolino Shine 3 e-raamatute lugeja
Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX ja HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ),
Rockchip Radxa Dalang Carrier, Radxa Rock Pi N10, VMARC RK3399Pro SOM
ST Ericsson HREF520, Inforce 6640, SC7180 IDP, Atmel/Microchip AM9X60 (ARM926 SoC, Kizboxmini), ST stm32mp15, AM3703/AM3715/DM3725, ST Ericsson ab8505, Unisoc SC9863A, Qualcomm SC7180. Lisatud tugi Raspberry Pi 4-s kasutatavale PCIe kontrollerile.
Samal ajal Ladina-Ameerika Vaba Tarkvara Fond
võimalus - , puhastatud püsivara ja draiveri elementidest, mis sisaldavad mittevabu komponente või koodilõike, mille rakendusala on tootja poolt piiratud. Uus versioon keelab AMD TEE, ATH11K ja Mediatek SCP draiverites blobide laadimise. AMD PSP, amdgpu ja nouveau draiverites ja alamsüsteemides blobide puhastamise koodi on uuendatud.
Allikas: opennet.ru
