Linux 5.8 kodols

Pēc diviem mēnešiem attīstības Linuss Torvalds prezentēja izlaida kodolu Linux 5.8. Starp svarīgākajām izmaiņām: KCSAN sacensību stāvokļa detektors, universāls notifikāciju piegādes mehānisms lietotāja telpā, atbalsts inline šifrēšanas aparatūrai, paplašināti aizsardzības mehānismi ARM64, atbalsts Krievijas procesoram Baikal-T1, iespēja atsevišķi montēt procfs instancēs, realizācija ARM64 aizsardzības mehānismiem Shadow Call Stack un BTI.

Kodols 5.8 kļuvis par lielāko izmaiņu skaita ziņā no visiem kodoliem visā projekta pastāvēšanas laikā. Šīs izmaiņas nav saistītas ar vienu apakšsistēmu, bet aptver dažādas kodola daļas un galvenokārt saistītas ar iekšējām pārstrādēm un tīrīšanu. Visvairāk izmaiņu novēro mikroshēmās. Jaunajā versijā pieņemti 17606 labojumi no 2081 izstrādātāja, kas skāruši aptuveni 20% visu failu kodola repozitorijā. Iesniegtā plākstere – 65 MB (izmaiņas skārušas 16180 failus, pievienots 1043240 koda rindiņas, dzēstas 489854 rindiņas). Salīdzinājumam: 5.7 zarā tika veikti 15033 labojumi, un plākstera lielums bija 39 MB. Apmēram 37% no visām 5.8 piedāvātajām izmaiņām attiecas uz ierīču mikroshēmām, aptuveni 16% izmaiņu attiecas uz aparatūras arhitektūrām specifisku kodu atjauninājumu, 11% ir saistīts ar tīkla kaudzes uzturēšanu, 3% – ar failu sistēmām un 4% ar iekšējām kodola apakšsistēmām.

īpašības jaunumi:

  • Virtualizācija un drošība
    • Ir nodrošināta kodola moduļu ielādes bloķēšana, kurām ir kods, kurā vienlaikus ir iestatīti izpildes un rakstīšanas atļauju biti. Izmaiņas tika ieviestas plašāka projekta ietvaros, lai atbrīvotu kodolu no atmiņas lapām, kuras atļauj vienlaikus izpildi un rakstīšanu.
    • Parādījās iespēja veidot atsevišķus procfs instancus, ļaujot izmantot vairākas procfs montēšanas vietas, kas montētas ar dažādām opcijām, bet atspoguļojot vienu procesu identifikatoru nosaukumu telpu (pid namespace). Agrāk visas procfs montēšanas vietas tikai atspoguļoja vienu iekšēju attēlojumu, un jebkuras montēšanas parametra izmaiņas ietekmēja visas pārējās montēšanas vietas, kas bija saistītas ar to pašu procesu identifikatoru nosaukumu telpu. No jomām, kurās var pieprasīt montēšanu ar dažādām opcijām, jāatzīmē vieglas izolācijas īstenošana iebūvētajām sistēmām ar iespēju slēpt noteikta veida procesus un informācijas mezglus procfs.
    • ARM64 platformai ieviesta atbalsta mehānisms
      Shadow-Call Stack, ko nodrošina Clang kompilators, lai aizsargātu pret atgriezeniskā adreses pārrakstīšanu no funkcijas gadījumā, ja ir notikusi buferu pārpilde stekā. Aizsardzības būtība ir saglabāt pēc kontroles nodošanas funkcijai atgriezenisko adresi atsevišķā "ēnu" stekā un iegūt šo adresi, pirms iznākšanas no funkcijas.
    • ARM64 platformai pievienots atbalsts instrukcijām ARMv8.5-BTI (Branch Target Indicator), kas nodrošina aizsardzību pret instrukciju kopu izpildi, uz kurām nedrīkst notikt pārejas, veicot branch. Pāreju bloķēšana uz nejaušām koda sekcijām ir ieviesta, lai pretotos gadžetu veidošanai exploitā, kas izmanto atgriezeniskā virknes programmatūras (ROP — Return-Oriented Programming) paņēmienus, kad uzbrucējs necenšas ievietot savu kodu atmiņā, bet izmanto jau esošas mašīnas instrukciju daļas, kas beidzas ar atgriezeniskās kontroles vadības instrukciju, no kurām tiek veidota izsaukumu virkne, lai iegūtu nepieciešamo funkcionalitāti).
    • Ieviesis atbalstu aparatūrai inline-šifrēšanai blokiem (Inline Encryption). Inline-šifrēšanas ierīces parasti ir iebūvētas datu nesējā, bet loģiski izvietotas starp sistēmas atmiņu un cieto disku, nodrošinot caurspīdīgu šifrēšanu un atšifrēšanu ieejai/izejai, pamatojoties uz kodolā noteiktiem atslēgām un šifrēšanas algoritmu.
    • Pievienota komandu rindiņas parametra initrdmem programmai, kas ļauj norādīt initrd fizisko adresi atmiņā, izvietojot sākotnējo ielādēšanas attēlu RAM.
    • Tika jaunas iespējas: CAP_PERFMON piekļuvei perf apakšsistēmai un veiktspējas uzraudzībai. CAP_BPF, kas ļauj veikt dažas operācijas ar BPF (piemēram, BPF programmu ielādi), kuras iepriekš prasīja CAP_SYS_ADMIN tiesības (tagad CAP_SYS_ADMIN pilnvaras ir sadalītas kombinācijā CAP_BPF, CAP_PERFMON un CAP_NET_ADMIN).
    • Pievienots jauns ierīce virtio-mem, kas ļauj ieslēgt un izslēgt atmiņu viesu sistēmām.
    • Ievieš atpakaļ operācijas iecelšanu /dev/mem, ja ierīces draiveris izmanto pārklājošas atmiņas zonas.
    • Papildināta aizsardzība pret ievainojamību CROSSTalk/SRBDS, ļauj atgūt citu CPU kodola izpildes rezultātus.
  • Atmiņa un sistēmas pakalpojumi
    • Dokumentā, kas nosaka koda noformēšanas noteikumus, tika pieņemtas ieteikumi par iekļaujošas terminoloģijas lietošanu. Izstrādātājiem nav ieteicams lietot saites 'master/slave' un 'blacklist/whitelist', kā arī vārdu 'slave' atsevišķi. Ieteikumi attiecas tikai uz jauna lietojuma attiecīgajām terminoloģijām. Jau esošās kodolā pieminētās minētās frāzes paliks neskarotas. Jaunajā kodā šādu terminoloģiju lietošana ir atļauta, ja tās prasa lietojamā lietotāja API un ABI uzturēšana, kā arī koda atjaunināšanai, lai atbalstītu esošu aparatūru vai protokolus, kuru specifikācijās ir norādīti konkrētu terminoloģiju lietošanas noteikumi.
    • Iekļauta atkļūdošanas rīks KCSAN (Kernel Concurrency Sanitizer), kas paredzēts dinamiskai sacensību stāvokļu identifikācijai kodolā. KCSAN lietošana tiek atbalstīta, veicot kompilāciju GCC un Clang, un prasa īpašu modifikāciju pievienošanu kompilācijas procesā, lai izsekotu atmiņas piekļuvi (tiek izmantoti pārtraukumi, kas aktivizējas, kad tiek lasīta vai mainīta atmiņa). KCSAN izstrādē galvenā uzmanība pievērsta viltus aktivizācijas novēršanai, mērogojamībai un lietotāju ērtībām.
    • Pievienots universāls mehānisms paziņojumu piegāde no kodola uz lietotāja telpu. Mehānisms balstās uz iebūvēto cauruli un ļauj efektīvi sadalīt paziņojumus no kodola pa kanāliem, kas atvērti lietotāja telpā. Paziņojumu saņemšanas punkti ir caurules, kas atvērtas īpašā režīmā un ļauj uzkrāt no kodola saņemtos ziņojumus gredzenveida buferī. Lasīšana tiek veikta, izmantojot parasto funkciju read(). Kanāla īpašnieks nosaka, kuri no avotiem kodolā ir jāuzrauga un var noteikt filtrus, lai ignorētu noteiktu veidu ziņojumus un notikumu. Pašlaik atbalsta tikai operācijas ar atslēgām, piemēram, atslēgu pievienošana/izņemšana un to atribūtu maiņa. Norādītie notikumi plāno izmantot GNOME.
    • Turpināta funkcionalitātes ‘pidfd’ izstrāde, kas palīdz apstrādāt situācijas ar PID atkārtotu izmantošanu (pidfd ir saistīts ar konkrētu procesu un nemainās, kamēr PID var tikt saistīts ar citu procesu pēc esošā procesa beigām, kas ir saistīts ar šo PID). Jaunajā versijā pievienots atbalsts pidfd izmantošanai procesa piesaistīšanai nosacījumu telpām (ir atļauts norādīt pidfd, veicot sistēmas izsaukumu setns). Pidfd lietošana ļauj ar vienu zvanu pārvaldīt procesa piesaistīšanu vairākiem nosacījumu veidiem, būtiski samazinot nepieciešamo sistēmas izsaukumu skaitu un īstenojot piesaisti atomārā režīmā (ja piesaistīšanas laikā vienai no nosacījumu telpām rodas kļūda, tad pārējās nepieslēgsies).
    • Pievienota jauna sistēmas izsaukuma funkcija faccessat2(), kas atšķiras no
      faccessat() papildu argumentu ar karodziņiem, kas atbilst POSIX rekomendācijām (ievērojami šie karodziņi iepriekš tika emulēti C bibliotēkā, bet jaunā faccessat2 ļauj tos īstenot kodolā).
    • Cgroup pievienots iestatījums memory.swap.high, ko var izmantot, lai palēninātu uzdevumus, kas patērē pārāk daudz vietas apmaiņas nodalījumā.
    • Asinhronā ievadi/izvade interfeisā io_uring pievienots atbalsts sistēmas izsaukumam tee().
    • Pievienots mehānisms „BPF iterators, kas paredzēts, lai parādītu lietotāja telpā kodola struktūru saturu.
    • Piedāvāta iespēja izmantot gredzenveida buferi datu apmaiņai starp BPF programmām.
    • Mechanism padata, paredzēts uzdevumu paralēlai izpildei kodola iekšienē, pievienota atbalsta vairāk pavedienu uzdevumiem ar slodzes līdzsvarošanu.
    • Pstore mehānisms, kas ļauj saglabāt kļūmes cēloņa atbilstošo informāciju atmiņā, netiek zaudēta starp pārstartēšanām. iegūts aizmugure informācijas saglabāšanai uz blokierīcēm.
    • No PREEMPT_RT kodola zara. pārvietota. lokālo bloķēšanas realizācija.
    • Pievienots jauns buferu piešķiršanas API (AF_XDP), kas vērsts uz tīkla draiveru rakstīšanas vienkāršošanu ar XDP (eXpress Data Path) atbalstu.
    • RISC-V arhitektūrai ieviests atbalsts kodola komponenšu atkļūdošanai, izmantojot KGDB.
    • Pirms 4.8 versijas izlaišanas tika paaugstinātas prasības GCC versijai, kura var tikt izmantota kodola kompilēšanai. Viens no nākamajiem izlaišanas plāniem ir paaugstināt robežu līdz GCC 4.9.
  • Disku apakšsistēma, I/O un failu sistēmas
    • Device Mapper. iegūts jauns dm-ebs (bloka izmēra emulācija) apstrādātājs, kas var tikt izmantots, lai emulētu mazāku loģiskā bloka izmēru (piemēram, lai emulētu 512-baitu sektorus diskos ar 4K sektora izmēru).
    • F2FS failu sistēmā parādījās atbalsts saspiešanai, izmantojot LZO-RLE algoritmu.
    • dm-crypt. pievienots atbalsts šifrētiem atslēgām.
    • Btrfs uzlabota tiešās ievades/izvades operāciju apstrāde. Montējot. Paātrināta pārbaude attālinātajiem apakšdirektorijiem un katalogiem, kuri palikuši bez vecāku.
    • CIFS pievienots parametrs 'nodelete', kas pieļauj standarta tiesību pārbaudes serverī, bet aizliedz klientam dzēst failus vai katalogus.
    • Ext4 uzlabota kļūdu apstrāde. ENOSPC. izmantojot vairāk pavedienu. xattr pievienots atbalsts namespace gnu.*, ko izmanto GNU Hurd.
    • Ext4 un XFS iekļauta atbalsta DAX operācijām (tiešā piekļuve FS, apiet lapu kešu, neizmantojot bloku ierīču līmeni) atsevišķu failu un katalogu kontekstā.
    • Sistēmiskajā izsaukumā statx(). pievienots karogs. STATX_ATTR_DAX., norādot, kurā informācija tiek iegūta, izmantojot DAX mehānismu.
    • EXFAT. pievienots atbalsts boot zonas verifikācijai.
    • FAT. uzlabota. sagatavošanas ielādes failu sistēmā. Lēnā 2TB USB ierīces testēšana parādīja testa laika samazinājumu no 383 līdz 51 sekundei.
  • Tīkla subsistēma
    • Tīklu tiltu vadības kodā. pievienots protokola atbalsts MRP. (Mediju redundances protokols), kas nodrošina kļūmju tolerance, saistot vairākus Ethernet slēdzi.
    • Trafika kontroles sistēmā (Tc). pievienots Jauna darbība „gate”, kas ļauj noteikt laika intervālus, lai apstrādātu un noraidītu noteiktus paketus.
    • JAD ethtool kodā un rīkais pievienota atbalsts testēšanai pieslēgtajiem tīkla kabeļiem un tīkla iekārtu pašdiagnostikai.
    • IPv6 stekā pievienots atbalsts MPLS (Multiprotocol Label Switching) algoritmam iepakojumu maršrutēšanai, izmantojot daudzprotokolu etiķetes pārslēgšanu (iepriekš atbalsts IPv4 MPLS bija pieejams).
    • Pievienots atbalsts IKE (Internet Key Exchange) paketu un IPSec pārsūtīšanai pa TCP (RFC 8229) lai apietu iespējamos UDP blokādes.
    • Pievienots Tīkla bloķēšanas iekārta rnbd, kas ļauj organizēt attālinātu piekļuvi bloķēšanas ierīcei, izmantojot RDMA (InfiniBand, RoCE, iWARP) transportu un RTRS protokolu.
    • TCP stekā pievienots atbalsts diapazonu saspiešanai atbildēs uz izvēles apstiprinājumiem (selective acknowledgment, SACK).
    • IPv6 gadījumā ir ieviesta atbalsts TCP-LD (RFC 6069, Long Connectivity Disruptions).
  • Aprīkojums
    • DRM draiverī i915 Intel grafikas kartēm pēc noklusējuma iekļauta atbalsts Intel Tiger Lake (GEN12) mikroshēmām, ar kurām arī ir ieviesta ir iespējams izmantot SAGV (System Agent Geyserville) sistēmu, lai dinamiskā veidā pielāgotu frekvenci un spriegumu atkarībā no enerģijas patēriņa vai veiktspējas prasībām.
    • Draiverī amdgpu pievienots atbalsts pikseļu formātam FP16 un īstenota iespēja strādāt ar šifrētajiem buferiem video atmiņā (TMZ, Trusted Memory Zone).
    • Pievienots atbalsts AMD Zen un Zen2 procesoru enerģijas patēriņa sensoriem, kā arī AMD Ryzen 4000 Renoir temperatūras sensoriem. AMD Zen un Zen2 atbalsta enerģijas patēriņa informācijas iegūšanu caur RAPL (Running Average Power Limit).
    • Draiverī Nouveau pievienots atbalsts NVIDIA modifikatoru formātam. gv100 atbalsta iespēja izmantot lauka režīmus. Pievienota vGPU definēšana.
    • Draiverī MSM (Qualcomm) pievienots atbalsts GPU Adreno A405, A640 un A650.
    • Pievienots iekšējais ietvars DRM (Direct Rendering Manager) resursu pārvaldībai.
    • Pievienots atbalsts Xiaomi Redmi Note 7 un Samsung Galaxy S2 viedtālruņiem, kā arī Elm/Hana Chromebook klēpjdatoriem.
    • Pievienoti draiveri LCD paneļiem: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • Pievienots atbalsts ARM platformām un Renesas „RZ/G1H”, Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino-LIME-eMMC, Check Point L-50,
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.
    • Tika atbalsts MIPS procesoram Loongson-2K (saīsināta versija Loongson64). CPU Loongson 3 atbalsta virtualizāciju, izmantojot KVM hipervizoru.
    • Pievienota
      atbalsts Krievijas procesoram Baikal-T1, kas balstīts uz sistēmu uz mikroshēmas BE-T1000. Procesors Baikal-T1 satur divus superkaskādus kodolus P5600 MIPS 32 r5, kas darbojas ar frekvenci 1.2 GHz. Čipam ir L2 kešatmiņa (1 MB), DDR3-1600 ECC atmiņas kontrolieris, 1 10Gb Ethernet ports, 2 1Gb Ethernet porti, PCIe Gen.3 x4 kontrolieris, 2 SATA 3.0 porti, USB 2.0, GPIO, UART, SPI, I2C. Procesors nodrošina aparatūras atbalstu virtualizācijai, SIMD instrukcijas un integrētu aparatūras paātrinātāju kriptogrāfijas operāciju atbalstam, kas atbilst GOST 28147-89 standartam. Čips izstrādāts, izmantojot MIPS32 P5600 Warrior procesora kodola licenci no uzņēmuma Imagination Technologies.

Tajā pašā laikā Latīņamerikas Brīvā programmatūras fonds izveidoja
variantu pilnībā brīvais kodols 5.8 — Linux-libre 5.8-gnu, kas attīrīts no elementiem, kas satur brīvus komponentus vai koda daļas, kuru lietošanas ierobežojumus nosaka ražotājs. Jaunajā laidienā ir atspējota bloķēšana draiveros priekš Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, Enhanced Asynchronous Sample Rate Converter, Maxim Integrated MAX98390 Speaker Amplifier, Microsemi ZL38060 Connected Home Audio Processor un I2C EEPROM Slave. Atjaunināts bloķēšanas attīrīšanas kods draiveros un apakšsistēmās Adreno GPU, HabanaLabs Goya, x86 touchscreen, vt6656 un btbcm.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster