Llançament del nucli Linux 5.6

Després de dos mesos de desenvolupament, Linus Torvalds introduït llançament del nucli Linux 5.6. Entre els canvis més destacats: integració de la interfície WireGuard VPN, suport per a USB4, espais de noms per al temps, la capacitat de crear controladors de congestió TCP mitjançant BPF, suport inicial per a MultiPath TCP, desfer el nucli del problema 2038, el mecanisme "bootconfig" , ZoneFS.

La nova versió inclou 13702 correccions de 1810 desenvolupadors,
mida del pedaç: 40 MB (els canvis van afectar 11577 fitxers, s'han afegit 610012 línies de codi,
S'han eliminat 294828 files). Al voltant del 45% de tots els presentats a 5.6
els canvis estan relacionats amb els controladors de dispositiu, aproximadament el 15% dels canvis
actitud cap a l'actualització del codi específic de les arquitectures de maquinari, 12%
associat a la pila de xarxa, un 4% amb sistemes de fitxers i un 3% amb interns
subsistemes del nucli.

El principal innovacions:

  • Subsistema de xarxa
    • Afegit implementació d'una interfície VPN WireGuard, que s'implementa basant-se en mètodes de xifratge moderns (ChaCha20, Poly1305, Curve25519, BLAKE2s), és fàcil d'utilitzar, lliure de complicacions, s'ha demostrat en diverses implementacions grans i ofereix un rendiment molt elevat (3,9 vegades més ràpid que OpenVPN en termes de rendiment). WireGuard utilitza el concepte d'encaminament de claus de xifratge, que consisteix a adjuntar una clau privada a cada interfície de xarxa i utilitzar-la per vincular les claus públiques. Les claus públiques s'intercanvien per establir una connexió de manera similar a SSH. Es requereixen primitives criptogràfiques perquè WireGuard funcioni Érem traslladat de la biblioteca zinc com a part de l'API Crypto estàndard i inclòs al nucli 5.5.
    • Iniciat integració de components necessaris per donar suport a MPTCP (MultiPath TCP), una extensió del protocol TCP per organitzar el funcionament d'una connexió TCP amb el lliurament de paquets simultàniament al llarg de diverses rutes a través de diferents interfícies de xarxa associades a diferents adreces IP. Per a les aplicacions de xarxa, aquesta connexió agregada sembla una connexió TCP normal, i tota la lògica de separació de flux la realitza MPTCP. El TCP multipath es pot utilitzar tant per augmentar el rendiment com per augmentar la fiabilitat. Per exemple, MPTCP es pot utilitzar per organitzar la transmissió de dades en un telèfon intel·ligent mitjançant enllaços WiFi i 4G simultàniament, o per reduir costos connectant un servidor mitjançant diversos enllaços barats en lloc d'un de car.
    • Afegit suport per a la disciplina de processament de cues de xarxa sch_ets (Selecció de transmissió millorada, IEEE 802.1Qaz), que ofereix la possibilitat de distribuir l'amplada de banda entre diferents classes de trànsit. Si la càrrega d'una classe de trànsit particular està per sota de l'ample de banda assignat, aleshores l'ETS permet que altres classes de trànsit utilitzin l'amplada de banda disponible (no utilitzada). Qdisc sch_ets està configurat com una disciplina PRIO i utilitza classes de trànsit per definir límits d'amplada de banda estrictes i compartits. L'ETS funciona com una combinació de disciplines PRIO и RRD — si hi ha classes de trànsit estrictament limitades, s'utilitza PRIO, però si no hi ha trànsit a la cua, funciona com DRR.
    • S'ha afegit un nou tipus de programes BPF BPF_PROG_TYPE_STRUCT_OPS, que us permet implementar controladors de funcions del nucli mitjançant BPF. Actualment, aquesta característica ja es pot utilitzar per implementar algorismes de control de congestió TCP en forma de programes BPF. Com un exemple proposat Programa BPF amb implementació d'algorismes DCTCP.
    • Acceptat al nucli canvis, eines de traducció ettool amb ioctl() per utilitzar interfície netlink. La nova interfície facilita afegir extensions, millora la gestió d'errors, permet enviar notificacions quan canvia d'estat, simplifica la interacció entre el nucli i l'espai d'usuari i redueix el nombre de llistes de nom que cal sincronitzar.
    • S'ha afegit la implementació de l'algoritme de gestió de cues de xarxa FQ-PIE (Flow Queue PIE), dirigit a reduir l'impacte negatiu de la memòria intermèdia de paquets en equips de xarxa perifèrics (bufferbloat). FQ-PIE demostra una alta eficiència quan s'utilitza en sistemes amb mòdems per cable.
  • Subsistema de disc, E/S i sistemes de fitxers
    • Per al sistema de fitxers Btrfs afegit implementació asíncrona de l'operació DISCARD (marcant blocs alliberats que ja no necessiten ser emmagatzemats físicament). Inicialment, les operacions DESCART es realitzaven de manera sincrònica, cosa que podria provocar una degradació del rendiment a causa de les unitats que esperen que es completin les ordres corresponents. La implementació asíncrona us permet no esperar que la unitat completi DISCARD i realitzar aquesta operació en segon pla.
    • En XFS realitzat Neteja de codi que utilitzava antics comptadors de temps de 32 bits (el tipus time_t es va substituir per time64_t), donant lloc al problema de 2038. S'han corregit errors i corrupció de memòria que es produïen a les plataformes de 32 bits. El codi s'ha reelaborat per treballar amb atributs ampliats.
    • Al sistema de fitxers ext4 introduït Optimitzacions de rendiment relacionades amb la gestió del bloqueig dels inodes durant les operacions de lectura i escriptura. Rendiment de reescriptura millorat en mode d'E/S directa. Per simplificar el diagnòstic dels problemes, el primer i l'últim codi d'error s'emmagatzemen a la superilla.
    • Al sistema de fitxers F2FS implementat capacitat d'emmagatzemar dades en forma comprimida. Per a un fitxer o directori individual, la compressió es pot activar mitjançant l'ordre "chattr +c file" o "chattr +c dir; toqueu dir/fitxer". Per comprimir tota la partició, podeu utilitzar l'opció "-o compress_extension=ext" a la utilitat de muntatge.
    • El nucli inclou un sistema de fitxers ZoneFS, que simplifica el treball de baix nivell amb dispositius d'emmagatzematge per zones. Les unitats zonificades són dispositius en discs magnètics durs o SSD NVMe, l'espai d'emmagatzematge en el qual es divideix en zones que formen grups de blocs o sectors, a les quals només es permet l'addició seqüencial de dades, actualitzant tot el grup de blocs. FS ZoneFS va ser desenvolupat per Western Digital i associa cada zona de la unitat amb un fitxer independent que es pot utilitzar per emmagatzemar dades en mode brut sense manipulació a nivell de sector i bloc, és a dir. Permet que les aplicacions utilitzin l'API de fitxers en lloc d'accedir directament al dispositiu de bloqueig mitjançant un ioctl.
    • A NFS, el muntatge de particions sobre UDP està desactivat per defecte. S'ha afegit suport per a la capacitat de copiar directament fitxers entre servidors, definit a l'especificació NFS 4.2. S'ha afegit una nova opció de muntatge "softreval", que permet utilitzar els valors dels atributs en memòria cau en cas d'error del servidor. Per exemple, quan s'especifica aquesta opció, després que el servidor no estigui disponible, segueix sent possible moure's pels camins de la partició NFS i accedir a la informació que s'ha instal·lat a la memòria cau.
    • Portat a terme optimització del rendiment del mecanisme fs-verity, utilitzat per controlar la integritat i l'autenticació dels fitxers individuals. Augment de la velocitat de lectura seqüencial gràcies a l'ús d'un arbre hash Merkle. El rendiment de FS_IOC_ENABLE_VERITY s'ha optimitzat quan no hi ha dades a la memòria cau (s'ha aplicat la lectura preventiva de pàgines amb dades).
  • Virtualització i seguretat
    • La possibilitat de desactivar el mòdul SELinux mentre s'executa ha quedat obsoleta, i en el futur es prohibirà descarregar un SELinux ja activat. Per desactivar SELinux haureu de passar el paràmetre "selinux=0" a la línia d'ordres del nucli.
    • Afegit suport per a espais de noms per al temps (espais de noms de temps), que us permeten vincular l'estat del rellotge del sistema al contenidor (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), utilitzeu el vostre propi temps al contenidor i, en migrar el contenidor a un altre amfitrió, assegureu-vos que les lectures CLOCK_MONOTONIC i CLOCK_BOOTTIME romanguin sense canvis (tingueu en compte el temps posterior a la càrrega, amb o sense tenir en compte estar en mode de repòs). ).

    • S'ha eliminat el grup de bloqueig /dev/random. El comportament de /dev/random és similar a /dev/urandom pel que fa a la prevenció del bloqueig d'entropia després de la inicialització del grup.
    • El nucli bàsic inclou un controlador que permet als sistemes convidats que executen VirtualBox muntar directoris exportats per l'entorn amfitrió (Carpeta compartida de VirtualBox).
    • S'ha afegit un conjunt de pedaços al subsistema BPF (Despatx BPF), quan s'utilitza el mecanisme Retpoline per protegir-se dels atacs de classe Spectre V2, permet augmentar l'eficiència de trucar a programes BPF quan es produeixen esdeveniments associats a ells (per exemple, permet accelerar la trucada dels controladors XDP quan arriba el paquet de xarxa).
    • S'ha afegit un controlador per donar suport a TEE (Trusted Execution Environment) integrat a les APU AMD.
  • Serveis de memòria i sistema
    • BPF ha afegit suport per a funcions globals. El desenvolupament s'està duent a terme com a part d'una iniciativa per afegir suport a les biblioteques de funcions que es poden incloure als programes BPF. El següent pas serà donar suport a les extensions dinàmiques que permetin carregar funcions globals, inclosa la substitució de les funcions globals existents mentre estan en ús. El subsistema BPF també afegeix suport per a una variant de l'operació del mapa (utilitzada per emmagatzemar dades persistents), que admet l'execució en mode per lots.
    • Afegit El dispositiu "cpu_cooling" us permet refredar una CPU sobreescalfada col·locant-la en estat inactiu durant períodes curts de temps.
    • S'ha afegit una trucada al sistema openat2(), que ofereix un conjunt de senyaladors addicionals per limitar la resolució del camí del fitxer (prohibició de creuar punts de muntatge, enllaços simbòlics, enllaços màgics (/proc/PID/fd), components “../”).
    • Per a sistemes heterogenis basats en l'arquitectura big.LITTLE, que combinen nuclis de CPU potents i menys eficients energèticament en un sol xip, el paràmetre uclamp_min s'estableix quan s'executen tasques en temps real (va sorgir al nucli 5.3 hi ha un mecanisme per assegurar la càrrega). Aquest paràmetre garanteix que el planificador col·locarà la tasca en un nucli de CPU que tingui un rendiment suficient.
    • El nucli està alliberat problemes del 2038. S'han substituït els últims controladors restants, que utilitzaven el tipus time_t de 32 bits (signe int) per al comptador de temps d'època, que, tenint en compte l'informe de 1970, hauria de desbordar-se el 2038.
    • Millora continuada de la interfície d'E/S asíncrona io_uringen què assegurat suport per a noves operacions: IORING_OP_FALLOCATE (reserva de zones buides), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (obrint i tancant fitxers),
      IORING_OP_FILES_UPDATE (afegir i eliminar fitxers de la llista d'accés ràpid),
      IORING_OP_STATX (sol·licitud d'informació del fitxer),
      IORING_OP_READ,
      IORING_OP_WRITE (anàlegs simplificats de IORING_OP_READV i IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (variants asíncrones de trucades posix_fadvise i madvise), IORING_OP_SEND,
      IORING_OP_RECV (enviament i recepció de dades de xarxa),
      IORING_OP_EPOLL_CTL (realitza operacions sobre descriptors de fitxers epoll).

    • S'ha afegit una trucada al sistema pidfd_getfd(), permetent a un procés recuperar un descriptor de fitxer per a un fitxer obert d'un altre procés.
    • Implementat el mecanisme “bootconfig”, que permet, a més de les opcions de la línia d'ordres, determinar els paràmetres del nucli mitjançant un fitxer de configuració. Per afegir aquests fitxers a la imatge initramfs, es proposa la utilitat bootconfig. Aquesta característica es pot utilitzar, per exemple, per configurar kprobes en el moment de l'arrencada.
    • Redissenyat un mecanisme per esperar a escriure i llegir dades en canonades sense nom. El canvi va permetre agilitzar tasques com el muntatge paral·lel de grans projectes. Tanmateix, l'optimització pot conduir a una condició de carrera a la marca GNU a causa d'un error a la versió 4.2.1, que es va solucionar a la versió 4.3.
    • S'ha afegit el senyalador PR_SET_IO_FLUSHER a prctl(), que es pot utilitzar per marcar processos sense memòria que no haurien d'estar subjectes a límits quan el sistema té poca memòria.
    • A partir del sistema de distribució de memòria ION utilitzat a Android, s'ha implementat un subsistema dma-buf munts, que us permet controlar l'assignació de buffers DMA per compartir àrees de memòria entre controladors, aplicacions i diversos subsistemes.
  • Arquitectures de maquinari
    • S'ha afegit suport per a l'extensió E0PD, que va aparèixer a ARMv8.5 i que permet la protecció contra atacs relacionats amb l'execució especulativa d'instruccions a la CPU. La protecció basada en E0PD té com a resultat una sobrecàrrega més baixa que la protecció KPTI (Kernel Page Table Isolation).
    • Per als sistemes basats en l'arquitectura ARMv8.5, s'ha afegit suport per a la instrucció RNG, proporcionant accés a un generador de nombres pseudoaleatoris de maquinari. Al nucli, la instrucció RNG s'utilitza per generar entropia en inicialitzar el generador de números pseudoaleatoris proporcionat pel nucli.
    • S'ha eliminat el suport per a MPX (extensions de protecció de memòria) afegit al nucli 3.19 i us permet organitzar la comprovació dels punters per assegurar-vos que es respecten els límits de les àrees de memòria. Aquesta tecnologia no es va utilitzar àmpliament als compiladors i es va eliminar de GCC.
    • Per a l'arquitectura RISC-V, s'ha implementat suport per a l'eina de depuració KASan (desinfectador d'adreces del nucli), que ajuda a identificar errors quan es treballa amb memòria.
  • Оборудование
    • Suport a l'especificació implementat USB 4.0, que es basa en el protocol Thunderbolt 3 i proporciona un rendiment de fins a 40 Gbps, alhora que manté la compatibilitat amb USB 2.0 i USB 3.2. Per analogia amb Raig La interfície USB 4.0 us permet tunelitzar diferents protocols mitjançant un sol cable amb un connector Tipus-C, inclosos PCIe, Display Port i USB 3.x, així com implementacions de programari de protocols, per exemple, per organitzar enllaços de xarxa entre hosts. La implementació es basa en el controlador Thunderbolt que ja s'inclou al nucli de Linux i l'adapta per treballar amb amfitrions i dispositius compatibles amb USB4. Els canvis també afegeixen suport per a dispositius Thunderbolt 3 a la implementació de programari del Connection Manager, que s'encarrega de crear túnels per connectar diversos dispositius mitjançant un únic connector.
    • Al controlador amdgpu afegit suport inicial per a la tecnologia de protecció de còpia HDCP 2.x (protecció de contingut digital d'amplada de banda alta). S'ha afegit suport per al xip ASIC AMD Pollock basat en Raven 2. S'ha implementat la capacitat de restablir la GPU per a les famílies Renoir i Navi.
    • Controlador DRM per a targetes de vídeo Intel afegit Suport DSI VDSC per a xips basats en la microarquitectura Ice Lake i Tiger Lake, s'ha implementat LMEM mmap (memòria local del dispositiu), s'ha millorat l'anàlisi VBT (Video BIOS Table), s'ha implementat suport HDCP 2.2 per als xips Coffee Lake.
    • Es va continuar treballant per unificar el codi del controlador amdkfd (per a GPU discretes, com ara Fiji, Tonga, Polaris) amb el controlador amdgpu.
    • El controlador k10temp s'ha reelaborat, afegint suport per mostrar els paràmetres de tensió i corrent per a les CPU AMD Zen, així com informació ampliada dels sensors de temperatura utilitzats a les CPU Zen i Zen 2.
    • En el nou conductor afegit suport per al mode de càrrega de microprogramari verificat per a les GPU NVIDIA basades en la microarquitectura Turing (GeForce RTX 2000), que va permetre habilitar el suport per a l'acceleració 3D per a aquestes targetes (cal descarregar el microprogramari oficial amb una signatura digital NVIDIA). S'ha afegit suport per al motor gràfic TU10x. S'han resolt problemes amb HD Audio.
    • S'ha afegit suport per a la compressió de dades quan es transmeten a través de DisplayPort MST (Transport Multi-Stream).
    • S'ha afegit un nou controlador "ath11k» per a xips sense fil Qualcomm compatibles amb 802.11ax.
      El controlador es basa en la pila mac80211 i admet els modes de punt d'accés, estació de treball i node de xarxa de malla.

    • Mitjançant sysfs, s'ofereix accés a les lectures del sensor de temperatura llegibles que s'utilitzen en discs durs i SSD moderns.
    • Presentat canvis significatius al sistema de so ALSA, amb l'objectiu d'eliminar el codi problemes del 2038 (evitant l'ús del tipus time_t de 32 bits a les interfícies snd_pcm_mmap_status i snd_pcm_mmap_control). S'ha afegit suport per a nous còdecs d'àudio
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • Afegit controladors per a panells LCD Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0,
      BOE NV140FHM-N49,
      Satoz SAT050AT40H12R2,
      Sharp LS020B1DD01D.

    • Afegit suport per a plaques ARM i plataformes Gen1 Amazon Echo (basat en OMAP3630), 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,
      Lector de llibres electrònics Tolino Shine 3,
      Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX i 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 SC9863, Qualificació SC7180 S'ha afegit suport per al controlador PCIe utilitzat a Raspberry Pi 4.

Paral·lelament, la Fundació Llatinoamericana de Programari Lliure format
вариант nucli completament lliure 5.6 - Linux-libre 5.6-gnu, eliminada dels elements de microprogramari i controladors que contenen components o seccions de codi no lliures, l'abast dels quals està limitat pel fabricant. La nova versió desactiva la càrrega de blob als controladors per a AMD TEE, ATH11K i Mediatek SCP. Codi de neteja de blob actualitzat als controladors i subsistemes AMD PSP, amdgpu i nouveau.

Font: opennet.ru

Afegeix comentari