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

İki aylıq inkişafdan sonra Linus Torvalds təqdim etdi kernel buraxılışı Linux 5.8. Ən diqqətəlayiq dəyişikliklər arasında: KCSAN yarış vəziyyəti detektoru, istifadəçi məkanına bildirişlərin çatdırılması üçün universal mexanizm, daxili şifrələmə üçün aparat dəstəyi, ARM64 üçün təkmilləşdirilmiş təhlükəsizlik mexanizmləri, Rusiyanın Baykal-T1 prosessoruna dəstək, procfs instansiyalarını ayrıca quraşdırmaq imkanı , ARM64 Call Stack və BTI üçün Kölgə təhlükəsizlik mexanizmlərinin tətbiqi.

Kernel 5.8, layihənin bütün mövcudluğu ərzində bütün nüvələrdə edilən dəyişikliklərin sayına görə ən böyük oldu. Üstəlik, dəyişikliklər hər hansı bir alt sistemlə əlaqəli deyil, nüvənin müxtəlif hissələrini əhatə edir və əsasən daxili yenidən işləmə və təmizləmə ilə əlaqələndirilir. Ən böyük dəyişikliklər sürücülərdə müşahidə olunur. Yeni versiyaya 17606 tərtibatçıdan 2081 düzəliş daxil edilib ki, bu da nüvə kodu deposundakı bütün faylların təxminən 20%-nə təsir edib. Yamanın ölçüsü 65 MB-dır (dəyişikliklər 16180 fayla təsir etdi, 1043240 sətir kod əlavə edildi, 489854 sətir silindi). Müqayisə üçün, 5.7 filialında 15033 düzəliş və 39 MB yamaq ölçüsü var. 37-də təqdim edilən bütün dəyişikliklərin təxminən 5.8%-i qurğu drayverləri, dəyişikliklərin təxminən 16%-i hardware arxitekturasına xas kodun yenilənməsi, 11%-i şəbəkə yığını, 3%-i fayl sistemləri və 4%-i ilə əlaqədardır. daxili nüvə alt sistemləri ilə əlaqədardır.

Əsas yeniliklər:

  • Virtuallaşdırma və Təhlükəsizlik
    • İcra və yazmağa imkan verən bitlərin eyni vaxtda təyin olunduğu kodu olan bölmələri olan nüvə modullarının yüklənməsi təmin edilir. Dəyişiklik, nüvəni eyni vaxtda icra və yazmağa imkan verən yaddaş səhifələrinin istifadəsindən azad etmək üçün daha böyük layihənin bir hissəsi kimi həyata keçirilib.
    • İndi müxtəlif variantlarla quraşdırılmış, lakin eyni proses identifikatorunun ad sahəsini (pid ad sahəsi) əks etdirən çoxsaylı procfs bağlama nöqtələrindən istifadə etməyə imkan verən ayrıca procfs nümunələri yaratmaq mümkündür. Əvvəllər, bütün procfs bağlama nöqtələri yalnız bir daxili təmsili əks etdirirdi və montaj parametrlərinə edilən hər hansı dəyişiklik eyni proses ID ad sahəsi ilə əlaqəli bütün digər bağlama nöqtələrinə təsir etdi. Müxtəlif variantlarla montajın tələb oluna biləcəyi sahələr arasında, müəyyən növ prosesləri və məlumat qovşaqlarını procfs-də gizlətmək imkanı ilə quraşdırılmış sistemlər üçün yüngül izolyasiyanın həyata keçirilməsidir.
    • Mexanizmə dəstək ARM64 platforması üçün həyata keçirilib
      Shadow-Call Stack, yığın buferinin daşması halında funksiyanın qaytarılması ünvanının üzərinə yazılmasından qorunmaq üçün Clang tərtibçisi tərəfindən təmin edilmişdir. Qorunmanın mahiyyəti idarəetməni funksiyaya ötürdükdən və funksiyadan çıxmazdan əvvəl bu ünvanı əldə etdikdən sonra qayıdış ünvanını ayrıca “kölgə” yığınında saxlamaqdan ibarətdir.

    • ARM64 platforması üçün təlimat dəstəyi əlavə edildi ARMv8.5-BTI (Şöbə Hədəf Göstəricisi) şaxələnməməsi lazım olan təlimat dəstlərinin icrasını qorumaq üçün. Kodun ixtiyari bölmələrinə keçidlərin bloklanması qaytarılma yönümlü proqramlaşdırma üsullarından (ROP - Return-Oriented Programming) istifadə edən istismarlarda qadcetlərin yaradılmasının qarşısını almaq üçün həyata keçirilir; təcavüzkar öz kodunu yaddaşa yerləşdirməyə çalışmır, lakin artıq mövcud parçalar üzərində işləyir. İstənilən funksionallığı əldə etmək üçün zənglər zənciri qurulan qaytarma idarəetmə təlimatı ilə bitən maşın təlimatları).
    • Blok cihazlarının daxili şifrələməsi üçün əlavə aparat dəstəyi (Daxili Şifrələmə). Inlinep şifrələmə cihazları adətən sürücüyə quraşdırılır, lakin məntiqi olaraq sistem yaddaşı və disk arasında yerləşir, nüvə ilə müəyyən edilmiş açarlar və şifrələmə alqoritmi əsasında I/O-nu şəffaf şəkildə şifrələyir və deşifrə edir.
    • İlkin yükləmə şəklini RAM-a yerləşdirərkən initrd-nin fiziki yaddaş ünvanını təyin etməyə imkan vermək üçün "initrdmem" kernel əmr xətti seçimi əlavə edildi.
    • Yeni imkan əlavə edildi: Perf altsisteminə daxil olmaq və performans monitorinqini həyata keçirmək üçün CAP_PERFMON. CAP_BPF, bu, əvvəllər CAP_SYS_ADMIN hüquqlarını tələb edən müəyyən BPF əməliyyatlarına (məsələn, BPF proqramlarının yüklənməsi) imkan verir (CAP_SYS_ADMIN hüquqları indi CAP_BPF, CAP_PERFMON və CAP_NET_ADMIN birləşməsinə bölünür).
    • Əlavə edildi yaddaşı qonaq sistemlərinə qaynar və hot-plug etməyə imkan verən yeni virtio-mem cihazı.
    • Cihaz sürücüsü üst-üstə düşən yaddaş sahələrindən istifadə edərsə, /dev/mem-də xəritəçəkmə əməliyyatlarının geri çağırılması həyata keçirilir.
    • Zəiflikdən qorunma əlavə edildi CROSSTalk/SRBDS, başqa bir CPU nüvəsində yerinə yetirilən bəzi təlimatların icrasının nəticələrini bərpa etməyə imkan verir.
  • Yaddaş və sistem xidmətləri
    • Kodun formatlaşdırılması qaydalarını müəyyən edən sənəddə, qəbul edildi inklüziv terminologiyadan istifadə üçün tövsiyələr. Tərtibatçılara “master/slave” və “qara siyahı/ağ siyahı” birləşmələrindən, həmçinin “qul” sözünü ayrıca istifadə etmək tövsiyə edilmir. Tövsiyələr yalnız bu terminlərin yeni istifadəsinə aiddir. Əsasda artıq mövcud olan qeyd olunan sözlərin qeydləri toxunulmaz qalacaq. Yeni kodda, istifadəçi məkanında məruz qalan API və ABI-ni dəstəkləmək üçün tələb olunarsa, həmçinin spesifikasiyaları müəyyən şərtlərin istifadəsini tələb edən mövcud aparat və ya protokolları dəstəkləmək üçün kodu yeniləyərkən işarələnmiş şərtlərin istifadəsinə icazə verilir.
    • Sazlama aləti daxildir KCSAN (Kernel Concurrency Sanitizer), dinamik aşkarlama üçün nəzərdə tutulmuşdur yarış şərtləri nüvənin içərisində. KCSAN-ın istifadəsi GCC və Clang-da qurularkən dəstəklənir və yaddaşa girişi izləmək üçün kompilyasiya zamanı xüsusi dəyişikliklər tələb olunur (yaddaş oxunduqda və ya dəyişdirildikdə işə salınan kəsilmə nöqtələrindən istifadə olunur). KCSAN-ın inkişafının diqqət mərkəzində yalan pozitiv qarşısının alınması, miqyaslılıq və istifadənin asanlığı idi.
    • Əlavə edilib universal mexanizm kerneldən istifadəçi sahəsinə bildirişlərin çatdırılması. Mexanizm standart boru sürücüsünə əsaslanır və istifadəçi məkanında açıq kanallar üzərində nüvədən bildirişləri səmərəli şəkildə yaymağa imkan verir. Bildirişlərin qəbulu nöqtələri xüsusi rejimdə açılan və ləpədən alınan mesajların halqa buferində toplanmasına imkan verən borulardır. Oxu adi read() funksiyası ilə həyata keçirilir. Kanal sahibi nüvədəki hansı mənbələrə nəzarət edilməli olduğunu müəyyən edir və müəyyən növ mesaj və hadisələrə məhəl qoymamaq üçün filtr təyin edə bilər. Hadisələrdən hal-hazırda açarların əlavə edilməsi/çıxarılması və onların atributlarının dəyişdirilməsi kimi yalnız düymələrlə əməliyyatlar dəstəklənir. Bu hadisələrin GNOME-da istifadə edilməsi planlaşdırılır.
    • PID-in təkrar istifadəsi vəziyyətlərini idarə etməyə kömək etmək üçün "pidfd" funksionallığının davamlı inkişafı (pidfd xüsusi proseslə əlaqələndirilir və dəyişmir, PID isə həmin PID ilə əlaqəli cari proses başa çatdıqdan sonra başqa bir proseslə əlaqələndirilə bilər). Yeni versiya ad boşluqlarına prosesi əlavə etmək üçün pidfd-dən istifadə üçün dəstək əlavə edir (setns sistem çağırışını yerinə yetirərkən pidfd-nin təyin edilməsinə icazə verir). Pidfd-dən istifadə bir zənglə prosesin bir neçə növ ad sahəsinə qoşulmasını idarə etməyə imkan verir, lazımi sistem çağırışlarının sayını əhəmiyyətli dərəcədə azaldır və əlavəni atom rejimində həyata keçirir (əgər ad boşluqlarından birinə qoşulma uğursuz olarsa, digərləri qoşulmayacaq). .
    • Fərqli yeni sistem çağırışı faccessat2() əlavə edildi
      faccessat() POSIX tövsiyələrinə uyğun olan bayraqlarla əlavə arqument (əvvəllər bu bayraqlar C kitabxanasında təqlid edilirdi və yeni faccessat2 onları nüvədə həyata keçirməyə imkan verir).

    • Cgroup-da əlavə etdi çox dəyişdirmə yeri tutan tapşırıqları yavaşlatmaq üçün istifadə edilə bilən yaddaş.dəyişdirmə.yüksək parametr.
    • Asinxron I/O interfeysinə io_uring tee() sistem zəngi üçün əlavə dəstək.
    • Əlavə edilmiş mexanizm "BPF iteratoru, nüvə strukturlarının məzmununu istifadəçi sahəsinə çıxarmaq üçün nəzərdə tutulmuşdur.
    • Təmin edilmişdir BPF proqramları arasında məlumat mübadiləsi üçün ring buferdən istifadə etmək imkanı.
    • Mexanizmə daxil padata, nüvədə tapşırıqların paralel icrasını təşkil etmək üçün nəzərdə tutulmuşdur, yük balansı ilə çox yivli tapşırıqlar üçün əlavə dəstək.
    • Yenidən yükləmələr arasında itməyən yaddaş sahələrində qəzanın səbəbi haqqında sazlama məlumatını saxlamağa imkan verən pstore mexanizmində, əlavə etdi cihazları bloklamaq üçün məlumat saxlamaq üçün arxa uç.
    • PREEMPT_RT nüvə filialından köçdü yerli kilidlərin həyata keçirilməsi.
    • Əlavə edilib XDP (eXpress Data Path) dəstəyi ilə şəbəkə sürücülərinin yazılmasını asanlaşdırmağa yönəlmiş yeni bufer ayırma API (AF_XDP).
    • RISC-V arxitekturası üçün KGDB-dən istifadə edərək nüvə komponentlərinin sazlanması üçün dəstək tətbiq edilmişdir.
    • 4.8-in buraxılışından əvvəl nüvənin qurulması üçün istifadə edilə bilən GCC versiyası üçün tələblər artırıldı. Növbəti buraxılışlardan birində barı GCC 4.9-a yüksəltmək planlaşdırılır.
  • Disk alt sistemi, giriş/çıxış və fayl sistemləri
    • Cihaz Xəritəçisində əlavə etdi daha kiçik məntiqi blok ölçüsünü təqlid etmək üçün istifadə edilə bilən yeni dm-ebs (blok ölçüsünü təqlid et) işləyicisi (məsələn, 512K sektor ölçülü disklərdə 4 baytlıq sektorları təqlid etmək üçün).
    • F2FS fayl sistemi indi LZO-RLE alqoritmindən istifadə edərək sıxılmanı dəstəkləyir.
    • dm-kriptdə əlavə etdi şifrələnmiş açarlar üçün dəstək.
    • Btrfs birbaşa I/O rejimində oxu əməliyyatlarının idarə edilməsini təkmilləşdirdi. Montaj edərkən sürətləndirdi silinmiş alt bölmələri və valideynsiz qalan qovluqları yoxlamaq.
    • CIFS-ə serverdə normal icazə yoxlamalarına imkan verən, lakin müştəriyə faylları və ya qovluqları silməyi qadağan edən “nodelete” parametri əlavə edilmişdir.
    • Ex4 səhvlərin idarə edilməsini təkmilləşdirdi ENOSPC multithreading istifadə edərkən. xattr GNU Hurd-da istifadə olunan gnu.* ad sahəsinə dəstək əlavə etdi.
    • Ext4 və XFS üçün fərdi fayl və qovluqlara münasibətdə DAX əməliyyatları üçün dəstək aktivləşdirilir (fayl sisteminə birbaşa giriş, blok cihazı səviyyəsindən istifadə etmədən səhifə keşini keçmək).
    • Sistem zəngində statx() bayraq əlavə edildi STATX_ATTR_DAX, müəyyən edildikdə, DAX mühərrikindən istifadə edərək məlumat əldə edir.
    • EXFAT əlavə etdi yükləmə sahəsinin yoxlanılması üçün dəstək.
    • FAT-da təkmilləşdirilmiş FS elementlərinin aktiv yüklənməsi. Yavaş 2 TB USB sürücüsünün sınaqdan keçirilməsi testin tamamlanma müddətinin 383 saniyədən 51 saniyəyə qədər azaldığını göstərdi.
  • Şəbəkə alt sistemi
    • Şəbəkə körpülərinin işinə nəzarət etmək üçün kodda əlavə etdi protokol dəstəyi MRP (Media Redundancy Protocol), çoxlu Ethernet açarlarını dövrələməklə nasazlığa dözümlü olmağa imkan verir.
    • Yol hərəkətinə nəzarət sisteminə (Tc) əlavə etdi müəyyən paketlərin işlənməsi və atılması üçün vaxt intervallarını təyin etməyə imkan verən yeni “qapı” hərəkəti.
    • Qoşulmuş şəbəkə kabelinin sınaqdan keçirilməsi və şəbəkə cihazlarının özünü diaqnostikası üçün dəstək nüvəyə və ettool yardım proqramına əlavə edilmişdir.
    • MPLS (Multiprotocol Label Switching) alqoritmi üçün dəstək çoxprotokollu etiket kommutasiyasından istifadə edərək paketlərin marşrutlaşdırılması üçün IPv6 yığınına əlavə edilmişdir (MPLS əvvəllər IPv4 üçün dəstəklənirdi).
    • IKE (İnternet Açar Mübadiləsi) və IPSec paketlərini TCP üzərindən ötürmək üçün əlavə dəstək (RFC 8229) mümkün UDP bloklamasından yan keçmək üçün.
    • Əlavə edildi RDMA nəqliyyatı (InfiniBand, RoCE, iWARP) və RTRS protokolundan istifadə edərək blok cihazına uzaqdan girişi təşkil etməyə imkan verən şəbəkə bloku cihazı rnbd.
    • TCP yığınında əlavə etdi seçmə təsdiqləmə (SACK) cavablarında diapazonun sıxılması üçün dəstək.
    • IPv6 üçün həyata keçirilən TCP-LD dəstəyi (RFC 6069, Uzun Bağlantı Kesintiləri).
  • Оборудование
    • Intel video kartları üçün i915 DRM drayveri standart olaraq Intel Tiger Lake (GEN12) çiplərinə dəstək daxildir, bunun üçün həyata keçirilən enerji istehlakından və ya performans tələblərindən asılı olaraq tezlik və gərginliyi dinamik tənzimləmək üçün SAGV (System Agent Geyserville) sistemindən istifadə etmək imkanı.
    • Amdgpu sürücüsü FP16 piksel formatı üçün dəstək və video yaddaşda (TMZ, Etibarlı Yaddaş Zonası) şifrələnmiş buferlərlə işləmək imkanı əlavə edib.
    • AMD Zen və Zen2 prosessorları üçün güc sensorları, həmçinin AMD Ryzen 4000 Renoir üçün temperatur sensorları üçün əlavə dəstək. İnterfeys vasitəsilə enerji istehlakı məlumatının alınması üçün dəstək AMD Zen və Zen2 üçün təmin edilir RAPL (İşləyən Orta Güc Limiti).
    • Nouveau sürücüsünə NVIDIA dəyişdirici formatı üçün dəstək əlavə edildi. gv100 üçün interlaced scanning rejimlərindən istifadə etmək imkanı tətbiq edilmişdir. vGPU aşkarlanması əlavə edildi.
    • MSM (Qualcomm) sürücüsünə Adreno A405, A640 və A650 GPU üçün dəstək əlavə edildi.
    • Əlavə edilib DRM (Direct Rendering Manager) resurslarını idarə etmək üçün daxili çərçivə.
    • Xiaomi Redmi Note 7 və Samsung Galaxy S2 smartfonları, həmçinin Elm/Hana Chromebook noutbukları üçün əlavə dəstək.
    • LCD panellər üçün əlavə edilmiş drayverlər: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • ARM lövhələri və platformaları Renesas "RZ/G1H", Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino50, Check Point üçün əlavə dəstək
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.

    • MIPS prosessoru Loongson-2K (qısaldılmış Loongson64) üçün əlavə dəstək. CPU Loongson 3 üçün KVM hipervizorundan istifadə edərək virtuallaşdırma dəstəyi əlavə edildi.
    • Əlavə edilib
      rus Baykal-T1 prosessoru və ona əsaslanan sistem-on-chip üçün dəstək BE-T1000. Baikal-T1 prosessorunda 5600 GHz tezliyində işləyən iki P32 MIPS 5 r1.2 superskalar nüvəsi var. Çipdə L2 keş (1 MB), DDR3-1600 ECC yaddaş nəzarətçisi, 1 10Gb Ethernet portu, 2 1Gb Ethernet portu, PCIe Gen.3 x4 nəzarətçi, 2 SATA 3.0 portu, USB 2.0, GPIO, UART, SPI, I2C var. Prosessor virtuallaşdırma üçün aparat dəstəyi, SIMD təlimatları və QOST 28147-89-u dəstəkləyən inteqrasiya edilmiş hardware kriptoqrafik sürətləndiricisini təmin edir. Çip Imagination Technologies-dən lisenziya almış MIPS32 P5600 Warrior prosessorunun əsas blokundan istifadə etməklə hazırlanmışdır.

Eyni zamanda Latın Amerikası Azad Proqram Təminatı Fondu formalaşmışdır
seçimi tamamilə pulsuz kernel 5.8 - Linux pulsuz 5.8-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ış Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, Enhanced Asynchronous Sample Rate Converter, Maxim Integrated MAX98390 Home Audio Connector, MAX38060 Speaker, Protokol üçün sürücülərdə blob yüklənməsini söndürür. və I2C EEPROM Slave. Adreno GPU, HabanaLabs Goya, x86 toxunma ekranı, vt6656 və btbcm sürücüləri və alt sistemlərində yenilənmiş blob təmizləmə kodu.

Mənbə: opennet.ru

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