Linux 5.6 kernel release

Pagkatapos ng dalawang buwan ng pag-unlad, si Linus Torvalds ipinakilala pagpapalabas ng kernel Linux 5.6. Kabilang sa mga pinaka-kapansin-pansing pagbabago: pagsasama ng interface ng WireGuard VPN, suporta para sa USB4, mga namespace para sa oras, ang kakayahang lumikha ng mga tagapangasiwa ng TCP congestion gamit ang BPF, paunang suporta para sa MultiPath TCP, inalis ang kernel ng problema sa 2038, ang mekanismo ng "bootconfig" , ZoneFS.

Kasama sa bagong bersyon ang 13702 pag-aayos mula sa 1810 developer,
laki ng patch - 40 MB (naapektuhan ang mga pagbabago sa 11577 na file, 610012 na linya ng code ang naidagdag,
294828 row ang inalis). Humigit-kumulang 45% ng lahat ng ipinakita sa 5.6
Ang mga pagbabago ay nauugnay sa mga driver ng device, humigit-kumulang 15% ng mga pagbabago ay
saloobin sa pag-update ng code na partikular sa mga arkitektura ng hardware, 12%
nauugnay sa network stack, 4% sa mga file system at 3% sa panloob
mga subsystem ng kernel.

Ang pangunahing mga inobasyon:

  • Subsystem ng network
    • Idinagdag pagpapatupad ng isang VPN interface WireGuard, na ipinapatupad batay sa mga modernong pamamaraan ng pag-encrypt (ChaCha20, Poly1305, Curve25519, BLAKE2s), ay madaling gamitin, walang komplikasyon, napatunayan ang sarili sa maraming malalaking pagpapatupad at nagbibigay ng napakataas na pagganap (3,9 beses na mas mabilis kaysa sa OpenVPN sa mga tuntunin ng throughput). Ginagamit ng WireGuard ang konsepto ng encryption key routing, na kinabibilangan ng pag-attach ng pribadong key sa bawat network interface at paggamit nito upang itali ang mga pampublikong key. Ang mga pampublikong susi ay ipinagpapalit upang magtatag ng koneksyon sa katulad na paraan sa SSH. Kinakailangan ang mga cryptographic primitive para gumana ang WireGuard ay dinadala mula sa aklatan Sink bilang bahagi ng karaniwang Crypto API at kasama sa core 5.5.
    • Nagsimula pagsasama-sama ng mga sangkap na kinakailangan upang suportahan ang MPTCP (MultiPath TCP), isang extension ng TCP protocol para sa pag-aayos ng operasyon ng isang koneksyon sa TCP sa paghahatid ng mga packet nang sabay-sabay sa ilang mga ruta sa pamamagitan ng iba't ibang mga interface ng network na nauugnay sa iba't ibang mga IP address. Para sa mga aplikasyon ng network, ang naturang pinagsama-samang koneksyon ay mukhang isang regular na koneksyon sa TCP, at ang lahat ng lohika ng paghihiwalay ng daloy ay ginagawa ng MPTCP. Maaaring gamitin ang Multipath TCP para mapataas ang throughput at mapataas ang pagiging maaasahan. Halimbawa, maaaring gamitin ang MPTCP upang ayusin ang paghahatid ng data sa isang smartphone gamit ang WiFi at 4G na mga link nang sabay-sabay, o upang bawasan ang mga gastos sa pamamagitan ng pagkonekta sa isang server gamit ang ilang murang link sa halip na isang mahal.
    • Idinagdag suporta para sa disiplina sa pagpoproseso ng network queue sch_ets (Pinahusay na Pagpili ng Transmisyon, IEEE 802.1Qaz), na nagbibigay ng kakayahang ipamahagi ang bandwidth sa pagitan ng iba't ibang klase ng trapiko. Kung ang load sa isang partikular na klase ng trapiko ay mas mababa sa inilalaang bandwidth, kung gayon ang ETS ay nagpapahintulot sa ibang mga klase ng trapiko na gamitin ang magagamit (hindi nagamit) na bandwidth. Ang Qdisc sch_ets ay naka-configure bilang isang PRIO discipline at gumagamit ng mga klase ng trapiko upang tukuyin ang mahigpit at nakabahaging mga limitasyon ng bandwidth. Gumagana ang ETS bilang kumbinasyon ng mga disiplina PRIO ΠΈ DRR β€” kung may mahigpit na limitadong mga klase sa trapiko, PRIO ang ginagamit, ngunit kung walang trapiko sa pila, ito ay gumagana tulad ng DRR.
    • Nagdagdag ng bagong uri ng mga programang BPF BPF_PROG_TYPE_STRUCT_OPS, na nagpapahintulot sa iyo na ipatupad ang mga humahawak ng kernel function sa pamamagitan ng BPF. Sa kasalukuyan, magagamit na ang feature na ito para ipatupad ang TCP congestion control algorithm sa anyo ng mga BPF program. Bilang halimbawa iminungkahi BPF program na may pagpapatupad ng algorithm DCTCP.
    • Tinanggap sa kaibuturan pagbabago, mga tool sa pagsasalin ettool gamit ang ioctl() na gagamitin interface ng netlink. Pinapadali ng bagong interface ang magdagdag ng mga extension, pinapahusay ang paghawak ng error, pinapayagan ang mga notification na maipadala kapag nagbago ang estado, pinapasimple ang pakikipag-ugnayan sa pagitan ng kernel at espasyo ng user, at binabawasan ang bilang ng mga pinangalanang listahan na kailangang i-synchronize.
    • Idinagdag ang pagpapatupad ng FQ-PIE (Flow Queue PIE) network queue management algorithm, na naglalayong bawasan ang negatibong epekto ng intermediate packet buffering sa edge network equipment (bufferbloat). Ang FQ-PIE ay nagpapakita ng mataas na kahusayan kapag ginamit sa mga system na may mga cable modem.
  • Disk subsystem, I/O at mga file system
    • Para sa Btrfs file system idinagdag asynchronous na pagpapatupad ng DISCARD operation (pagmamarka ng mga napalayang bloke na hindi na kailangang pisikal na iimbak). Sa una, ang mga operasyon ng DISCARD ay isinagawa nang sabay-sabay, na maaaring humantong sa pagkasira ng pagganap dahil sa mga drive na naghihintay para sa kaukulang mga utos upang makumpleto. Ang asynchronous na pagpapatupad ay nagbibigay-daan sa iyo na huwag hintayin na makumpleto ng drive ang DISCARD at gawin ang operasyong ito sa background.
    • Sa XFS isinagawa Nililinis ang code na gumamit ng mga lumang 32-bit na time counter (ang uri ng time_t ay pinalitan ng time64_t), na humahantong sa 2038 na problema. Inayos ang mga error at pagkasira ng memorya na naganap sa 32-bit na mga platform. Ang code ay muling ginawa upang gumana sa mga pinahabang katangian.
    • Sa ext4 file system ginawa Mga pag-optimize ng pagganap na nauugnay sa paghawak ng inode lock sa panahon ng mga operasyon sa pagbasa at pagsulat. Pinahusay na pagganap ng muling pagsulat sa Direct I/O mode. Upang gawing simple ang diagnosis ng mga problema, ang una at huling mga error code ay iniimbak sa superblock.
    • Sa F2FS file system ipinatupad kakayahang mag-imbak ng data sa naka-compress na anyo. Para sa isang indibidwal na file o direktoryo, maaaring paganahin ang compression gamit ang command na "chattr +c file" o "chattr +c dir; pindutin ang dir/file". Upang i-compress ang buong partition, maaari mong gamitin ang opsyong β€œ-o compress_extension=ext” sa mount utility.
    • Kasama sa kernel ang isang file system ZoneFS, na pinapasimple ang mababang antas ng trabaho sa mga naka-zone na storage device. Ang ibig sabihin ng mga zoned drive ay mga device sa mga hard magnetic disk o NVMe SSD, ang storage space kung saan nahahati sa mga zone na bumubuo sa mga grupo ng mga bloke o sektor, kung saan pinapayagan lamang ang sunud-sunod na pagdaragdag ng data, na ina-update ang buong grupo ng mga block. Ang FS ZoneFS ay binuo ng Western Digital at iniuugnay ang bawat zone sa drive na may hiwalay na file na maaaring magamit upang mag-imbak ng data sa raw mode nang walang manipulasyon sa sektor at block level, i.e. Nagbibigay-daan sa mga application na gamitin ang file API sa halip na direktang i-access ang block device gamit ang ioctl.
    • Sa NFS, ang pag-mount ng mga partisyon sa UDP ay hindi pinagana bilang default. Nagdagdag ng suporta para sa kakayahang direktang kopyahin ang mga file sa pagitan ng mga server, na tinukoy sa detalye ng NFS 4.2. Nagdagdag ng bagong opsyon sa pag-mount na "softreval", na nagbibigay-daan sa mga naka-cache na halaga ng katangian na magamit sa kaso ng pagkabigo ng server. Halimbawa, kapag tinukoy ang pagpipiliang ito, pagkatapos na hindi magagamit ang server, nananatiling posible na lumipat sa mga landas sa partisyon ng NFS at ma-access ang impormasyon na naayos sa cache.
    • Isinagawa pag-optimize ng pagganap ng mekanismo ng fs-verity, na ginagamit upang subaybayan ang integridad at pagpapatunay ng mga indibidwal na file. Tumaas na sunud-sunod na bilis ng pagbabasa salamat sa paggamit ng isang Merkle hash tree. Ang pagganap ng FS_IOC_ENABLE_VERITY ay na-optimize kapag walang data sa cache (nailapat ang preemptive na pagbabasa ng mga page na may data).
  • Virtualization at Seguridad
    • Ang kakayahang i-disable ang SELinux module habang tumatakbo ay hindi na ginagamit, at ang pag-unload ng isang naka-activate na SELinux ay ipagbabawal sa hinaharap. Upang hindi paganahin ang SELinux kakailanganin mong ipasa ang parameter na "selinux=0" sa kernel command line.
    • Idinagdag suporta para sa mga namespace para sa oras (time namespaces), na nagbibigay-daan sa iyong itali ang estado ng system clock sa lalagyan (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), gamitin ang sarili mong oras sa container at, kapag inililipat ang container sa ibang host, tiyaking hindi nagbabago ang CLOCK_MONOTONIC at CLOCK_BOOTTIME na mga pagbabasa (isinasaalang-alang ang oras pagkatapos mag-load, mayroon man o hindi isinasaalang-alang ang pagiging nasa sleep mode ).

    • Ang /dev/random blocking pool ay inalis na. Ang pag-uugali ng /dev/random ay katulad ng /dev/urandom sa mga tuntunin ng pagpigil sa entropy blocking pagkatapos ng pool initialization.
    • Kasama sa core kernel ang isang driver na nagbibigay-daan sa mga guest system na nagpapatakbo ng VirtualBox na mag-mount ng mga direktoryo na na-export ng host environment (VirtualBox Shared Folder).
    • Ang isang set ng mga patch ay naidagdag sa BPF subsystem (dispatser ng BPF), kapag ginagamit ang mekanismo ng Retpoline upang maprotektahan laban sa mga pag-atake ng klase ng Spectre V2, pinapayagan ka nitong dagdagan ang kahusayan ng pagtawag sa mga programa ng BPF kapag nangyari ang mga kaganapang nauugnay sa mga ito (halimbawa, ginagawang posible na mapabilis ang pagtawag sa mga humahawak ng XDP kapag ang isang dumating ang network packet).
    • Nagdagdag ng driver para suportahan ang TEE (Trusted Execution Environment) na binuo sa mga AMD APU.
  • Mga serbisyo ng memorya at system
    • Nagdagdag ang BPF ng suporta para sa mga pandaigdigang function. Ang pagpapaunlad ay isinasagawa bilang bahagi ng isang inisyatiba upang magdagdag ng suporta para sa mga aklatan ng mga function na maaaring isama sa mga programa ng BPF. Ang susunod na hakbang ay ang suportahan ang mga dynamic na extension na nagbibigay-daan sa pag-load ng mga global function, kabilang ang pagpapalit ng mga umiiral nang global function habang ginagamit ang mga ito. Ang BPF subsystem ay nagdaragdag din ng suporta para sa isang variant ng pagpapatakbo ng mapa (ginagamit upang mag-imbak ng patuloy na data), na sumusuporta sa pagpapatupad sa batch mode.
    • Idinagdag Binibigyang-daan ka ng β€œcpu_cooling” na device na palamigin ang sobrang init na CPU sa pamamagitan ng paglalagay nito sa idle state sa loob ng maikling panahon.
    • Nagdagdag ng system call openat2(), na nag-aalok ng isang hanay ng mga karagdagang flag upang limitahan ang resolution ng path ng file (pagbabawal sa pagtawid sa mga mount point, simbolikong link, magic link (/proc/PID/fd), "../" na mga bahagi).
    • Para sa mga heterogenous system na nakabatay sa malaki.LITTLE na arkitektura, na pinagsasama ang makapangyarihan at hindi gaanong mahusay na enerhiya-efficient na mga CPU core sa isang chip, ang uclamp_min na parameter ay nakatakda kapag nagsasagawa ng mga real-time na gawain (lumitaw sa kernel 5.3 mayroong isang mekanismo para sa pag-secure ng load). Tinitiyak ng parameter na ito na ang gawain ay ilalagay ng scheduler sa isang CPU core na may sapat na pagganap.
    • Ang kernel ay napalaya mula sa mga problema ng 2038. Pinalitan ang huling natitirang mga tagapangasiwa, na gumamit ng 32-bit (signed int) na uri ng time_t para sa epochal time counter, na, na isinasaalang-alang ang ulat mula 1970, ay dapat umapaw sa 2038.
    • Patuloy na pagpapabuti ng asynchronous na interface ng I/O io_uring, kung saan ibinigay suporta para sa mga bagong operasyon: IORING_OP_FALLOCATE (pagpapareserba ng mga bakanteng lugar), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (pagbubukas at pagsasara ng mga file),
      IORING_OP_FILES_UPDATE (pagdaragdag at pag-alis ng mga file mula sa listahan ng mabilisang pag-access),
      IORING_OP_STATX (kahilingan ng impormasyon ng file),
      IORING_OP_READ,
      IORING_OP_WRITE (mga pinasimple na analogue ng IORING_OP_READV at IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (asynchronous na variant ng mga tawag na posix_fadvise at madvise), IORING_OP_SEND,
      IORING_OP_RECV (pagpapadala at pagtanggap ng data ng network),
      IORING_OP_EPOLL_CTL (magsagawa ng mga operasyon sa mga deskriptor ng epoll file).

    • Nagdagdag ng system call pidfd_getfd(), na nagpapahintulot sa isang proseso na kunin ang isang file descriptor para sa isang bukas na file mula sa isa pang proseso.
    • Ipinatupad ang mekanismo ng "bootconfig", na nagpapahintulot, bilang karagdagan sa mga pagpipilian sa command line, upang matukoy ang mga parameter ng kernel sa pamamagitan ng isang file ng mga setting. Upang magdagdag ng mga naturang file sa initramfs na imahe, ang bootconfig utility ay iminungkahi. Maaaring gamitin ang feature na ito, halimbawa, para i-configure ang mga kprobes sa oras ng boot.
    • Reworked isang mekanismo para sa paghihintay para sa pagsulat at pagbabasa ng data sa hindi pinangalanang mga tubo. Ang pagbabago ay naging posible upang mapabilis ang mga gawain tulad ng parallel assembly ng malalaking proyekto. Gayunpaman, ang pag-optimize ay maaaring humantong sa isang kundisyon ng lahi sa GNU make dahil sa isang bug sa 4.2.1 release, na naayos sa bersyon 4.3.
    • Idinagdag ang PR_SET_IO_FLUSHER flag sa prctl(), na maaaring gamitin upang markahan ang mga prosesong walang memorya na hindi dapat sumailalim sa mga limitasyon kapag ang system ay mababa ang memorya.
    • Batay sa ION memory distribution system na ginamit sa Android, isang subsystem ang ipinatupad dma-buf tambak, na nagpapahintulot sa iyo na kontrolin ang paglalaan ng mga buffer ng DMA para sa pagbabahagi ng mga lugar ng memorya sa pagitan ng mga driver, application at iba't ibang mga subsystem.
  • Mga arkitektura ng hardware
    • Nagdagdag ng suporta para sa extension ng E0PD, na lumabas sa ARMv8.5 at nagbibigay-daan para sa proteksyon laban sa mga pag-atake na nauugnay sa haka-haka na pagpapatupad ng mga tagubilin sa CPU. Ang proteksyong batay sa E0PD ay nagreresulta sa mas mababang overhead kaysa sa proteksyon ng KPTI (Kernel Page Table Isolation).
    • Para sa mga system na nakabatay sa arkitektura ng ARMv8.5, idinagdag ang suporta para sa pagtuturo ng RNG, na nagbibigay ng access sa isang hardware pseudo-random number generator. Sa kernel, ang pagtuturo ng RNG ay ginagamit upang bumuo ng entropy kapag sinisimulan ang pseudo-random number generator na ibinigay ng kernel.
    • Inalis na suporta para sa MPX (Memory Protection Extension) na idinagdag sa kernel 3.19 at nagpapahintulot sa iyo na ayusin ang pagsuri ng mga pointer upang matiyak na ang mga hangganan ng mga lugar ng memorya ay iginagalang. Ang teknolohiyang ito ay hindi malawakang ginagamit sa mga compiler at inalis sa GCC.
    • Para sa arkitektura ng RISC-V, ipinatupad ang suporta para sa tool sa pag-debug ng KASan (Kernel address sanitizer), na tumutulong sa pagtukoy ng mga error kapag nagtatrabaho gamit ang memorya.
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Ipinatupad ang suporta sa pagtutukoy USB 4.0, na nakabatay sa Thunderbolt 3 protocol at nagbibigay ng throughput ng hanggang 40 Gbps, habang pinapanatili ang backward compatibility sa USB 2.0 at USB 3.2. Sa pamamagitan ng pagkakatulad sa Kidlat at kulog Nagbibigay-daan sa iyo ang USB 4.0 interface na mag-tunnel ng iba't ibang protocol sa isang cable na may connector Type-C, kabilang ang PCIe, Display Port at USB 3.x, pati na rin ang mga pagpapatupad ng software ng mga protocol, halimbawa, para sa pag-aayos ng mga link sa network sa pagitan ng mga host. Bumubuo ang pagpapatupad sa driver ng Thunderbolt na kasama na sa kernel ng Linux at iniangkop ito upang gumana sa mga host at device na katugma sa USB4. Ang mga pagbabago ay nagdaragdag din ng suporta para sa Thunderbolt 3 na mga device sa pagpapatupad ng software ng Connection Manager, na responsable sa paglikha ng mga tunnel para sa pagkonekta ng maraming device sa pamamagitan ng iisang connector.
    • Sa amdgpu driver idinagdag paunang suporta para sa teknolohiyang proteksyon ng kopya ng HDCP 2.x (High-bandwidth Digital Content Protection). Nagdagdag ng suporta para sa AMD Pollock ASIC chip batay sa Raven 2. Ipinatupad ang kakayahang i-reset ang GPU para sa mga pamilyang Renoir at Navi.
    • DRM driver para sa mga Intel video card idinagdag Ang suporta ng DSI VDSC para sa mga chip batay sa microarchitecture ng Ice Lake at Tiger Lake, ang LMEM mmap (lokal na memorya ng device) ay ipinatupad, ang pag-parse ng VBT (Video BIOS Table) ay napabuti, ang suporta ng HDCP 2.2 ay ipinatupad para sa mga chip ng Coffee Lake.
    • Nagpatuloy ang trabaho sa pag-iisa ng amdkfd driver code (para sa mga discrete GPU, gaya ng Fiji, Tonga, Polaris) sa amdgpu driver.
    • Ang driver ng k10temp ay na-rework, nagdaragdag ng suporta para sa pagpapakita ng boltahe at kasalukuyang mga parameter para sa mga AMD Zen CPU, pati na rin ang pinalawak na impormasyon mula sa mga sensor ng temperatura na ginagamit sa Zen at Zen 2 na mga CPU.
    • Sa nouveau driver idinagdag suporta para sa na-verify na mode ng pag-load ng firmware para sa mga NVIDIA GPU batay sa Turing microarchitecture (GeForce RTX 2000), na naging posible upang paganahin ang suporta para sa 3D acceleration para sa mga card na ito (kinakailangan ang pag-download ng opisyal na firmware na may NVIDIA digital signature). Nagdagdag ng suporta para sa TU10x graphics engine. Nalutas na ang mga problema sa HD Audio.
    • Nagdagdag ng suporta para sa compression ng data kapag ipinadala sa pamamagitan ng DisplayPort MST (Multi-Stream Transport).
    • Nagdagdag ng bagong driver "ath11kΒ» para sa Qualcomm wireless chips na sumusuporta sa 802.11ax.
      Ang driver ay batay sa mac80211 stack at sumusuporta sa access point, workstation at mesh network node mode.

    • Sa pamamagitan ng sysfs, ibinibigay ang access sa mga nababasang temperature sensor reading na ginagamit sa mga modernong hard drive at SSD.
    • Naisumite makabuluhang pagbabago sa ALSA sound system, na naglalayong alisin ang code ng mga problema ng 2038 (pag-iwas sa paggamit ng 32-bit na time_t type sa snd_pcm_mmap_status at snd_pcm_mmap_control interface). Nagdagdag ng suporta para sa mga bagong audio codec
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • Idinagdag mga driver para sa mga LCD panel Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0,
      BOE NV140FHM-N49,
      Satoz SAT050AT40H12R2,
      Biglang LS020B1DD01D.

    • Idinagdag suporta para sa mga ARM board at Gen1 platform na Amazon Echo (OMAP3630-based), 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 eBook reader,
      Naka-embed na Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX at 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. Nagdagdag ng suporta para sa PCIe controller na ginagamit sa Raspberry Pi 7180.

Kasabay nito, ang Latin American Free Software Foundation nabuo
pagpipilian ganap na libreng kernel 5.6 - Linux-libre 5.6-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 blob loading sa mga driver para sa AMD TEE, ATH11K at Mediatek SCP. Na-update ang blob cleaning code sa AMD PSP, amdgpu at nouveau driver at subsystem.

Pinagmulan: opennet.ru

Magdagdag ng komento