Kaluaran kernel Linux 5.9

Sanggeus dua bulan pangwangunan, Linus Torvalds ngenalkeun ngaleupaskeun kernel Linux Ubuntu 5.9. Diantara parobihan anu paling penting: ngawatesan impor simbol tina modul proprietary kana modul GPL, nyepetkeun operasi alih konteks nganggo instruksi prosésor FSGSBASE, dukungan pikeun komprési gambar kernel nganggo Zstd, ngerjakeun ulang prioritas benang dina kernel, dukungan pikeun PRP. (Parallel Redundancy Protocol), scheduling rubakpita-sadar dina scheduler deadline, packing preemptive kaca memori, kamampuhan bandéra CAP_CHECKPOINT_RESTOR, close_range () panggero sistem, perbaikan kinerja dm-crypt, panyabutan kode pikeun 32-bit Xen PV sémah, memori slab anyar mékanisme manajemén, pilihan "nyalametkeun" dina Btrfs, rojongan pikeun enkripsi inline di ext4 na F2FS.

Versi anyar kalebet 16074 perbaikan ti pamekar 2011,
ukuran patch - 62 MB (parobahan kapangaruhan 14548 file, 782155 garis kode ditambahkeun, 314792 baris dihapus). Ngeunaan 45% sadaya dibere dina 5.9
parobahan nu patali jeung drivers alat, kira-kira 15% parobahanana
sikep kana ngamutahirkeun kode khusus pikeun arsitéktur hardware, 13%
patali jeung tumpukan jaringan, 3% mun sistem file na 3% mun internal
subsistem kernel.

utama inovasi:

  • Mémori sareng jasa sistem
    • Diteuteup panyalindungan ngalawan pamakéan lapisan GPL pikeun linking drivers proprietary kalawan komponén kernel diékspor ukur keur modul handapeun lisénsi GPL. Bandéra TAINT_PROPRIETARY_MODULE ayeuna diwariskeun dina sadaya modul anu ngimpor simbol tina modul anu nganggo bandéra ieu. Upami modul GPL nyobian ngimpor simbol tina modul non-GPL, modul GPL éta bakal ngawariskeun labél TAINT_PROPRIETARY_MODULE sareng moal tiasa ngaksés komponén kernel anu ngan ukur aya pikeun modul anu dilisensikeun GPL, sanaos modul éta saacanna ngimpor simbol ti. kategori "gplonly". Konci sabalikna (ngan ngekspor EXPORT_SYMBOL_GPL dina modul anu diimpor EXPORT_SYMBOL_GPL), anu tiasa ngarecah karya supir proprietary, henteu dilaksanakeun (ngan ukur bandéra modul proprietary anu diwariskeun, tapi sanés beungkeutan GPL).
    • Ditambahkeun rojongan engine kcompactd pikeun kaca mémori pre-packing dina latar tukang nambahan jumlah kaca mémori badag sadia pikeun kernel. Numutkeun perkiraan awal, bungkusan latar, kalayan biaya overhead minimal, tiasa ngirangan telat nalika ngalokasi halaman mémori ageung (halaman ageung) ku 70-80 kali dibandingkeun sareng mékanisme bungkusan anu dianggo sateuacana, diluncurkeun nalika aya kabutuhan (on-demand). ). Pikeun nyetel wates fragméntasi éksternal anu kcompactd bakal nyadiakeun, sysctl vm.compaction_proactiveness geus ditambahkeun.
    • Ditambahkeun rojongan pikeun komprési gambar kernel ngagunakeun algoritma Ztandard (zstd).
    • Rojongan pikeun parentah processor geus dilaksanakeun pikeun sistem x86 FSGSBASE, nu ngidinan Anjeun pikeun maca jeung ngarobah eusi FS / GS registers ti spasi pamaké. Dina kernel, FSGSBASE dipaké pikeun nyepetkeun operasi switching konteks ku ngaleungitkeun operasi nulis MSR perlu pikeun GSBASE, sarta dina spasi pamaké eta avoids nelepon sistem perlu ngarobah FS / GS.
    • Ditambahkeun parameter "allow_writes" ngidinan Anjeun pikeun nyaram parobahan registers MSR processor ti spasi pamaké sarta ngawatesan aksés ka eusi registers ieu maca operasi, saprak ngarobah MSR bisa ngakibatkeun masalah. Sacara standar, tulisan teu acan ditumpurkeun, sarta parobahan MSR anu reflected dina log, tapi di mangsa nu bakal datang rencanana pindah aksés standar kana mode baca wungkul.
    • Pikeun panganteur I/O Asynchronous io_uring Ditambahkeun dukungan pinuh pikeun operasi maca buffered Asynchronous anu henteu meryogikeun benang kernel. Pangrojong ngarékam diperkirakeun dina rilis anu bakal datang.
    • Dina deadline I / O scheduler dilaksanakeun perencanaan dumasar kana kapasitas, ngidinan nyieun kaputusan bener dina sistem asimétri kayaning sistem basis ARM DynamIQ sarta big.LITTLE, nu ngagabungkeun kuat sarta kirang efisien énergi-efisien CPU cores dina hiji chip. Khususna, modeu anyar ngamungkinkeun anjeun pikeun ngahindarkeun jadwal anu teu cocog nalika inti CPU anu laun teu gaduh sumber daya anu pas pikeun ngarengsekeun tugas dina waktosna.
    • Modél konsumsi énergi dina kernel (kerangka Modél Énergi) ayeuna ngajelaskeun teu ngan kabiasaan konsumsi kakuatan CPU, tapi ogé nyertakeun alat periferal.
    • The close_range () Sistim panggero geus dilaksanakeun pikeun ngidinan hiji prosés nutup sakabéh rentang descriptors file kabuka sakaligus.
    • Tina palaksanaan konsol téks sareng supir fbcon kode dihapus, nu nyadiakeun kamampuhan pikeun programmatically gulung téks deui (CONFIG_VGACON_SOFT_SCROLLBACK) ku leuwih ti jumlah VGA memori video mode téks.
    • Didesain deui algoritma pikeun assigning prioritas pikeun threads dina kernel. Pilihan anyar nyayogikeun konsistensi anu langkung saé dina sadaya subsistem kernel nalika masihan prioritas kana tugas sacara real-time.
    • Ditambahkeun sysctl sched_uclamp_util_min_rt_default pikeun ngadalikeun setélan dorongan CPU pikeun tugas real-time (Contona, Anjeun bisa ngarobah paripolah tugas real-time dina laleur pikeun ngahemat daya sanggeus pindah ka daya batre atawa dina sistem mobile).
    • Persiapan geus dilakukeun pikeun nerapkeun rojongan pikeun téhnologi Transparent Huge Pages dina cache kaca.
    • Mesin fanotify nerapkeun umbul anyar FAN_REPORT_NAME sareng FAN_REPORT_DIR_FID pikeun ngalaporkeun nami indungna sareng inpormasi FID unik nalika kajadian nyiptakeun, ngahapus, atanapi gerakan lumangsung pikeun item diréktori sareng objék non-direktori.
    • Pikeun cgroups dilaksanakeun a controller memori slab anyar, nu kasohor pindah akuntansi slab ti tingkat kaca memori ka tingkat obyék kernel, nu ngamungkinkeun pikeun babagi kaca slab di cgroups béda, tinimbang allocating slab caches misah pikeun tiap cgroup. Pendekatan anu diusulkeun ngamungkinkeun pikeun ningkatkeun efisiensi ngagunakeun slab, ngirangan ukuran mémori anu dianggo pikeun slab ku 30-45%, sacara signifikan ngirangan konsumsi mémori tina kernel sareng ngirangan fragméntasi mémori.
    • Dina subsistem sora Alla и tumpukan USB, dumasarkeun kana nembe diadopsi saran ngeunaan pamakéan terminologi inklusif dina kernel Linux Ubuntu; istilah politis teu bener diberesihan. Kodeu parantos diberesihan tina kecap "budak", "master", "blacklist" sareng "whitelist".
  • Virtualisasi sareng Kaamanan
    • Nalika ngawangun kernel ngagunakeun kompiler Clang mucunghul kamampuhan pikeun ngonpigurasikeun (CONFIG_INIT_STACK_ALL_ZERO) initialization otomatis ka enol sadaya variabel disimpen dina tumpukan éta (lamun ngawangun, tangtukeun "-ftrivial-otomatis-var-init = enol").
    • Dina subsistem seccomp, nalika ngagunakeun mode kontrol prosés di rohangan pamaké, ditambahkeun kasempetan substitusi deskriptor file kana prosés diawaskeun pikeun pinuh emulate panggero sistem nu ngakibatkeun kreasi deskriptor file. Fungsionalitasna diperyogikeun dina sistem wadahna terasing sareng palaksanaan kotak pasir pikeun Chrome.
    • Pikeun arsitéktur xtensa sareng csky, dukungan parantos ditambihan pikeun ngawatesan telepon sistem nganggo subsistem seccomp. Pikeun xtensa, dukungan pikeun mékanisme audit ogé dilaksanakeun.
    • Ditambahkeun bendera kamampuhan anyar CAP_CHECKPOINT_RESTORE, nu ngidinan Anjeun pikeun nyadiakeun aksés ka kamampuhan patali katirisan tur malikkeun kaayaan prosés tanpa mindahkeun hak husus tambahan.
    • GCC 11 nyadiakeun sagala fitur nu peryogi
      alat debugging KCSAN (Kernel Concurrency Sanitizer), dirancang pikeun dinamis ngadeteksi kaayaan lomba dina kernel. Ku kituna, KCSAN ayeuna bisa dipaké kalawan kernels diwangun dina GCC.

    • Pikeun AMD Zen sareng model CPU anu langkung énggal ditambahkeun rojongan pikeun téhnologi P2PDMA, nu ngidinan Anjeun pikeun make DMA pikeun mindahkeun data langsung antara mémori dua alat disambungkeun ka beus PCI.
    • A mode geus ditambahkeun kana dm-crypt nu ngidinan Anjeun pikeun ngurangan latency ku ngajalankeun ngolah data cryptographic tanpa ngagunakeun antrian gawé. modeu ieu ogé diperlukeun pikeun operasi bener kalawan zoned blok alat (alat jeung wewengkon nu kudu ditulis sequentially, ngamutahirkeun sakabéh grup blok). Karya parantos dilakukeun pikeun ningkatkeun throughput sareng ngirangan latency dina dm-crypt.
    • Dipiceun kode pikeun ngarojong sémah 32-bit ngajalankeun dina modeu paravirtualization ngajalankeun Xen hypervisor. Pamaké sistem sapertos kitu kedah ngalih ka ngagunakeun kernel 64-bit dina lingkungan tamu atanapi nganggo modeu virtualisasi pinuh (HVM) atanapi gabungan (PVH) tinimbang paravirtualization (PV) pikeun ngajalankeun lingkungan.
  • Subsistem Disk, I/O sareng Sistem File
    • Dina sistem file Btrfs dilaksanakeun a "nyalametkeun" Gunung pilihan nu unifies aksés ka sadaya pilihan recovery séjén. Rojongan pikeun pilihan "alloc_start" jeung "subvolrootid" geus dihapus, sarta pilihan "inode_cache" geus deprecated. optimizations kinerja geus dijieun, utamana noticeably ngagancangkeun palaksanaan fsync () operasi. Ditambahkeun kamampuh ngagunakeun tipe alternatif tina checksums lian ti CRC32c.
    • Ditambahkeun kamampuhan pikeun ngagunakeun enkripsi inline (Inline Encryption) dina ext4 na F2FS sistem file, sangkan nu "inlinecrypt" Gunung pilihan disadiakeun. modeu enkripsi inline ngidinan Anjeun pikeun ngagunakeun mékanisme enkripsi diwangun kana drive controller, nu transparan encrypts na decrypts input / outputs.
    • Dina XFS diamankeun inode reset (siram) dina modeu lengkep Asynchronous nu teu meungpeuk prosés nalika ngajalankeun operasi cleanup memori. Ngarengsekeun masalah kuota anu parantos lami anu nyababkeun peringatan wates lemes sareng wates inode teu leres dilacak. Palaksanaan ngahijikeun dukungan DAX pikeun ext4 sareng xfs.
    • Dina Ext4 dilaksanakeun preload block alokasi bitmaps. Digabungkeun jeung ngawatesan scanning grup uninitialized, optimasi nu ngurangan waktu diperlukeun pikeun Gunung partisi kacida gedéna.
    • Dina F2FS ditambihan ioctl F2FS_IOC_SEC_TRIM_FILE, nu ngidinan Anjeun pikeun ngagunakeun TRIM / Paréntah piceun pikeun fisik ngareset data nu tangtu dina file, contona, pikeun mupus kenop aksés tanpa ninggalkeun data residual on drive.
      Dina F2FS ogé ditambihan modeu ngumpulkeun sampah anyar GC_URGENT_LOW, nu gawéna leuwih aggressively ku ngaleungitkeun sababaraha cék keur aya dina kaayaan dianggurkeun saméméh dimimitian collector sampah.

    • Dina bcache, bucket_size pikeun extents geus ngaronjat tina 16 ka 32 bit dina préparasi pikeun ngidinan caches alat zoned.
    • Kamampuhan ngagunakeun enkripsi inline dumasar kana enkripsi hardware diwangun-di disadiakeun ku Controllers UFS geus ditambahkeun kana subsistem SCSI (Universal Flash Panyimpenan).
    • Parameter garis paréntah kernel anyar "debugfs" parantos ditambahkeun, anu ngamungkinkeun anjeun ngadalikeun kasadiaan pseudo-FS anu sami.
    • The NFSv4.2 klien nyadiakeun rojongan pikeun atribut file nambahan (xattr).
    • Dina dm-lebu ditambihan panganteur pikeun mintonkeun sakaligus daptar sadaya blok goréng dicirikeun dina disk ("dmsetup pesen dust1 0 listbadblocks").
    • Pikeun md/raid5, parameter /sys/block/md1/md/stripe_size geus ditambahkeun pikeun ngonpigurasikeun ukuran blok STRIPE.
    • Pikeun alat panyimpen NVMe ditambahkeun rojongan pikeun paréntah zoning drive (ZNS, NVM Express Zoned Namespace), nu ngidinan Anjeun pikeun ngabagi gudang kana zona nu nyieun grup blok pikeun kontrol leuwih lengkep dina panempatan data dina drive.
  • Subsistem jaringan
    • Dina Netfilter ditambahkeun kamampuhan pikeun nolak pakét dina tahap saméméh routing dipariksa (éksprési REJECT ayeuna bisa dipaké teu ukur dina ranté INPUT, FORWARD sarta OUTPUT, tapi ogé dina tahap PREROUTING pikeun icmp na tcp).
    • Dina nftables ditambahkeun kamampuhan pikeun Inok acara patali parobahan konfigurasi.
    • Dina nftables dina netlink API ditambahkeun rojongan pikeun ranté anonim, ngaran anu ditugaskeun dinamis ku kernel. Lamun anjeun mupus aturan pakait sareng ranté anonim, ranté sorangan otomatis dihapus.
    • BPF nambihan dukungan pikeun iterators pikeun ngaliwat, nyaring, sareng ngarobih unsur-unsur susunan asosiatif (peta) tanpa nyalin data kana rohangan pangguna. Iterators bisa dipaké pikeun TCP jeung UDP sockets, sahingga program BPF iterate leuwih daptar sockets kabuka sarta nimba informasi maranéhna butuh ti aranjeunna.
    • Ditambahkeun tipe anyar program BPF BPF_PROG_TYPE_SK_LOOKUP, anu diluncurkeun nalika kernel milarian stop kontak déngékeun anu cocog pikeun sambungan anu asup. Ngagunakeun program BPF kawas kieu, Anjeun bisa nyieun pawang nu nyieun kaputusan ngeunaan nu stop kontak kudu pakait sareng, tanpa keur konstrain ku meungkeut () panggero sistem. Contona, anjeun tiasa ngahubungkeun stop kontak tunggal sareng sauntuyan alamat atanapi palabuhan. Sajaba ti éta, rojongan pikeun bandéra SO_KEEPALIVE geus ditambahkeun kana bpf_setsockopt () jeung kamampuhan pikeun masang pawang BPF_CGROUP_INET_SOCK_RELEASE, disebut nalika stop kontak dileupaskeun, geus dilaksanakeun.
    • rojongan Protocol dilaksanakeun MPRP (Parallel Redundancy Protocol), anu ngamungkinkeun ngalihkeun basis Ethernet kana saluran cadangan, transparan pikeun aplikasi, upami aya gagalna komponén jaringan.
    • Tumpukan mac80211 ditambahkeun rojongan pikeun opat-tahap WPA / WPA2-PSK channel hungkul dina modeu titik aksés.
    • Ditambahkeun kamampuhan pikeun pindah qdisc (disiplin antrian) scheduler ngagunakeun FQ-PIE (Flow Queue PIE) algoritma manajemén antrian jaringan sacara standar, aimed di ngurangan dampak negatif tina panyangga pakét panengah dina alat-alat jaringan ujung (bufferbloat) dina jaringan kalawan modem kabel.
    • Fitur anyar geus ditambahkeun kana MPTCP (MultiPath TCP), ekstensi tina protokol TCP pikeun pangatur operasi sambungan TCP jeung pangiriman pakét sakaligus sapanjang sababaraha ruteu ngaliwatan interfaces jaringan béda pakait sareng alamat IP béda. Ditambahkeun dukungan pikeun cookie syn, DATA_FIN, panyangga otomatis-tuning, diagnostik soket, sareng REUSEADDR, REUSEPORT, sareng V6ONLY bandéra dina setsoccopt.
    • Pikeun tabel routing virtual VRF (Virtual Routing na Neraskeun), nu ngidinan pangatur operasi sababaraha domain routing dina hiji sistem, geus dilaksanakeun mode "ketat". Dina modeu ieu, tabel maya ngan bisa pakait sareng tabel routing nu teu dipaké dina tabel maya séjén.
    • Supir nirkabel nyaéta ath11k ditambahkeun rojongan 6GHz frékuénsi jeung scanning spéktral.
  • pakakas
    • Kode dihapus pikeun ngarojong arsitektur UniCore, dimekarkeun di Microprocessor Center of Peking University sarta kaasup kana kernel Linux Ubuntu dina 2011. Arsitéktur ieu teu diurus ti saprak 2014 sareng teu aya dukungan dina GCC.
    • Rojongan pikeun arsitéktur RISC-V parantos dilaksanakeun kcov (antarmuka debugfs pikeun nganalisis sinyalna kode kernel), kmemleak (sistem deteksi bocor mémori), panyalindungan tumpukan, tanda luncat sarta operasi tickless (multitasking bebas tina sinyal timer).
    • Pikeun arsitéktur PowerPC, dukungan pikeun antrian spinlock parantos dilaksanakeun, anu parantos ningkatkeun kinerja sacara signifikan dina situasi konflik konci.
    • Pikeun arsitéktur ARM sareng ARM64, mékanisme pangaturan frékuénsi prosésor diaktipkeun sacara standar scheduleutil (gubernur cpufreq), nu langsung ngagunakeun informasi ti scheduler tugas pikeun nyieun kaputusan dina ngarobah frékuénsi sarta bisa langsung ngaksés supir cpufreq pikeun gancang ngarobah frékuénsi, langsung nyaluyukeun parameter operasi CPU kana beban ayeuna.
    • Supir DRM i915 pikeun kartu grafik Intel kalebet dukungan pikeun chip dumasar kana microarchitecture Tasik Rocket sarta ditambahkeun rojongan awal pikeun kartu diskrit Intel Xe DG1.
    • Supir Amdgpu nambihan dukungan awal pikeun AMD GPU Navi 21 (Angkatan Laut Flounder) jeung Navi 22 (Sienna Cichlid). Ditambahkeun dukungan pikeun encoding vidéo UVD / VCE sareng mesin akselerasi decoding pikeun GPU Kapuloan Kidul (Radeon HD 7000).
      Ditambahkeun sipat pikeun muterkeun tampilan ku 90, 180 atanapi 270 derajat.

      Narikna, supir keur AMD GPU éta supir pangbadagna dina kernel - eta boga ngeunaan 2.71 juta garis kode, nu kira 10% tina total ukuran kernel (27.81 juta garis). Dina waktos anu sami, 1.79 juta garis diitung ku file header anu dibangkitkeun sacara otomatis sareng data pikeun registers GPU, sareng kode C nyaéta 366 rébu garis (pikeun babandingan, supir Intel i915 kalebet 209 rébu garis, sareng Nouveau - 149 rébu).

    • Dina supir Nouveau ditambahkeun rojongan pikeun mariksa integritas pigura-demi-pigura ngagunakeun CRC (Cék Redundansi Siklik) dina mesin tampilan NVIDIA GPU. Palaksanaan dumasar kana dokuméntasi anu disayogikeun ku NVIDIA.
    • supir ditambahkeun pikeun panels LCD: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 na Xingbangda XBD599.
    • Subsistem audio ALSA ngadukung Intel Jempé Stream (mode kakuatan kontinyu pikeun alat HDMI éksternal pikeun ngaleungitkeun reureuh nalika dimimitian playback) jeung alat anyar pikeun ngadalikeun katerangan tina aktivasina mikropon sareng tombol bisu, sareng ogé nambihan dukungan pikeun alat énggal, kalebet pangontrol. Longson 7A1000.
    • Ditambahkeun dukungan pikeun papan ARM, alat sareng platform: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (dipaké dina Sony Xperia 10, 10 Plus, XA2, XA2 Plus sareng XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, lima papan anyar dumasar kana NXP i.MX6, MikroTik RouterBoard 3011, Xiaomi Libra, Microsoft Lumia 950, Sony Xperia Z5, MStar, Microchip Sparx5, Intel Keem Bay, Amazon Alpine v3, Renesas RZ/G2H.

Dina waktos anu sami, Yayasan Perangkat Lunak Gratis Amérika Latin kabentuk
pilihan lengkep bebas kernel 5.9 - Linux-bébas 5.9-gnu, diberesihan tina firmware sareng elemen supir anu ngandung komponén non-gratis atanapi bagian kode, ruang lingkup anu diwatesan ku produsén. Pelepasan énggal nganonaktipkeun beban blob dina panggerak pikeun WiFi rtw8821c sareng SoC MediaTek mt8183. Kode beberesih blob diropéa dina Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) jeung x86 panggerak layar rampa jeung subsistem.

sumber: opennet.ru

Tambahkeun komentar