Pēc diviem mēnešiem attīstības Linuss Torvalds izlaida kodolu . Starp visbiežāk ievērojamām izmaiņām ir: simbolu importa ierobežojums no patentētām moduļiem GPL moduļiem, konteksta maiņas operāciju paātrinājums, izmantojot procesora instrukciju FSGSBASE, atbalsts kodola attēla saspiešanai, izmantojot Zstd, pārstrādātas prioritāšu piešķiršanas plūsmās kodolā, PRP (Parallel Redundancy Protocol) protokola atbalsts, plānošana, ņemot vērā caurlaidspēju termiņplānotājā, priekšlaicīga atmiņas lapu iepakošana, capability-flags CAP_CHECKPOINT_RESTOR, sistēmas zvans close_range(), dm-crypt veiktspējas paaugstināšana, 32 bitu Xen PV viesu sistēmu koda izņemšana, jauna slab atmiņas pārvaldības mehānisms, Btrfs opcija
Jaunajā versijā pieņemti 16074 labojumi no 2011 izstrādātājiem,
izmaiņu izmērs — 62 MB (izmaiņas skāra 14548 failus, pievienoti 782155 koda rindiņas, izņemti 314792 rindiņas). Aptuveni 45% no visām 5.9
izmaiņām ir saistītas ar ierīču draiveriem, aptuveni 15% izmaiņas ir
saistītas ar aparatūras arhitektūrām specifiska koda atjauninājumiem, 13%
saistītas ar tīkla steku, 3% — ar failu sistēmām un 3% ar iekšējām
kodola apakšsistēmām.
:
- Atmiņa un sistēmas pakalpojumi
- aizsardzība pret GPL slāņu izmantošanu, lai sasaistītu patentētus draiverus ar kodola komponentiem, kuri ir pieejami tikai GPL licencētajiem moduļiem. Taustiņu TAINT_PROPRIETARY_MODULE tagad tiek mantots visos moduļos, kas importē simbolus no moduļiem ar šo taustiņu. Ja GPL modulis mēģinās importēt simbolus no ne-GPL moduļa, tad šis GPL modulis mantos TAINT_PROPRIETARY_MODULE atzīmi un nevarēs piekļūt kodola komponentiem, kas pieejami tikai GPL licencētajiem moduļiem, pat ja modulis iepriekš ir importējis simbolus no
- atbalsts mehānismam kcompactd, lai fona režīmā, kas ļauj palielināt pieejamo lielo atmiņas lapu skaitu kodolam. Pēc sākotnējām aplēsēm fona iepakojums ar minimālām pārsūtīšanas izmaksām samazina aizkavi, piešķirot lielās atmiņas lapas (huge-page) par 70-80 reizēm salīdzinājumā ar iepriekšējo iepakošanas mehānismu, kas tika aktivizēts pieprasījuma gadījumā (on-demand). Lai noteiktu ārējās fragmentācijas robežas, ko nodrošinās kcompactd, pievienots sysctl vm.compaction_proactiveness.
- atbalsts kodola attēla saspiešanai, izmantojot algoritmu (zstd).
- x86 sistēmām ieviesta procesora instrukcija , kas ļauj lasīt un mainīt FS/GS reģistru saturu no lietotāja telpas. Kodolā FSGSBASE tiek izmantots, lai paātrinātu konteksta pārslēgšanas operācijas, izslēdzot liekās MSR rakstīšanas operācijas GSBASE, bet lietotāja telpā ļauj izvairīties no liekiem sistēmas zvaniem, lai mainītu FS/GS.
- parametrs „allow_writes”, kas ļauj aizliegt izmaiņas procesora MSR reģistros no lietotāja telpas un ierobežot piekļuvi šo reģistru datu saturam ar lasīšanas operācijām, jo MSR izmaiņas var radīt problēmas. Pagaidām pēc noklusējuma ieraksts nav aizliegts, bet MSR izmaiņas tiek atspoguļotas žurnālā, bet nākotnē plānots noklusējuma piekļuvi pārvērst par tikai lasāmu režīmu.
- Asinhronā ievadi/izvade interfeisā iekļauta pilnīga atbalsta funkcionalitāte asinhronajām buferizētās lasīšanas operācijām, kas neprasa kodola pavedienu iesaisti. Rakstīšanas atbalsts tiek gaidīts nākamajā laidienā.
- Ievadi/izvades plānotājā deadline plānošana, ņemot vērā caurlaidspēju, pieņemt pareizus lēmumus asimetriskās sistēmās, piemēram, ARM arhitektūras sistēmās un big.LITTLE, kas apvieno vienā mikroshēmā jaudīgus un mazāk jaudīgus energoefektīvus CPU kodolus. Īpaši jaunais režīms ļauj izvairīties no nesakritībām plānošanas procesā, kad lēnais CPU kodols nav pietiekamu resursu uzdevuma izpildei noteiktajā termiņā.
- Enerģijas patēriņa modelis kodolā (Energy Model framework) tagad ne tikai CPU enerģijas patēriņa uzvedību, bet arī aptver perifēriskās ierīces.
- Ieviesta sistēmas izsaukuma close_range(), kas ļauj procesam vienlaicīgi aizvērt veselu atvērto failu descriptoru diapazonu.
- No teksta konsoles un draivera fbcon , kas nodrošināja iespēju programmatiskai teksta ritināšanai atpakaļ (CONFIG_VGACON_SOFT_SCROLLBACK) vairāk nekā videomemori teksta režīmā VGA.
- prioritāšu piešķiršanas algoritms pavedienu iekšienē kodolā. Jaunā versija nodrošina labāku saskaņotību visās kodola apakšsistēmās prioritāšu piešķiršanai reālā laika uzdevumiem.
- Pievienots sysctl resošanas parametru spēlēšanai CPU reāllaika uzdevumiem (piemēram, var uz vietas mainīt uzvedību, izpildot reālā laika uzdevumus energijas taupīšanai, pārejot uz bateriju vai mobilajām sistēmām).
- Veikta sagatavošanās atbalsta tehnoloģijai Transparent Huge Pages ieviešanai lapu kešā.
- Fanotify mehānismā ieviesti jauni karogi FAN_REPORT_NAME un FAN_REPORT_DIR_FID, lai sniegtu informāciju par vecāku nosaukumu un unikālo identificētāju FID, kad notiek katalogu elementu izveides, dzēšanas vai pārvietošanas notikumi, kā arī objekti, kas nav saistīti ar katalogiem.
- Cgroups jauns atmiņas sadales kontrolieris slab (slab memory controller), kas izceļas ar slab uzskaites pārcelšanu no atmiņas lapu līmeņa uz kodola objektu līmeni, ļaujot kopīgi izmantot slab lapas dažādās cgroups, nevis piešķirt atsevišķus slab kešus katrai cgroup. Ierosinātā pieeja ļauj uzlabot slab izmantošanas efektivitāti, samazinot slab atmiņas patēriņu par 30-45%, būtiski samazinot kopējo atmiņas patēriņu kodolā un samazinot atmiņas fragmentāciju.
- Skaņas apakšsistēmā un , saskaņā ar ieteikumiem par iekļaujošas terminoloģijas izmantošanu Linux kodolā, veikta nepolitkorektu terminu tīrīšana. Kods ir attīrīts no vārdu 'slave', 'master', 'blacklist' un 'whitelist' izmantošanas.
- Virtualizācija un drošība
- Veidojot kodolu, izmantojot Clang kompilatoru ir iespējams konfigurēt (CONFIG_INIT_STACK_ALL_ZERO) automātisko visu kaudzes mainīgo inicializāciju ar nulles vērtību (veidošanas laikā norādīts '-ftrivial-auto-var-init=zero').
- Seccomp sistēmā, lietojot lietotāja telpas procesu kontroli, tiek veikta failu deskriptora aizstāšana izsekojamā procesā, lai pilnībā emulētu sistēmas izsaukumus, kas noved pie failu deskriptora veidošanas. Šī funkcionalitāte ir pieprasīta izolētu konteineru sistēmās un Chrome smilškastēs.
- Architektūrām xtensa un csky pievienota atbalsta iespēja ierobežot sistēmas izsaukumus, izmantojot seccomp apakšsistēmu. Xtensa papildus atbalsta auditēšanas mehānismu.
- jaunais capability-flags CAP_CHECKPOINT_RESTORE, kas ļauj bez papildu atļaujām piekļūt funkcijām, kas saistītas ar procesu stāvokļa iesaldēšanu un atjaunošanu.
- GCC 11 ir realizētas visas nepieciešamās iespējas
kļūdu atklāšanas rīka KCSAN (Kernel Concurrency Sanitizer), kas paredzēts dinamiskai sacensību stāvokļu atklāšanai kodolā. Tagad KCSAN var izmantot ar GCC saliktiem kodoliem. - AMD Zen un jaunāko CPU modeļu P2PDMA tehnoloģijas atbalsts, kas ļauj izmantot DMA tiešai datu pārsūtīšanai starp divu ierīču atmiņām, kas pieslēgtas PCI buss.
- dm-crypt pievienots režīms, kas samazina kavēšanos, veicot kriptogrāfisko datu apstrādi bez uzdevumu rindām. Šis režīms ir arī nepieciešams, lai pareizi darbotos ar blokierīcēm (ierīcēm ar zonām, kas jāieraksta secīgi, atjauninot visu blokķēdi). Veikti darbi, lai uzlabotu caurlaidspēju un samazinātu kavēšanos dm-crypt.
- Kods 32 bitu viesu sistēmu atbalstam, kas darbojas Xen hipervizora vadībā, ir izņemts. Šādu sistēmu lietotājiem vajadzētu pāriet uz 64 bitu kodoliem viesu vidēs vai izmantot pilnas (HVM) vai kombinētās (PVH) virtualizācijas režīmus, nevis para-virtualizāciju (PV).
- Disku apakšsistēma, I/O un failu sistēmas
- Btrfs failu sistēmā ir pievienota montēšanas opcija «rescue», kas vienkāršo piekļuvi visām citām atjaunošanas opcijām. Atbalsts opcijām «alloc_start» un «subvolrootid» ir izņemts, un opcija «inode_cache» ir atzīta par novecojušu. Veikta veiktspējas optimizācija, īpaši paātrināta fsync() operāciju izpilde. ierobežojumu izmantošanu alternatīviem kontrolsummas veidiem, kas atšķiras no CRC32c.
- ierobežojumu izmantošanu inline šifrēšanai (Inline Encryption) ext4 un F2FS failu sistēmās, jauninājums, kuram ir paredzēta montēšanas opcija «inlinecrypt». Inline šifrēšanas režīms ļauj izmantot iebūvētās šifrēšanas mekanismus, kas nodrošina caurredzamu datu ievades/izvades šifrēšanu un atšifrēšanu.
- XFS inode izlādēšana (flush) pilnīgi asimetriskā režīmā, neapturot procesus, veicot atmiņas tīrīšanas operāciju. Atrisināta ilgstoša problēma ar kvotām, kas izraisīja, ka mīksto ierobežojumu trauksmes un ierobežojumu skaits uz inode netika pareizi uzskaitīti. Unified DAX atbalsta realizāciju nodrošināja ext4 un xfs.
- Ext4 priekšlaicīga blokdiska sadalījuma karšu ielāde. Apvienojumā ar neinitialized grupu skenēšanas ierobežojumu, optimizācija ir ļāvusi samazināt ļoti lielu nodalījumu montēšanas laiku.
- F2FS ioctl F2FS_IOC_SEC_TRIM_FILE, kas ļauj izmantot TRIM/discard komandas, lai fiziski nullētu noteiktus datus failā, piemēram, piekļuves atslēgu dzēšanai, neieradot atlikušos datus uz nesēja.
F2FS arī jauns atkritumu vākšanas režīms GC_URGENT_LOW, kas darbojas agresīvāk, izslēdzot dažus pārbaudes nosacījumus, kas saistīti ar statusu idle, pirms uzsākt atkritumu vākšanas procesu. - bcache, izmaksu samazinājuma izmērs extents ir palielināts no 16 līdz 32 bitiem, gatavojoties iespējojot to pielietošanu zonēto ierīču kešiem.
- SCSI apakšsistēmā pievienota inline šifrēšanas izmantošana ar UFS kontrolieriem sniegtajiem iebūvētiem aparatūras šifrēšanas līdzekļiem ().
- Pievienots jauns kodola komandas rinda «debugfs», kas ļauj kontrolēt vienas un tās pašas pseido-FS pieejamību.
- NFSv4.2 klientā nodrošināta atbalsts failu paplašinātajiem atribūtiem (xattr).
- dm-dust interfeiss, lai vienlaikus izvadītu visus atklātos slikto bloku sarakstus diskā («dmsetup message dust1 0 listbadblocks»).
- md/raid5 pievienots parametra /sys/block/md1/md/stripe_size, kas ļauj iestatīt STRIPE bloka izmēru.
- NVMe glabāšanas ierīcēm atbalsts komandu zonas noteikšanas ierīcēm (ZNS, NVM Express Zoned Namespace), kas ļauj uzglabāšanas vietu sadalīt zonās, kas veido blokgrupas, lai pilnībā pārvaldītu datu izvietojumu ierīcē.
- Tīkla subsistēma
- Netfilter iespēja noraidīt paketes pirms maršrutēšanas pārbaudes (REJECT izteiksme tagad var tikt izmantota ne tikai INPUT, FORWARD un OUTPUT ķēdēs, bet arī PREROUTING posmā icmp un tcp).
- nftables iespēja auditēt notikumus, kas saistīti ar konfigurācijas izmaiņām.
- nftables netlink API atbalsts anonīmām ķēdēm, kuru nosaukumi tiek piešķirti dinamiski no kodola. Dzēšot saistītās noteikumi, tiek automātiski izdzēsta arī pati ķēde.
- BPF ir pievienota atbalsta iteratori, lai apietu, filtrētu un mainītu asociatīvā masīva (map) elementus bez datu kopēšanas lietotāja telpā. Iteratori var tikt izmantoti TCP un UDP soketiem, ļaujot BPF programmām iterēt atvērtos soketus un izvilkt no tiem nepieciešamo informāciju.
- Jauna BPF programmu veida BPF_PROG_TYPE_SK_LOOKUP pievienošana, kas tiek palaista, kad kodols meklē piemērotu klausīšanās soketu ienākošam savienojumam. Ar līdzīgu BPF programmu var izveidot apstrādātājus, kas pieņem lēmumus par to, ar kuru soketu jāsavieno savienojums, netiekot ierobežots ar sistēmas izsaukuma bind() rāmjiem. Piemēram, var izveidot viena soketa sasaisti ar adrešu vai portu diapazonu. Turklāt bpf_setsockopt() ir pievienota SO_KEEPALIVE flaga atbalsts un nodrošināta iespēja izveidot BPF_CGROUP_INET_SOCK_RELEASE apstrādātājus, kas tiek izsaukti, kad sokets tiek atbrīvots.
- Protokola atbalsta īstenošana (Parallel Redundancy Protocol), kas ļauj, balstoties uz Ethernet, nodrošināt caurspīdīgu aplikācijām pārslēgšanos uz rezerves kanālu jebkādu tīkla komponentu kļūmes gadījumā.
- mac80211 stekā atbalsts četrpakāpju WPA/WPA2-PSK kanāla saskaņošanas procesā piekļuves punktā.
- pievienota iespēja mainīt qdisc (queuing discipline) plānotāju uz noklusējuma algoritmu FQ-PIE (Flow Queue PIE), kas mērķēts uz negatīvās ietekmes samazināšanu, ko rada starpposma pakotņu buferizēšana uz robežierīcēm (bufferbloat) kabeļu modemu tīklos.
- Pievienotas jaunas iespējas MPTCP (MultiPath TCP), TCP protokola paplašinājumi, lai organizētu TCP savienojuma darbību, piegādājot paketes vienlaicīgi pa vairākiem maršrutiem caur dažādiem tīkla saskarnēm, kas piesaistītas dažādiem IP adresēm. Pievienota atbalsts syn cookie, DATA_FIN, automātiskā buferu iestatīšana, soketu diagnostika un izmantot REUSEADDR, REUSEPORT un V6ONLY flagus setsockopt.
- VRF (Virtual Routing and Forwarding) virtuālajām maršrutēšanas tabulām, kas ļauj organizēt vairākus maršrutēšanas domēnus vienā sistēmā, ieviests „strict” režīms. Šajā režīmā virtuālajai tabulai var piešķirt tikai to maršrutēšanas tabulu, kas netiek izmantota citās virtuālajās tabulās.
- Bezvadu draiverī ath11k iepazīstināts ar 6GHz frekvenci un .
- Aprīkojums
- Tika noņemta kods UniCore arhitektūras atbalstam, ko izstrādājusi Pekinas universitātes mikroprocesoru centrs un kas tika iekļauta Linux kodolā 2011. gadā. Šī arhitektūra kopš 2014. gada netiek atbalstīta un nav atbalsta GCC.
- RISC-V arhitektūrai ieviests atbalsts (debugfs interfeiss kodola seguma analīzei), kmemleak (atmiņas noplūdes noteikšanas sistēma), steka aizsardzība, pārejas marķējumi un tickless operācijas (neatkarīgas no signāliem taimeru multitaskings).
- PowerPC arhitektūrai ieviests atbalsts kārtām spinlock, kas ļāva ievērojami uzlabot veiktspēju Bloķēšanas konfliktu situācijās.
- ARM un ARM64 arhitektūrām pēc noklusējuma tiek izmantots procesora frekvences regulēšanas mehānisms (cpufreq governor), kas pieņemot lēmumu par frekvences izmaiņām tieši izmanto informāciju no uzdevumu plānotāja un var nekavējoties piekļūt cpufreq draiveriem, lai operatīvi mainītu frekvenci, nekavējoties pielāgojot CPU darba parametrus pašreizējai slodzei.
- DRM draiverī i915 Intel grafiskajām kartēm iekļauts atbalsts čipiem, kas balstās uz mikroarhitektūru un pievienots sākotnējais atbalsts diskretajām kartēm .
- Draiverī amdgpu pievienots sākotnējais atbalsts AMD GPU (Navy Flounder) un (Sienna Cichlid). Pievienots atbalsts video kodešanas un dekodēšanas paātrināšanas dzinējiem UVD/VCE GPU Southern Islands (Radeon HD 7000).
Pievienota īpašība displeja pagriešanai par 90, 180 vai 270 grādiem.Interesanti, ka draiverim AMD GPU lielākais draiveris kodola struktūrā — tas sastāv no aptuveni 2.71 miljoniem koda rindu, kas veido apmēram 10% no kopējā kodola lieluma (27.81 miljoni rindu). Tajā pašā laikā 1.79 miljoni rindu ir automātiski ģenerēti galvenes faili ar datiem GPU reģistriem, bet C kods veido 366 tūkstošus rindu (salīdzinājumam, Intel i915 draiveris ietver 209 tūkstošus rindu, bet Nouveau — 149 tūkstošus).
- Nouveau draiverī iekļauta kadru pa kadriem datu integritātes pārbaude, izmantojot (Cikliskā redundances pārbaudes) NVIDIA GPU displeja dzinējos. Realizācija balstīta uz dokumentāciju, ko sniedzis NVIDIA.
- Pievienoti draiveri LCD paneļiem: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 un Xingbangda XBD599.
- ALSA skaņas sistēmā ieviesta atbalsts (pastāvīga enerģijas uzturēšana ārējiem HDMI ierīcēm, lai novērstu aizturi reprodukcijas sākumā) un lai kontrolētu mikrofonu aktivizēšanas un skaņas izslēgšanas pogu apgaismojumu, kā arī pievienots atbalsts jaunam aparatūrai, tostarp kontrollerim .
- Ieviesa atbalstu ARM platformām, ierīcēm un platformām: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (tiek izmantots Sony Xperia 10, 10 Plus, XA2, XA2 Plus un XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, piecas jaunas plates, kas balstītas uz NXP i.MX6, MikroTik RouterBoard 3011, Xiaomi Libra, Microsoft Lumia 950, Sony Xperia Z5, MStar, Microchip Sparx5, Intel Keem Bay, Amazon Alpine v3, Renesas RZ/G2H.
Tajā pašā laikā Latīņamerikas Brīvā programmatūras fonds
variantu — , attīrītu no elementiem no pārvaldēm un draiveriem, kas satur nesvaigus komponentus vai koda daļas, kuru izmantošanu ierobežo ražotājs. Jaunajā laidienā ir atslēgta blobu ielāde WiFi rtw8821c un SoC MediaTek mt8183 draiveros. Atjaunināts blobu attīrīšanas kods draiveriem un Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) un x86 touchscreen subsistēmām.
Avots: opennet.lv
