Llançament del nucli Linux 6.11

Després de dos mesos de desenvolupament, Linus Torvalds va publicar el nucli. Linux 6.11. Entre els canvis més destacats: compatibilitat amb operacions d'escriptura atòmiques a nivell de bloc, compatibilitat amb operacions bind() i listen() a io_uring, un nou mecanisme per bloquejar els controladors d'interrupcions de programari, la capacitat d'escriure a executables duplicats en memòria, compatibilitat amb l'escriptura de controladors de dispositius de bloc en el llenguatge Rust, optimització de la crida getrandom() i una nova implementació d'AES-GCM.

La nova versió inclou 15130 correccions de 2078 desenvolupadors, la mida del pedaç és de 85 MB (els canvis van afectar 13282 fitxers, s'han afegit 985857 línies de codi, s'han eliminat 268915 línies). L'última versió tenia 14564 correccions de desenvolupadors de 1989, la mida del pedaç era de 41 MB (la meitat de la mida del pedaç del nucli 6.11). Al voltant del 46% de tots els canvis introduïts a 6.11 estan relacionats amb controladors de dispositiu, aproximadament el 17% dels canvis estan relacionats amb l'actualització de codi específic de les arquitectures de maquinari, el 10% 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.11:

  • Subsistema de disc, E/S i sistemes de fitxers
    • S'ha implementat el suport per a operacions d'escriptura atòmica a nivell de bloc, en què s'escriu tot el conjunt de blocs especificat o cap dels blocs a la unitat, cosa que us permet protegir contra situacions en què, després d'una fallada de maquinari, només una part dels blocs s'escriuen, mentre que la informació antiga es manté a l'altra part. Per habilitar el mode d'escriptura atòmica, s'ha afegit el senyalador RWF_ATOMIC a la crida del sistema pwritev(). La informació sobre el suport d'escriptura atòmica (atomic_write_unit_min, atomic_write_unit_max i atomic_write_segments_max) en relació amb fitxers individuals es pot obtenir mitjançant la funció statx().
    • S'ha proporcionat suport per escriure en fitxers executables associats amb processos en execució. Anteriorment, com en altres sistemes semblants a Unix, el nucli mostrava un error en intentar escriure al fitxer executable d'un procés en execució. Aquesta restricció s'ha eliminat perquè no té sentit pràctic.
    • S'ha implementat la capacitat de desenvolupar controladors de dispositiu de bloc en el llenguatge Rust. Com a exemple, s'ha afegit el controlador rnull al nucli, que és un anàleg del controlador null_blk, escrit en llenguatge Rust.
    • Al sistema de fitxers Btrfs, l'opció de muntatge "rescue=" implementa suport per als nous modes "ignoremetacsums" i "ignoresuperflags", que es poden utilitzar per moure algunes comprovacions a l'espai de l'usuari quan es restaura el FS després d'un error. S'ha refet la implementació de l'operació de grups de blocs de retorn dinàmic per eliminar l'ocurrència d'una situació de manca d'espai lliure quan el sistema de fitxers no està completament ple.
    • El sistema de fitxers ntfs3 admet els atributs "comprimit" i "immutable", que defineixen fitxers comprimits i immutables.
    • Als sistemes de fitxers F2FS i Ext4, el processament dels noms de fitxers que no distingeixen entre majúscules i minúscules (casefold) es simplifica emmagatzemant noms en forma de cadenes qstr sense conversions de majúscules i minúscules innecessàries.
    • Al sistema de fitxers Ext4, la implementació de la funció jbd2_transaction_committed està optimitzada per millorar el rendiment en unitats molt ràpides (en proves, es va observar un augment de les operacions processades per segon de fins a un 20%).
    • La crida al sistema statx() permet passar un punter NULL en lloc d'una cadena buida amb una ruta de fitxer si el senyalador AT_EMPTY_PATH està establert.
    • La crida al sistema open_by_handle_at() ha relaxat les comprovacions de permisos de fitxer en cas de manca d'autoritat CAP_DAC_READ_SEARCH per cercar l'espai de noms inicial. Anteriorment, la necessitat de l'autoritat CAP_DAC_READ_SEARCH a l'espai de noms inicial impedia que la crida al sistema open_by_handle_at() s'utilitzi als contenidors.
    • S'han ampliat les capacitats de les crides al sistema listmount() i statmount(). S'ha afegit el senyalador LISTMOUNT_REVERSE a listmount() per mostrar el contingut de la taula de punts de muntatge en ordre invers (les entrades més recents a la part superior). statmount() implementa la sortida de les opcions establertes en muntar el sistema de fitxers. Les dues trucades al sistema poden funcionar quan no hi ha accés a l'espai de noms inicial (quan només hi ha disponible accés a l'espai de noms local o extern).
    • El Bcachefs FS implementa suport per a la recuperació transparent automàtica de dades problemàtiques mitjançant codis de recuperació d'errors: si es produeix un error d'E/S durant la lectura o es calcula una falta de coincidència de la suma de comprovació, el bloc de dades problemàtic es reescriu automàticament si hi ha redundància per recuperar-lo.
  • Serveis de memòria i sistema
    • La composició inclou pedaços amb la implementació d'un nou mecanisme per bloquejar els controladors d'interrupcions de programari (BH, la meitat inferior), que garanteix el bloqueig de les estructures de dades utilitzades, però no provoca el bloqueig de l'execució paral·lela de codi no relacionat. Cal assenyalar que el canvi va permetre no només reduir la latència dels nuclis que operen en temps real, sinó també augmentar el rendiment dels nuclis convencionals (per exemple, per a alguns tipus de càrrega de treball es va produir un augment del rendiment del subsistema de xarxa). un 14.5%).
    • El subsistema d'E/S asíncrona io_uring ha afegit suport per a operacions per implementar les funcions bind() i listen() utilitzades per crear sòcols de xarxa que acceptin connexions.
    • S'ha afegit un conjunt d'operacions ioctl per al pseudo-FS NSFS (NameSpace FS), utilitzat per treballar amb espais de noms. Els nous ioctls permeten que els identificadors de processos i grups de fils es converteixin entre diferents espais de noms d'identificadors de procés (espai de noms PID). També s'han afegit al pseudo-FS pidfd ioctls similars, que permeten determinar descriptors de fitxers de processos en espais de noms separats basats en identificadors pidfd.
    • Per als programes BPF, s'ha afegit suport per a un nou iterador per treballar amb màscares de bits, que es pot utilitzar, per exemple, per iterar sobre bits individuals en àrees de memòria, com ara cpumask. S'ha afegit un mecanisme per enviar notificacions als processos de l'espai d'usuari que un objecte struct_ops s'ha desvinculat/no registrat. S'ha ampliat el rang de tipus que es poden utilitzar en matrius (per exemple, podeu declarar matrius que tinguin elements amb els tipus kptr, bpf_rb_root i bpf_list_head). S'ha proposat un mecanisme Split BTF (BPF Type Format) més fiable, utilitzat per comprovar els tipus en pseudocodi BPF.
    • S'ha afegit un subsistema que permet organitzar l'alimentació dels dispositius en un ordre determinat, en cas que s'hagi d'activar un dispositiu abans que un altre (per exemple, quan s'activen xips sense fil a les plataformes Qualcomm).
    • S'ha afegit el mòdul "Analitzador lògic Sloppy", que us permet crear analitzadors de senyal lògic senzills que utilitzen GPIO i s'executen en un nucli de CPU independent.
    • S'ha afegit suport per a constants d'execució, que es poden utilitzar en lloc de variables que s'inicialitzen una vegada. Per exemple, es poden utilitzar constants d'execució en lloc de variables que emmagatzemen el punter i la mida de la memòria cau dentry. Aquestes variables s'estableixen en el moment de l'arrencada i després no canvien mai. La idea és substituir els valors d'aquestes variables directament en instruccions del codi, eliminant la sobrecàrrega associada a la manipulació del punter.
    • Continuació de la migració dels canvis des de la branca Rust-for-Linux, relacionat amb l'ús de Rust com a segon llenguatge per al desenvolupament de controladors i mòduls del nucli (la compatibilitat amb Rust no està habilitada per defecte i no inclou Rust com a dependència obligatòria de compilació del nucli). S'ha afegit la compatibilitat amb Rust 1.80 (Rust 1.78 continua sent compatible com a versió mínima). A més de les eines esmentades anteriorment per al desenvolupament de controladors de dispositius de bloc, la nova versió afegeix abstraccions per a la càrrega de firmware, l'accés a l'espai d'usuari (uaccess) i el treball amb l'estructura de "pàgina".
    • Per als sistemes x86-64, s'ha implementat una nova crida al sistema uretprobe() que optimitza el mecanisme de traça uretprobe per fer el seguiment dels valors de retorn de les funcions a les aplicacions d'espai d'usuari.
    • S'han afegit opcions de línia d'ordres del nucli: "reserve_mem" per reservar una àrea de memòria anomenada en el moment de l'arrencada i "ramoops.mem_name" per utilitzar l'àrea de memòria creada mitjançant reserve_mem a la pstore.
    • Al controlador de memòria basat en cgroup, s'ha afegit el paràmetre "swappiness" al fitxer memory.reclaim, mitjançant el qual es determinen la configuració de recuperació de memòria, cosa que us permet canviar l'equilibri entre desplaçar pàgines de memòria anònimes a la secció d'intercanvi i alliberar memòria. pàgines ocupades per la memòria cau de fitxers.
    • S'ha afegit la interfície PROCMAP_QUERY ioctl per cercar de manera més eficient les àrees de memòria virtual a /proc/PID/maps.
    • S'ha afegit el senyalador MAP_DROPPABLE a la crida al sistema mmap() per sol·licitar memòria que mai s'abocarà a la partició d'intercanvi i que es pot eliminar si no hi ha prou memòria.
    • Per a l'arquitectura ARM64, s'ha implementat suport per a la connexió en calent (transferència a modes en línia/fora de línia) de CPU físiques i virtuals en sistemes amb ACPI.
    • Per a l'arquitectura RISC-V, es proporciona suport per a la connexió en calent de la memòria i s'afegeix suport per al connector GCC STACKLEAK (inicialitza totes les variables emmagatzemades a la pila per evitar la fuga d'informació del nucli a través de variables no inicialitzades que poden contenir restes de dades emmagatzemades anteriorment). a la pila).
    • S'ha eliminat el mecanisme fals de mapatge de memòria EFI durant l'arrencada. Aquest mecanisme no s'utilitzava a la pràctica i dificultava els desenvolupaments en l'àrea de l'execució confidencial. màquines virtuals.
    • El suport per a la plataforma PowerPC 40x s'ha interromput.
    • S'han augmentat els requisits per a la versió de GNU Make; almenys es necessita una versió de GNU Make publicada el 2013 per construir el nucli.
  • Virtualització i seguretat
    • Pedaços integrats que acceleren significativament (fins a 15 vegades) l'obtenció de números aleatoris mitjançant la trucada al sistema getrandom(). L'optimització es basa en l'ús del mecanisme vDSO (objecte dinàmic virtual compartit), que permet moure el controlador de trucades del sistema del nucli a l'espai d'usuari i evitar canvis de context. Carregant la implementació d'una crida al sistema a l'espai d'adreces del procés directament pel nucli.
    • Per als sistemes x86-64, s'inclou una nova implementació de l'algoritme de xifratge AES-GCM, que admet l'ús d'instruccions vectorials VAES, VPCLMULQDQ i AVX512/AVX10 per a un càlcul més ràpid. En les proves realitzades, l'augment de rendiment després de canviar a la nova implementació arriba al 156%. La implementació del llenguatge assemblador d'AES-GCM s'ha reescrit completament tenint en compte la correcció, el rendiment, la mida i la documentació completa del codi.
    • S'ha implementat la capacitat d'executar el nucli com a sistema convidat en entorns virtualitzats mitjançant l'extensió del processador AMD SEV-SNP (Secure Nested Paging), dissenyada per garantir un funcionament segur amb taules de pàgines de memòria imbricades. El mòdul SVSM es pot utilitzar per a un aïllament addicional de l'accés als recursos des de màquines virtuals (Linux Mòdul de servei de màquina virtual segura). A l'hipervisor KVM S'ha afegit compatibilitat inicial per executar sistemes convidats protegits per AMD SEV-SNP.
    • S'ha afegit un distribuïdor de lloses de galleda independent, habilitat mitjançant el paràmetre CONFIG_SLAB_BUCKETS i que proporciona protecció contra atacs mitjançant la tècnica de "polverització en pila".
    • S'ha afegit una trucada ioctl a l'hipervisor KVM per assignar memòria de manera proactiva al sistema convidat abans que s'iniciï realment.
  • Subsistema de xarxa
    • S'ha afegit el paràmetre sysctl net.tcp_rto_min_us, mitjançant el qual podeu configurar el temps d'espera de retransmissió mínim per als sòcols TCP.
    • S'ha afegit a la utilitat ethtool la possibilitat d'ajustar la configuració dels controladors d'interrupcions per a les interfícies de xarxa mitjançant la interfície Net DIM.
  • Оборудование
    • El controlador AMDGPU inclou suport inicial per a les GPU AMD RDNA4 ("GFX12"). S'ha afegit compatibilitat amb les tecnologies DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 i MMHUB 4.1.
    • Es va continuar treballant en el controlador Xe drm (Direct Rendering Manager) per a GPU basat en l'arquitectura Intel Xe, que s'utilitza a les targetes de vídeo de la família Intel Arc i gràfics integrats, començant pels processadors Tiger Lake. Suport millorat per a les GPU basades en microarquitectures Battlemage, Arrow Lake i Lunar Lake.
    • Al subsistema DRM (Direct Rendering Manager), s'ha reescrit el controlador dels paràmetres EDID (Extended Display Identification Data) establerts pel monitor.
    • El controlador i915 afegeix suport per a les GPU Battlemage Xe2 i activa el mode CMRR (Content Match Refresh Rate) de manera predeterminada.
    • S'ha afegit suport per a la plataforma SM7150 i la GPU X185 i a505 al controlador msm DRM (Qualcomm Adreno GPU).
    • S'ha afegit suport per a Lincoln Tech Sol LCD185-101CT, Microtips Technology 13-101HIEBCAF0-C, Microtips Technology MF-103HIEB0GA0, BOE nv110wum-l60, IVO t109nw41, WL-355608-A8, PrimeView PM070L4, panells de pantalla LCD de Lincoln Or197WL35 3ULC ,AUO G70STN104, K&d kd01ne101-3ti.
    • El subsistema d'àudio afegeix suport per a Intel Panther Lake, Asahi Kasei AK4619, Cirrus Logic CS530x, Everest Semiconductors ES8311, NXP i.MX95, LPC32xx, Qualcomm LPASS v2.5, WCD937x, Realtek RT1318, i xips Texas Instruments PCM1320 i xips RT5242.
    • S'ha fet l'última ronda de canvis per donar suport al SoC ARM Snapdragon X Elite, que utilitza la CPU Oryon de 12 nuclis de Qualcomm i la GPU Qualcomm Adreno. El xip està pensat per utilitzar-lo en ordinadors portàtils i ordinadors, i està per davant dels xips Apple M3 i Intel Core Ultra 155H en moltes proves de rendiment. Els canvis afegits al nucli 6.11 estan relacionats amb el suport de la GPU Adreno X1-85 i la gestió de l'energia. Entre els dispositius basats en el SoC Snapdragon X Elite, s'anuncia el suport per a portàtils ASUS Vivobook S15 i Lenovo Yoga Slim7x.

Al mateix temps, la Fundació Llatinoamericana de Programari Lliure va crear una versió completament gratuïta del nucli 6.11 - Linux-libre 6.10-gnu, netejat d'elements de firmware i controlador que contenen components no lliures o seccions de codi amb un abast limitat pel fabricant. La versió 6.11 inclou un codi actualitzat de neteja de blobs als controladors mdgpu, adreno, vgxy61, atomisp, btnxpuart, prueth i tas2781. Netejats els nous controladors amdgpu isp, tn40, rtl8192du, cs40l50, rt1320 i pcie-rcar-gen4. S'han netejat els noms de blobs als fitxers dts (devicetree) per a l'arquitectura Aarch64. S'ha afegit una versió silenciosa de les primitives de càrrega de firmware (nowait-nowarn). S'ha afegit codi per detectar primitives de càrrega de firmware al codi Rust.

Font: opennet.ru

Compreu allotjament fiable per a llocs amb protecció DDoS, servidors VPS VDS 🔥 Compra allotjament web fiable amb protecció DDoS, servidors VPS VDS | ProHoster