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

эки ай иштеп кийин, Линус Torvalds берилген ядро чыгаруу Linux 5.3. Эң көрүнүктүү өзгөрүүлөрдүн арасында: AMD Navi GPU, Zhaoxi процессорлорун жана Intel Speed ​​​​Select кубаттуулукту башкаруу технологиясын колдоо, циклдерди колдонбостон күтүү үчүн umwait көрсөтмөлөрүн колдонуу мүмкүнчүлүгү,
"пайдалануу кысуу" режими асимметриялык процессорлор үчүн интерактивдүүлүктү жогорулатат, pidfd_open тутумдук чалуу, 4/0.0.0.0 субнеттен IPv8 даректерин колдонуу мүмкүнчүлүгү, nftables аппараттык тездетүү мүмкүнчүлүгү, DRM подсистемасында HDR колдоосу, ACRN интеграциясы гипервизор.

В кулактандыруу жаңы релиз, Linus бардык иштеп чыгуучуларга ядрону өнүктүрүүнүн негизги эрежесин эскертти - колдонуучу-мейкиндик компоненттери үчүн бирдей жүрүм-турумду сактоо. Ядрону өзгөртүү эч кандай жол менен иштеп жаткан колдонмолорду бузуп же колдонуучу деңгээлинде регрессияга алып келбеши керек. Бул учурда, жүрүм-турумдун бузулушу ABIдин өзгөрүшүнө, эскирген коддун алынып салынышына же каталардын пайда болушуна гана эмес, ошондой эле туура иштеген пайдалуу жакшыртуулардын кыйыр таасирине алып келиши мүмкүн. Иллюстрациялуу мисал катары бар болчу ташталган пайдалуу оптималдаштыруу Ext4 кодунда, ал кичинекей киргизүү/чыгаруу сурамдары үчүн инод таблицасын алдын ала окууну өчүрүү менен дискке кирүүлөрдүн санын азайтат.

Оптималдаштыруу диск активдүүлүгүнүн азайышынан улам, getrandom() кокустук сан генератору үчүн энтропия жайыраак чогула баштаганына жана кээ бир конфигурацияларда, белгилүү бир шарттарда, энтропия бассейни болгонго чейин жүктөө учурунда тоңуп калуулар байкалышы мүмкүн экендигине алып келди. толтурулган. Оптималдаштыруу чындап эле пайдалуу болгондуктан, иштеп чыгуучулардын арасында талкуу пайда болуп, анда getrandom() чалуусунун демейки бөгөттөө режимин өчүрүү жана энтропияны күтүү үчүн кошумча желек кошуу менен көйгөйдү чечүү сунушталды, бирок мындай өзгөртүү жүктөөнүн баштапкы этабында кокус сандардын сапаты.

Жаңы версия 15794 иштеп чыгуучунун 1974 оңдоосун камтыйт,
патчтын көлөмү - 92 МБ (өзгөрүүлөр 13986 файлга таасирин тийгизди, 258419 код саптары кошулду,
599137 саптар алынып салынды). Бардык 39% га жакыны 5.3де көрсөтүлгөн
өзгөртүүлөр түзмөк драйверлерине байланыштуу, өзгөрүүлөрдүн болжол менен 12%
Аппараттык архитектураларга мүнөздүү кодду жаңылоого карата мамиле, 11%
тармактык стек менен байланышкан, 3% файлдык системаларга жана 3% ички
ядронун подсистемалары.

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

  • Эстутум жана система кызматтары
    • PID кайра колдонуу кырдаалдарын чечүүгө жардам берүү үчүн "pidfd" функционалдуулугун өнүктүрүүнү улантуу (pidfd белгилүү бир процесс менен байланышкан жана өзгөрбөйт, ал эми PID ошол PID менен байланышкан учурдагы процесс аяктагандан кийин башка процесс менен байланыштырылышы мүмкүн). Ал мурда ядрого кошулган
      pidfd_send_signal() тутумдук чалуусу жана clone()дагы CLONE_PIDFD желеги idfd_send_signal() ичинде колдонуу үчүн pidfd алуу үчүн. Clone() функциясын CLONE_PIDFD желеги менен колдонуу кызмат менеджерлери же Android платформасынын эстутумда жок күч менен токтотуу тутумунда көйгөйлөрдү жаратышы мүмкүн. Бул учурда, баштоо үчүн CLONE_PIDFD жок fork() же clone() чалуу колдонулат.

      Ядро 5.3 тутумдук чакырууну киргизди pidfd_open(), бул сизге CLONE_PIDFD желеги менен clone() чалуу аркылуу түзүлбөгөн ыктыярдуу болгон процесс үчүн текшерилүүчү pidfd алууга мүмкүндүк берет. Ошондой эле poll() жана epoll() аркылуу pidfd сурамжылоосуна колдоо кошулду, бул процесс менеджерлерине PID жаңы процесске дайындалса, жарыш абалынан коркпостон, ыктыярдуу процесстердин токтотулушун көзөмөлдөөгө мүмкүндүк берет. pidfd менен байланышкан процесс аяктаганда кабарлоо механизми анын бала процесси аяктаганда билдирүүгө окшош;

    • Тапшырма пландоочуга жүктөө механизмин колдоо кошулду (Колдонуу кысуу), CPUда активдүү тапшырмаларга жараша минималдуу же максималдуу жыштык диапазондорун карманууга мүмкүндүк берет. Сунушталган механизм колдонуучунун тажрыйбасынын сапатына түздөн-түз таасир этүүчү тапшырмаларды, жок эле дегенде, "суралган" жыштыктын ылдыйкы аягында иштетүү менен тездетет. Колдонуучунун ишине таасирин тийгизбеген төмөнкү артыкчылыктуу тапшырмалар "уруксат берилген" жыштыктын жогорку чегин колдонуу менен ишке киргизилет. Чектөөлөр sched_uclamp_util_min жана sched_uclamp_util_max атрибуттары аркылуу sched_setattr() тутум чалуусунда коюлат.
    • Энергияны башкаруу технологиясы үчүн кошумча колдоо Intel ылдамдыгын тандоо, Intel Xeon процессорлору менен тандалган серверлерде жеткиликтүү. Бул технология ар кандай CPU өзөктөрү үчүн аткарууну жана бөлүштүрүү жөндөмдүүлүгүн орнотууларды коюуга мүмкүндүк берет, бул башка ядролордо өндүрүмдүүлүктү жоготуп, белгилүү бир өзөктө аткарылган тапшырмалар үчүн аткарууну артыкчылыктуу кылууга мүмкүндүк берет;
    • Колдонуучу мейкиндигиндеги процесстер каралган umwait инструкциясын колдонуу менен илмектерди колдонбостон кыска убакыт күтүү мүмкүнчүлүгү. Бул нускама, umonitor жана tpause нускамалары менен бирге Intelдин келе жаткан "Tremont" чиптеринде сунушталат жана Hyper Threadingди колдонууда энергияны үнөмдөөчү жана башка жиптердин иштешине таасирин тийгизбеген кечигүүлөрдү ишке ашырууга мүмкүндүк берет;
    • RISC-V архитектурасы үчүн чоң эстутум баракчаларын колдоо кошулду;
    • kprobes трасса механизми колдонуучу мейкиндигине өзөк көрсөткүчтөрүн жокко чыгаруу мүмкүнчүлүгүн кошту, аны, мисалы, системалык чалууларга берилген структуралардын мазмунун баалоо үчүн колдонсо болот. Жүктөө баскычында текшерүүлөрдү орнотуу мүмкүнчүлүгү да кошулду.
    • Реалдуу убакытта иштөө үчүн конфигурация файлына PREEMPT_RT опциясы кошулду. Реалдуу убакыт режимин колдоо үчүн коддун өзү ядрого али кошула элек, бирок опциянын көрүнүшү узак мөөнөттүү эпостун жакшы белгиси болуп саналат. интеграция Realtime-Preempt патчтары аяктоо алдында турат;
    • Clone() интерфейсинин кененирээк версиясын ишке ашыруу менен clone3() тутумдук чалуу кошулду, бул желектердин көбүрөөк санын көрсөтүүгө мүмкүндүк берет;
    • BPF программаларына ыктыярдуу процесстерге сигналдарды жөнөтүүгө мүмкүндүк берүүчү bpf_send_signal() иштеткич кошулду;
    • KVM гипервизорунун чөйрөсүндөгү перф окуялар үчүн жаңы окуяларды чыпкалоо механизми кошулду, ал администраторго конок системасы тарабында мониторинг жүргүзүүгө уруксат берилген же уруксат берилбеген окуялардын түрлөрүн аныктоого мүмкүндүк берет;
    • eBPF тиркемесин текшерүү механизмине циклдер менен программаларды иштетүү мүмкүнчүлүгү кошулду, эгерде циклдин аткарылышы чектелген жана инструкциялардын максималдуу саны боюнча чектен ашууга алып келбесе;
  • Диск подсистемасы, киргизүү/чыгаруу жана файл системалары
    • XFS файл системасы азыр көп жиптүү инодду айланып өтүүнү колдойт (мисалы, квоталарды текшерүүдө). Жаңы ioctls BULKSTAT жана INUMBERS кошулду, алар FS форматынын бешинчи чыгарылышында пайда болгон функцияларга, мисалы, иноддун туулган убактысы жана ар бир AG тобу (Бөлүштүрүү топтору) үчүн BULKSTAT жана INUMBERS параметрлерин коюу мүмкүнчүлүгүн камсыз кылат;
    • Ext4 ичинде колдоо кошулду каталогдордогу боштуктар (байланышкан блоктор).
      Иштетүү каралган ачык файлдар үчүн "i" желекчеси (өзгөрбөс) (эгерде желек файл мурунтан эле ачык болгон учурда коюлган болсо, жазууга тыюу салынат);

    • Btrfs бардык архитектураларда crc32c тез ишке ашыруунун аныктамасын берет;
    • CIFSде smbdirect колдоо коду эксперименталдык иштеп чыгуу катары алынып салынган. SMB3 GCM режиминде криптографиялык алгоритмдерди колдонуу мүмкүнчүлүгүн кошту. ACE (Access Control Entry) жазууларынан режим параметрлерин алуу үчүн жаңы орнотуу опциясы кошулду. Open() чалуусунун иштеши оптималдаштырылган;
    • F2FS үчүн текшерүү пункту=өчүрүү режиминде иштегенде таштанды жыйгычты чектөө үчүн опция кошулду. F2FS'тен блок диапазондорун алып салуу үчүн ioctl кошулду, бул бөлүктүн өлчөмүн тез жөнгө салууга мүмкүндүк берет. Түз киргизүү/чыгарууну камсыз кылуу үчүн F2FSге своп файлын жайгаштыруу мүмкүнчүлүгү кошулду. Бардык колдонуучулар үчүн файлды кадоо жана окшош файлдар үчүн блокторду бөлүштүрүү үчүн кошумча колдоо;
    • io_uring асинхрондук киргизүү/чыгарма үчүн интерфейске sendmsg() жана recvmsg() асинхрондук операцияларына колдоо кошулду;
    • UBIFS файл тутумуна zstd алгоритмин колдонуу менен кысуу колдоо жана кол коюлган FS сүрөттөрүн текшерүү мүмкүнчүлүгү кошулду;
    • Ceph FS азыр файлдар үчүн SELinux коопсуздук энбелгилерин колдойт;
    • NFSv4 үчүн "nconnect=" жаңы орнотуу опциясы ишке ашырылган, ал сервер менен орнотулган байланыштардын санын аныктайт. Бул байланыштар ортосундагы трафик жүк балансын колдонуу менен бөлүштүрүлөт. Мындан тышкары, NFSv4 сервери азыр /proc/fs/nfsd/clients каталогун түзүп, учурдагы кардарлар, анын ичинде алар ачкан файлдар жөнүндө маалымат менен;
  • Виртуалдаштыруу жана коопсуздук
    • Ядро кыналган түзмөктөр үчүн гипервизорду камтыйт ACRN, бул реалдуу убакыттагы тапшырмаларга даяр болуу жана миссиясы үчүн маанилүү системаларда колдонууга ылайыктуулугун эске алуу менен жазылган. ACRN минималдуу кошумча чыгымдарды камсыз кылат, аз күтүү убактысын жана жабдуулар менен өз ара аракеттенүүдө адекваттуу жооп кайтарууну кепилдейт. CPU ресурстарын, киргизүү/чыгаруу, тармактык подсистема, графика жана үн операцияларын виртуалдаштырууну колдойт. ACRN бир нече обочолонгон виртуалдык машиналарды иштетүү үчүн колдонулушу мүмкүн, электрондук башкаруу блоктору, панелдер, автомобиль маалымат системалары, керектөөчү IoT түзмөктөр жана башка кыналган технологиялар;
    • Колдонуучу режиминде Linux кошулду Убакыт боюнча саякат режими, убакытка байланыштуу кодду оңдоону жеңилдетүү үчүн виртуалдык UML чөйрөсүндө убакытты жайлатууга же тездетүүгө мүмкүндүк берет. Мындан тышкары, параметр кошулду
      убакыт-саякат-старт, ал системалык саатты доор форматында белгиленген учурдан баштоого мүмкүндүк берет;

    • “init_on_alloc” жана “init_on_free” өзөктүк буйрук сабынын жаңы варианттары кошулду, көрсөтүлгөндө, бөлүнгөн жана бошогон эстутумдун аймактарын нөлгө салуу иштетилген (malloc жана бош үчүн нөлдөрдү толтуруу), бул кошумча инициализациялоонун эсебинен коопсуздукту жогорулатууга мүмкүндүк берет;
    • Жаңы айдоочу кошулду virtio-iommu эстутум баракчаларынын таблицаларын эмуляциялоосуз virtio транспорту аркылуу ATTACH, DETACH, MAP жана UNMAP сыяктуу IOMMU сурамдарын жөнөтүүгө мүмкүндүк берген паравиртуалдаштырылган түзүлүштү ишке ашыруу менен;
    • Жаңы айдоочу кошулду virtio-pmem, NVDIMM сыяктуу физикалык дарек мейкиндигине түшүрүлгөн сактоо түзүлүштөрүнө кирүү мүмкүнчүлүгүн билдирет;
    • Колдонуучуга же тармактын аттар мейкиндигине криптографиялык ачкычтарды тиркөө мүмкүнчүлүгү ишке ашырылды (ачкычтар тандалган аттар мейкиндигинен тышкары жеткиликтүү болбой калат), ошондой эле ACL аркылуу ачкычтарды коргоо;
    • Крипто подсистемасына кошулду абдан тез криптографиялык эмес хэширлөө алгоритмин колдоо xxhash, анын ылдамдыгы эс тутумдун иштөөсүнө жараша болот;
  • Тармактык подсистема
    • Мурда колдонуу үчүн жеткиликсиз болгон 4/0.0.0.0 диапазонундагы IPv8 даректерин иштетүү иштетилди. Бул субсеттин киришүүсү уруксат берүү дагы 16 миллион IPv4 даректерин таратуу;
    • nftables үчүн Netfilterде кошулду кошумча драйверлерди колдонуу аркылуу пакеттерди чыпкалоо үчүн аппараттык тездетүү механизмдерин колдоо Flow Block API. Бардык чынжырлар менен эрежелердин толук таблицасы тармак адаптерлеринин капталына жайгаштырылышы мүмкүн. Иштетүү NFT_TABLE_F_HW желегин таблицага байлоо аркылуу ишке ашырылат. Жөнөкөй Layer 3 жана Layer 4 протоколунун метаберилиштерин колдойт, аракеттерди кабыл алуу/чокко чыгаруу, IP жана жөнөтүүчү/алуучу тармак порттору жана протоколдун түрү боюнча карта түзүү;
    • Кошулган br_netfilter эмуляциялоочу катмарын колдонууну талап кылбаган тармак көпүрөлөрү үчүн орнотулган байланышты көзөмөлдөө колдоосу;
    • nf_tables ичинде кошулду SYNPROXY модулун колдоо, ал окшош функцияларды iptables кайталайт жана IPv4 башындагы айрым варианттар үчүн эрежелерди текшерүү мүмкүнчүлүгү ишке ашырылды;
    • BPF программаларын setsockopt() жана getsockopt() тутумдук чалууларына тиркөө мүмкүнчүлүгү кошулду, бул, мисалы, бул чалууларга өзүңүздүн кирүү иштетүүчүлөрүңүздү тиркөөгө мүмкүндүк берет. Мындан тышкары, жаңы чалуу түйүнү (илмек) кошулду, анын жардамы менен ар бир RTT интервалы үчүн бир жолу BPF программасына чалууну уюштурууга болот (бардык сапар, пинг убактысы);
    • IPv4 жана IPv6 үчүн кошулду маршруттук таблицалардын масштабдуулугун жогорулатууга багытталган жаңы nexthop маршруттук маалыматтарды сактоо механизми. Сыноолор көрсөткөндөй, жаңы системаны колдонууда ядрого болгону 743 секунданын ичинде 4.3 миң маршруттун топтому жүктөлгөн;
    • Bluetooth үчүн ишке ашырылган LE пингди колдоо үчүн талап кылынган функция;
  • жабдуулар
    • Кошулган компаниянын x86 шайкеш процессорлорун колдоо Жаоксин, VIA Technologies жана Шанхай муниципалитетинин биргелешкен долбоорунун натыйжасында иштелип чыккан. ZX CPU үй-бүлөсү технологияны өнүктүрүүнү улантуу менен x86-64 Isaiah архитектурасына курулган VIA Кентавр;
    • DRM (Direct Rendering Manager) подсистемасы, ошондой эле amdgpu жана i915 графикалык драйверлери HDMI порту аркылуу HDR (жогорку динамикалык диапазон) метаберилиштерин талдоо, иштетүү жана жөнөтүү үчүн колдоону кошту, бул HDR панелдерин жана экрандарын колдонууга мүмкүндүк берет. кошумча жарык диапазондорун көрсөтүү;
    • Amdgpu драйвери AMD NAVI GPU (RX5700) үчүн баштапкы колдоону кошту, ага негизги драйвер, экрандын өз ара аракеттенүү коду (DCN2), GFX жана эсептөө колдоосу (GFX10),
      SDMA 5 (System DMA0), кубаттуулукту башкаруу жана мультимедиялык коддогучтар/декодерлер (VCN2). amdgpu ошондой эле Vega12 жана Vega20 GPUларына негизделген карталарды колдоону жакшыртат, алар үчүн кошумча эстутум жана кубаттуулукту башкаруу мүмкүнчүлүктөрү кошулган;

    • Amdkfd драйверине VegaM GPUларына негизделген карталарды колдоо кошулду (Fiji, Tonga, Polaris сыяктуу дискреттик GPU үчүн);
    • Icelake чиптери үчүн Intel видеокарталары үчүн DRM драйверинде ишке ашырылган жаңы көп сегменттүү гамма оңдоо режими. YCbCr4:2:0 форматында DisplayPort аркылуу чыгаруу мүмкүнчүлүгү кошулду. Жаңы микропрограмма кошулду GuC SKL, BXT, KBL, GLK жана ICL үчүн. Асинхрондук режимде экрандын күчүн өчүрүү мүмкүнчүлүгү ишке ашырылды. Кошулган Ironlake (gen5) жана gen4 (Broadwater - Cantiga) чиптери үчүн рендеринг контекстин сактоону жана калыбына келтирүүнү колдоо, бул бир партия операциясынан экинчисине өткөндө GPU абалын колдонуучу мейкиндигинен калыбына келтирүүгө мүмкүндүк берет;
    • Nouveau драйвери NVIDIA Turing TU116 чипсетинин аныктоону камсыз кылат;
    • ARM Komeda экран тездеткичтери үчүн DRM/KMS драйверинин (Mali D71) мүмкүнчүлүктөрү кеңейтилди, масштабдоону колдоо, катмарларды бөлүү/бириктирүү, айлануу, кийинкиге калтырылган жазуу, AFBC, SMMU жана Y0L2, P010, YUV420_8/10BIT түс коддоо форматтары бар кошулду;
    • MSM драйвери Qualcomm процессорлорунда колдонулган A540 GPU Adreno сериясын, ошондой эле Snapdragon 8998 үчүн MSM835 DSI контроллерин колдоону кошот;
    • Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS LCD панелдерине драйверлер кошулду,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 жана VXT VL050-8048NT-C01;

    • Кошулган декоддоону тездетүү куралдарын иштетүү үчүн драйвер
      Videos Amlogic Meson SoC жеткиликтүү;

    • V3d драйверинде (Raspberry Piде колдонулган Broadcom Video Core V GPU үчүн) пайда болду колдоо эсептөө шейдерлерин жөнөтүү;
    • Кошулган Apple MacBook жана MacBookPro ноутбуктарынын заманбап моделдеринде колдонулган SPI клавиатуралары жана трекпаддары үчүн драйвер;
    • Кошулган дискеттүү драйвер менен байланышкан ioctl чалуулары үчүн кошумча коргоо жана драйвердин өзү каралбаган деп белгиленет
      («жетим»), бул анын тестирлөөсүн токтотууну билдирет. Драйвер дагы эле ядродо сакталат, бирок анын туура иштешине кепилдик жок. Драйвер эскирген деп эсептелет, анткени аны текшерүү үчүн жумушчу жабдууларды табуу кыйын - учурдагы бардык тышкы дисктер, эреже катары, USB интерфейсин колдонушат.

    • Кошулган Raspberry Pi такталары үчүн cpufreq драйвери, ал процессордун жыштыгындагы өзгөрүүлөрдү динамикалык башкарууга мүмкүндүк берет;
    • Жаңы ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) жана Amlogic G12B (4x Cortex-A73 +) үчүн кошумча колдоо. A2 ), ошондой эле такталар:
      • Пуризм Librem5,
      • Aspeed BMC,
      • Microsoft Olympus BMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Micro Avenger96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • Hugsun X99 TV кутусу (Rockchip RK3399),
      • Khadas Edge/Edge-V/Captain (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Ошол эле учурда Латын Америкасынын эркин программалык камсыздоо фонду түзүлгөн
тандоо толугу менен акысыз ядро ​​5.3 - Linux-libre 5.3-gnu, чөйрөсү өндүрүүчү тарабынан чектелген менчик компоненттерин же код бөлүмдөрүн камтыган микропрограмма жана драйвер элементтеринен тазаланган. Жаңы чыгарылышта blob жүктөө qcom, hdcp drm, allegro-dvt жана meson-vdec драйверлеринде өчүрүлгөн.
amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, skylake үчүн үн драйверинде, ошондой эле микрокод документтеринде драйверлерде жана подсистемаларда жаңыртылган blob тазалоо коду.

Source: opennet.ru

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