Linux kodola 5.1 izlai

Pēc diviem mēnešiem attīstības Linuss Torvalds prezentēja izlaida kodolu Linux 5.1. Starp nozīmīgākajām izmaiņām: jauns interfeiss asimetriskajam ievadam/izvadam io_uring, iespēja izmantot NVDIMM kā RAM, Nouveau atbalsts sadalītai virtuālajai atmiņai, atbalsts ļoti lielu failu sistēmu skalējamai uzraudzībai caur fanotify, iespēja pielāgot Btrfs Zstd saspiešanas līmeņus, jauns cpuidle TEO apstrādātājs, sistēmas izsaukumu realizācija 2038. gada problēmas risināšanai, iespēja boototies no ierīcēm device-mapper bez initramfs, LSM modulis SafeSetID, kombinētu live-patch atbalsts.

īpašības jaunumi:

  • Disku apakšsistēma, I/O un failu sistēmas
    • Ieviests jauns interfeiss asimetriskajam ievadam/izvadam — io_uring, kas atzīmējams ar atbalstu ievada/izvades polēšanai un iespēju strādāt gan ar buferizāciju, gan bez buferizācijas. Atgādinām, ka iepriekš piedāvātais asimetriskā ievada/izvades mehānismus «aio» neatbalstīja buferizētu ievadu/izvadi, varēja darboties tikai O_DIRECT режимā (bez buferizācijas un apietot kešatmiņu), bija problēmas ar bloķēšanas rašanos, gaidot metadatu pieejamību, un demonstrēja lielas izpildes izmaksas datu kopēšanas dēļ atmiņā.

      API ietvaros
      io_uring izstrādātāji centās novērst vecā aio interfeisa trūkumus. Saskaņā ar veiktspējas io_uring ir ļoti tuvs SPDK un ievērojami pārspēj libaio, strādājot ar ieslēgtu polēšanu. Lai izmantotu io_uring gala lietojumprogrammās, kas darbojas lietotāja telpā, ir sagatavota bibliotēka liburing, kas sniedz augsta līmeņa apvalku virs kodola interfeisa;

    • Fanotify() notikumu uzraudzības mehānismā pievienots atbalsta superbloka un dirent struktūras (katalogu izveidošanas, dzēšanas un pārvietošanas notikumi). Piedāvātās iespējas palīdz risināt skalējamības problēmas, kas rodas, izveidojot rekursīvās izmaiņu uzraudzības funkcijas ļoti lielās failu sistēmās, izmantojot inotify mehānismu (dirent izmaiņas iepriekš varēja izsekot tikai caur inotify, taču
      efektivitāte lielu izsistītu katalogu rekursīvā uzraudzībā atstāja daudz ko vēlēties). Tagad šādu uzraudzību var efektīvi veikt, izmantojot fanotify;
    • Failu sistēmā Btrfs pievienots iespēja iestatīt saspiešanas līmeni zstd algoritmam, kas var tikt uzskatīts par optimālu kompromisu starp ātru, bet neefektīvu lz4 un lēnu, bet labi saspiežušu xz. Līdzīgi kā iepriekš varēja iestatīt saspiešanas līmeni, lietojot zlib, zstd ir pievienota atbalsts montēšanas opcijai "-o compress=zstd:level". Testējot, minimālais pirmais līmenis nodrošināja datu saspiešanu 2.658 reizes, pie saspiešanas ātruma 438.47 MB/s, atslēgšanas ātruma 910.51 MB/s un atmiņas patēriņa 780 MB, savukārt maksimālais 15. līmenis – 3.126 reizes, bet pie saspiešanas ātruma 37.30 MB/s, atslēgšanas ātruma 878.84 MB/s un atmiņas patēriņa 2547 MB;
    • Pievienota iespēja ielādēt no failu sistēmas, kas izvietota ierīcē device-mapper, neizmantojot initramfs. Sākot ar pašreizējo kodola izlaidumu, ierīci device-mapper var tieši izmantot boot procesā, piemēram, kā saknes failu sistēmas daļu. Iestatījums tiek veikts ar boot parametru "dm-mod.create". Atļautie lādēšanai modulī device-mapper ir: "crypt", "delay", "linear", "snapshot-origin" un "verity";
    • Flash atmiņas orientētā failu sistēmā F2FS ir pievienota F2FS_NOCOW_FL karogs, kas ļauj atslēgt copy-on-write režīmu noteiktam failam;
    • No kodola ir izņemta failu sistēma Exofs, kas ir ext2 varianta, pielāgota darbam ar objektu glabāšanas ierīcēm OSD (Object-based Storage Device). Tāpat ir izņemts SCSI protokola atbalsts šādām objektu glabāšanas ierīcēm;
  • Virtualizācija un drošība
    • prctl() ir pievienota opcija PR_SPEC_DISABLE_NOEXEC, lai pārvaldītu spekulatīvo instrukciju izpildi izvēlētajam procesam. Jaunā opcija ļauj selektīvi atslēgt spekulatīvo izpildi procesiem, kuri potenciāli var tikt apdraudēti ar Spectre uzbrukumu. Bloķēšana ir spēkā līdz pirmajai exec() izsaukšanai;
    • Ieviests LSM modulis SafeSetID, kas ļauj sistēmas pakalpojumiem droši pārvaldīt lietotājus bez privilēģiju paaugstināšanas (CAP_SETUID) un bez root lietotāja pilnvarām. Privilegiju piešķiršana notiek, nosakot securityfs noteikumus, pamatojoties uz baltā saraksta pieņemamu savienojumu formā "UID1:UID2";
    • Pievienoti zemas līmeņa grozījumi, kas nepieciešami drošības moduļu (LSM) ielādes kaudzes organizēšanai. Ieviešs kodola ielādes parametrs «lsm», kas ļauj kontrolēt, kuri moduļi tiek ielādēti un kādā secībā;
    • Audita apakšsistēmā pievienota atbalsts failu nosaukumu telpām;
    • Paplašināti GCC spraudņa structleak iespējas, kas ļauj bloķēt potenciālās atmiņas satura noplūdes. Nodrošināta jebkuru mainīgo inicializācija, kas tiek izmantota kodā, izmantojot atsauces piekļuvi stekā;
  • Tīkla subsistēma
    • Sockets ir ieviesta jauna opcija «SO_BINDTOIFINDEX», kas ir līdzīga
      «SO_BINDTODEVICE», bet pieņem kā argumentu tīkla interfeisa indeksnumuru, nevis interfeisa nosaukumu;
    • Mac80211 kaudzē pievienota iespēja piešķirt vienai ierīcei vairākus BSSID (MAC adreses). WiFi veiktspējas optimizācijas projekta ietvaros mac80211 kaudzē pievienots gaisa laika sadales aprēķins un iespēja sadalīt gaisa laiku starp vairākām stacijām (strādājot piekļuves punkta režīmā, samazinot laiku, ko vājām bezvadu stacijām, nevis vienmērīgi sadalot laiku starp visām stacijām);
    • Pievienots mehānisms „devlink health«, nodrošinot paziņojumus par problēmām ar tīkla interfeisu;
  • Atmiņa un sistēmas pakalpojumi
    • Ieviesta droša signālu piegāde, ņemot vērā PID atkārtoto izmantošanu. Piemēram, izpildot kill izsaukumu, iepriekš varēja rasties situācija, kad tūlīt pēc signāla nosūtīšanas mērķa PID varēja tikt atbrīvots procesu beigšanas dēļ un aizņemts ar citu procesu, un galu galā signāls tika nosūtīts citam procesam. Lai novērstu līdzīgas situācijas, pievienots jauns sistēmas izsaukums pidfd_send_signal, kas izmanto failu aprakstus no /proc/pid, lai nodrošinātu stabilu piekļuvi procesam. Pat ja PID tiks atkārtoti izmantots sistēmas izsaukuma apstrādes laikā, faila apraksts nemainīsies, un to var droši izmantot, lai nosūtītu signālu procesam;
    • Pievienota iespēja izmantot pastāvīgās atmiņas ierīces (persistent-memory, piemēram NVDIMM.) kā RAM. Līdz šim šādas ierīces kodolā tika atbalstītas kā uzglabāšanas ierīces, taču tagad tās var izmantot arī kā papildu operatīvo atmiņu. Šī iespēja ir ieviesta, reaģējot uz lietotāju vēlmēm, kuri ir gatavi samierināties ar veiktspējas atpalicību un vēlas izmantot Linux kodola atmiņas pārvaldības API, nevis esošās lietotāja telpā strādājošas atmiņas sadales sistēmas, kas darbojas virs mmap dax-failiem;
    • Pievienots jauns CPU bezdarbības apstrādātājs (cpuidle, nosaka, kad CPU var tikt pārslēgts dziļos enerģijas taupīšanas režīmos, jo dziļāks režīms — jo lielāka ietaupījuma potenciāls, taču nepieciešams ilgāks laiks, lai izietu no režīma) — TEO (laika notikumiem orientēts gubernators). Līdz šim tika piedāvāti divi cpuidle apstrādātāji — 'menu' un 'ladder', atšķirīgi pēc heuristikām. Apstrādātājā 'menu' ir zināmas problēmas ar heuristisko lēmumu pieņemšanu, tāpēc tika nolemts sagatavot jaunu apstrādātāju. TEO tiek pozicionēts kā alternatīva 'menu' apstrādātājam, kas ļauj sasniegt augstāku veiktspēju, saglabājot tādu pašu enerģijas patēriņu.
      Jauno apstrādātāju var aktivizēt, izmantojot ielādes parametru 'cpuidle.governor=teo';
    • Strādājot pie novēršanas 2038. gada problēmas., ko izraisīja 32 bitu time_t tipa pārpilde, sistēmas izsaukumi iekļauj 64 bitu laika skaitītājus 32 bitu arhitektūrām. Rezultātā 64 bitu time_t struktūru tagad var izmantot visās arhitektūrās. Analogi uzlabojumi ir ieviesti arī tīkla apakšsistēmā opcijām laika zīmoga tīkla soketiem;
    • Ievadīta karsto ierakstu kodola sistēmā (live patching) pievienots Iespēja „Atomic Replace” atomārajām izmaiņām vienā funkcijā. Šī iespēja ļauj izplatīt apkopojuma plāksterus, kas iekļauj vairākas izmaiņas vienlaicīgi, nevis sarežģītu secīgu live-plāksteru pielietojumu noteiktā kārtībā. Ja iepriekš katrai nākamajai izmaiņai bija jābalstās uz funkcijas stāvokli pēc iepriekšējās izmaiņas, tagad iespējams izplatīt vairākas izmaiņas, kas saistītas ar vienu sākotnējo stāvokli (t.i., uzturētāji var atbalstīt vienu apkopojuma plāksteri attiecībā uz pamata kodolu, nevis ķēdi atkarīgu plāksteru);
    • Paziņots par novecojušu a.out izpildfailu formāta atbalstu un
      noņemts kodu core-failu ģenerēšanai a.out formātā, kas ir pamesta stāvoklī. a.out formāts sen vairs netiek pielietots Linux sistēmās, un a.out failu ģenerēšana jau sen netiek atbalstīta mūsdienu instrumentārijos Linux noklusējuma konfigurācijās. Turklāt a.out failu ielādētājs var tikt īstenots pilnībā lietotāja telpā;
    • BPF programmu verificēšanas mehānismā ir pievienota iespēja noteikt un dzēst neizmantoto kodu. Ir iekļauti arī plāksteri ar spinlock atbalstu BPF apakšsistēmā, kas sniedz papildu iespējas BPF programmu paralēlā izpildē;
  • Aprīkojums
    • Nouveau draiverī pievienots atbalsts heterogēnai atmiņas pārvaldībai, kas ļauj CPU un GPU piekļūt kopīgām sinhronizētām atmiņas zonām. Kopējās virtuālās atmiņas sistēma (SVM, shared virtual memory) ir īstenota, pamatojoties uz HMM (Heterogeneous memory management) apakšsistēmu, ļaujot izmantot ierīces ar saviem atmiņas pārvaldības blokiem (MMU, memory management unit), kas var piekļūt galvenajai atmiņai. Ar HMM iespējams izveidot kopīgu adresācijas telpu starp GPU un CPU, kur GPU var piekļūt procesa galvenajai atmiņai. SVM atbalsts pagaidām ir iespējots tikai Pascal ģimenes GPU, lai gan atbalstu nodrošina arī Volta un Turing GPU. Turklāt Nouveau iegūts jauns ioctl atmiņas apgabalu migrācijas kontrolei procesu atmiņā uz GPU;
    • Intel DRM vadītājā Skylake un jaunākiem GPU (gen9+) ir iekļauts Noklusējuma fastboot režīms, kas izslēdz nevajadzīgas režīmu maiņas startēšanas laikā. Pievienoti jauni ierīču identifikatori, kas balstīti uz mikroarhitektūrām Coffelake un Ice Lake. Coffelake mikroshēmām pievienots GVT atbalsts (GPU virtualizācija). Virtualizētajiem GPU ir ieviesta VFIO EDID atbalsts. LCD paneļiem MIPI/DSI pievienots ACPI/PMIC elementu atbalsts. Ieviesti jauni TV režīmi 1080p30/50/60 TV;
    • AMDGPU draiverī pievienots GPU Vega10/20 BACO atbalsts. Iestatīti jaudas vadības līdzekļi Vega 10/20 un Vega 10 dzesētāja vadības tabulas. Pievienoti jauni PCI ierīču identifikatori GPU Picasso. Pievienots plānoto atkarību vadības interfeiss, lai izslēgtu savstarpējās bloķēšanas;
    • Pievienots DRM/KMS draiveris ekrāna darbību paātrinātājiem ARM Komeda (Mali D71);
    • Pievienots Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 un Kingdisplay kd097d04 ekrāna paneļu atbalsts;
    • Pievienots Rockchip RK3328, Cirrus Logic CS4341 un CS35L36, MediaTek MT6358, Qualcomm WCD9335 un Ingenic JZ4725B skaņas kodeku atbalsts, kā arī MediaTek MT8183 skaņas platformas atbalsts;
    • Pievienots NAND kontrolieru Flash STMicroelectronics FMC2, Amlogic Meson atbalsts;
    • Pievienots atbalsts Habana AI aparatūras paātrinātājiem;
    • Pievienots NXP ENETC gigabita Ethernet kontrolieru un MediaTek MT7603E (PCIe) un MT76x8 bezvadu interfeisu atbalsts.

Vienlaikus Latīņamerikas Brīvās Programmatūras fonds izveidoja
variantu pilnībā brīvs kodols 5.1 — Linux-libre 5.1-gnu, kas attīrīts no programmatūras elementi un draiveri, kuri satur nesaturošus komponentus vai kodu, kuru izmantošana ir ierobežota ražotājam. Jaunajā laidienā ir atslēgta blobu ielāde draiveros mt7603 un goya. Atjaunināts blobu attīrīšanas kods draiveros un subsistēmās wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk un touchscreen_dmi. Blobu attīrīšana startēšanas draiverī lantiq xrx200 ir pārtraukta sakarā ar tā noņemšanu no kodola.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster