Linux 5.1 ядросунун чыгарылышы

эки ай иштеп кийин, Линус Torvalds берилген ядро чыгаруу Linux 5.1. Эң көрүнүктүү өзгөрүүлөрдүн арасында: асинхрондук киргизүү/чыгаруу io_uring үчүн жаңы интерфейс, NVDIMMди оперативдүү эс тутум катары колдонуу мүмкүнчүлүгү, Nouveau форматында бөлүшүлгөн виртуалдык эстутумду колдоо, fanotify аркылуу өтө чоң файлдык системалардын масштабдуу мониторингин колдоо, Zstd кысуусун конфигурациялоо мүмкүнчүлүгү Btrfsдеги деңгээлдер, жаңы cpuidle TEO иштетүүчүсү, 2038 көйгөйүн чечүү үчүн тутумдук чалууларды ишке ашыруу, initramfs жок түзмөк-маппер түзмөктөрүнөн жүктөө мүмкүнчүлүгү, SafeSetID LSM модулу, айкалышкан жандуу патчтарды колдоо.

негизги инновациялар:

  • Диск подсистемасы, киргизүү/чыгаруу жана файл системалары
    • Асинхрондук киргизүү/чыгаруу үчүн жаңы интерфейс ишке ашырылды - io_uring, бул киргизүү/чыгаруу сурамжылоону колдоосу жана буферлөө менен же буферлөөсүз иштөө мүмкүнчүлүгү менен айырмаланат. Эске сала кетсек, мурда сунушталган асинхрондук киргизүү/чыгаруу механизми “aio” буфердик киргизүү/чыгарууларды колдогон эмес, O_DIRECT режиминде гана иштей алган (буферлөөсүз жана кэшти айланып өтпөстөн), метаберилиштердин жеткиликтүүлүгүн күтүүдөн улам кулпулоодо көйгөйлөр болгон жана эстутумдагы маалыматтарды көчүрүүдөн улам чоң кошумча чыгымдарды көрсөттү.

      API ичинде
      io_uring иштеп чыгуучулары эски aio интерфейсинин кемчиликтерин жоюуга аракет кылышкан. By өндүрүмдүүлүк io_uring абдан жакын SPDK жана добуш берүү иштетилген менен иштөөдө libaio бир кыйла алдыда. Колдонуучу мейкиндигинде иштеген акыркы колдонмолордо io_uring колдонуу үчүн китепкана даярдалган либеринг, бул ядро ​​интерфейсинин үстүнөн жогорку деңгээлдеги негизди камсыз кылат;

    • FS fanotify() ичиндеги окуяларга көз салуу механизминде кошулду суперблоктун жана структуранын өзгөрүшүнө көз салуу үчүн колдоо түз (каталогдорду түзүү, жок кылуу жана жылдыруу окуялары). Сунушталган өзгөчөлүктөр inotify механизмин колдонуу менен өтө чоң файлдык системаларда рекурсивдүү өзгөрүүлөргө көз салууну түзүүдө пайда болгон масштабдуулук көйгөйлөрүн чечүүгө жардам берет (түз өзгөртүүлөр мурда inotify аркылуу гана байкалчу, бирок
      чоң уяланган каталогдорго рекурсивдүү байкоо жүргүзүү шарттарында аткаруу көп нерсени каалагандай калтырды). Эми мындай мониторинг натыйжалуу fanotify аркылуу жүргүзүлүшү мүмкүн;

    • Btrfs файл тутумунда кошулду тез, бирок натыйжасыз lz4 менен жай, бирок жакшы кысуу xz ортосунда оптималдуу компромисс катары каралышы мүмкүн болгон zstd алгоритми үчүн кысуу деңгээлин ыңгайлаштыруу мүмкүнчүлүгү. Мурда zlib колдонууда кысуу деңгээлин кантип коюу мүмкүн болгонуна окшошуп, zstd үчүн “-o compress=zstd:level” орнотуу опциясын колдоо кошулган. Сыноо учурунда минималдуу биринчи деңгээл 2.658 МБ/сек кысуу ылдамдыгы, декомпрессия ылдамдыгы 438.47 МБ/сек жана эстутум керектөө 910.51 МБ, ал эми эң жогорку деңгээл 780 15 эсе кысуу менен маалыматты 3.126 эсе кысуу камсыз кылган, бирок кысуу менен. ылдамдыгы 37.30 МБ/сек. ачуу 878.84 МБ/сек жана эстутум керектөө 2547 МБ;
    • Кошулган initramfs колдонбостон, түзмөк-картач түзмөгүндө жайгашкан файл тутумунан жүктөө мүмкүнчүлүгү. Учурдагы ядро ​​​​релизинен баштап, түзмөк-картач түзүлүштөрүн жүктөө процессинде түздөн-түз колдонсо болот, мисалы, тамыр файл системасы менен бөлүм катары. Бөлүм "dm-mod.create" жүктөө параметри аркылуу конфигурацияланган. Жүктөлүүгө уруксат берилген түзмөк-картачынын модулдары төмөнкүлөрдү камтыйт: “crypt”, “кечиктирүү”, “сызыктуу”, “snapshot-origin” жана “verity”;
    • F2FS_NOCOW_FL желеги Flash дисктерге багытталган F2FS файл тутумуна кошулду, бул берилген файл үчүн жазууга көчүрүү режимин өчүрүүгө мүмкүндүк берет;
    • Файл системасы ядродон алынып салынды Exofsext2 варианты болуп саналат, OSD (Object-based Storage Device) объект сактагычтары менен иштөөгө ылайыкташтырылган. Мындай объектилерди сактоочу түзүлүштөр үчүн SCSI протоколун колдоо да алынып салынды;
  • Виртуалдаштыруу жана коопсуздук
    • Тандалган процесс үчүн нускамалардын спекуляциялык аткарылышын көзөмөлдөө үчүн prctl() га PR_SPEC_DISABLE_NOEXEC опциясы кошулду. Жаңы опция Spectre чабуулуна кабылышы мүмкүн болгон процесстер үчүн спекуляциялык аткарууну тандап өчүрүүгө мүмкүндүк берет. Кулпу биринчи жолу exec();
    • LSM модулу ишке ашырылды SafeSetID, бул тутум кызматтарына колдонуучуларды артыкчылыктарды (CAP_SETUID) жогорулатпай жана түпкү укуктарга ээ болбостон коопсуз башкарууга мүмкүндүк берет. Артыкчылыктар жарактуу байланыштардын ак тизмесине негизделген ("UID1:UID2" формасында) коопсуздук тутумундагы эрежелерди аныктоо аркылуу дайындалат;
    • Коопсуздук модулдарын (LSMs) стекке негизделген жүктөө үчүн талап кылынган төмөнкү деңгээлдеги өзгөртүүлөр кошулду. Кайсы модулдар жүктөлүп жана кандай тартипте жүктөлөрүн көзөмөлдөө үчүн "lsm" ядронун жүктөө опциясын киргизди;
    • Аудиттин подсистемасына файлдын аталыш мейкиндиктерин колдоо кошулду;
    • Кеңейтилген GCC structleak плагининин мүмкүнчүлүктөрү, ал эстутум мазмунунун потенциалдуу агып кетишин бөгөттөп коюуга мүмкүндүк берет.Стектеги маалымдама кирүү аркылуу коддо колдонулган ар кандай өзгөрмөлөрдү инициализациялоо каралган;
  • Тармактык подсистема
    • Розеткалар үчүн ишке ашырылган окшош жаңы параметр "SO_BINDTOIFINDEX"
      "SO_BINDTODEVICE", бирок аргумент катары интерфейстин аталышынын ордуна тармак интерфейсинин индексинин номерин алуу;

    • mac80211 стек бир түзмөккө бир нече BSSIDди (MAC даректерин) дайындоо мүмкүнчүлүгүн кошту. WiFi иштешин оптималдаштыруу долбоорунун бир бөлүгү катары, mac80211 стек эфир убактысын эсепке алууну жана эфир убактысын бир нече станциялар арасында бөлүштүрүү мүмкүнчүлүгүн кошту (кирүү чекити режиминде иштегенде, убакытты бардыгына бирдей бөлүштүрүүнүн ордуна, жай зымсыз станцияларга өткөрүү убактысын аз бөлүүдө. станциялар);
    • Кошулган механизм "devlink ден соолук", тармак интерфейсинде көйгөйлөр пайда болгондо эскертмелерди камсыз кылат;
  • Эстутум жана система кызматтары
    • Аткарылган PID кайра колдонууга мүмкүндүк берген коопсуз сигнал жеткирүү. Мисалы, мурда kill чакырганда, сигнал жөнөтүлгөндөн кийин дароо эле максаттуу PID процесстин токтотулушуна байланыштуу бошотулуп, башка процесске ээ болуп, сигнал башка процесске өтүп кете турган кырдаал келип чыгышы мүмкүн. Мындай жагдайларды жок кылуу үчүн, процесстин туруктуу байланышын камсыз кылуу үчүн /proc/pid файлынын дескрипторлорун колдонгон pidfd_send_signal жаңы тутум чалуусу кошулду. PID тутумдук чалууларды иштетүүдө кайра колдонулса дагы, файлдын дескриптору өзгөрбөйт жана процесске сигнал жөнөтүү үчүн коопсуз колдонсо болот;
    • Кошулган туруктуу эс тутумдарын колдонуу мүмкүнчүлүгү (мисалы, туруктуу эс тутум NVDIMM'лер) RAM катары. Буга чейин ядро ​​сактагыч түзмөктөр сыяктуу түзмөктөрдү колдосо, эми аларды кошумча RAM катары да колдонсо болот. Функция аткаруунун артта калышына туруштук берүүгө даяр жана dax үчүн mmap үстүндө иштеген колдонуучу мейкиндигинин эс тутумун бөлүштүрүү тутумдарын колдонуунун ордуна түпнуска Linux ядросунун эс тутумун башкаруу API'син колдонууну каалаган колдонуучулардын каалоолоруна жооп катары ишке ашырылат. файл;
    • Жаңы CPU бош иштебей турган иштеткичи кошулду (cpuidle, CPU качан терең энергия үнөмдөө режимдерине киргизилерин чечет; режим канчалык терең болсо, ошончолук көп үнөмдөө болот, бирок режимден чыгуу үчүн ошончолук көп убакыт талап кылынат) - TEO (Таймер окуяларына багытталган башкаруучу) ). Буга чейин эки cpuidle иштетүүчү сунушталган - эвристика боюнча айырмаланган "меню" жана "шат". "Меню" иштеткичинде эвристикалык чечимдерди кабыл алууда белгилүү көйгөйлөр бар, аларды жоюу үчүн жаңы иштеткичти даярдоо чечими кабыл алынган. TEO "меню" иштетүүчүгө альтернатива катары жайгаштырылган, бул энергия керектөөнүн бирдей деңгээлин сактап, жогорку көрсөткүчтөргө мүмкүндүк берет.
      Сиз жаңы иштеткичти “cpuidle.governor=teo” жүктөө параметрин колдонуу менен активдештире аласыз;

    • жоюу боюнча иштердин алкагында 2038-жылдагы көйгөйлөр, 32 биттик time_t түрүнүн толуп кетишинен улам келип чыккан, 32 биттик архитектуралар үчүн 64 биттик убакыт эсептегичтерин сунуштаган системалык чалууларды камтыйт. Натыйжада, 64-бит time_t структурасын эми бардык архитектураларда колдонсо болот. Ушундай эле өзгөртүүлөр опциялар үчүн тармактык подсистемада да ишке ашырылган убакыт белгиси тармак розеткалары;
    • Өзөк үчүн ысык патчинг системасына (тирүү патчинг) кошулду Бир функцияга бир катар өзгөртүүлөрдү атомдук түрдө колдонуу үчүн "Атомдук алмаштыруу" өзгөчөлүгү. Бул өзгөчөлүк жандуу патчтарды этап-этабы менен так аныкталган тартипте колдонуу процессинин ордуна, бир эле учурда бир нече өзгөрүүлөрдү камтыган жыйынды патчтарды жайылтууга мүмкүндүк берет, аны сактоо өтө кыйын. Мурда ар бир кийинки өзгөртүү акыркы өзгөртүүдөн кийинки функциянын абалына негизделиши керек болсо, эми бир эле учурда бир баштапкы абалга байланган бир нече өзгөрүүлөрдү жайылтууга болот (б.а., тейлөөчүлөр анын ордуна базалык ядрого салыштырмалуу бир консолидацияланган патчты сактай алышат. бири-бирине көз каранды болгон тактардын чынжырынын);
    • Жарыяланган a.out аткарылуучу файл форматы үчүн эскирген колдоо жана
      жок кылынды а.out форматындагы негизги файлдарды түзүү үчүн код, ал ташталган абалда. a.out форматы Linux тутумдарында көптөн бери колдонулбай келген жана a.out файлдарын генерациялоо демейки Linux конфигурацияларында заманбап куралдар тарабынан көптөн бери колдоого алынбай келген. Мындан тышкары, a.out файлдары үчүн жүктөгүч толугу менен колдонуучу мейкиндигинде ишке ашырылышы мүмкүн;

    • Колдонулбаган кодду аныктоо жана алып салуу мүмкүнчүлүгү BPF программасын текшерүү механизмине кошулду. Ядро ошондой эле BPF программаларынын параллелдүү аткарылышын башкаруу үчүн кошумча мүмкүнчүлүктөрдү камсыз кылуучу BPF подсистемасы үчүн спинлок колдоосу менен патчтарды камтыйт;
  • жабдуулар
    • Nouveau айдоочу кошулду гетерогендүү эс башкарууну колдоо, CPU жана GPU жалпы синхрондоштурулган эс аймактарына кирүүгө мүмкүндүк берет. Бөлүштүрүлгөн виртуалдык эс тутуму (SVM, жалпы виртуалдык эс тутум) HMM (Гетерогендүү эстутум башкаруу) подсистемасынын негизинде ишке ашырылат, ал өз эстутум башкаруу бирдиктери (MMU, эстутум башкаруу бирдиги) менен түзмөктөрдү пайдаланууга мүмкүндүк берет Негизги эс тутум. Атап айтканда, HMM колдонуп, сиз GPU жана CPU ортосунда жалпы дарек мейкиндигин уюштура аласыз, анда GPU процесстин негизги эс тутумуна кире алат. SVM колдоосу учурда Паскаль үй-бүлөлүк GPU'лары үчүн гана иштетилген, бирок колдоо Volta жана Turing GPU'лары үчүн да каралган. Мындан тышкары, Nouveau кошулду процесстик эстутум аймактарынын GPU эсине миграциясын көзөмөлдөө үчүн жаңы ioctl;
    • GPU Skylake жана кийинки (ген9+) үчүн Intel DRM драйверинде күйгүзүлгөн Демейки боюнча, fastboot режими жүктөө учурунда режимдин керексиз өзгөрүүлөрүн жок кылат. Кошулган новые Coffelake жана Ice Lake микроархитектураларына негизделген түзмөк идентификаторлору. Coffelake чипсы үчүн кошулду GVT колдоо (GPU виртуалдаштыруу). Виртуалдык GPU үчүн ишке ашырылган VFIO EDID колдоосу. MIPI/DSI LCD панелдер үчүн кошулду ACPI/PMIC элементтерин колдоо. Аткарылган жаңы сыналгы режимдери 1080p30/50/60 TV;
    • Vega10/20 BACO GPU үчүн amdgpu драйверине колдоо кошулду. Vega 10/20 кубаттуулукту башкаруу жана Vega 10 муздаткыч башкаруу үстөлдөрү ишке киргизилди. Picasso GPU'лары үчүн жаңы PCI түзмөк идентификаторлору кошулду. Кошулган туюктарды болтурбоо үчүн пландаштырылган көз карандылыктарды башкаруу интерфейси;
    • Кошулган Экран ылдамдаткычтары үчүн DRM/KMS драйвери ARM Комеда (Mali D71);
    • Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 жана Kingdisplay kd097d04 экран панелдерине колдоо кошулду;
    • Rockchip RK3328, Cirrus Logic CS4341 жана CS35L36, MediaTek MT6358, Qualcomm WCD9335 жана Ingenic JZ4725B аудио кодектери, ошондой эле Mediatek MT8183 аудио платформасы үчүн кошумча колдоо;
    • Flash STMicroelectronics FMC2, Amlogic Meson NAND контроллерлору үчүн кошумча колдоо;
    • Habana AI аппараттык системалары үчүн акселератордун колдоосу кошулду;
    • NXP ENETC гигабит Ethernet контроллерлору жана MediaTek MT7603E (PCIe) жана MT76x8 зымсыз интерфейстери үчүн кошумча колдоо.

Ошол эле учурда Латын Америкасынын эркин программалык камсыздоо фонду түзүлгөн
тандоо толугу менен акысыз ядро ​​5.1 - Linux-libre 5.1-gnu, чөйрөсү өндүрүүчү тарабынан чектелген эркин эмес компоненттерди же код бөлүмдөрүн камтыган микропрограмма жана драйвер элементтеринен тазаланган. Жаңы чыгарылышта mt7603 жана гоя драйверлеринде blob жүктөө өчүрүлгөн. Wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk жана сенсордук экран_dmi драйверлеринде жана подсистемаларында жаңыртылган blob тазалоо коду. Lantiq xrx200 микропрограммалык жүктөгүчтөгү Blob тазалоо анын ядродон алынып салынгандыгына байланыштуу токтотулду.

Source: opennet.ru

Комментарий кошуу