Linux 5.1 nüvə buraxılışı

İki aylıq inkişafdan sonra Linus Torvalds təqdim etdi kernel buraxılışı Linux 5.1. Ən diqqət çəkən dəyişikliklər arasında: asinxron I/O io_uring üçün yeni interfeys, NVDIMM-dən RAM kimi istifadə etmək imkanı, Nouveau-da paylaşılan virtual yaddaşa dəstək, fanotify vasitəsilə çox böyük fayl sistemlərinin miqyaslana bilən monitorinqinə dəstək, Zstd sıxılmasını konfiqurasiya etmək imkanı Btrfs-də səviyyələr, yeni cpuidle TEO işləyicisi, 2038 problemini həll etmək üçün sistem çağırışlarının həyata keçirilməsi, initramfs olmadan cihaz-mapper cihazlarından yükləmə imkanı, SafeSetID LSM modulu, birləşdirilmiş canlı yamalar üçün dəstək.

Əsas yeniliklər:

  • Disk alt sistemi, giriş/çıxış və fayl sistemləri
    • Asinxron I/O üçün yeni interfeys tətbiq olundu - io_uring, I/O sorğusunu dəstəkləməsi və buferləmə ilə və ya bufersiz işləmək qabiliyyəti ilə diqqət çəkir. Xatırladaq ki, əvvəllər təklif edilən asinxron I/O mexanizmi “aio” buferləşdirilmiş I/O-nu dəstəkləmirdi, yalnız O_DIRECT rejimində (buferləmə və keşdən yan keçmədən) işləyə bilirdi, metadataların mövcudluğunu gözləmək səbəbindən kilidləmə ilə bağlı problemlər var idi və yaddaşda məlumatların surətini çıxarmaq səbəbindən böyük qaimə xərclərini nümayiş etdirdi.

      API daxilində
      io_uring tərtibatçıları köhnə aio interfeysinin çatışmazlıqlarını aradan qaldırmağa çalışdılar. By məhsuldarlıq io_uring çox yaxındır SPDK və səsvermənin aktivləşdirilməsi ilə işləyərkən libaio-dan əhəmiyyətli dərəcədə irəlidədir. İstifadəçi məkanında işləyən son proqramlarda io_uring-dən istifadə etmək üçün kitabxana hazırlanmışdır liburing, nüvə interfeysi üzərində yüksək səviyyəli çərçivə təmin edən;

    • FS fanotify()-də hadisə izləmə mexanizmində əlavə etdi superblok və struktur dəyişikliyi vəziyyətlərini izləmək üçün dəstək dirent (kataloqların yaradılması, silinməsi və köçürülməsi hadisələri). Təqdim olunan xüsusiyyətlər inotify mexanizmindən istifadə edərək çox böyük fayl sistemlərində rekursiv dəyişikliklərin izlənilməsi zamanı yaranan genişlənmə problemlərini həll etməyə kömək edir (birbaşa dəyişikliklər əvvəllər yalnız inotify vasitəsilə izlənilə bilərdi, lakin
      böyük daxili qovluqların rekursiv izlənilməsi şəraitində performans çox arzuolunmazdır). İndi belə monitorinq fanotify vasitəsilə effektiv şəkildə həyata keçirilə bilər;

    • Btrfs fayl sistemində əlavə etdi zstd alqoritmi üçün sıxılma səviyyəsini fərdiləşdirmək imkanı, bu, sürətli, lakin təsirsiz lz4 və yavaş, lakin yaxşı sıxılma xz arasında optimal kompromis hesab edilə bilər. zlib istifadə edərkən sıxılma səviyyəsini təyin etməyin əvvəllər necə mümkün olduğuna bənzətməklə, zstd üçün “-o compress=zstd:level” montaj seçimi üçün dəstək əlavə edilmişdir. Test zamanı minimum birinci səviyyə 2.658 MB/s sıxılma sürəti, 438.47 MB/s sıxılma sürəti və 910.51 MB yaddaş istehlakı ilə məlumatların sıxılmasını 780 dəfə, maksimum səviyyə 15 isə 3.126 dəfə, lakin sıxılma ilə təmin etdi. sürət 37.30 MB/s, qablaşdırma 878.84 MB/s və yaddaş sərfiyyatı 2547 MB;
    • Əlavə edilib initramfs istifadə etmədən cihaz-mapper cihazında yerləşən fayl sistemindən yükləmə imkanı. Cari nüvə buraxılışından başlayaraq, cihaz-mapper cihazları yükləmə prosesi zamanı birbaşa istifadə edilə bilər, məsələn, kök fayl sistemi ilə bir bölmə kimi. Bölmə "dm-mod.create" açılış parametrindən istifadə edərək konfiqurasiya edilir. Yükləməyə icazə verilən cihaz-mapper modullarına aşağıdakılar daxildir: “kript”, “gecikmə”, “xətti”, “snapshot-mənşəyi” və “verity”;
    • F2FS_NOCOW_FL bayrağı Flash disklərə yönəlmiş F2FS fayl sisteminə əlavə edilmişdir ki, bu da verilmiş fayl üçün kopyalama-yazma rejimini söndürməyə imkan verir;
    • Fayl sistemi nüvədən silindi ExofsOSD (Obyekt əsaslı Saxlama Cihazı) obyekt anbarları ilə işləmək üçün uyğunlaşdırılmış ext2 variantı olan . Bu cür obyekt saxlama cihazları üçün SCSI protokoluna dəstək də silindi;
  • Virtuallaşdırma və Təhlükəsizlik
    • Seçilmiş proses üçün təlimatların spekulyativ icrasına nəzarət etmək üçün prctl()-ə PR_SPEC_DISABLE_NOEXEC seçimi əlavə edildi. Yeni seçim, Spectre hücumu ilə potensial olaraq hücuma məruz qala biləcək proseslər üçün spekulyativ icranı seçmə şəkildə söndürməyə imkan verir. Kilid exec();
    • Tətbiq edilmiş LSM modulu SafeSetID, bu, sistem xidmətlərinə imtiyazları artırmadan (CAP_SETUID) və kök imtiyazları əldə etmədən istifadəçiləri təhlükəsiz idarə etməyə imkan verir. İmtiyazlar etibarlı bağlamaların ağ siyahısına ("UID1:UID2" formasında) əsaslanan təhlükəsizlik sənədlərində qaydaları müəyyən etməklə təyin edilir;
    • Təhlükəsizlik modullarının (LSM) stek əsasında yüklənməsi üçün tələb olunan aşağı səviyyəli dəyişikliklər əlavə edildi. Hansı modulların yükləndiyini və hansı ardıcıllıqla yükləndiyini idarə etmək üçün "lsm" kernel açılış variantını təqdim etdi;
    • Fayl adları üçün dəstək audit alt sisteminə əlavə edilmişdir;
    • Genişləndirilmiş yaddaş məzmununun potensial sızmalarını bloklamağa imkan verən GCC plagininin imkanları structleak.Stəkdə istinad girişi vasitəsilə kodda istifadə olunan istənilən dəyişənlərin inisiallaşdırılması təmin edilir;
  • Şəbəkə alt sistemi
    • Rozetkalar üçün həyata keçirilən oxşar yeni seçim "SO_BINDTOIFINDEX"
      "SO_BINDTODEVICE", lakin arqument kimi interfeys adı əvəzinə şəbəkə interfeysinin indeks nömrəsi götürülür;

    • mac80211 yığını bir cihaza çoxlu BSSID (MAC ünvanları) təyin etmək imkanı əlavə edib. WiFi performansını optimallaşdırmaq layihəsinin bir hissəsi olaraq, mac80211 yığını efir vaxtının uçotunu və efir vaxtını çoxsaylı stansiyalar arasında bölüşdürmək imkanı əlavə etdi (giriş nöqtəsi rejimində işləyərkən, vaxtı hamı arasında bərabər paylamaq əvəzinə, yavaş simsiz stansiyalara daha az ötürmə vaxtı ayırmaq). stansiyalar);
    • Əlavə edilmiş mexanizm "devlink sağlamlığı", şəbəkə interfeysində problemlər yarandıqda bildirişlər verən;
  • Yaddaş və sistem xidmətləri
    • Həyata keçirilən PID-in təkrar istifadəsinə imkan verən təhlükəsiz siqnal çatdırılması. Məsələn, əvvəllər kill çağırarkən elə bir vəziyyət yarana bilər ki, siqnal göndərildikdən dərhal sonra hədəf PID prosesin dayandırılması səbəbindən sərbəst buraxıla bilər və başqa bir proses tərəfindən işğal edilir və siqnal başqa prosesə ötürülür. Bu cür halları aradan qaldırmaq üçün sabit prosesin bağlanmasını təmin etmək üçün /proc/pid-dən fayl deskriptorlarından istifadə edən yeni sistem çağırışı pidfd_send_signal əlavə edilmişdir. Sistem çağırışının işlənməsi zamanı PID təkrar istifadə olunsa belə, fayl deskriptoru dəyişməyəcək və prosesə siqnal göndərmək üçün təhlükəsiz şəkildə istifadə edilə bilər;
    • Əlavə edilib daimi yaddaş cihazlarından (məsələn, daimi yaddaş) istifadə etmək imkanı NVDIMM) RAM kimi. İndiyə qədər nüvə yaddaş qurğuları kimi cihazları dəstəkləyirdi, lakin indi onlar əlavə RAM kimi də istifadə edilə bilər. Funksiya, performans gecikməsinə dözmək istəyən və dax üçün mmap üzərində işləyən mövcud istifadəçi sahəsi yaddaş ayırma sistemlərindən istifadə etmək əvəzinə, doğma Linux nüvəsi yaddaş idarəetmə API-dən istifadə etmək istəyən istifadəçilərin istəklərinə cavab olaraq həyata keçirilir. fayl;
    • Yeni CPU boş işləyicisi əlavə edildi (cpuidle, CPU-nun dərin enerjiyə qənaət rejimlərinə nə vaxt qoyula biləcəyinə qərar verir; rejim nə qədər dərin olarsa, qənaət də o qədər çox olar, həm də rejimdən çıxmaq üçün bir o qədər çox vaxt lazımdır) - TEO (Taymer Hadisələri Oriented Governor) ). İndiyə qədər iki cpuidle idarəedicisi təklif edilmişdir - evristika ilə fərqlənən "menyu" və "nərdivan". "Menyu" işləyicisi evristik qərarların qəbulu ilə bağlı məlum problemlərə malikdir, onları aradan qaldırmaq üçün yeni işləyici hazırlamaq qərara alınıb. TEO “menyu” idarəçisinə alternativ olaraq yerləşdirilib, eyni zamanda enerji istehlakını eyni səviyyədə saxlamaqla daha yüksək performansa imkan verir.
      Siz “cpuidle.governor=teo” yükləmə parametrindən istifadə edərək yeni işləyicini aktivləşdirə bilərsiniz;

    • aradan qaldırılması üçün işlərin bir hissəsi kimi 2038-ci ilin problemləri, 32-bit time_t növünün daşması nəticəsində yaranan 32-bit arxitekturalar üçün 64-bit vaxt sayğacları təklif edən sistem zənglərini ehtiva edir. Nəticədə, 64-bit time_t strukturu artıq bütün arxitekturalarda istifadə oluna bilər. Oxşar dəyişikliklər seçimlər üçün şəbəkə alt sistemində də həyata keçirilib vaxt damgası şəbəkə rozetkaları;
    • Əsas üçün isti yamaq sisteminə (canlı yamaq) əlavə etdi Bir funksiyaya bir sıra dəyişiklikləri atomik şəkildə tətbiq etmək üçün "Atomic Replace" funksiyası. Bu funksiya canlı yamaların ciddi şəkildə müəyyən edilmiş qaydada mərhələ-mərhələ tətbiqi prosesi əvəzinə, bir anda bir neçə dəyişikliyi əhatə edən xülasə yamaqları paylamağa imkan verir ki, onu saxlamaq kifayət qədər çətindir. Əvvəllər hər bir sonrakı dəyişiklik funksiyanın son dəyişiklikdən sonrakı vəziyyətinə əsaslanmalı idisə, indi bir ilkin vəziyyətə bağlı bir neçə dəyişikliyi eyni anda yaymaq mümkündür (yəni, baxıcılar bunun əvəzinə baza nüvəsinə nisbətən bir konsolidasiya edilmiş yamağı saxlaya bilərlər. bir-birindən asılı olan yamaqlar zəncirindən);
    • elan etdi a.out icra edilə bilən fayl formatı üçün köhnəlmiş dəstək və
      silindi tərk edilmiş vəziyyətdə olan a.out formatında əsas faylları yaratmaq üçün kod. Uzun müddətdir ki, a.out formatı Linux sistemlərində istifadə olunmur və a.out fayllarının yaradılması standart Linux konfiqurasiyalarında uzun müddətdir ki, müasir alətlər tərəfindən dəstəklənmir. Bundan əlavə, a.out faylları üçün yükləyici tamamilə istifadəçi məkanında həyata keçirilə bilər;

    • İstifadə edilməmiş kodu müəyyən etmək və silmək imkanı BPF proqramının yoxlama mexanizminə əlavə edilmişdir. Nüvə həmçinin BPF proqramlarının paralel icrasını idarə etmək üçün əlavə imkanları təmin edən BPF alt sistemi üçün spinlock dəstəyi ilə yamaqları ehtiva edir;
  • Оборудование
    • Nouveau sürücü əlavə etdi CPU və GPU-nun ümumi sinxronlaşdırılmış yaddaş sahələrinə daxil olmasına imkan verən heterojen yaddaş idarəçiliyinə dəstək. Paylaşılan virtual yaddaş sistemi (SVM, paylaşılan virtual yaddaş) HMM (Heterojen yaddaşın idarə edilməsi) alt sistemi əsasında həyata keçirilir ki, bu da öz yaddaş idarəetmə vahidləri (MMU, yaddaş idarəetmə vahidi) olan cihazlardan istifadə etməyə imkan verir. əsas yaddaş. Xüsusilə, HMM-dən istifadə edərək, GPU və CPU arasında paylaşılan ünvan sahəsi təşkil edə bilərsiniz, burada GPU prosesin əsas yaddaşına daxil ola bilər. SVM dəstəyi hazırda yalnız Paskal ailəsi GPU-ları üçün aktivdir, baxmayaraq ki, dəstək Volta və Turing GPU-ları üçün də təmin edilir. Üstəlik, Nouveau-da əlavə etdi proses yaddaş sahələrinin GPU yaddaşına köçməsinə nəzarət etmək üçün yeni ioctl;
    • GPU Skylake və sonrakı (gen9+) üçün Intel DRM sürücüsündə daxildir Varsayılan olaraq, fastboot rejimi yükləmə zamanı lazımsız rejim dəyişikliklərini aradan qaldırır. Əlavə edilib новые Coffelake və Ice Lake mikroarxitekturalarına əsaslanan cihaz identifikatorları. Coffelake çipsləri üçün əlavə etdi GVT dəstəyi (GPU virtualizasiyası). Virtual GPU-lar üçün həyata keçirilən VFIO EDID dəstəyi. MIPI/DSI LCD panelləri üçün əlavə etdi ACPI/PMIC elementləri üçün dəstək. Həyata keçirilən yeni TV rejimləri 1080p30/50/60 TV;
    • Amdgpu sürücüsünə Vega10/20 BACO GPU dəstəyi əlavə edildi. Vega 10/20 güc idarəetməsi və Vega 10 soyuducu idarəetmə masaları tətbiq edildi.Picasso GPU-ları üçün yeni PCI cihaz identifikatorları əlavə edildi. Əlavə edilib dalana dirənməmək üçün planlaşdırılan asılılıqları idarə etmək üçün interfeys;
    • Əlavə edilib Ekran sürətləndiriciləri üçün DRM/KMS sürücüsü ARM Komeda (Mali D71);
    • Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 və Kingdisplay kd097d04 ekran panelləri üçün əlavə dəstək;
    • Rockchip RK3328, Cirrus Logic CS4341 və CS35L36, MediaTek MT6358, Qualcomm WCD9335 və Ingenic JZ4725B audio kodekləri, həmçinin Mediatek MT8183 audio platforması üçün əlavə dəstək;
    • Flash STMicroelectronics FMC2, Amlogic Meson NAND kontrollerləri üçün əlavə dəstək;
    • Habana AI aparat sistemləri üçün əlavə sürətləndirici dəstəyi;
    • NXP ENETC gigabit Ethernet nəzarətçiləri və MediaTek MT7603E (PCIe) və MT76x8 simsiz interfeysləri üçün əlavə dəstək.

Eyni zamanda Latın Amerikası Azad Proqram təminatı Fondu formalaşmışdır
seçimi tamamilə pulsuz kernel 5.1 - Linux pulsuz 5.1-gnu, əhatə dairəsi istehsalçı tərəfindən məhdudlaşdırılan, sərbəst olmayan komponentləri və ya kod bölmələrini ehtiva edən proqram təminatı və sürücü elementlərindən təmizlənmişdir. Yeni buraxılışda mt7603 və goya sürücülərində blob yüklənməsi qeyri-aktiv edilib. Wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk və touchscreen_dmi sürücüləri və alt sistemlərində yenilənmiş blob təmizləmə kodu. Lantiq xrx200 mikroproqram yükləyicisində blob təmizlənməsi onun nüvədən çıxarılması səbəbindən dayandırıldı.

Mənbə: opennet.ru

Добавить комментарий