Llançament del nucli Linux 6.7

Després de dos mesos de desenvolupament, Linus Torvalds va presentar el llançament del nucli Linux 6.7. Entre els canvis més destacats: integració del sistema de fitxers Bcachefs, interrupció del suport per a l'arquitectura Itanium, capacitat de Nouvea per treballar amb firmware GSP-R, suport per a xifratge TLS en NVMe-TCP, possibilitat d'utilitzar excepcions en BPF, suport per a futex a io_uring, optimització del rendiment del planificador fq (Fair Queuing), suport per a l'extensió TCP-AO (opció d'autenticació TCP) i la capacitat de restringir les connexions de xarxa al mecanisme de seguretat Landlock, control d'accés afegit a l'espai de noms d'usuari i io_uring mitjançant AppArmor.

La nova versió inclou 18405 correccions de 2066 desenvolupadors, la mida del pedaç és de 72 MB (els canvis van afectar 13467 fitxers, es van afegir 906147 línies de codi, es van suprimir 341048 línies). L'última versió tenia 15291 correccions de 2058 desenvolupadors, la mida del pedaç era de 39 MB. Al voltant del 45% de tots els canvis introduïts a 6.7 estan relacionats amb controladors de dispositius, aproximadament el 14% dels canvis estan relacionats amb l'actualització de codi específic de les arquitectures de maquinari, el 13% estan relacionats amb la pila de xarxa, el 5% estan relacionats amb sistemes de fitxers i el 3% estan relacionats amb subsistemes interns del nucli.

Innovacions clau al nucli 6.7:

  • Subsistema de disc, E/S i sistemes de fitxers
    • El nucli adopta el codi del sistema de fitxers Bcachefs, que intenta aconseguir el rendiment, la fiabilitat i l'escalabilitat de XFS, combinat amb elements de la funcionalitat avançada que es troba a Btrfs i ZFS. Per exemple, Bcachefs admet funcions com incloure diversos dispositius en una partició, dissenys d'unitats de diverses capes (la capa inferior amb dades d'ús freqüent basades en SSD ràpids i la capa superior amb dades menys utilitzades dels discs durs), replicació (RAID). 1/10), emmagatzematge en memòria cau, compressió de dades transparent (modes LZ4, gzip i ZSTD), seccions d'estat (instantànies), verificació d'integritat mitjançant sumes de control, la capacitat d'emmagatzemar codis de correcció d'errors de Reed-Solomon (RAID 5/6), emmagatzemar informació a forma xifrada (s'utilitzen ChaCha20 i Poly1305). Pel que fa al rendiment, Bcachefs està per davant de Btrfs i altres sistemes de fitxers basats en el mecanisme Copy-on-Write i demostra una velocitat de funcionament propera a Ext4 i XFS.
    • El sistema de fitxers Btrfs introdueix un mode de quota simplificat que us permet aconseguir un rendiment més elevat mitjançant el seguiment de les extensions només a la subpartició en què es creen, la qual cosa simplifica significativament els càlculs i millora el rendiment, però no us permet tenir en compte les extensions compartides en diversos subparticions.
    • Btrfs ha afegit una nova estructura de dades d'"arbre de ratlles", adequada per al mapeig d'extensió lògica en situacions en què els mapes físics no coincideixen entre els dispositius. L'estructura s'utilitza actualment en implementacions de RAID0 i RAID1 per a dispositius de blocs zonats. En el futur, tenen previst utilitzar aquesta estructura en RAID de nivell superior, que resoldran una sèrie de problemes existents en la implementació actual.
    • El sistema de fitxers Ceph implementa suport per mapejar els ID d'usuari dels sistemes de fitxers muntats, utilitzats per fer coincidir els fitxers d'un usuari específic en una partició estrangera muntada amb un altre usuari del sistema actual.
    • S'ha afegit la possibilitat d'especificar uid i gid al muntatge a efivarfs per permetre que els processos no root canviïn les variables UEFI.
    • S'han afegit trucades ioctl a exFAT per llegir i canviar els atributs FS. S'ha afegit el maneig de directoris de mida zero.
    • F2FS implementa la capacitat d'utilitzar blocs de 16K.
    • El mecanisme de muntatge automàtic autofs s'ha canviat per utilitzar la nova API de muntatge de particions.
    • OverlayFS ofereix opcions de muntatge "lowerdir+" i "datadir+". S'ha afegit suport per al muntatge imbricat de OverlayFS amb xattrs.
    • XFS ha optimitzat la càrrega de la CPU en el codi d'assignació de blocs en temps real. Es proporciona la possibilitat de realitzar simultàniament operacions de lectura i FICLONE.
    • El codi EXT2 s'ha convertit per utilitzar fulls de pàgina.
  • Serveis de memòria i sistema
    • El suport per a l'arquitectura ia64 utilitzada als processadors Intel Itanium, que es van suspendre completament el 2021, s'ha interromput. Els processadors Itanium van ser introduïts per Intel l'any 2001, però l'arquitectura ia64 no va poder competir amb AMD64, principalment a causa del major rendiment de l'AMD64 i la transició més suau dels processadors x32 de 86 bits. Com a resultat, els interessos d'Intel es van desplaçar a favor dels processadors x86-64, i el lot d'Itanium va romandre en servidors HP Integrity, les comandes dels quals es van aturar fa tres anys. El codi per al suport ia64 es va eliminar del nucli principalment a causa de la manca de suport a llarg termini per a aquesta plataforma, mentre que Linus Torvalds va expressar la seva voluntat de tornar el suport ia64 al nucli, però només si hi ha un responsable que pugui demostrar una alta qualitat. suport per a aquesta plataforma fora del nucli principal durant almenys un any.
    • S'ha afegit el paràmetre d'ordres de la línia del nucli "ia32_emulation", que us permet activar o desactivar el suport per a l'emulació en mode de 32 bits als nuclis creats per a l'arquitectura x86-64 en l'etapa d'arrencada. Pel que fa a la pràctica, la nova opció us permet construir el nucli amb suport per a la compatibilitat amb aplicacions de 32 bits, però desactiveu aquest mode per defecte per reduir el vector d'atac al nucli, ja que l'API de compatibilitat està menys provada que el nucli principal. interfícies.
    • Migració continuada dels canvis de la branca Rust-for-Linux relacionats amb l'ús del llenguatge Rust com a segon llenguatge per desenvolupar controladors i mòduls del nucli (el suport de Rust no està actiu per defecte i no comporta la inclusió de Rust entre els dependències de muntatge necessàries per al nucli). La nova versió fa la transició a l'ús de la versió Rust 1.73 i ofereix un conjunt d'enllaços per treballar amb cues de treball.
    • És possible utilitzar el mecanisme binfmt_misc per afegir suport per a nous formats de fitxer executables (per exemple, per executar aplicacions Java o Python compilades) dins d'espais de noms sense privilegis separats.
    • El cpuset del controlador cgroup, que us permet controlar l'ús dels nuclis de la CPU quan s'executa una tasca, proporciona una divisió en particions locals i remotes, que difereixen en si el cgroup pare és la secció arrel correcta o no. També s'han afegit nous paràmetres "cpuset.cpus.exclusive" i "cpuset.cpus.excluisve.effective" a cpuset per a la vinculació exclusiva de la CPU.
    • El subsistema BPF implementa suport per a excepcions, que es processen com a sortida d'emergència d'un programa BPF amb la capacitat de desenrotllar de forma segura els marcs de pila. A més, els programes BPF permeten l'ús de punters kptr en connexió amb la CPU.
    • S'ha afegit suport per a operacions amb futex al subsistema io_uring, i s'han implementat noves operacions: IORING_OP_WAITID (versió asíncrona de waitid), SOCKET_URING_OP_GETSOCKOPT (opció getsockoptand), SOCKET_URING_OP_SETSOCKOPT (opció setsockopt) i HORREAR no s'atura l'operació (domulti ULTIS_REAT) hi ha dades o no hi ha buffer ple).
    • S'ha afegit la implementació de cues FIFO lleugeres d'una sola connexió que requereixen un bloqueig de rotació només per sortir de la cua en un context de procés i prescindir d'un bloqueig de rotació per a les addicions atòmiques a la cua en qualsevol context.
    • S'ha afegit un buffer d'anell "objpool" amb una implementació escalable d'una cua d'alt rendiment per assignar i retornar objectes.
    • La part inicial dels canvis s'ha afegit per implementar la nova API futex2, que té un millor rendiment als sistemes NUMA, admet mides diferents de 32 bits i es pot utilitzar en lloc de la crida al sistema futex() multiplexada.
    • Per a les arquitectures ARM32 i S390x, s'ha afegit suport per al conjunt actual (cpuv4) d'instruccions BPF.
    • Per a l'arquitectura RISC-V, és possible utilitzar el mode de verificació Shadow-Call Stack disponible a Clang 17, dissenyat per protegir contra sobreescriure l'adreça de retorn d'una funció en cas de desbordament de memòria intermèdia a la pila. L'essència de la protecció és desar l'adreça de retorn en una pila "ombra" separada després de transferir el control a una funció i recuperar aquesta adreça abans de sortir de la funció.
    • S'ha afegit un nou mode d'escaneig de pàgines de memòria intel·ligent al mecanisme per combinar pàgines de memòria idèntiques (KSM: Kernel Samepage Merging), que fa un seguiment de les pàgines escanejades sense èxit i redueix la intensitat de la seva tornada a escanejar. Per habilitar el nou mode, s'ha afegit la configuració /sys/kernel/mm/ksm/smart_scan.
    • S'ha afegit una nova ordre ioctl PAGEMAP_SCAN, que, quan s'utilitza amb userfaultfd(), us permet determinar els fets d'escriure en un interval de memòria específic. La nova funció, per exemple, es pot utilitzar al sistema per desar i restaurar l'estat dels processos CRIU o en sistemes anti-trampa de jocs.
    • Al sistema de muntatge, si el compilador Clang està disponible, el conjunt d'exemples d'ús del subsistema perf, escrit com a programes BPF, està habilitat per defecte.
    • S'ha eliminat l'antiga capa de videobuf, que s'utilitzava per gestionar els framebuffers al subsistema multimèdia i que es va substituir per una nova implementació de videobuf10 fa més de 2 anys.
  • Virtualització i seguretat
    • La capacitat de xifrar dades en blocs més petits que la mida del bloc del sistema de fitxers s'ha afegit al subsistema fscrypt. Això pot ser necessari per habilitar mecanismes de xifratge de maquinari que només admeten blocs petits (per exemple, els controladors UFS que només admeten una mida de bloc 4096 es poden utilitzar amb un sistema de fitxers amb una mida de bloc de 16K).
    • El subsistema "iommufd", que us permet gestionar les taules de pàgines de memòria IOMMU (Unitat de gestió de memòria d'E/S) mitjançant descriptors de fitxers des de l'espai d'usuari, ha afegit el seguiment de dades que encara no s'han esborrat de la memòria cau (bruta) per a DMA operacions, que és necessària per determinar la memòria amb dades no esborrades durant la migració del procés.
    • S'ha afegit suport per definir regles de control d'accés per a sockets TCP al mecanisme Landlock, que permet limitar la interacció d'un grup de processos amb l'entorn extern. Per exemple, podeu crear una regla que només permeti l'accés al port de xarxa 443 per establir connexions HTTPS.
    • El subsistema AppArmor ha afegit la capacitat de controlar l'accés al mecanisme io_uring i crear espais de noms d'usuari, que us permet permetre selectivament l'accés a aquestes capacitats només a determinats processos.
    • S'ha afegit l'API d'acreditació de la màquina virtual per verificar la integritat del procés d'arrencada de la màquina virtual.
    • Els sistemes LoongArch admeten la virtualització mitjançant l'hipervisor KVM.
    • Quan s'utilitza l'hipervisor KVM en sistemes RISC-V, ha aparegut el suport per a l'extensió Smstateen, que impedeix que la màquina virtual accedeixi als registres de la CPU que l'hipervisor no admet explícitament. També s'ha afegit suport per a l'ús de l'extensió Zicond en sistemes convidats, que permet l'ús d'algunes operacions d'enter condicional.
    • En els sistemes convidats basats en x86 que s'executen amb KVM, es permeten fins a 4096 CPU virtuals.
  • Subsistema de xarxa
    • El controlador NVMe-TCP (NVMe sobre TCP), que us permet accedir a les unitats NVMe a través de la xarxa (NVM Express sobre Fabrics) mitjançant el protocol TCP, ha afegit suport per xifrar el canal de transmissió de dades mitjançant TLS (utilitzant KTLS i un procés en segon pla). a l'espai d'usuari tlshd per a la negociació de la connexió).
    • Es va optimitzar el rendiment del programador de paquets fq (Fair Queuing), que va permetre augmentar el rendiment un 5% amb càrregues pesades a la prova tcp_rr (TCP Request/Response) i un 13% amb un flux il·limitat de paquets UDP.
    • TCP afegeix una capacitat opcional de marca de temps de precisió de microsegons (TCP TS) (RFC 7323), que permet una estimació de latència més precisa i mòduls de control de congestió més avançats. Per habilitar-lo, podeu utilitzar l'ordre "ip route add 10/8 ... features tcp_usec_ts".
    • La pila TCP ha afegit suport per a l'extensió TCP-AO (TCP Authentication Option, RFC 5925), que permet verificar les capçaleres TCP mitjançant codis MAC (Message Authentication Code), utilitzant algorismes més moderns HMAC-SHA1 i CMAC-AES- 128, en canvi, l'opció TCP-MD5 disponible anteriorment basada en l'algoritme MD5 heretat.
    • S'ha afegit un nou tipus de dispositius de xarxa virtual "netkit", la lògica de transferència de dades en la qual s'estableix mitjançant un programa BPF.
    • KSMBD, una implementació a nivell de nucli d'un servidor SMB, ha afegit suport per resoldre noms de fitxers que contenen parells substituts de caràcters compostos.
    • NFS ha millorat la implementació de fils amb serveis RPC. S'ha afegit suport per a la delegació d'escriptura (per a NFSv4.1+). NFSD ha afegit suport per al gestor d'enllaços nets rpc_status. Suport millorat per als clients NFSv4.x quan es reexporta a knfsd.
  • Оборудование
    • S'ha afegit el suport inicial per al firmware GSP-RM al mòdul del nucli Nouveau, que s'utilitza a la GPU NVIDIA RTX 20+ per traslladar les operacions d'inicialització i control de la GPU al costat d'un microcontrolador GSP independent (processador del sistema GPU). El suport GSP-RM permet que el controlador Nouveau funcioni mitjançant trucades de microprogramari, en lloc de programar directament interaccions de maquinari, cosa que fa que sigui molt més fàcil afegir suport per a noves GPU NVIDIA mitjançant trucades preconstruïdes per a la inicialització i la gestió de l'energia.
    • El controlador AMDGPU és compatible amb GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 i DML2. Suport millorat per a la càrrega perfecta (sense parpelleig en canviar el mode de vídeo).
    • El controlador i915 afegeix suport per als xips Intel Meteor Lake i afegeix una implementació inicial d'Intel LunarLake (Xe 2).
    • S'ha afegit suport per a canals de transmissió asimètrics afegit a l'especificació USB4 v2 (120/40G).
    • Suport afegit per a ARM SoC: Qualcomm Snapdragon 720G (utilitzat en telèfons intel·ligents Xiaomi), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (utilitzat en encaminadors i NAS).
    • S'ha afegit suport per al telèfon intel·ligent Fairphone 5 i les plaques ARM Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • S'ha afegit suport per a plaques RISC-V Milk-V Pioneer i Milk-V Duo.
    • S'ha afegit suport per a interfícies de so dels ordinadors portàtils HUAWEI subministrats amb CPU AMD. S'ha afegit suport per a altaveus addicionals instal·lats als ordinadors portàtils Dell Oasis 13/14/16. S'ha afegit suport per als altaveus integrats ASUS K6500ZC. S'ha afegit suport per a l'indicador de silenci als portàtils HP 255 G8 i G10. S'ha afegit suport per als controladors d'àudio acp6.3. S'ha afegit suport per a les interfícies d'enregistrament professional Focusrite Clarett+ 2Pre i 4Pre.

Al mateix temps, la Latin American Free Software Foundation va formar una versió del nucli completament lliure 6.7 - Linux-libre 6.7-gnu, esborrat d'elements de microprogramari i controladors que contenien components o seccions de codi no lliures, l'abast dels quals és limitat. pel fabricant. A la versió 6.7, el codi de neteja de blob s'ha actualitzat en diversos controladors i subsistemes, per exemple, als controladors amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs i btqca. El codi per netejar els controladors localtalk i rtl8192u s'ha eliminat a causa de la seva exclusió del nucli. S'han eliminat components innecessaris per netejar els controladors xhci-pci, rtl8xxxu i rtw8822b, afegits anteriorment per error. S'han netejat els noms de blob als fitxers dts per a l'arquitectura Aarch64. S'han eliminat taques als nous controladors mt7925, tps6598x, aw87390 i aw88399.

Font: opennet.ru

Afegeix comentari