Linux 5.8 kodola laidiens

Pēc divu mēneÅ”u izstrādes Linuss Torvalds ieviesa kodola izlaiÅ”ana Linux 5.8. Starp ievērojamākajām izmaiņām: KCSAN sacensÄ«bu stāvokļa detektors, universāls mehānisms paziņojumu nogādāŔanai lietotāja telpā, aparatÅ«ras atbalsts iekļautajai Å”ifrÄ“Å”anai, uzlaboti droŔības mehānismi ARM64, atbalsts Krievijas Baikal-T1 procesoram, iespēja atseviŔķi uzstādÄ«t procfs instances. , Shadow droŔības mehānismu ievieÅ”ana ARM64 Call Stack un BTI.

Kodols 5.8 kļuva par lielāko visu kodolu izmaiņu skaita ziņā visā projekta pastāvÄ“Å”anas laikā. Turklāt izmaiņas nav saistÄ«tas ar vienu apakÅ”sistēmu, bet aptver dažādas kodola daļas un galvenokārt ir saistÄ«tas ar iekŔējo pārstrādi un tÄ«rÄ«Å”anu. Lielākās izmaiņas ir vērojamas autovadÄ«tājos. Jaunajā versijā tika iekļauti 17606 2081 labojumi no 20 izstrādātāja, kas skāra aptuveni 65% no visiem kodola kodu repozitorijā esoÅ”ajiem failiem. Ielāpa izmērs ir 16180 MB (izmaiņas skāra 1043240 489854 failus, tika pievienotas 5.7 15033 39 koda rindiņas, dzēstas 37 5.8 rindiņas). SalÄ«dzinājumam, 16 filiālei bija 11 3 labojumi un ielāpa lielums 4 MB. Aptuveni XNUMX% no visām XNUMX ieviestajām izmaiņām ir saistÄ«tas ar ierīču draiveriem, aptuveni XNUMX% izmaiņu ir saistÄ«tas ar aparatÅ«ras arhitektÅ«rām raksturÄ«gā koda atjaunināŔanu, XNUMX% ir saistÄ«tas ar tÄ«kla steku, XNUMX% ir saistÄ«tas ar failu sistēmām un XNUMX% ir saistÄ«ti ar iekŔējām kodola apakÅ”sistēmām.

Galvenais jauninājumiem:

  • Virtualizācija un droŔība
    • Tiek nodroÅ”ināta to kodola moduļu ielāde, kuriem ir sadaļas ar kodu, kurā vienlaikus tiek iestatÄ«ti biti, kas ļauj izpildÄ«t un rakstÄ«t. Izmaiņas tika ieviestas kā daļa no lielāka projekta, lai atbrÄ«votu kodolu no atmiņas lapu izmantoÅ”anas, kas ļauj vienlaikus izpildÄ«t un rakstÄ«t.
    • Tagad ir iespējams izveidot atseviŔķas procfs instances, ļaujot izmantot vairākus procfs pievienoÅ”anas punktus, kas ir savienoti ar dažādām opcijām, bet atspoguļo vienu un to paÅ”u procesa identifikatora nosaukumvietu (pid namespace). IepriekÅ” visi procfs pievienoÅ”anas punkti atspoguļoja tikai vienu iekŔējo attēlojumu, un visas pievienoÅ”anas parametru izmaiņas ietekmēja visus pārējos pievienoÅ”anas punktus, kas saistÄ«ti ar to paÅ”u procesa ID nosaukumvietu. Starp jomām, kurās var bÅ«t pieprasÄ«ta montāža ar dažādām iespējām, ir vieglas izolācijas ievieÅ”ana iegultajām sistēmām ar iespēju slēpt noteikta veida procesus un informācijas mezglus procfs.
    • Atbalsts mehānismam ir ieviests ARM64 platformai
      Shadow-Call Stack, ko nodroÅ”ina kompilators Clang, lai aizsargātu pret funkcijas atgrieÅ”anas adreses pārrakstÄ«Å”anu steka bufera pārpildes gadÄ«jumā. AizsardzÄ«bas bÅ«tÄ«ba ir saglabāt atgrieÅ”anas adresi atseviŔķā ā€œÄ“nuā€ kaudzē pēc vadÄ«bas nodoÅ”anas funkcijai un Ŕīs adreses izgÅ«Å”anas pirms funkcijas izieÅ”anas.

    • ARM64 platformai ir pievienots instrukciju atbalsts ARMv8.5-BTI (Atzaru mērÄ·a indikators), lai aizsargātu to instrukciju kopu izpildi, kurām nevajadzētu bÅ«t sazarotām. Pāreju uz patvaļīgām koda sadaļām bloÄ·Ä“Å”ana tiek ieviesta, lai novērstu sÄ«krÄ«ku izveidi ekspluatācijās, kurās tiek izmantotas uz atdevi orientētas programmÄ“Å”anas metodes (ROP ā€” uz atgrieÅ”anos orientēta programmÄ“Å”ana; uzbrucējs nemēģina ievietot savu kodu atmiņā, bet darbojas ar jau esoÅ”ajām daļām). maŔīnas instrukcijas, kas beidzas ar atgrieÅ”anas vadÄ«bas instrukciju, no kuras tiek veidota zvanu ķēde, lai iegÅ«tu vēlamo funkcionalitāti).
    • Pievienots aparatÅ«ras atbalsts blokierīču iekļautajai Å”ifrÄ“Å”anai (Iekļautā Å”ifrÄ“Å”ana). Inlinep Å”ifrÄ“Å”anas ierÄ«ces parasti ir iebÅ«vētas diskdzinÄ«, taču tās loÄ£iski atrodas starp sistēmas atmiņu un disku, pārredzami Å”ifrējot un atÅ”ifrējot I/O, pamatojoties uz kodola norādÄ«tajām atslēgām un Å”ifrÄ“Å”anas algoritmu.
    • Pievienota kodola komandrindas opcija "initrdmem", lai ļautu norādÄ«t initrd fiziskās atmiņas adresi, ievietojot sākotnējo sāknÄ“Å”anas attēlu RAM.
    • Pievienota jauna iespēja: CAP_PERFMON, lai piekļūtu perfektai apakÅ”sistēmai un veiktu veiktspējas uzraudzÄ«bu. CAP_BPF, kas ļauj veikt noteiktas BPF darbÄ«bas (piemēram, BPF programmu ielādi), kurām iepriekÅ” bija nepiecieÅ”amas CAP_SYS_ADMIN tiesÄ«bas (CAP_SYS_ADMIN tiesÄ«bas tagad ir sadalÄ«tas CAP_BPF, CAP_PERFMON un CAP_NET_ADMIN kombinācijā).
    • Pievienoja jauna virtio-mem ierÄ«ce, kas ļauj hot-plug un hot-plug atmiņu viesu sistēmām.
    • Ieviests kartÄ“Å”anas darbÄ«bu atsaukÅ”ana mapē /dev/mem, ja ierÄ«ces draiveris izmanto pārklājoÅ”us atmiņas apgabalus.
    • Pievienota neaizsargātÄ«bas aizsardzÄ«ba CROSSTalk/SRBDS, kas ļauj atjaunot dažu instrukciju izpildes rezultātus, kas izpildÄ«ti citā CPU kodolā.
  • Atmiņas un sistēmas pakalpojumi
    • Dokumentā, kas nosaka koda formatÄ“Å”anas noteikumus, pieņemts ieteikumi iekļaujoÅ”as terminoloÄ£ijas lietoÅ”anai. Izstrādātājiem nav ieteicams atseviŔķi lietot kombinācijas "master / slave" un "melnais saraksts / baltais saraksts", kā arÄ« vārdu "slave". Ieteikumi attiecas tikai uz jauniem Å”o terminu lietojumiem. Kodolā jau esoÅ”o norādÄ«to vārdu pieminÄ“Å”ana paliks neskarta. Jaunajā kodā atzÄ«mēto terminu izmantoÅ”ana ir atļauta, ja nepiecieÅ”ams, lai atbalstÄ«tu lietotāja telpā pieejamo API un ABI, kā arÄ« atjauninot kodu, lai atbalstÄ«tu esoÅ”o aparatÅ«ru vai protokolus, kuru specifikācijās ir nepiecieÅ”ams izmantot noteiktus terminus.
    • Iekļauts atkļūdoÅ”anas rÄ«ks KCSAN (Kernel Concurrency Sanitizer), kas paredzēts dinamiskai noteikÅ”anai sacensÄ«bu apstākļi kodola iekÅ”pusē. KCSAN izmantoÅ”ana tiek atbalstÄ«ta, veidojot GCC un Clang, un kompilÄ“Å”anas laikā ir nepiecieÅ”amas Ä«paÅ”as modifikācijas, lai izsekotu piekļuvei atmiņai (tiek izmantoti pārtraukuma punkti, kas tiek aktivizēti, kad atmiņa tiek lasÄ«ta vai modificēta). KCSAN izstrādes uzmanÄ«bas centrā bija viltus pozitÄ«vu profilaksi, mērogojamÄ«ba un lietoÅ”anas vienkārŔība.
    • Pievienots universāls mehānisms paziņojumu piegāde no kodola uz lietotāja vietu. Mehānisms ir balstÄ«ts uz standarta caurules draiveri un ļauj efektÄ«vi izplatÄ«t paziņojumus no kodola pa kanāliem, kas atvērti lietotāja telpā. Paziņojumu saņemÅ”anas punkti ir caurules, kas tiek atvērtas Ä«paŔā režīmā un ļauj no kodola saņemtos ziņojumus uzkrāt gredzena buferÄ«. LasÄ«Å”ana tiek veikta, izmantojot parasto read() funkciju. Kanāla Ä«paÅ”nieks nosaka, kuri kodola avoti ir jāuzrauga, un var definēt filtru, lai ignorētu noteikta veida ziņojumus un notikumus. No notikumiem paÅ”laik tiek atbalstÄ«tas tikai darbÄ«bas ar atslēgām, piemēram, atslēgu pievienoÅ”ana/noņemÅ”ana un to atribÅ«tu maiņa. Å os notikumus plānots izmantot GNOME.
    • Nepārtraukta pidfd funkcionalitātes attÄ«stÄ«ba, lai palÄ«dzētu risināt PID atkārtotas izmantoÅ”anas situācijas (pidfd ir saistÄ«ts ar konkrētu procesu un nemainās, savukārt PID var tikt saistÄ«ts ar citu procesu pēc tam, kad beidzas paÅ”reizējais ar Å”o PID saistÄ«tais process). Jaunajā versijā ir pievienots atbalsts pidfd izmantoÅ”anai, lai pievienotu procesu nosaukumvietām (ļaujot norādÄ«t pidfd, izpildot setns sistēmas izsaukumu). Izmantojot pidfd, ar vienu zvanu var kontrolēt procesa piesaisti vairāku veidu nosaukumvietām, ievērojami samazinot nepiecieÅ”amo sistēmas izsaukumu skaitu un Ä«stenojot pielikumu atomu režīmā (ja neizdodas pievienot kādai no nosaukumvietām, pārējās netiks savienotas) .
    • Pievienots jauns sistēmas izsaukums faccessat2(), kas atŔķiras no
      faccessat () papildu arguments ar karodziņiem, kas atbilst POSIX ieteikumiem (iepriekÅ” Å”ie karodziņi tika emulēti C bibliotēkā, un jaunais faccessat2 ļauj tos ieviest kodolā).

    • C grupā pievienots iestatÄ«jums memory.swap.high, ko var izmantot, lai palēninātu uzdevumus, kas aizņem pārāk daudz mijmaiņas vietas.
    • Uz asinhrono I/O interfeisu io_uring pievienots atbalsts tee() sistēmas izsaukumam.
    • Pievienots mehānisms "BPF iterators, kas paredzēts kodola struktÅ«ru satura izvadÄ«Å”anai lietotāja telpā.
    • Ar nosacÄ«jumu iespēja izmantot zvana buferi datu apmaiņai starp BPF programmām.
    • Mehānismā padata, kas paredzēts, lai organizētu paralēlu uzdevumu izpildi kodolā, pievienots atbalsts vairāku pavedienu uzdevumiem ar slodzes lÄ«dzsvaroÅ”anu.
    • Pstore mehānismā, kas ļauj saglabāt atkļūdoÅ”anas informāciju par avārijas cēloni atmiņas apgabalos, kas netiek zaudēti starp atsāknÄ“Å”anu, piebilda aizmugursistēma informācijas saglabāŔanai, lai bloķētu ierÄ«ces.
    • No PREEMPT_RT kodola filiāles pārplānots vietējo slēdzeņu ievieÅ”ana.
    • Pievienots jauna bufera pieŔķirÅ”anas API (AF_XDP), kuras mērÄ·is ir vienkārÅ”ot tÄ«kla draiveru rakstÄ«Å”anu ar XDP (eXpress Data Path) atbalstu.
    • RISC-V arhitektÅ«rai ir ieviests atbalsts kodola komponentu atkļūdoÅ”anai, izmantojot KGDB.
    • Pirms 4.8. izlaiduma tika paaugstinātas prasÄ«bas GCC versijai, ko var izmantot kodola izveidei. Vienā no nākamajiem laidieniem ir plānots pacelt latiņu lÄ«dz GCC 4.9.
  • Diska apakÅ”sistēma, I/O un failu sistēmas
    • Ierīču kartētājs piebilda jauns dm-ebs (emulēt bloka izmēru) apdarinātājs, ko var izmantot, lai emulētu mazāku loÄ£isko bloku izmēru (piemēram, lai emulētu 512 baitu sektorus 4K sektora izmēra diskos).
    • F2FS failu sistēma tagad atbalsta saspieÅ”anu, izmantojot LZO-RLE algoritmu.
    • dm-kriptā pievienots Å”ifrētu atslēgu atbalsts.
    • Btrfs ir uzlabojis lasÄ«Å”anas darbÄ«bu apstrādi tieŔā I/O režīmā. Uzstādot paātrināta dzēsto apakÅ”sadaļu un direktoriju pārbaude, kas palikuÅ”i bez vecāka.
    • CIFS ir pievienots parametrs ā€œnodeleteā€, kas ļauj veikt normālu atļauju pārbaudi serverÄ«, bet aizliedz klientam dzēst failus vai direktorijus.
    • Ext4 ir uzlabojusi kļūdu apstrādi ENOSPC izmantojot daudzpavedienu. xattr ir pievienojis atbalstu gnu.* nosaukumvietai, ko izmanto GNU Hurd.
    • AttiecÄ«bā uz Ext4 un XFS ir iespējots atbalsts DAX darbÄ«bām (tieÅ”a piekļuve failu sistēmai, apejot lapas keÅ”atmiņu, neizmantojot blokierÄ«ces lÄ«meni) attiecÄ«bā uz atseviŔķiem failiem un direktorijiem.
    • Sistēmas zvanā statx() pievienots karogs STATX_ATTR_DAX, kas, ja norādÄ«ts, izgÅ«st informāciju, izmantojot DAX dzinēju.
    • EXFAT pievienots atbalsts sāknÄ“Å”anas apgabala pārbaudei.
    • FAT uzlabota proaktÄ«va FS elementu ielāde. Pārbaudot lēnu 2 TB USB disku, testa pabeigÅ”anas laiks tika samazināts no 383 lÄ«dz 51 sekundei.
  • TÄ«kla apakÅ”sistēma
    • TÄ«kla tiltu darbÄ«bas kontroles kodā pievienots protokola atbalsts MRP (Media Redundancy Protocol), kas nodroÅ”ina kļūdu toleranci, savienojot vairākus Ethernet slēdžus.
    • Uz satiksmes kontroles sistēmu (Tc) pievienots jauna ā€œvārtuā€ darbÄ«ba, kas ļauj definēt laika intervālus noteiktu pakeÅ”u apstrādei un izmeÅ”anai.
    • Kodolam un ethtool utilÄ«tai ir pievienots atbalsts pievienotā tÄ«kla kabeļa pārbaudei un tÄ«kla ierīču paÅ”diagnostikai.
    • MPLS (Multiprotocol Label Switching) algoritma atbalsts ir pievienots IPv6 stekam pakeÅ”u marÅ”rutÄ“Å”anai, izmantojot vairāku protokolu etiÄ·eÅ”u maiņu (MPLS iepriekÅ” tika atbalstÄ«ts IPv4).
    • Pievienots atbalsts IKE (Internet Key Exchange) un IPSec pakeÅ”u pārsÅ«tÄ«Å”anai, izmantojot TCP (RFC 8229), lai apietu iespējamo UDP bloÄ·Ä“Å”anu.
    • Pievienoja tÄ«kla bloka ierÄ«ce rnbd, kas ļauj organizēt attālo piekļuvi blokierÄ«cei, izmantojot RDMA transportu (InfiniBand, RoCE, iWARP) un RTRS protokolu.
    • TCP kaudzē pievienots atbalsts diapazona saspieÅ”anai selektÄ«vās apstiprinājuma (SACK) atbildēs.
    • IPv6 Ä«stenota TCP-LD atbalsts (RFC 6069, Ilgi savienojuma traucējumi).
  • ŠžŠ±Š¾Ń€ŃƒŠ“Š¾Š²Š°Š½ŠøŠµ
    • Intel videokartes i915 DRM draiveris pēc noklusējuma ietver atbalstu Intel Tiger Lake (GEN12) mikroshēmām, kurām Ä«stenota iespēja izmantot SAGV (System Agent Geyserville) sistēmu, lai dinamiski pielāgotu frekvenci un spriegumu atkarÄ«bā no enerÄ£ijas patēriņa vai veiktspējas prasÄ«bām.
    • Amdgpu draiveris ir pievienojis atbalstu FP16 pikseļu formātam un iespēju strādāt ar Å”ifrētiem buferiem video atmiņā (TMZ, Trusted Memory Zone).
    • Pievienots atbalsts jaudas sensoriem AMD Zen un Zen2 procesoriem, kā arÄ« temperatÅ«ras sensoriem AMD Ryzen 4000 Renoir. AMD Zen un Zen2 tiek nodroÅ”ināts atbalsts enerÄ£ijas patēriņa informācijas izgÅ«Å”anai, izmantojot interfeisu RAPL (Running Average Power Limit).
    • Nouveau draiverim ir pievienots NVIDIA modifikatora formāta atbalsts. AttiecÄ«bā uz gv100 ir ieviesta iespēja izmantot interlaced skenÄ“Å”anas režīmus. Pievienota vGPU definÄ«cija.
    • MSM (Qualcomm) draiverim ir pievienots atbalsts Adreno A405, A640 un A650 GPU.
    • Pievienots iekŔējā sistēma 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 LCD paneļu draiveri: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • Pievienots atbalsts ARM platēm un platformām Renesas "RZ/G1H", Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuMMC50,,- Check PointeMMCXNUMX, LIME
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.

    • Pievienots atbalsts MIPS procesoram Loongson-2K (saÄ«sināti Loongson64). CPU Loongson 3 ir pievienots atbalsts virtualizācijai, izmantojot KVM hipervizoru.
    • Pievienots
      atbalsts Krievijas Baikal-T1 procesoram un uz tā balstÄ«tajai sistēmai mikroshēmā BE-T1000. Baikal-T1 procesors satur divus P5600 MIPS 32 r5 superskalārus kodolus, kas darbojas ar frekvenci 1.2 GHz. Mikroshēmā 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 kontrolleris, 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 kriptogrāfijas paātrinātāju, kas atbalsta GOST 28147-89. Mikroshēma ir izstrādāta, izmantojot MIPS32 P5600 Warrior procesora kodolu, kas licencēts no Imagination Technologies.

Tajā paŔā laikā Latīņamerikas BrÄ«vās programmatÅ«ras fonds veidojas
iespēja pilnÄ«gi bezmaksas kodols 5.8 Sākot no Linux bezmaksas 5.8-gnu, notÄ«rÄ«ta no programmaparatÅ«ras un draivera elementiem, kas satur nebrÄ«vas sastāvdaļas vai koda sadaļas, kuru darbÄ«bas jomu ierobežo ražotājs. Jaunais laidiens atspējo blob ielādi draiveros Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, uzlabotā asinhronā iztverÅ”anas ātruma pārveidotāja, maksimāli integrētā MAX98390 skaļruņa MAX38060 ZZL2, Micro86AimpmimiZL6656, MicroXNUMX Aimpmimi XNUMX. un IXNUMXC EEPROM Slave. Atjaunināts lāse tÄ«rÄ«Å”anas kods Adreno GPU, HabanaLabs Goya, xXNUMX skārienekrāna, vtXNUMX un btbcm draiveros un apakÅ”sistēmās.

Avots: opennet.ru

Pievieno komentāru