Linux 5.8 kernel release

Pagkatapos ng dalawang buwan ng pag-unlad, si Linus Torvalds ipinakilala pagpapalabas ng kernel Linux 5.8. Kabilang sa mga pinaka-kapansin-pansing pagbabago: isang KCSAN race condition detector, isang unibersal na mekanismo para sa paghahatid ng mga abiso sa espasyo ng gumagamit, suporta sa hardware para sa inline na pag-encrypt, pinahusay na mekanismo ng seguridad para sa ARM64, suporta para sa Russian Baikal-T1 processor, ang kakayahang magkahiwalay na i-mount ang mga procfs instances , pagpapatupad ng mga mekanismo ng seguridad ng Shadow para sa ARM64 Call Stack at BTI.

Ang Kernel 5.8 ay naging pinakamalaki sa mga tuntunin ng bilang ng mga pagbabago ng lahat ng mga kernel sa buong pagkakaroon ng proyekto. Bukod dito, ang mga pagbabago ay hindi nauugnay sa anumang isang subsystem, ngunit sumasaklaw sa iba't ibang bahagi ng kernel at pangunahing nauugnay sa panloob na muling paggawa at paglilinis. Ang pinakamalaking pagbabago ay makikita sa mga driver. Kasama sa bagong bersyon ang 17606 na pag-aayos mula sa 2081 na mga developer, na nakaapekto sa humigit-kumulang 20% ​​ng lahat ng mga file sa kernel code repository. Ang laki ng patch ay 65 MB (naapektuhan ng mga pagbabago ang 16180 na file, 1043240 na linya ng code ang idinagdag, 489854 na linya ang tinanggal). Sa paghahambing, ang 5.7 na sangay ay may 15033 na pag-aayos at isang laki ng patch na 39 MB. Humigit-kumulang 37% ng lahat ng mga pagbabagong ipinakilala sa 5.8 ay nauugnay sa mga driver ng device, humigit-kumulang 16% ng mga pagbabago ay nauugnay sa pag-update ng code na partikular sa mga arkitektura ng hardware, 11% ay nauugnay sa network stack, 3% ay nauugnay sa mga file system, at 4% ay nauugnay sa panloob na mga subsystem ng kernel.

Ang pangunahing mga inobasyon:

  • Virtualization at Seguridad
    • Ang paglo-load ng mga kernel module na may mga seksyon na may code kung saan ang mga bit na nagpapahintulot sa pagpapatupad at pagsulat ay sabay-sabay na itinakda. Ang pagbabago ay ipinatupad bilang bahagi ng isang mas malaking proyekto upang alisin ang kernel ng paggamit ng mga pahina ng memorya na nagpapahintulot sa sabay-sabay na pagpapatupad at pagsulat.
    • Posible na ngayong lumikha ng hiwalay na mga procf instance, na nagpapahintulot sa paggamit ng maraming procfs mount point, na naka-mount na may iba't ibang mga opsyon, ngunit sumasalamin sa parehong namespace ng identifier ng proseso (pid namespace). Dati, ang lahat ng procf mount point ay sumasalamin lamang sa isang panloob na representasyon, at anumang pagbabago sa mount parameter ay nakakaapekto sa lahat ng iba pang mount point na nauugnay sa parehong process ID namespace. Kabilang sa mga lugar kung saan ang pag-mount na may iba't ibang mga opsyon ay maaaring in demand ay ang pagpapatupad ng magaan na paghihiwalay para sa mga naka-embed na system na may kakayahang itago ang ilang uri ng mga proseso at mga node ng impormasyon sa mga procf.
    • Ang suporta para sa mekanismo ay ipinatupad para sa ARM64 platform
      Shadow-Call Stack, na ibinigay ng Clang compiler upang maprotektahan laban sa pag-overwrite sa return address ng isang function kung sakaling magkaroon ng stack buffer overflow. Ang esensya ng proteksyon ay i-save ang return address sa isang hiwalay na "shadow" stack pagkatapos ilipat ang kontrol sa isang function at makuha ang address na ito bago lumabas sa function.

    • Ang suporta sa pagtuturo ay idinagdag para sa ARM64 platform ARMv8.5-BTI (Branch Target Indicator) upang protektahan ang pagpapatupad ng mga hanay ng mga tagubilin na hindi dapat sanga. Ang pagharang sa mga transition sa di-makatwirang mga seksyon ng code ay ipinatupad upang maiwasan ang paglikha ng mga gadget sa mga pagsasamantala na gumagamit ng mga diskarte sa pagprograma na nakatuon sa pagbalik (ROP - Return-Oriented Programming; hindi sinusubukan ng attacker na ilagay ang kanyang code sa memorya, ngunit gumagana sa mga umiiral nang piraso ng mga tagubilin sa makina na nagtatapos sa isang pagtuturo ng kontrol sa pagbabalik, kung saan binuo ang isang hanay ng mga tawag upang makuha ang nais na paggana).
    • Nagdagdag ng suporta sa hardware para sa inline na pag-encrypt ng mga block device (Inline na Encryption). Ang mga inlinep encryption device ay karaniwang binuo sa drive, ngunit lohikal na matatagpuan sa pagitan ng memorya ng system at disk, malinaw na nag-e-encrypt at nagde-decrypt ng I/O batay sa mga key na tinukoy ng kernel at isang algorithm ng pag-encrypt.
    • Idinagdag ang "initrdmem" kernel command line na opsyon upang payagan kang tukuyin ang pisikal na memorya ng address ng initrd kapag inilalagay ang paunang boot image sa RAM.
    • Nagdagdag ng bagong kakayahan: CAP_PERFMON upang ma-access ang perf subsystem at magsagawa ng pagsubaybay sa pagganap. CAP_BPF, na nagbibigay-daan sa ilang partikular na pagpapatakbo ng BPF (tulad ng pag-load ng mga BPF program) na dating nangangailangan ng mga karapatan ng CAP_SYS_ADMIN (Ang mga karapatan ng CAP_SYS_ADMIN ay nahahati na ngayon sa kumbinasyon ng CAP_BPF, CAP_PERFMON, at CAP_NET_ADMIN).
    • Idinagdag isang bagong virtio-mem device na nagbibigay-daan sa iyong mag-hot-plug at hot-plug memory sa mga guest system.
    • Ipinatupad ang pagpapabalik ng mga pagpapatakbo ng pagmamapa sa /dev/mem kung ang driver ng device ay gumagamit ng mga overlapping na lugar ng memorya.
    • Nagdagdag ng proteksyon sa kahinaan CROSSTalk/SRBDS, na nagbibigay-daan sa iyong ibalik ang mga resulta ng ilang partikular na mga tagubilin na isinagawa sa isa pang core ng CPU.
  • Mga serbisyo ng memorya at system
    • Sa dokumentong tumutukoy sa mga patakaran para sa pag-format ng code, tinanggap mga rekomendasyon para sa paggamit ng inklusibong terminolohiya. Hindi inirerekomenda ng mga developer na gamitin ang mga kumbinasyong 'master / slave' at 'blacklist / whitelist', pati na rin ang salitang 'slave' nang hiwalay. Ang mga rekomendasyon ay tumutukoy lamang sa mga bagong paggamit ng mga terminong ito. Ang mga pagbanggit ng mga tinukoy na salita na mayroon na sa core ay mananatiling hindi nagalaw. Sa bagong code, pinahihintulutan ang paggamit ng mga minarkahang termino kung kinakailangan upang suportahan ang API at ABI na nakalantad sa espasyo ng user, gayundin kapag ina-update ang code upang suportahan ang mga umiiral nang hardware o protocol na ang mga detalye ay nangangailangan ng paggamit ng ilang partikular na termino.
    • Kasama ang tool sa pag-debug KCSAN (Kernel Concurrency Sanitizer), na idinisenyo para sa dynamic na pagtuklas kundisyon ng lahi sa loob ng core. Ang paggamit ng KCSAN ay sinusuportahan kapag nagtatayo sa GCC at Clang, at nangangailangan ng mga espesyal na pagbabago sa oras ng pag-compile para subaybayan ang pag-access sa memorya (ginagamit ang mga breakpoint na nati-trigger kapag binasa o binago ang memorya). Ang pokus ng pagbuo ng KCSAN ay sa maling positibong pag-iwas, scalability, at kadalian ng paggamit.
    • Idinagdag unibersal na mekanismo paghahatid ng mga abiso mula sa kernel patungo sa espasyo ng gumagamit. Ang mekanismo ay batay sa karaniwang driver ng pipe at nagbibigay-daan sa iyong mahusay na ipamahagi ang mga abiso mula sa kernel sa mga channel na bukas sa espasyo ng gumagamit. Ang mga punto ng pagtanggap ng notification ay mga tubo na binuksan sa isang espesyal na mode at pinapayagan ang mga mensaheng natanggap mula sa kernel na maipon sa isang ring buffer. Ang pagbabasa ay ginagawa ng karaniwang read() function. Tinutukoy ng may-ari ng channel kung aling mga source sa kernel ang kailangang subaybayan at maaaring tumukoy ng isang filter upang huwag pansinin ang ilang uri ng mga mensahe at kaganapan. Sa mga kaganapan, tanging mga pagpapatakbo na may mga susi ang kasalukuyang sinusuportahan, gaya ng pagdaragdag/pag-alis ng mga susi at pagbabago ng mga katangian ng mga ito. Ang mga kaganapang ito ay binalak na gamitin sa GNOME.
    • Ang patuloy na pag-develop ng 'pidfd' na functionality upang tumulong sa paghawak ng mga sitwasyon sa muling paggamit ng PID (ang pidfd ay nauugnay sa isang partikular na proseso at hindi nagbabago, habang ang isang PID ay maaaring iugnay sa isa pang proseso pagkatapos ng kasalukuyang proseso na nauugnay sa PID na iyon). Ang bagong bersyon ay nagdaragdag ng suporta para sa paggamit ng pidfd para mag-attach ng proseso sa mga namespace (nagbibigay-daan sa pidfd na tukuyin kapag isinasagawa ang setns system call). Ang paggamit ng pidfd ay nagbibigay-daan sa iyo na kontrolin ang attachment ng isang proseso sa ilang uri ng mga namespace sa isang tawag, na makabuluhang binabawasan ang bilang ng mga kinakailangang tawag sa system at pagpapatupad ng attachment sa atomic mode (kung nabigo ang attachment sa isa sa mga namespace, ang iba ay hindi makakonekta) .
    • Nagdagdag ng bagong system call faaccessat2(), iba sa
      faccessat() isang karagdagang argumento na may mga flag na sumusunod sa mga rekomendasyon ng POSIX (dati ang mga flag na ito ay ginagaya sa C library, at ang bagong faaccessat2 ay nagpapahintulot sa kanila na maipatupad sa kernel).

    • Sa Cgroup idinagdag isang memory.swap.high na setting na maaaring gamitin upang pabagalin ang mga gawain na tumatagal ng masyadong maraming espasyo sa swap.
    • Sa asynchronous na interface ng I/O io_uring nagdagdag ng suporta para sa tee() system call.
    • Nagdagdag ng mekanismo "BPF iterator, na idinisenyo upang i-output ang mga nilalaman ng mga istruktura ng kernel sa espasyo ng gumagamit.
    • Ibinigay ang kakayahang gumamit ng ring buffer para sa pagpapalitan ng data sa pagitan ng mga programa ng BPF.
    • Sa mekanismo padata, na idinisenyo upang ayusin ang parallel execution ng mga gawain sa kernel, nagdagdag ng suporta para sa mga multi-threaded na gawain na may load balancing.
    • Sa mekanismo ng pstore, na nagpapahintulot sa iyo na i-save ang impormasyon sa pag-debug tungkol sa sanhi ng pag-crash sa mga lugar ng memorya na hindi nawala sa pagitan ng mga pag-reboot, dagdag pa backend para sa pag-save ng impormasyon upang harangan ang mga device.
    • Mula sa PREEMPT_RT kernel branch na-reschedule pagpapatupad ng mga lokal na kandado.
    • Idinagdag bagong buffer allocation API (AF_XDP), na naglalayong pasimplehin ang pagsulat ng mga driver ng network na may suporta sa XDP (eXpress Data Path).
    • Para sa arkitektura ng RISC-V, ipinatupad ang suporta para sa pag-debug ng mga bahagi ng kernel gamit ang KGDB.
    • Bago i-release ang 4.8, ang mga kinakailangan para sa bersyon ng GCC na maaaring gamitin sa pagbuo ng kernel ay nadagdagan. Sa isa sa mga susunod na release ay binalak na itaas ang bar sa GCC 4.9.
  • Disk subsystem, I/O at mga file system
    • Sa Device Mapper dagdag pa bagong tagapangasiwa ng dm-ebs (gayahin ang laki ng bloke), na maaaring gamitin upang tularan ang isang mas maliit na lohikal na laki ng bloke (halimbawa, upang tularan ang mga 512-byte na sektor sa mga disk na laki ng sektor ng 4K).
    • Sinusuportahan na ngayon ng F2FS file system ang compression gamit ang LZO-RLE algorithm.
    • Sa dm-crypt idinagdag suporta para sa mga naka-encrypt na key.
    • Pinahusay ng Btrfs ang paghawak ng mga operasyon sa pagbabasa sa direktang I/O mode. Kapag nag-mount pinabilis sinusuri ang mga tinanggal na subsection at mga direktoryo na naiwan nang walang magulang.
    • Ang isang parameter na "nodelete" ay idinagdag sa CIFS, na nagpapahintulot sa mga normal na pagsusuri ng pahintulot sa server, ngunit ipinagbabawal ang kliyente na magtanggal ng mga file o direktoryo.
    • Pinahusay ng Ext4 ang paghawak ng error ENOSPC kapag gumagamit ng multithreading. Nagdagdag ang xattr ng suporta para sa gnu.* namespace na ginamit sa GNU Hurd.
    • Para sa Ext4 at XFS, pinagana ang suporta para sa mga pagpapatakbo ng DAX (direktang pag-access sa file system, pag-bypass sa cache ng page nang hindi ginagamit ang antas ng block device) na may kaugnayan sa mga indibidwal na file at direktoryo.
    • Sa system call statx() idinagdag ang bandila STATX_ATTR_DAX, na kapag tinukoy, kinukuha ang impormasyon gamit ang DAX engine.
    • EXFAT idinagdag suporta para sa pag-verify ng boot area.
    • Sa FAT napabuti proactive loading ng FS elements. Ang pagsubok sa isang mabagal na 2TB USB drive ay nagpakita ng pagbawas sa oras ng pagkumpleto ng pagsubok mula 383 hanggang 51 segundo.
  • Subsystem ng network
    • Sa code para sa pagkontrol sa pagpapatakbo ng mga tulay ng network idinagdag suporta sa protocol MRP (Media Redundancy Protocol), na nagbibigay-daan para sa fault tolerance sa pamamagitan ng pag-loop ng maraming Ethernet switch.
    • Sa sistema ng kontrol ng trapiko (Tc) idinagdag bagong pagkilos na "gate", na ginagawang posible na tukuyin ang mga agwat ng oras para sa pagproseso at pagtatapon ng ilang partikular na packet.
    • Ang suporta para sa pagsubok sa nakakonektang network cable at self-diagnosis ng mga network device ay idinagdag sa kernel at sa ethtool utility.
    • Ang suporta para sa MPLS (Multiprotocol Label Switching) algorithm ay idinagdag sa IPv6 stack para sa pagruruta ng mga packet gamit ang multiprotocol label switching (MPLS ay dating suportado para sa IPv4).
    • Nagdagdag ng suporta para sa pagpapadala ng IKE (Internet Key Exchange) at IPSec packet sa TCP (RFC 8229) upang i-bypass ang posibleng pagharang ng UDP.
    • Idinagdag network block device rnbd, na nagbibigay-daan sa iyong ayusin ang malayuang pag-access sa isang block device gamit ang RDMA transport (InfiniBand, RoCE, iWARP) at ang RTRS protocol.
    • Sa TCP stack idinagdag suporta para sa range compression sa selective acknowledgement (SACK) na mga tugon.
    • Para sa IPv6 ipinatupad Suporta sa TCP-LD (RFC 6069, Mahabang Pagkakagambala sa Pagkakakonekta).
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Ang i915 DRM driver para sa Intel video card ay may kasamang suporta para sa Intel Tiger Lake (GEN12) chips bilang default, kung saan ipinatupad ang kakayahang gamitin ang sistema ng SAGV (System Agent Geyserville) upang dynamic na ayusin ang dalas at boltahe depende sa paggamit ng kuryente o mga kinakailangan sa pagganap.
    • Ang driver ng amdgpu ay nagdagdag ng suporta para sa FP16 pixel na format at ang kakayahang magtrabaho kasama ang mga naka-encrypt na buffer sa memorya ng video (TMZ, Trusted Memory Zone).
    • Nagdagdag ng suporta para sa mga power sensor para sa AMD Zen at Zen2 processors, pati na rin sa mga temperature sensor para sa AMD Ryzen 4000 Renoir. Ang suporta para sa pagkuha ng impormasyon sa paggamit ng kuryente sa pamamagitan ng interface ay ibinibigay para sa AMD Zen at Zen2 RAPL (Running Average Power Limit).
    • Nagdagdag ng suporta para sa NVIDIA modifier format sa Nouveau driver. Para sa gv100, ipinatupad ang kakayahang gumamit ng mga interlaced scanning mode. Nagdagdag ng kahulugan ng vGPU.
    • Nagdagdag ng suporta para sa Adreno A405, A640 at A650 GPU sa driver ng MSM (Qualcomm).
    • Idinagdag panloob na balangkas para sa pamamahala ng mga mapagkukunan ng DRM (Direct Rendering Manager).
    • Nagdagdag ng suporta para sa Xiaomi Redmi Note 7 at Samsung Galaxy S2 na mga smartphone, pati na rin ang mga Elm/Hana Chromebook laptop.
    • Nagdagdag ng mga driver para sa mga LCD panel: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • Nagdagdag ng suporta para sa mga ARM board at platform na Renesas "RZ/G1H", Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino-LIME-eMMino, Check Point
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.

    • Nagdagdag ng suporta para sa MIPS processor na Loongson-2K (pinaikling Loongson64). Para sa CPU Loongson 3, idinagdag ang suporta para sa virtualization gamit ang KVM hypervisor.
    • Idinagdag
      suporta para sa Russian Baikal-T1 processor at ang system-on-chip batay dito BE-T1000. Ang Baikal-T1 processor ay naglalaman ng dalawang P5600 MIPS 32 r5 superscalar core na tumatakbo sa 1.2 GHz. Ang chip ay naglalaman ng L2 cache (1 MB), DDR3-1600 ECC memory controller, 1 10Gb Ethernet port, 2 1Gb Ethernet port, PCIe Gen.3 x4 controller, 2 SATA 3.0 port, USB 2.0, GPIO, UART, SPI, I2C. Nagbibigay ang processor ng suporta sa hardware para sa virtualization, mga tagubilin sa SIMD at isang pinagsamang hardware cryptographic accelerator na sumusuporta sa GOST 28147-89. Ang chip ay binuo gamit ang isang MIPS32 P5600 Warrior processor core unit na lisensyado mula sa Imagination Technologies.

Kasabay nito, ang Latin American Free Software Foundation nabuo
pagpipilian ganap na libreng kernel 5.8 - Linux-libre 5.8-gnu, na-clear sa firmware at mga elemento ng driver na naglalaman ng mga di-libreng bahagi o mga seksyon ng code, na ang saklaw ay limitado ng tagagawa. Hindi pinapagana ng bagong release ang paglo-load ng blob sa mga driver para sa 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 Aimplifier, Microsemi ng Home ZL38060 Audio Processor ZL2. at I86C EEPROM Alipin. Na-update ang blob cleaning code sa Adreno GPU, HabanaLabs Goya, x6656 touchscreen, vtXNUMX at btbcm na mga driver at subsystem.

Pinagmulan: opennet.ru

Magdagdag ng komento