Kutolewa kwa kernel ya Linux 5.8

Baada ya miezi miwili ya maendeleo, Linus Torvalds kuletwa kutolewa kwa kernel Linux 5.8. Miongoni mwa mabadiliko yanayoonekana zaidi: kigunduzi cha hali ya mbio za KCSAN, utaratibu wa ulimwengu wote wa kupeana arifa kwa nafasi ya mtumiaji, usaidizi wa maunzi kwa usimbaji fiche wa ndani, mifumo ya usalama iliyoimarishwa ya ARM64, usaidizi wa kichakataji cha Baikal-T1 cha Urusi, uwezo wa kuweka matukio ya procfs kando. , utekelezaji wa mifumo ya usalama ya Kivuli kwa ARM64 Call Stack na BTI.

Kernel 5.8 ikawa kubwa zaidi katika suala la idadi ya mabadiliko ya punje zote wakati wa kuwepo kwa mradi huo. Zaidi ya hayo, mabadiliko hayahusiani na mfumo mdogo wowote, lakini hufunika sehemu tofauti za kernel na yanahusishwa zaidi na urekebishaji wa ndani na kusafisha. Mabadiliko makubwa yanaonekana katika madereva. Toleo jipya lilijumuisha marekebisho 17606 kutoka kwa wasanidi programu 2081, ambayo yaliathiri takriban 20% ya faili zote kwenye hazina ya msimbo wa kernel. Ukubwa wa kiraka ni 65 MB (mabadiliko yaliathiri faili 16180, mistari 1043240 ya kanuni iliongezwa, mistari 489854 ilifutwa). Kwa kulinganisha, tawi la 5.7 lilikuwa na marekebisho 15033 na ukubwa wa kiraka wa 39 MB. Takriban 37% ya mabadiliko yote yaliyoletwa katika 5.8 yanahusiana na viendeshi vya kifaa, takriban 16% ya mabadiliko yanahusiana na kusasisha msimbo maalum wa usanifu wa maunzi, 11% yanahusiana na safu ya mtandao, 3% inahusiana na mifumo ya faili, na 4% zinahusiana na mifumo ndogo ya kernel ya ndani.

kuu ubunifu:

  • Virtualization na Usalama
    • Upakiaji wa moduli za kernel ambazo zina sehemu zilizo na msimbo ambao biti zinazoruhusu utekelezaji na uandishi huwekwa wakati huo huo. Mabadiliko hayo yalitekelezwa kama sehemu ya mradi mkubwa zaidi wa kuondoa kernel ya matumizi ya kurasa za kumbukumbu zinazoruhusu utekelezaji na uandishi wa wakati mmoja.
    • Sasa inawezekana kuunda hali tofauti za procfs, ikiruhusu utumiaji wa alama nyingi za procfs, zilizowekwa na chaguzi tofauti, lakini zinaonyesha nafasi ya jina ya kitambulisho cha mchakato sawa (pid namespace). Hapo awali, sehemu zote za kupachika za procf ziliakisi uwakilishi mmoja wa ndani pekee, na mabadiliko yoyote kwenye vigezo vya kupachika yaliathiri sehemu nyingine zote za kupachika zinazohusishwa na nafasi ya jina ya mchakato sawa. Miongoni mwa maeneo ambayo kuongezeka kwa chaguzi tofauti kunaweza kuwa na mahitaji ni utekelezaji wa kutengwa kwa uzani mwepesi kwa mifumo iliyoingia na uwezo wa kuficha aina fulani za michakato na nodi za habari katika procfs.
    • Usaidizi wa utaratibu umetekelezwa kwa jukwaa la ARM64
      Kivuli-Call Stack, zinazotolewa na mkusanyaji wa Clang ili kulinda dhidi ya kubatilisha anwani ya urejeshaji ya chaguo za kukokotoa iwapo kutakuwa na kufurika kwa buffer. Kiini cha ulinzi ni kuhifadhi anwani ya kurejesha katika safu tofauti ya "kivuli" baada ya kuhamisha udhibiti kwa kazi na kurejesha anwani hii kabla ya kuondoka kwa kazi.

    • Usaidizi wa maelekezo umeongezwa kwa jukwaa la ARM64 ARMv8.5-BTI (Kiashiria cha Malengo ya Tawi) ili kulinda utekelezaji wa seti za maagizo ambayo haipaswi kuunganishwa. Kuzuia mabadiliko ya sehemu za kiholela za msimbo kunatekelezwa ili kuzuia uundaji wa vifaa katika matumizi ambayo hutumia mbinu za upangaji zenye mwelekeo wa kurudi (ROP - Upangaji wa Kurejesha; mshambulizi hajaribu kuweka nambari yake kwenye kumbukumbu, lakini hufanya kazi kwenye vipande vilivyopo tayari. ya maagizo ya mashine ambayo huisha na maagizo ya udhibiti wa kurudi, ambayo mlolongo wa simu hujengwa ili kupata utendaji unaohitajika).
    • Usaidizi wa vifaa ulioongezwa kwa usimbaji fiche wa ndani wa vifaa vya kuzuia (Usimbaji Fiche wa Ndani) Vifaa vya usimbaji wa ndani kwa kawaida hujengwa kwenye hifadhi, lakini kimantiki huwekwa kati ya kumbukumbu ya mfumo na diski, husimba kwa uwazi na kusimbua I/O kulingana na funguo zilizoainishwa za kernel na algoriti ya usimbaji.
    • Imeongeza chaguo la mstari wa amri ya "initrdmem" ili kukuruhusu kubainisha anwani ya kumbukumbu halisi ya initrd wakati wa kuweka picha ya awali ya kuwasha kwenye RAM.
    • Umeongeza uwezo mpya: CAP_PERFMON kufikia mfumo mdogo wa utendaji na kufanya ufuatiliaji wa utendaji. CAP_BPF, ambayo inaruhusu utendakazi fulani wa BPF (kama vile kupakia programu za BPF) ambazo hapo awali zilihitaji haki za CAP_SYS_ADMIN (haki za CAP_SYS_ADMIN sasa zimegawanywa katika mchanganyiko wa CAP_BPF, CAP_PERFMON, na CAP_NET_ADMIN).
    • Imeongezwa kifaa kipya cha virtio-mem kinachokuruhusu kuweka kumbukumbu ya moto na kuziba moto kwenye mifumo ya wageni.
    • Ukumbusho uliotekelezwa wa shughuli za uchoraji ramani katika /dev/mem ikiwa kiendeshi cha kifaa kinatumia maeneo ya kumbukumbu yanayopishana.
    • Ulinzi wa kuathiriwa umeongezwa CrossTalk/SRBDS, ambayo inakuwezesha kurejesha matokeo ya maagizo fulani yaliyotekelezwa kwenye msingi mwingine wa CPU.
  • Huduma za kumbukumbu na mfumo
    • Katika hati inayofafanua sheria za kuunda nambari, kukubaliwa mapendekezo ya matumizi ya istilahi-jumuishi. Wasanidi programu hawapendekezwi kutumia michanganyiko ya 'bwana/mtumwa' na 'orodha nyeusi/orodha walioidhinishwa', pamoja na neno 'slave' kando. Mapendekezo yanahusu tu matumizi mapya ya masharti haya. Kutajwa kwa maneno yaliyoainishwa tayari yaliyopo kwenye msingi yatabaki bila kuguswa. Katika msimbo mpya, matumizi ya masharti yaliyowekwa alama yanaruhusiwa ikihitajika ili kusaidia API na ABI iliyofichuliwa katika nafasi ya mtumiaji, na vilevile wakati wa kusasisha msimbo ili kusaidia maunzi au itifaki zilizopo ambazo vipimo vyake vinahitaji matumizi ya masharti fulani.
    • Debugging chombo pamoja KCSAN (Kernel Concurrency Sanitizer), iliyoundwa kwa ugunduzi unaobadilika masharti ya mbio ndani ya msingi. Utumiaji wa KCSAN hutumika wakati wa kujenga katika GCC na Clang, na huhitaji marekebisho maalum wakati wa kukusanya ili kufuatilia ufikiaji wa kumbukumbu (vipimo vya kuvunja hutumika ambavyo huanzishwa kumbukumbu inaposomwa au kurekebishwa). Muundo wa KCSAN unaangazia uzuiaji chanya wa uwongo, hatari, na urahisi wa matumizi.
    • Imeongezwa utaratibu wa ulimwengu wote kutoa arifa kutoka kwa kernel hadi nafasi ya mtumiaji. Utaratibu unategemea kiendesha bomba cha kawaida na hukuruhusu kusambaza arifa kutoka kwa kernel kwa njia iliyofunguliwa kwenye nafasi ya mtumiaji. Maeneo ya kupokea arifa ni mabomba ambayo hufunguliwa katika hali maalum na kuruhusu ujumbe uliopokelewa kutoka kwa kernel kukusanywa katika bafa ya pete. Kusoma hufanywa na kazi ya kawaida ya read(). Mmiliki wa kituo huamua ni vyanzo vipi katika kernel vinavyohitaji kufuatiliwa na anaweza kufafanua kichujio ili kupuuza aina fulani za ujumbe na matukio. Kati ya matukio, ni shughuli zilizo na funguo pekee ndizo zinazotumika kwa sasa, kama vile kuongeza/kuondoa vitufe na kubadilisha sifa zao. Matukio haya yamepangwa kutumika katika GNOME.
    • Kuendeleza utendakazi wa 'pidfd' ili kusaidia kushughulikia hali za utumiaji tena wa PID (pidfd inahusishwa na mchakato mahususi na haibadiliki, huku PID inaweza kuhusishwa na mchakato mwingine baada ya mchakato wa sasa unaohusishwa na PID hiyo kuisha). Toleo jipya linaongeza usaidizi wa kutumia pidfd kuambatisha mchakato kwa nafasi za majina (kuruhusu pidfd kubainishwa wakati wa kutekeleza simu ya mfumo wa seti). Kutumia pidfd hukuruhusu kudhibiti kiambatisho cha mchakato kwa aina kadhaa za nafasi za majina kwa simu moja, kupunguza kwa kiasi kikubwa idadi ya simu zinazohitajika za mfumo na kutekeleza kiambatisho katika hali ya atomiki (ikiwa kiambatisho kwa moja ya nafasi za majina kitashindwa, zingine hazitaunganishwa) .
    • Imeongeza simu ya mfumo mpya facecessat2(), tofauti na
      faceat() hoja ya ziada na bendera zinazotii mapendekezo ya POSIX (hapo awali bendera hizi ziliigwa kwenye maktaba ya C, na kipengele kipya cha faceat2 kinaziruhusu kutekelezwa kwenye kernel).

    • Katika Kundi aliongeza mpangilio wa memory.swap.high ambao unaweza kutumika kupunguza kasi ya kazi zinazochukua nafasi nyingi sana za kubadilishana.
    • Kwa kiolesura kisicholingana cha I/O io_uring msaada ulioongezwa kwa simu ya mfumo tee().
    • Utaratibu ulioongezwa "Kiboreshaji cha BPF, iliyoundwa ili kutoa yaliyomo ya miundo ya kernel kwa nafasi ya mtumiaji.
    • Zinazotolewa uwezo wa kutumia bafa ya pete kwa kubadilishana data kati ya programu za BPF.
    • Ndani ya utaratibu data, iliyoundwa kupanga utekelezaji sambamba wa kazi kwenye kernel, iliongeza usaidizi kwa kazi zenye nyuzi nyingi na kusawazisha mzigo.
    • Katika utaratibu wa pstore, ambayo hukuruhusu kuokoa habari ya utatuzi kuhusu sababu ya ajali katika maeneo ya kumbukumbu ambayo hayajapotea kati ya kuwasha tena, imeongezwa backend kwa kuhifadhi habari ili kuzuia vifaa.
    • Kutoka kwa tawi la PREEMPT_RT kernel imehamishwa utekelezaji wa kufuli za mitaa.
    • Imeongezwa API mpya ya ugawaji bafa (AF_XDP), inayolenga kurahisisha uandishi wa viendesha mtandao kwa msaada wa XDP (eXpress Data Path).
    • Kwa usanifu wa RISC-V, usaidizi wa kurekebisha vipengele vya kernel kwa kutumia KGDB umetekelezwa.
    • Kabla ya kutoa 4.8, mahitaji ya toleo la GCC ambayo inaweza kutumika kujenga kernel yameongezwa. Katika moja ya matoleo yanayofuata imepangwa kuinua bar hadi GCC 4.9.
  • Mfumo mdogo wa diski, I/O na mifumo ya faili
    • Katika Kipanga Kifaa imeongezwa kidhibiti kipya cha dm-ebs (kuiga ukubwa wa kizuizi), ambacho kinaweza kutumika kuiga saizi ndogo ya kimantiki ya kuzuia (kwa mfano, kuiga sekta za baiti 512 kwenye diski za ukubwa wa 4K).
    • Mfumo wa faili wa F2FS sasa unaauni ukandamizaji kwa kutumia algoriti ya LZO-RLE.
    • Katika dm-crypt aliongeza msaada kwa funguo zilizosimbwa.
    • Btrfs imeboresha utunzaji wa shughuli za kusoma katika hali ya moja kwa moja ya I/O. Wakati wa kuweka iliharakishwa kuangalia vifungu vilivyofutwa na saraka zilizoachwa bila mzazi.
    • Kigezo cha "nodelete" kimeongezwa kwa CIFS, ikiruhusu ukaguzi wa ruhusa ya kawaida kwenye seva, lakini ikikataza mteja kufuta faili au saraka.
    • Ext4 imeboresha ushughulikiaji wa makosa ENOSPC wakati wa kutumia multithreading. xattr imeongeza usaidizi kwa gnu.* nafasi ya majina inayotumika katika GNU Hurd.
    • Kwa Ext4 na XFS, usaidizi wa shughuli za DAX umewezeshwa (ufikiaji wa moja kwa moja kwa mfumo wa faili, kupitisha kashe ya ukurasa bila kutumia kiwango cha kifaa cha kuzuia) kuhusiana na faili na saraka za kibinafsi.
    • Katika simu ya mfumo statx() bendera imeongezwa STATX_ATTR_DAX, ambayo inapobainishwa, hupata taarifa kwa kutumia injini ya DAX.
    • EXFAT aliongeza msaada kwa uthibitishaji wa eneo la boot.
    • Katika FAT kuboreshwa upakiaji makini wa vipengele vya FS. Kujaribu hifadhi ya USB ya 2TB polepole kulionyesha kupunguzwa kwa muda wa kukamilisha jaribio kutoka sekunde 383 hadi 51.
  • Mfumo mdogo wa mtandao
    • Katika kanuni ya kudhibiti uendeshaji wa madaraja ya mtandao aliongeza msaada wa itifaki MRP (Itifaki ya Upungufu wa Vyombo vya Habari), ambayo inaruhusu uvumilivu wa makosa kwa kugeuza swichi nyingi za Ethaneti.
    • Kwa mfumo wa udhibiti wa trafiki (Tc) aliongeza hatua mpya ya "lango", ambayo inafanya uwezekano wa kufafanua vipindi vya muda kwa ajili ya usindikaji na kutupa pakiti fulani.
    • Usaidizi wa kupima kebo ya mtandao iliyounganishwa na utambuzi wa kibinafsi wa vifaa vya mtandao umeongezwa kwenye kernel na matumizi ya ethtool.
    • Usaidizi wa algoriti ya MPLS (Multiprotocol Label Switching) umeongezwa kwenye rafu ya IPv6 ya kuelekeza pakiti kwa kutumia ubadilishaji wa lebo za protocol (MPLS ilitumika hapo awali kwa IPv4).
    • Usaidizi ulioongezwa wa kusambaza IKE (Internet Key Exchange) na pakiti za IPSec juu ya TCP (RFC 8229) ili kupita kizuizi kinachowezekana cha UDP.
    • Imeongezwa kifaa cha kuzuia mtandao rnbd, ambacho hukuruhusu kupanga ufikiaji wa mbali kwa kifaa cha kuzuia kwa kutumia usafiri wa RDMA (InfiniBand, RoCE, iWARP) na itifaki ya RTRS.
    • Katika stack ya TCP aliongeza usaidizi wa mgandamizo wa masafa katika majibu yaliyochaguliwa ya kukiri (SACK).
    • Kwa IPv6 kutekelezwa Msaada wa TCP-LD (RFC 6069, Usumbufu wa Muunganisho wa Muda Mrefu).
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Dereva wa i915 DRM kwa kadi za video za Intel ni pamoja na usaidizi wa chipsi za Intel Tiger Lake (GEN12) kwa chaguo-msingi, ambazo kutekelezwa uwezo wa kutumia mfumo wa SAGV (System Agent Geyserville) ili kurekebisha kwa nguvu mzunguko na voltage kulingana na matumizi ya nguvu au mahitaji ya utendaji.
    • Kiendeshaji cha amdgpu kimeongeza usaidizi kwa umbizo la pikseli FP16 na uwezo wa kufanya kazi na vihifadhi vilivyosimbwa kwa njia fiche kwenye kumbukumbu ya video (TMZ, Eneo la Kumbukumbu linaloaminika).
    • Usaidizi ulioongezwa wa vitambuzi vya nguvu kwa vichakataji vya AMD Zen na Zen2, pamoja na vihisi joto vya AMD Ryzen 4000 Renoir. Usaidizi wa kurejesha maelezo ya matumizi ya nguvu kupitia kiolesura umetolewa kwa AMD Zen na Zen2 RAPL (Upeo Wastani wa Nguvu wa Kuendesha).
    • Imeongeza usaidizi wa umbizo la kirekebishaji cha NVIDIA kwenye kiendeshi cha Nouveau. Kwa gv100, uwezo wa kutumia njia za kuchanganua zilizounganishwa umetekelezwa. Ugunduzi wa vGPU umeongezwa.
    • Usaidizi umeongezwa kwa Adreno A405, A640 na A650 GPU kwa kiendeshi cha MSM (Qualcomm).
    • Imeongezwa mfumo wa ndani wa kudhibiti rasilimali za DRM (Direct Rendering Manager).
    • Usaidizi umeongezwa kwa simu mahiri za Xiaomi Redmi Note 7 na Samsung Galaxy S2, pamoja na kompyuta za mkononi za Elm/Hana Chromebook.
    • Viendeshaji vilivyoongezwa kwa paneli za LCD: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
    • Umeongeza usaidizi wa bodi na majukwaa ya ARM Renesas "RZ/G1H", Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinu-LIMEXM50MC, Check-LIME-LKexino-MCXNUMXMC
      , Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.

    • Usaidizi ulioongezwa kwa kichakataji cha MIPS Loongson-2K (kifupi Loongson64). Kwa CPU Loongson 3, usaidizi wa uboreshaji kwa kutumia hypervisor ya KVM umeongezwa.
    • Imeongezwa
      msaada kwa processor ya Baikal-T1 ya Kirusi na mfumo-on-chip msingi wake BE-T1000. Prosesa ya Baikal-T1 ina cores mbili za superscalar P5600 MIP 32 r5 zinazofanya kazi kwa mzunguko wa 1.2 GHz. Chip ina kashe ya L2 (MB 1), kidhibiti kumbukumbu cha DDR3-1600 ECC, bandari 1 ya Ethernet ya 10Gb, bandari 2 za Ethaneti za 1Gb, kidhibiti cha PCIe Gen.3 x4, bandari 2 za SATA 3.0, USB 2.0, GPIO, UART, SPI, I2C. Kichakataji hutoa usaidizi wa maunzi kwa uboreshaji, maagizo ya SIMD na kiongeza kasi cha maandishi cha maunzi ambacho kinaauni GOST 28147-89. Chip imetengenezwa kwa kutumia kizuizi kikuu cha MIPS32 P5600 Warrior chenye leseni kutoka Imagination Technologies.

Wakati huo huo, Taasisi ya Programu ya Bure ya Amerika ya Kusini kuundwa
chaguo kernel ya bure kabisa 5.8 - Linux-bure 5.8-gnu, kufutwa kwa firmware na vipengele vya dereva vyenye vipengele visivyo na bure au sehemu za msimbo, upeo ambao ni mdogo na mtengenezaji. Toleo jipya linalemaza upakiaji wa blob katika viendeshaji vya Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, Kigeuzi Kikubwa cha Sampuli cha Asynchronous, Maxim Integrated MAX98390, Spika ya Sauti ya AmpL38060 ya Nyumbani ya AmpL2 ya Sauti Aimpl86 na I6656C EEPROM Slave. Imesasisha msimbo wa kusafisha blob katika Adreno GPU, HabanaLabs Goya, skrini ya kugusa ya xXNUMX, vtXNUMX na viendeshaji na mifumo midogo ya btbcm.

Chanzo: opennet.ru

Kuongeza maoni