Linux 5.1 kernel release

Pagkatapos ng dalawang buwan ng pag-unlad, si Linus Torvalds ipinakilala pagpapalabas ng kernel Linux 5.1. Kabilang sa mga pinaka-kapansin-pansing pagbabago: isang bagong interface para sa asynchronous na I/O io_uring, ang kakayahang gamitin ang NVDIMM bilang RAM, suporta para sa shared virtual memory sa Nouveau, suporta para sa scalable na pagsubaybay sa napakalaking file system sa pamamagitan ng fanotify, ang kakayahang i-configure ang Zstd compression mga antas sa Btrfs, isang bagong cpuidle TEO handler, pagpapatupad ng mga system call upang malutas ang problema sa 2038, ang kakayahang mag-boot mula sa device-mapper device na walang initramfs, SafeSetID LSM module, suporta para sa pinagsamang mga live na patch.

Ang pangunahing mga inobasyon:

  • Disk subsystem, I/O at mga file system
    • Nagpatupad ng bagong interface para sa asynchronous na I/O - io_uring, na kapansin-pansin sa suporta nito para sa I/O polling at ang kakayahang magtrabaho nang may buffering o walang. Alalahanin natin na ang dating iminungkahing asynchronous na mekanismo ng I/O na "aio" ay hindi sumusuporta sa buffered I/O, maaari lamang gumana sa O_DIRECT mode (nang walang buffering at bypassing ang cache), nagkaroon ng mga problema sa pag-lock dahil sa paghihintay para sa availability ng metadata, at nagpakita ng malalaking gastos sa overhead dahil sa pagkopya ng data sa memorya.

      Sa loob ng API
      Sinubukan ng mga developer ng io_uring na alisin ang mga pagkukulang ng lumang interface ng aio. Sa pamamagitan ng pagiging produktibo Ang io_uring ay napakalapit sa SPDK at higit na nauuna sa libaio kapag nagtatrabaho nang pinagana ang botohan. Isang library ang inihanda para sa paggamit ng io_uring sa mga end application na tumatakbo sa user space naglilibang, na nagbibigay ng mataas na antas na balangkas sa ibabaw ng kernel interface;

    • Sa mekanismo ng pagsubaybay sa kaganapan sa FS fanotify() idinagdag suporta para sa pagsubaybay sa superblock at mga sitwasyon sa pagbabago ng istraktura dirent (mga kaganapan ng paglikha, pagtanggal at paglipat ng mga direktoryo). Nakakatulong ang mga ipinakitang feature na malutas ang mga problema sa scalability na lumalabas kapag lumilikha ng recursive change tracking sa napakalaking file system gamit ang mekanismo ng inotify (ang mga dirent na pagbabago ay dati lang masusubaybayan sa pamamagitan ng inotify, ngunit
      pagganap sa mga kondisyon ng recursive na pagsubaybay ng malalaking nested na mga direktoryo na naiwan ng maraming nais). Ngayon ang naturang pagsubaybay ay maaaring epektibong gawin sa pamamagitan ng fanotify;

    • Sa Btrfs file system idinagdag ang kakayahang i-customize ang antas ng compression para sa zstd algorithm, na maaaring ituring na pinakamainam na kompromiso sa pagitan ng mabilis ngunit hindi epektibong lz4 at ng mabagal ngunit magandang compression xz. Sa pamamagitan ng pagkakatulad sa kung paano naging posible noon na itakda ang antas ng compression kapag gumagamit ng zlib, idinagdag ang suporta para sa opsyon sa pag-mount na "-o compress=zstd:level" para sa zstd. Sa panahon ng pagsubok, ang pinakamababang unang antas ay nagbigay ng compression ng data ng 2.658 beses na may bilis ng compression na 438.47 MB/s, bilis ng decompression na 910.51 MB/s at konsumo ng memory na 780 MB, at ang maximum na antas na 15 ay nagbigay ng 3.126 beses, ngunit may compression. bilis na 37.30 MB/s. pag-unpack ng 878.84 MB/s at pagkonsumo ng memorya 2547 MB;
    • Idinagdag ang kakayahang mag-boot mula sa isang file system na matatagpuan sa device-mapper device, nang hindi gumagamit ng initramfs. Simula sa kasalukuyang pagpapalabas ng kernel, ang mga device-mapper device ay maaaring direktang gamitin sa panahon ng proseso ng boot, halimbawa, bilang partition sa root file system. Ang partisyon ay na-configure gamit ang boot parameter na "dm-mod.create". Ang mga module ng device-mapper na pinapayagan para sa pag-load ay kinabibilangan ng: "crypt", "delay", "linear", "snapshot-origin" at "verity";
    • Ang F2FS_NOCOW_FL flag ay idinagdag sa F2FS file system na nakatuon sa mga Flash drive, na nagpapahintulot sa iyo na huwag paganahin ang copy-on-write mode para sa isang naibigay na file;
    • Inalis ang file system mula sa kernel Mga Exof, na isang variant ng ext2, na inangkop para sa pagtatrabaho sa mga imbakan ng object ng OSD (Object-based Storage Device). Ang suporta para sa SCSI protocol para sa mga naturang object storage device ay inalis din;
  • Virtualization at Seguridad
    • Nagdagdag ng PR_SPEC_DISABLE_NOEXEC na opsyon sa prctl() para makontrol ang speculative execution ng mga tagubilin para sa napiling proseso. Binibigyang-daan ka ng isang bagong opsyon na piliing i-disable ang speculative execution para sa mga prosesong posibleng maatake ng Spectre attack. Ang lock ay tumatagal hanggang sa unang tawag sa exec();
    • Ipinatupad ang LSM module SafeSetID, na nagbibigay-daan sa mga serbisyo ng system na ligtas na pamahalaan ang mga user nang walang tumataas na mga pribilehiyo (CAP_SETUID) at nang hindi nakakakuha ng mga pribilehiyo sa ugat. Ang mga pribilehiyo ay itinalaga sa pamamagitan ng pagtukoy ng mga panuntunan sa mga securityf batay sa isang puting listahan ng mga wastong binding (sa anyong β€œUID1:UID2”);
    • Idinagdag ang mababang antas ng mga pagbabago na kinakailangan para sa stack-based na pag-load ng mga security module (LSM). Ipinakilala ang "lsm" kernel boot na opsyon upang kontrolin kung aling mga module ang na-load at sa anong pagkakasunud-sunod;
    • Ang suporta para sa mga namespace ng file ay idinagdag sa audit subsystem;
    • Pinalawak ang mga kakayahan ng GCC plugin structleak, na nagbibigay-daan sa iyong harangan ang mga potensyal na pagtagas ng mga nilalaman ng memorya. Ang pagsisimula ng anumang mga variable na ginagamit sa code sa pamamagitan ng reference na pag-access sa stack ay ibinigay;
  • Subsystem ng network
    • Para sa mga socket ipinatupad bagong opsyon na "SO_BINDTOIFINDEX" katulad ng
      "SO_BINDTODEVICE", ngunit kinuha bilang argumento ang index number ng network interface sa halip na ang interface name;

    • Ang mac80211 stack ay nagdagdag ng kakayahang magtalaga ng maraming BSSID (MAC address) sa isang device. Bilang bahagi ng isang proyekto upang i-optimize ang pagganap ng WiFi, ang mac80211 stack ay nagdagdag ng airtime allocation accounting at ang kakayahang ipamahagi ang airtime sa maraming istasyon (kapag tumatakbo sa access point mode, naglalaan ng mas kaunting oras ng paghahatid upang mabagal ang mga wireless na istasyon, sa halip na pantay na pamamahagi ng oras sa mga lahat ng mga istasyon);
    • Nagdagdag ng mekanismo "kalusugan ng devlink", na nagbibigay ng mga abiso kapag may mga problema sa interface ng network;
  • Mga serbisyo ng memorya at system
    • Ipinatupad secure na paghahatid ng signal na nagbibigay-daan para sa muling paggamit ng PID. Halimbawa, kapag tumatawag sa kill dati, maaaring lumitaw ang isang sitwasyon kung saan, kaagad pagkatapos magpadala ng signal, ang target na PID ay maaaring malaya dahil sa pagwawakas ng proseso at inookupahan ng isa pang proseso, at ang signal ay mapupunta sa ibang proseso. Upang maalis ang mga ganitong sitwasyon, may idinagdag na bagong system call na pidfd_send_signal, na gumagamit ng mga descriptor ng file mula sa /proc/pid upang matiyak ang matatag na proseso na nagbubuklod. Kahit na ang PID ay muling ginagamit sa panahon ng pagpoproseso ng system call, ang file descriptor ay hindi magbabago at maaaring ligtas na magamit upang magpadala ng signal sa proseso;
    • Idinagdag ang kakayahang gumamit ng mga permanenteng memory device (persistent-memory, halimbawa NVDIMM) bilang RAM. Hanggang ngayon, sinusuportahan ng kernel ang mga device tulad ng mga storage device, ngunit ngayon ay maaari din silang magamit bilang karagdagang RAM. Ang feature ay ipinatupad bilang tugon sa mga kagustuhan ng mga user na handang magtiis sa isang performance lag at gustong gamitin ang native Linux kernel memory management API sa halip na gumamit ng mga umiiral na user-space memory allocation system na tumatakbo sa ibabaw ng mmap para sa dax file;
    • Nagdagdag ng bagong CPU idle handler (cpuidle, nagpapasya kung kailan mailalagay ang CPU sa malalim na power saving mode; mas malalim ang mode, mas malaki ang matitipid, ngunit mas matagal bago lumabas sa mode) - TEO (Timer Events Oriented Governor ). Hanggang ngayon, dalawang cpuidle handlers ang iminungkahi - "menu" at "ladder", na naiiba sa heuristics. Ang handler ng "menu" ay may alam na mga problema sa paggawa ng mga heuristic na desisyon, upang alisin ang napagpasyahan na maghanda ng bagong handler. Ang TEO ay nakaposisyon bilang isang alternatibo sa "menu" handler, na nagbibigay-daan para sa mas mataas na pagganap habang pinapanatili ang parehong antas ng paggamit ng kuryente.
      Maaari mong i-activate ang bagong handler gamit ang boot parameter na β€œcpuidle.governor=teo”;

    • Bilang bahagi ng gawaing alisin mga problema ng 2038, sanhi ng overflow ng 32-bit time_t type, kasama ang mga system call na nag-aalok ng 32-bit time counter para sa 64-bit na mga arkitektura. Bilang resulta, ang 64-bit na time_t na istraktura ay magagamit na ngayon sa lahat ng mga arkitektura. Ang mga katulad na pagbabago ay ipinatupad din sa network subsystem para sa mga opsyon timestamp mga socket ng network;
    • Sa mainit na sistema ng patching para sa core (live na patching) idinagdag Ang feature na "Atomic Replace" para sa atomically na paglalapat ng isang serye ng mga pagbabago sa isang function. Binibigyang-daan ka ng feature na ito na ipamahagi ang mga summary patch na sumasaklaw sa ilang mga pagbabago nang sabay-sabay, sa halip na ang proseso ng yugto-by-stage na aplikasyon ng mga live na patch sa isang mahigpit na tinukoy na pagkakasunud-sunod, na medyo mahirap mapanatili. Bagama't dati ang bawat kasunod na pagbabago ay dapat na nakabatay sa estado ng function pagkatapos ng huling pagbabago, posible na ngayong magpalaganap ng ilang pagbabago na nakatali sa isang paunang estado nang sabay-sabay (ibig sabihin, ang mga maintainer ay maaaring magpanatili ng isang pinagsama-samang patch na may kaugnayan sa base kernel sa halip. ng isang kadena ng mga patch na nakasalalay sa isa't isa );
    • Inihayag hindi na ginagamit ang suporta para sa a.out executable file format at
      tinanggal code para sa pagbuo ng mga pangunahing file sa a.out na format, na nasa isang inabandunang estado. Ang format na a.out ay hindi ginagamit sa mga Linux system sa loob ng mahabang panahon, at ang pagbuo ng mga a.out na file ay matagal nang hindi sinusuportahan ng mga modernong tool sa mga default na configuration ng Linux. Bukod pa rito, ang loader para sa mga a.out na file ay maaaring ganap na ipatupad sa espasyo ng user;

    • Ang kakayahang tukuyin at alisin ang hindi nagamit na code ay idinagdag sa mekanismo ng pag-verify ng programa ng BPF. Kasama rin sa kernel ang mga patch na may suporta sa spinlock para sa subsystem ng BPF, na nagbibigay ng mga karagdagang kakayahan para sa pamamahala sa parallel na pagpapatupad ng mga programa ng BPF;
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Sa driver ng Nouveau idinagdag suporta para sa magkakaibang pamamahala ng memorya, na nagpapahintulot sa CPU at GPU na ma-access ang mga karaniwang naka-synchronize na lugar ng memorya. Ang shared virtual memory system (SVM, shared virtual memory) ay ipinatupad sa batayan ng HMM (Heterogenous memory management) subsystem, na nagpapahintulot sa paggamit ng mga device na may sariling mga memory management unit (MMU, memory management unit), na maaaring ma-access pangunahing memorya. Sa partikular, gamit ang HMM, maaari kang mag-ayos ng shared address space sa pagitan ng GPU at CPU, kung saan maa-access ng GPU ang pangunahing memorya ng proseso. Kasalukuyang pinagana lang ang suporta ng SVM para sa mga GPU ng pamilya ng Pascal, bagama't ibinibigay din ang suporta para sa mga Volta at Turing GPU. Bukod dito, sa Nouveau dagdag pa bagong ioctl upang kontrolin ang paglipat ng mga lugar ng memorya ng proseso sa memorya ng GPU;
    • Sa driver ng Intel DRM para sa GPU Skylake at mas bago (gen9+) nakabukas Bilang default, ang fastboot mode ay nag-aalis ng mga hindi kinakailangang pagbabago sa mode sa panahon ng boot. Idinagdag Π½ΠΎΠ²Ρ‹Π΅ mga identifier ng device batay sa microarchitecture ng Coffelake at Ice Lake. Para sa Coffelake chips idinagdag suporta sa GVT (Virtualization ng GPU). Para sa mga virtual na GPU ipinatupad Suporta sa VFIO EDID. Para sa mga LCD panel MIPI/DSI idinagdag suporta para sa mga elemento ng ACPI/PMIC. Ipinatupad bagong TV mode 1080p30/50/60 TV;
    • Nagdagdag ng suporta para sa Vega10/20 BACO GPU sa amdgpu driver. Ipinatupad ang Vega 10/20 power management at Vega 10 cooler control table. Nagdagdag ng mga bagong PCI device identifier para sa Picasso GPU. Idinagdag interface para sa pamamahala ng mga nakaiskedyul na dependencies upang maiwasan ang mga deadlock;
    • Idinagdag DRM/KMS driver para sa mga screen accelerators ARM Komeda (Mali D71);
    • Nagdagdag ng suporta para sa Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 at Kingdisplay kd097d04 na mga panel ng screen;
    • Nagdagdag ng suporta para sa Rockchip RK3328, Cirrus Logic CS4341 at CS35L36, MediaTek MT6358, Qualcomm WCD9335 at Ingenic JZ4725B audio codec, pati na rin sa Mediatek MT8183 audio platform;
    • Nagdagdag ng suporta para sa mga NAND controllers Flash STMicroelectronics FMC2, Amlogic Meson;
    • Nagdagdag ng suporta sa accelerator para sa mga sistema ng hardware ng Habana AI;
    • Nagdagdag ng suporta para sa NXP ENETC gigabit Ethernet controllers at MediaTek MT7603E (PCIe) at MT76x8 wireless interface.

Kasabay nito, ang Latin American Free Software Foundation nabuo
pagpipilian ganap na libreng kernel 5.1 - Linux-libre 5.1-gnu, na-clear sa firmware at mga elemento ng driver na naglalaman ng mga proprietary na bahagi o mga seksyon ng code, na ang saklaw ay limitado ng tagagawa. Sa bagong release, ang blob loading ay hindi pinagana sa mt7603 at goya driver. Na-update na blob cleaning code sa mga driver at subsystem wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifix, btmrvl, btmtk at touchscreen_dmi. Ang paglilinis ng blob sa lantiq xrx200 firmware loader ay nahinto dahil sa pagtanggal nito sa kernel.

Pinagmulan: opennet.ru

Magdagdag ng komento