Linux 5.1 nga pagpagawas sa kernel

Pagkahuman sa duha ka bulan nga pag-uswag, si Linus Torvalds gipaila pagpagawas sa kernel Linux 5.1. Lakip sa labing inila nga mga pagbag-o: usa ka bag-ong interface alang sa asynchronous nga I/O io_uring, ang abilidad sa paggamit sa NVDIMM ingon RAM, suporta alang sa gipaambit nga virtual nga panumduman sa Nouveau, suporta alang sa scalable nga pag-monitor sa daghang mga sistema sa file pinaagi sa fanotify, ang abilidad sa pag-configure sa Zstd compression lebel sa Btrfs, usa ka bag-ong cpuidle TEO handler, pagpatuman sa mga tawag sa sistema aron masulbad ang problema sa 2038, ang abilidad sa pag-boot gikan sa device-mapper device nga walay initramfs, SafeSetID LSM module, suporta alang sa hiniusang live patches.

nag-unang mga inobasyon:

  • Disk Subsystem, I/O ug File Systems
    • Nagpatuman ug bag-ong interface para sa asynchronous nga I/O - io_uring, nga ilado tungod sa suporta niini alang sa I/O polling ug ang abilidad sa pagtrabaho uban o walay buffering. Atong hinumdoman nga ang kanhi gisugyot nga asynchronous nga I/O nga mekanismo nga “aio” wala mosuporta sa buffered I/O, mahimo lamang nga mo-operate sa O_DIRECT mode (nga walay buffering ug bypassing sa cache), adunay mga problema sa pag-lock tungod sa paghulat sa metadata availability, ug nagpakita sa dagkong mga gasto sa overhead tungod sa pagkopya sa datos sa memorya.

      Sulod sa API
      Ang mga developer sa io_uring misulay sa pagwagtang sa mga kakulangan sa daan nga interface sa aio. Pinaagi sa pagka-produktibo duol ra kaayo ang io_uring SPDK ug nag-una sa libaio kung nagtrabaho nga gipaandar ang polling. Usa ka librarya ang giandam alang sa paggamit sa io_uring sa katapusan nga mga aplikasyon nga nagdagan sa user space bakasyon, nga naghatag ug taas nga lebel nga gambalay ibabaw sa kernel interface;

    • Sa mekanismo sa pagsubay sa panghitabo sa FS fanotify() gidugang suporta alang sa pagsubay sa superblock ug mga kahimtang sa pagbag-o sa istruktura dire (mga panghitabo sa paghimo, pagtangtang ug paglihok sa mga direktoryo). Ang gipresentar nga mga bahin makatabang sa pagsulbad sa mga problema sa scalability nga motumaw sa paghimo sa recursive change tracking sa dako kaayo nga file system gamit ang inotify nga mekanismo (ang dirent nga mga pagbag-o kaniadto masubay lamang pinaagi sa inotify, apan
      performance sa mga kondisyon sa recursive tracking sa dagkong mga salag nga mga direktoryo nga daghan ang gitinguha). Karon ang ingon nga pagmonitor mahimo nga epektibo pinaagi sa fanotify;

    • Sa Btrfs file system gidugang ang abilidad sa pag-customize sa lebel sa compression alang sa zstd algorithm, nga maisip nga usa ka kamalaumon nga pagkompromiso tali sa paspas apan dili epektibo nga lz4 ug sa hinay apan maayo nga compression xz. Pinaagi sa analohiya kung giunsa kaniadto posible nga itakda ang lebel sa compression kung gigamit ang zlib, suporta alang sa kapilian sa pag-mount nga "-o compress=zstd:level" gidugang alang sa zstd. Atol sa pagsulay, ang minimum nga unang lebel naghatag og data compression sa 2.658 ka beses nga adunay compression speed nga 438.47 MB/s, decompression speed nga 910.51 MB/s ug memory consumption sa 780 MB, ug ang maximum level 15 naghatag og 3.126 times, apan adunay compression. gikusgon sa 37.30 MB/s. pagdiskarga sa 878.84 MB/s ug konsumo sa memorya 2547 MB;
    • Gidugang ang abilidad sa pag-boot gikan sa usa ka file system nga nahimutang sa device-mapper device, nga walay paggamit sa initramfs. Sugod sa kasamtangan nga pagpagawas sa kernel, ang mga device-mapper device mahimong direktang gamiton sa panahon sa proseso sa boot, pananglitan, isip partition sa root file system. Ang partisyon gi-configure gamit ang boot parameter nga "dm-mod.create". Ang mga module sa device-mapper nga gitugotan sa pagkarga naglakip sa: "crypt", "delay", "linear", "snapshot-origin" ug "verity";
    • Ang F2FS_NOCOW_FL nga bandera gidugang sa F2FS file system nga gitumong ngadto sa Flash drives, nga nagtugot kanimo sa pag-disable sa copy-on-write mode para sa gihatag nga file;
    • Ang sistema sa file gikuha gikan sa kernel Mga Exof, nga usa ka variant sa ext2, gipahaum alang sa pagtrabaho sa OSD (Object-based Storage Device) nga mga butang nga gitipigan. Ang suporta alang sa SCSI protocol alang sa ingon nga mga gamit sa pagtipig sa butang gikuha usab;
  • Virtualization ug Security
    • Gidugang ang PR_SPEC_DISABLE_NOEXEC nga kapilian sa prctl() aron makontrol ang espekulatibo nga pagpatuman sa mga panudlo alang sa napili nga proseso. Ang usa ka bag-ong kapilian nagtugot kanimo nga pilion nga i-disable ang speculative execution para sa mga proseso nga posibleng maatake sa usa ka Spectre attack. Ang lock molungtad hangtod sa unang tawag sa exec();
    • Gipatuman ang LSM module SafeSetID, nga nagtugot sa mga serbisyo sa sistema nga luwas nga makadumala sa mga tiggamit nga wala’y pagtaas sa mga pribilehiyo (CAP_SETUID) ug wala’y nakuha nga mga pribilehiyo sa gamut. Ang mga pribilehiyo gihatag pinaagi sa pagpasabot sa mga lagda sa securityfs base sa puti nga lista sa balido nga mga binding (sa porma nga "UID1:UID2");
    • Gidugang nga ubos nga lebel nga mga pagbag-o nga gikinahanglan alang sa stack-based loading sa security modules (LSMs). Gipaila ang "lsm" kernel boot nga kapilian aron makontrol kung unsang mga module ang gikarga ug sa unsang pagkasunod-sunod;
    • Ang suporta alang sa mga namespace sa file gidugang sa subsystem sa audit;
    • Gipalapdan ang mga kapabilidad sa GCC plugin structleak, nga nagtugot kanimo sa pag-block sa mga potensyal nga pagtulo sa mga sulod sa memorya.
  • Subsystem sa network
    • Alang sa mga socket gipatuman bag-ong opsyon "SO_BINDTOIFINDEX" susama sa
      "SO_BINDTODEVICE", apan gikuha isip argumento ang indeks nga numero sa interface sa network imbes nga ngalan sa interface;

    • Ang mac80211 stack nakadugang sa abilidad sa pag-assign og daghang BSSIDs (MAC addresses) sa usa ka device. Isip kabahin sa usa ka proyekto aron ma-optimize ang performance sa WiFi, ang mac80211 stack midugang sa airtime accounting ug ang abilidad sa pag-apod-apod sa airtime sa daghang mga estasyon (sa dihang nag-operate sa access point mode, naggahin og gamay nga oras sa transmission sa pagpahinay sa wireless nga mga istasyon, imbes sa pag-apod-apod sa oras nga parehas sa tanan. estasyon);
    • Gidugang nga mekanismo "kahimsog sa devlink", nga naghatag mga pahibalo kung adunay mga problema sa interface sa network;
  • Mga serbisyo sa memorya ug sistema
    • Gipatuman luwas nga pagpadala sa signal nga nagtugot sa paggamit pag-usab sa PID. Pananglitan, sa diha nga ang pagtawag sa pagpatay kaniadto, ang usa ka sitwasyon mahimong motumaw diin, diha-diha dayon human sa pagpadala sa usa ka signal, ang target nga PID mahimong gawasnon tungod sa proseso nga pagtapos ug okupar sa laing proseso, ug ang signal matapos ngadto sa laing proseso. Aron mawagtang ang ingon nga mga sitwasyon, usa ka bag-ong tawag sa sistema nga pidfd_send_signal ang gidugang, nga naggamit sa mga deskriptor sa file gikan sa /proc/pid aron masiguro ang lig-on nga pagbugkos sa proseso. Bisan kung ang PID gigamit pag-usab sa panahon sa pagproseso sa tawag sa sistema, ang file descriptor dili mausab ug mahimong luwas nga magamit aron magpadala usa ka signal sa proseso;
    • Gidugang ang abilidad sa paggamit sa permanente nga memory device (persistent-memory, pananglitan NVDIMM) isip RAM. Hangtud karon, gisuportahan sa kernel ang mga aparato sama sa mga aparato sa pagtipig, apan karon mahimo usab kini magamit ingon dugang nga RAM. Ang bahin gipatuman agig tubag sa mga pangandoy sa mga tiggamit nga andam nga mag-antos sa usa ka lagyo sa pasundayag ug gusto nga gamiton ang lumad nga Linux kernel memory management API imbis nga gamiton ang kasamtangan nga mga sistema sa alokasyon sa memorya sa wanang sa user nga nagdagan sa ibabaw sa mmap alang sa dax file;
    • Gidugang ang usa ka bag-ong CPU idle handler (cpuidle, nagdesisyon kung kanus-a ang CPU mahimong ibutang sa lawom nga mga mode sa pag-save sa kuryente; ang labi ka lawom nga mode, labi ka dako ang pagtipig, apan labi ka dugay nga mogawas sa mode) - TEO (Timer Events Oriented Governor ). Hangtud karon, duha ka cpuidle handler ang gisugyot - "menu" ug "hagdan", lahi sa heuristics. Ang tigdumala sa "menu" adunay nahibal-an nga mga problema sa paghimo sa mga desisyon nga heuristiko, aron mapapas kung diin nakahukom nga mag-andam usa ka bag-ong handler. Ang TEO gipahimutang isip usa ka alternatibo sa "menu" nga tigdumala, nga nagtugot sa mas taas nga performance samtang nagmintinar sa samang lebel sa konsumo sa kuryente.
      Mahimo nimong i-activate ang bag-ong handler gamit ang boot parameter "cpuidle.governor=teo";

    • Isip kabahin sa trabaho sa pagwagtang mga problema sa 2038, tungod sa pag-awas sa 32-bit time_t type, naglakip sa system calls nga nagtanyag og 32-bit time counters para sa 64-bit nga mga arkitektura. Ingon usa ka sangputanan, ang 64-bit time_t nga istruktura magamit na karon sa tanan nga mga arkitektura. Ang susama nga mga pagbag-o gipatuman usab sa subsystem sa network alang sa mga kapilian timestamp mga socket sa network;
    • Ngadto sa init nga sistema sa patching alang sa kinauyokan (live patching) gidugang "Atomic Replace" nga bahin alang sa atomiko nga pagpadapat sa usa ka serye sa mga pagbag-o sa usa ka function. Kini nga bahin nagtugot kanimo sa pag-apod-apod sa mga summary patch nga naglangkob sa daghang mga pagbag-o sa usa ka higayon, imbes sa proseso sa matag yugto nga aplikasyon sa mga buhi nga patch sa usa ka estrikto nga gihubit nga han-ay, nga lisud ipadayon. Samtang kaniadto ang matag sunod nga pagbag-o kinahanglan nga ibase sa kahimtang sa function pagkahuman sa katapusan nga pagbag-o, posible na karon nga ipakaylap ang daghang mga pagbag-o nga nahigot sa usa ka inisyal nga kahimtang sa usa ka higayon (ie, ang mga tigmentinar mahimo nga magpadayon sa usa ka gihiusa nga patch nga may kalabotan sa base kernel sa baylo. sa usa ka kutay sa mga patsa nga nagdepende sa usag usa);
    • Gipahibalo wala na gigamit nga suporta alang sa a.out executable file format ug
      gipapas code alang sa pagmugna og mga core files sa a.out format, nga anaa sa usa ka abandonado nga estado. Ang format nga a.out wala gigamit sa mga sistema sa Linux sa dugay nga panahon, ug ang pagmugna sa mga file sa a.out dugay na nga wala gisuportahan sa modernong mga himan sa default nga mga configuration sa Linux. Dugang pa, ang loader alang sa a.out nga mga file mahimong ipatuman sa hingpit sa user space;

    • Ang katakus sa pag-ila ug pagtangtang sa wala magamit nga code gidugang sa mekanismo sa pag-verify sa programa sa BPF. Ang kernel naglakip usab sa mga patch nga adunay suporta sa spinlock alang sa subsystem sa BPF, nga naghatag dugang nga kapabilidad alang sa pagdumala sa parehas nga pagpatuman sa mga programa sa BPF;
  • Kagamitan
    • Sa driver sa Nouveau gidugang suporta alang sa heterogeneous nga pagdumala sa panumduman, nga nagtugot sa CPU ug GPU nga maka-access sa komon nga gi-synchronize nga mga lugar sa memorya. Ang shared virtual memory system (SVM, shared virtual memory) gipatuman base sa HMM (Heterogenous memory management) subsystem, nga nagtugot sa paggamit sa mga device nga adunay ilang kaugalingong memory management units (MMU, memory management unit), nga maka-access pangunang memorya. Sa partikular, gamit ang HMM, mahimo nimong organisahon ang gipaambit nga address space tali sa GPU ug CPU, diin ang GPU maka-access sa main memory sa proseso. Ang suporta sa SVM sa pagkakaron gipalihok lamang alang sa mga GPU sa pamilyang Pascal, bisan pa nga ang suporta gihatag alang sa Volta ug Turing GPUs usab. Dugang pa, sa Nouveau gidugang bag-ong ioctl aron makontrol ang pagbalhin sa mga lugar sa memorya sa proseso sa memorya sa GPU;
    • Sa driver sa Intel DRM alang sa GPU Skylake ug sa ulahi (gen9+) gilakip Sa kasagaran, ang fastboot mode nagwagtang sa dili kinahanglan nga mga pagbag-o sa mode sa panahon sa boot. Gidugang bag-o nga device identifiers base sa Coffelake ug Ice Lake microarchitectures. Alang sa Coffelake chips gidugang suporta sa GVT (GPU virtualization). Para sa mga virtual GPU gipatuman Suporta sa VFIO EDID. Para sa mga panel sa LCD MIPI/DSI gidugang suporta para sa mga elemento sa ACPI/PMIC. Gipatuman bag-ong TV mode 1080p30/50/60 TV;
    • Gidugang nga suporta para sa Vega10/20 BACO GPU sa amdgpu driver. Gipatuman ang Vega 10/20 power management ug Vega 10 cooler control tables. Gidugang ang bag-ong PCI device identifiers para sa Picasso GPUs. Gidugang interface alang sa pagdumala sa mga naka-iskedyul nga dependency aron malikayan ang mga deadlock;
    • Gidugang DRM/KMS driver alang sa screen accelerators ARM Komeda (Mali D71);
    • Gidugang nga suporta alang sa Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 ug Kingdisplay kd097d04 screen panels;
    • Gidugang nga suporta alang sa Rockchip RK3328, Cirrus Logic CS4341 ug CS35L36, MediaTek MT6358, Qualcomm WCD9335 ug Ingenic JZ4725B audio codec, ingon man Mediatek MT8183 audio platform;
    • Gidugang nga suporta alang sa NAND controllers Flash STMicroelectronics FMC2, Amlogic Meson;
    • Gidugang nga suporta sa accelerator alang sa mga sistema sa hardware sa Habana AI;
    • Gidugang nga suporta alang sa NXP ENETC gigabit Ethernet controllers ug MediaTek MT7603E (PCIe) ug MT76x8 wireless interface.

Sa samang higayon, ang Latin American Free Software Foundation naporma
kapilian bug-os nga libre nga kernel 5.1 - Linux-libre 5.1-gnu, gitangtang sa firmware ug mga elemento sa drayber nga adunay dili libre nga mga sangkap o mga seksyon sa code, nga ang sakup niini limitado sa tiggama. Sa bag-ong pagpagawas, ang blob loading na-disable sa mt7603 ug goya nga mga drayber. Gi-update nga blob cleaning code sa mga driver ug subsystems wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifix, btmrvl, btmtk ug touchscreen_dmi. Ang paglimpyo sa blob sa lantiq xrx200 firmware loader nahunong tungod sa pagtangtang niini gikan sa kernel.

Source: opennet.ru

Idugang sa usa ka comment