După două luni de dezvoltare, Linus Torvalds a prezentat lansarea nucleului Linux 6.19. Printre cele mai notabile schimbări se numără: subsystemul Live Update Orchestrator, suport pentru PCIe Link Encryption, apelul de sistem listns, modul Zero-Copy Receive în io_uring, suport pentru extensia ARM MPAM, klp-build pentru generarea patch-urilor live, suport pentru arhitectura LoongArch32, QoS pentru s2idle, optimizarea subsystemului de audit, Intel LASS pentru protecția împotriva Spectre, suport pentru hash-urile SHA-3 și BLAKE2b, mecanismul Confidential VMBus, optimizările TX în subsistemul de rețea, protocolul CAN XL, API pentru accelerarea hardware a ieșirii HDR.
În anunțul noii versiuni, Linus a declarat că următoarei versiuni a nucleului îi va fi atribuit numărul 7.0, deoarece în ramura 6.x s-au acumulat suficiente versiuni pentru a schimba prima cifră din numărul versiunii (la momentul respectiv, versiunea 6.0 a fost formată după 5.19). Schimbarea numerotării are loc din motive estetice și este un pas formal care elimină disconfortul cauzat de acumularea unui număr mare de versiuni în serie. Linus a glumit că îl derutează numerele mari pentru care nu îi ajung degetele de la mâini și de la picioare. Totuși, există formal un motiv pentru o schimbare semnificativă a numărului versiunii, deoarece începând cu următoarea versiune va fi mutată suportul Rust s-a rezolvat din caracteristici experimentale în funcționalitățile de bază ale nucleului.
Noua versiune a înglobat 15657 de corecții de la 2237 de dezvoltatori, dimensiunea patch-ului fiind de 52 MB (schimbările au afectat 13682 de fișiere, au fost adăugate 794649 de linii de cod, iar 335498 de linii au fost șterse). În versiunea anterioară au fost 15035 de corecții de la 2217 de dezvoltatori, iar dimensiunea patch-ului a fost de 45 MB. Aproape 40% din toate modificările prezentate în 6.19 sunt legate de driverele de dispozitive, aproximativ 13% se referă la actualizarea codului specific arhitecturilor hardware, 12% sunt legate de stiva de rețea, 5% se referă la sistemele de fișiere, iar 3% la subsistemele interne ale nucleului.
Principalele noutăți din nucleul 6.19 (1, 2, 3):
- Subsistemul de disc, I/O și sistemele de fișiere
- În Btrfs procesele de verificare a FS (scrub) și înlocuirea dispozitivelor nu mai blochează trecerea sistemului în modul de repaus (înainte de a adormi, starea verificării scrub este salvată; după ieșirea din modul de repaus, verificarea scrub continuă, iar operațiunea de înlocuire a dispozitivelor este reluată). În implementarea RAID56 a fost adăugat suport pentru blocuri al căror dimensiune depășește dimensiunea paginii de memorie. A fost realizată o pregătire pentru suportul fscrypt. Performanța lucrului cu blocările în timpul operațiunilor legate de rezervarea locului a fost îmbunătățită. Adăugat suport pentru operația ioctl shutdown, care permite transferarea FS într-o stare în care se încearcă finalizarea operațiunilor deja inițiate, dar sunt blocate toate operațiunile noi.
- În sistemul de fișiere Ext4 sistemul de compozitare suport pentru blocuri de dimensiuni mai mari decât dimensiunea paginii de memorie (>4KB pe sistemele x86). Utilizarea blocurilor mari permite crește performanța operațiunilor de scriere în buffer cu aproximativ 50%, dar reduce performanța introducerii directe datorită creșterii timpului de calcul al sumelor de control. În noua versiune de asemenea au fost adăugate optimizările au crescut lățimea de bandă în timpul desfășurării online a defragmentării.
- În subsistemul FUSE a fost îmbunătățit suportul pentru citirea bufferizată utilizând mari folii mari de memorie (folio-uri mari). Prin iomap s-a realizat posibilitatea urmăririi folio-urilor parțial actualizate pentru a descărca doar datele lipsă din buffer.
- În VFS a fost adăugat suport pentru delegarea revocabilă a controlului directorului, permițând realizarea în NFS transmiterea controlului directorului de la server la client, astfel încât clientul NFS să urmărească de sine stătător starea directorului pe baza cache-ului local, fără a apela la serverul NFS. Dacă un alt client NFS efectuează modificări legate de acest director, delegarea controlului va fi revocată de la primul client.
- Pentru NFS a fost adăugată suport pentru citire în modul de introducere directă (direct I/O). Au fost implementate setările /sys/kernel/debug/nfsd/io_cache_read și /sys/kernel/debug/nfsd/io_cache_write pentru gestionarea activării cache-ului și operațiunilor de introducere directă, manipularea acestor setări permite reducerea cheltuielilor de gestionare pe partea clientului NFS în timpul desfășurării operațiunilor mari de introducere / ieșire.
- În NTFS a fost implementat suport pentru operația ioctl shutdown, sunt incluse implicit opțiunile de montare acl și prealloc, a fost adăugat suport pentru data până la 1 ianuarie 1970.
- Pentru dispozitive bloc și FS activat implicit caching-ul obiectelor „bio” (Block I/O), care definesc operațiile active de introducere / ieșire.
- Memorie și servicii de sistem
-
În nucleu sistemul de compozitare subsystema Live Update Orchestrator (LUO), care permite repornirea și actualizarea completă a nucleului fără a întrerupe operațiunile și fără a pierde starea sistemului, dispozitivelor și proceselor. Subsystema LUO se bazează pe mecanismul anterior adăugat în nucleu. KHO (Kexec HandOver) și, în plus față de capacitatea de a lansa un nou nucleu dintr-un vechi fără a pierde starea sistemului, rezolvă probleme precum salvarea stării dispozitivelor și a memoriei operaționale, precum și asigurarea continuității operațiunilor legate de DMA și gestionarea întreruperilor. Starea este salvată până la comutarea pe noul nucleu și este restaurată după activarea noului nucleu, fără a perturba operațiunile continue cu dispozitivele efectuate de sistem și aplicații în spațiul utilizatorului.
-
Adăugat apelul de sistem listns() pentru a afișa lista spațiilor de nume existente în sistem fără a fi necesară parcurgerea /proc//ns/ pentru toate procesele.
Sistemului de intrare/ieșire asincronă io_uring i s-a adăugat suport pentru plasarea elementelor de dimensiuni diferite în coada de trimitere (SQE, Submission Queue Entry), similar cu modul în care în versiunea anterioară s-a permis amestecarea dimensiunii conținutului cozii de rezultate (CQE, Completion Queue Event). Până acum toate elementele din coadă trebuiau să aibă aceeași dimensiune, ceea ce ducea la un consum excesiv de memorie din cauza necesității de a folosi dimensiunea maximă pentru toate elementele din coadă.
În io_uring a fost, de asemenea, adăugat suport pentru mecanismul zcrx (Zero-Copy Receive) pentru primirea datelor fără copiere între nucleu și spațiul utilizatorului. A fost adăugat suport pentru cererile de dispunere a memoriei pentru cozile SQ (Submission Queue) și CQ (Completion Queue), permițând obținerea informațiilor despre dimensiunea buffer-ului circular necesar în cazul alocării de memorie de către utilizatori, folosind flag-urile IORING_SETUP_NO_MMAP și IORING_MEM_REGION_TYPE_USER.
Pentru urmărirea rapidă a stivei cu ajutorul utilitarilor, cum ar fi perf, a fost adăugat suport pentru formatul SFrame cu informații despre desfășurarea stivei apelurilor (unwind). SFrame este deja suportat în GCC și binutils, nu duce la scăderea performanței și, spre deosebire de formatul DWARF, conține doar un set minim de informații necesare pentru urmărirea stivei.
-
În utilitarul perf a fost adăugată suport pentru descrieri unificate ale metodelor și evenimentelor în format JSON, precum și desfășurarea întârziată (deferred unwinding) a stivei apelurilor în spațiul utilizatorului.
Pentru procesorilor AMD a fost implementat un mecanism de substituire a datelor în cache, permițând dispozitivelor de intrare/ieșire să înlocuiască direct datele în cache-ul L3 al CPU-ului fără a le plasa anterior în RAM.
A fost adăugat suport pentru MPAM (Partitionarea și monitorizarea resurselor din sistemul de memorie), extensiile arhitecturii setului de comenzi ARMv8-A pentru etichetarea fiecărei cereri de memorie cu un identificator de secțiune (PARTID, Partition ID) și un identificator de grup de monitorizare (PMG, Monitoring Group ID). În legătură cu PARTID se poate restricționa consumul de resurse, cum ar fi lățimea de bandă a memoriei sau dimensiunea cache-ului, pentru a preveni ca un grup de sarcini să ocupe toate resursele. În contextul monitorizării, combinația PMG și PARTID poate fi utilizată pentru a urmări consumul de resurse de memorie în anumite tipuri de sarcini.
În cazul în care un proces se încheie din cauza unui semnal, un alt proces, care are pidfd-ul procesului încheiat, poate determina acum numărul semnalului care a dus la încheierea procesului.
A fost reworking implementarea secvențelor reîntoarcerii (restartable sequences), permițând aplicațiilor să organizeze o execuție pseudo-atomică și neîntreruptă a unui grup de instrucțiuni (în cazul întreruperii de către un alt fir, se va face o nouă încercare de execuție a secvenței). Noua implementare se distinge printr-o performanță superioară.
-
Pentru a programelor BPF implementate instrucțiunile BPF_JMP, BPF_X și BPF_JA pentru a efectua sărituri indirecte către o anumită poziție din tabela de sărituri. A fost adăugată conceptul de pointere dinamice (dynptr), care permit citirea datelor din fișiere structurate. Adăugat posibilitatea de a atașa la pachetele de rețea mai mulți octeți cu metadate.
Modulele scrise în Python, utilizate pentru procesarea documentației nucleului, au fost mutate în directoare separate tools/lib/python.
-
Funcție adăugată mempool_alloc_bulk() pentru alocarea în siguranță a elementelor dintr-un pool de memorie pentru mai multe obiecte simultan.
-
Continuat transferul modificărilor din ramura Rust-for-Linux, legate de utilizarea limbajului Rust ca al doilea limbaj pentru dezvoltarea driverelor și modulelor nucleului (suportul pentru Rust nu este activat în mod implicit și nu face ca Rust să fie o dependență obligatorie de compilare pentru nucleu). În noua versiune, în nucleu încorporată biblioteca „syn” cu parser pentru cod Rust, simplificând scrierea de macro-uri complexe. Funcționalitățile bibliotecilor kernel, pin-init și rbtree au fost extinse. A fost adăugată biblioteca num cu tipologia Integer pentru manipularea numerelor întregi. În macro-ul module! s-a adăugat suport pentru parametrii întregi. A fost implementată posibilitatea de a specifica parametrii în timpul încărcării modulelor nucleului scrise în Rust. S-au realizat aberații pentru subsistemul I2C și PWM (Modulația lățimii impulsului).
-
Adăugat macro at_least (de exemplu, param[at_least 7], care indică dimensiunea minimă acceptabilă a array-ului transmis funcției. Dacă se transmite un array cu un număr mai mic de elemente, compilatorul va emite o avertizare.
-
Include inclus scriptul klp-build pentru generarea modulelor nucleului, care aduc modificări în kernelul aflat în funcțiune (livepatch), pe baza unui fișier cu patch. Au fost aduse modificări utilitarului objtool necesare pentru a crea live-patch-uri.
-
În Linux în modul utilizator (rulează nucleul ca un proces de utilizator) a adăugat suport limitat pentru multiprocesare, dar firele dintr-un singur proces nu pot fi executate simultan. A început portarea Linux în modul utilizator pe biblioteca nolibc.
-
Adăugat suport pentru arhitectura LoongArch32 (LA32R, LA32S) pe lângă LoongArch64.
-
Adăugat posibilitatea de a stabili limite QoS pentru intensitatea de trezire a procesorului în modul de economisire a energiei s2idle (Suspend-To-Idle), care îngheață execuția proceselor din spațiul utilizatorului, dar lasă active anumite gestionare în kernel.
-
Adăugat suport pentru gestionarea tablourilor de pagină a memoriei pentru controlere IOMMU (Unitatea de gestionare a memoriei de intrare-ieșire), care efectuează translația adreselor virtuale vizibile dispozitivului hardware în adrese fizice, cu capacitatea de a filtra operațiunile DMA pe baza adreselor virtuale și de a restricționa și izola operațiunile de intrare-ieșire.
În evenimentele de urmărire a apelurilor de sistem a fost realizată posibilitatea de a citi buffere din spațiul utilizatorului și de a include conținutul lor (de exemplu, numele fișierelor) în rezultatul urmăririi.
-
**Pagini de protecție a memoriei(( (guard page), accesarea cărora cauzează o excepție și o încheiere anormală a procesului (SIGSEGV), acum sunt marcate cu un indicator special în fișierul /proc/PID/smaps.
-
Adăugat posibilitatea de a gestiona pagini mari de memorie (transparent huge page) în memoria privată a dispozitivelor zonate.
-
În dispozitivul zram, utilizat pentru stocarea comprimată a segmentului de swap în memorie, a fost implementată suport pentru eliminarea mai multor structuri «bio» (Block I/O) în modul batch (writeback batching).
A fost inclus fontul «Terminus 10×18», care îmbunătățește lizibilitatea informațiilor de pe consolă pe ecranele laptopurilor cu o rezoluție medie (1440×900).
-
Substanțial a fost optimizată la subsystemele de audit — se observă o reducere a costurilor de overhead cu până la jumătate.
-
- Virtualizare și securitate
- A fost adăugat suport pentru funcționalitatea oferită de procesoarele Intel pentru împărțirea separării liniarului spațiu de adrese (LASS, liniară separație a spațiului de adrese), care permite divizarea hardware a intervalelor de adrese între spațiul utilizatorului și nucleu pentru a îmbunătăți securitatea. Spațiul de adrese este împărțit pe baza bitului cel mai semnificativ al adresei - jumătate din spațiul de adrese cu bitul cel mai semnificativ setat este folosit pentru nucleu, iar partea de jos este pentru spațiul utilizatorului. La o etapă timpurie a execuției instrucțiunilor (în faza anterioară execuției speculative) se efectuează verificarea validității accesului din spațiul utilizatorului la adresele cu bitul cel mai semnificativ setat și invers. Această separare permite blocarea scurgerilor de memorie din nucleu în spațiul utilizatorului prin canale externe chiar și în timpul execuției speculative a instrucțiunilor, ceea ce permite aplicarea LASS pentru protecția împotriva atacurilor de tip Meltdown și Spectre, fără a genera costuri mari.
- A fost adăugată posibilitatea de activare extensiilor îmbunătățirea securității magistralei PCI Express – PCIe Link Encryption și PCIe Device Authentication, care permit autenticarea și criptarea canalului de comunicare între dispozitivul PCIe și mașina virtuală, protejată prin mecanismele Intel TDX (Trusted Domain Extensions) și AMD SEV-SNP (Secure Nested Paging). Tehnologiile implementate nu permit interceptarea, analiza și substituirea datelor în traficul DMA în cazul în care există acces la sistemul gazdă sau alte dispozitive.
- În biblioteca criptografică încorporată a fost adăugată suport pentru algoritmii SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512), SHAKE128, SHAKE256 și BLAKE2b.
- Pentru modulele LSM (Linux Security Modules) și, în special, pentru SELinux, a fost implementată posibilitatea de a urmări crearea descriptorilor memfd pentru aplicarea politicilor de securitate la obiectele asociate.
- În modulul LSM IPE (Integrity Policy Enforcement), a fost adăugat suport pentru flagul AT_EXECVE_CHECK în funcția execveat(), care include verificarea integrității scriptului înainte de a fi executat de interpret.
- Au fost adăugate primitivele scoped_user_read_access(), scoped_user_write_access și scoped_user_rw_access() pentru accesul limitat la date în spațiul utilizatorului cu protecție atacuri speculative.
- Adăugat suport pentru mecanismul Confidential VMBus, utilizat în hypervisorul HyperV pentru interacțiunea protejată de intervenții între sistemul gazdă, operând în modul confidențial (cu criptarea memoriei și izolarea registrelor bazate pe tehnologiile AMD SNP și Intel TDX), și paravisorul responsabil pentru accesarea dispozitivelor ce procesează date confidențiale.
- Adăugat posibilitatea de a transmite informații despre un proces care s-a încheiat neașteptat (pentru generarea de coredump) prin mecanismul pidfd. Identificatorul PIDFD este legat de un proces specific și nu se schimbă, în timp ce PID-ul poate fi asociat cu un alt proces după încheierea procesului curent asociat cu acest PID. Utilizarea pidfd permite blocarea efectuării atacurilor substituției procesului suid încheiat neașteptat cu alt proces, obținând o stare de competiție în momentul după ce kernelul a început procesarea erorii, dar înainte de verificarea parametrilor procesului de către handler în spațiul utilizatorului.
- Subsystema de rețea
- În subsistema de rețea s-au adus optimizărilor pentru îmbunătățirea eficienței transferului de date (TX). Eliminarea blocării spin din funcția __dev_queue_xmit() și utilizarea unei structuri llist fără blocări a permis să crească performanța de 4 ori sub sarcină mare și să dubleze intensitatea trimiterii pachetelor în condiții de sarcină redusă pe CPU.
- A fost adăugată posibilitatea a pentru socket-uri de rețea individuale, limitele sistemului asupra utilizării memoriei (în acest caz, vor fi utilizate limitele comune de memorie stabilite pentru containerele individuale). Pentru gestionarea dezactivării acestor limite, a fost propus sysctl net.core.bypass_prot_mem și flacul SK_BPF_BYPASS_PROT_MEM în funcția bpf_setsockopt.
- Adăugat Web Authentication API RFC 5837, adăugând în mesajele ICMP Time Exceeded, returnate la expirarea timpului de viață (TTL) al pachetului, informații despre interfețele de rețea, pentru a obține informații mai detaliate în timpul trasării rutei cu utilitarul traceroute.
- Adăugat suport pentru polling activ continuu (busy polling) într-un fir de execuție kernel separat, cu scopul de a extrage descriptorii din cozile RX/TX pentru aplicații care necesită întârzieri minime.
- A fost adăugată suport pentru protocolul CAN XL (Controller Area Network eXtended Length), în care dimensiunea câmpului de date a fost crescută la 2048 de octeți pentru a asigura integrarea cu rețelele TCP/IP, a fost implementată posibilitatea tunelării cadrelor Ethernet și a fost adăugat suport pentru modulația prin lățime de impuls., care a permis transmiterea de date la viteze de 20 Mbps și mai mult.
- Adăugat suport pentru structură sockaddr_unsized, variantă a structurii sockaddr, care utilizează un array cu elemente flexibile în loc de un array de dimensiune fixă (sa_data[] în loc de sa_data[14], care era utilizat în principal pentru referințe la alte structuri de dimensiuni mai mari).
- A fost adăugată capacitatea de a utiliza funcționalitatea getsockname și getpeername prin subsistemul io_uring.
- Au fost adăugate sysctl net.ipv4.tcp_rcvbuf_low_rtt și net.ipv4.tcp_comp_sack_rtt_percent pentru optimizarea TCP.
- Adăugat suport pentru linkuri cu lățimi de bandă de 1600 Gbps (1.6T).
- Echipament
- În subsistemul DRM (Direct Rendering Manager) a fost adăugat un API pentru a utiliza capabilitățile hardware de conversie a culorilor, permițând evitarea efectuării acestor transformări prin shader-e sau executarea codului pe CPU. Pentru redarea conținutului pe un monitor HDR, conversiile complexe de culori pot fi acum realizate de controlerul de afișare în etapele de dinainte și după amestecarea straturilor (blending), în loc de compunerea programatică a conținutului în bufferul final de redare. Pe lângă reducerea costurilor indirecte și a consumului de energie la organizarea redării în HDR, funcționalitatea propusă poate fi utilizată pentru o redare corectă a culorilor în editorii de video sau imagini.
- Adăugat driver ethosu pentru NPU Arm Ethos U65 și U85, destinate acceleratorului hardware al execuției modelelor AI.
- În driverul i915 pentru GPU Lunar Lake și mai recent, a fost adăugat suport pentru îmbunătățirea hardware a clarității imaginii (Sharpening).
- Continuarea lucrări la driverul drm (Direct Rendering Manager) Xe pentru GPU bazat pe arhitectura Intel Xe, care este utilizată în plăci grafice Intel din familia Arc și grafică integrată, începând de la procesoarele Tiger Lake. A fost adăugat suport inițial pentru arhitectura Xe3P, utilizată în GPU Crescent Island și familiei de procesoare cu grafică integrată Nova Lake.
- În driverul AMDGPU a fost implementat suport complet pentru plăcile grafice AMD din familia GCN 1.0 „Southern Island” și 1.1 „Sea Islands”, pentru care anterior era folosit driverul Radeon. Driverul AMDGPU a fost adus la paritate cu capacitățile driverului Radeon și activat pentru GPU-urile specificate în mod implicit. Plăcile GCN 1.x au fost produse între 2012 și 2019 și includ modele precum Radeon HD 77xx/78xx/79xx/87xx/88xx/89xx, Radeon R9 280, FirePro W4000-W9000, Radeon Sky 700/900, Radeon R9 265/270/370, Radeon R9 290/390, HD 7790/8870 și alte plăci grafice din familiile Radeon Rx 200/Rx 300. Pe lângă creșterea performanței, în medie, cu 24%, trecerea la AMDGPU a permis implementarea suportului pentru API-ul grafic Vulkan 1.3. În plus, AMDGPU a adăugat suport pentru conectori analogici și Video Coding Engine 1.0, iar stack-ul DC (Display Core) este utilizat implicit pentru GPU-urile bazate pe microarhitectura Bonaire (Radeon HD 7790).
- În driverul Nouveau a fost implementată suport pentru acceleratorul hardware NVJPG, prezent în SoC Tegra210.
- În driverul Panthor a fost adăugată suport pentru GPU Mali-G1 și suport inițial pentru chip-ul MediaTek MT8196.
- Adăugat suport pentru subsistemul audio al chip-urilor Intel Nova Lake S, laptopuri HP cu HDA CS35L41, precum și interfețe audio CIX IPBLOQ HD și Onkyo SE-300PCIE.
- Continuarea integrării componentelor driverului Nova pentru GPU-uri NVIDIA echipate cu firmware GSP, utilizate începând cu seria NVIDIA GeForce RTX 2000 bazată pe microarhitectura Turing. Driverul este scris în limbajul Rust. În noua versiune a început lucrul la RPC și finalizată implementarea încărcării coprocessorului GSP (GPU System Processor).
- Adăugat suport pentru plăci ARM, SoC și dispozitive: Bananapi r4 pro, LinkEase EasePi R1, Qualcomm MSM8937 (Snapdragon 430), Renesas R-Car X5H, FriendlyElec NanoPi R76S, TI AM62L, Black Sesame Technologies C1200, Aspeed AST2600, Genio 1200 EVK, grinn geniosbc-510/700, Tanix TX9 Pro, Radxa Dragon Q6A, Tinker Board 3/3S, Aquila AM69, phyBOARD-Segin-i.MX91, i.MX 95 Verdin Evaluation Kit, Toradex SMARC iMX95, VIDIA Jetson Nano 2GB, Renesas rz/g3s, Indiedroid Nova, 24 variante de plăci Enclustra Mercury.
- Adăugat suport pentru smartphone-uri și tablete bazate pe SoC Mediatek MT6582 (Alcatel yarisxl), Nvidia Tegra124 (Xiaomi Mi Pad) și Qualcomm MSM8939 (ASUS ZenFone 2). Adăugat suport pentru laptopuri cu SoC Qualcomm sdm850, cum ar fi Huawei MateBook E 2019.
- Adăugat suport pentru SoC-uri și plăci bazate pe arhitectura RISC-V: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.
În același timp, fundația latino-americană a software-ului liber a formulat o variantă nucleu complet liber 6.19 — Linux-libre 6.19-gnu, curățat de elemente de firmware și drivere care conțin componente sau porțiuni de cod ne-libere, ale căror utilizări sunt restricționate de producător. În versiunea 6.19, din subsistemul audio SDCA a fost eliminat codul pentru încărcarea firmware-urilor binare. A fost actualizat codul de curățare a blob-urilor în driverele Intel XE, Nova-Core, Qualcomm Iris, Venus și Q6V5, TI PRUeth, Intel iwlwifi, Marvell mwifiex, FourSemi fs210x, Realtek rt1320 și codec-uri audio TI tas2783. A fost realizată curățarea numelui blob-urilor în fișierele dts (devicetree) pentru chip-urile ARM. Curățarea driverului STM C8SECTPFE DVB, eliminat din nucleu, a fost oprită.
Sursa: linux.org.ru
