Релиз на ядрото Linux 5.2

След като работи два месеца, Линус Торвалдс представи новата версия на ядрото Linux 5.2. Сред най-забележителните промени: режимът на работа на Ext4 без оглед на регистрация на символи, отделни системни повиквания за монтиране на файлови системи, драйвери за GPU Mali 4xx/6xx/7xx, възможност за обработка на промяна на стойностите на sysctl в програми BPF, модул device-mapper dm-dust, защита от атаки MDS, поддръжка на Sound Open Firmware за DSP, оптимизация на производителността BFQ, довеждане на подсистемата PSI (Pressure Stall Information) до възможност за използване в Android.

В новата версия са включени 15100 корекции от 1882 разработчици,
размерът на пача е 62 Мб (промените са засегнали 30889 файла, добавени са 625094 реда код, премахнати са 531864 реда). Около 45% от всички представени в 5.2
промени са свързани с драйверите на устройствата, около 21% от промените имат
отношение към обновяване на кода, специфичен за хардуерните архитектури, 12%
е свързано с мрежовия стек, 3% — файловите системи и 3% с вътрешните
подсистеми на ядрото. 12.4% от всички промени са подготвени от компанията Intel, 6.3% — Red Hat, 5.4% — Google, 4.0% — AMD, 3.1% — SUSE, 3% — IBM, 2.7% — Huawei, 2.7% — Linaro, 2.2% — ARM, 1.6% — Oracle.

Основни нововъведения:

  • Дисковата подсистема, вход/изход и файловите системи
    • За Ext4 е добавена поддръжка възможност за работа без различие в регистрацията на символите в имената на файловете, която се активира само при свързване с отделни празни каталози чрез нов атрибут „+F“ (EXT4_CASEFOLD_FL). При задаване на този атрибут на каталог, всички операции с файлове и подкаталози вътре ще се извършват без оглед на регистрацията на символите, включително регистрацията ще бъде игнорирана при операции на търсене и отваряне на файлове (например, файловете Test.txt, test.txt и test.TXT в подобни каталози ще се считат за идентични). По подразбиране файловата система остава чувствителна към регистрацията, с изключение на каталогите с атрибут „chattr +F“;
    • Унифицирани са функциите за обработка на символи UTF-8 в имената на файловете, които се прилагат при изпълнение на операции за сравнение и нормализация на низове;
    • В XFS е добавена инфраструктура за проследяване на състоянието на файловата система и нов ioctl за запитване на статус на работоспособността. Реализирана е експериментална възможност за проверка на лету (online scrub) на броячи на суперблока.
    • Добавен е нов модул device-mapper „dm-dust“, който позволява симулирането на появата на лоши блокове на носителя или грешки при четене от диска. Модулът улеснява отстраняването на грешки и тестването на приложения и различни системи за съхранение в условия на възможни сривове;
    • Проведена значителна оптимизация на представянето на планиращия BFQ за вход/изход. В условия на високо натоварване на вход/изход внесените оптимизации позволяват намаляват с до 80% времето за операции като стартиране на приложения;
    • Добавена е серия от системни повиквания за монтиране на файлови системи: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() и move_mount(). Тези системни повиквания позволяват отделна обработка на различни етапи на монтиране (обработване на суперблока, получаване на информация за ФС, монтиране, прикрепяне към точка на монтиране), които преди се извършваха с общо системно повикване mount(). Отделните повиквания дават възможност за изпълнение на по-сложни сценарии на монтиране и отделно извършване на операции като пренастройка на суперблока, включване на опции, промяна на точката на монтиране и пренос в друго име пространство. Освен това, отделната обработка позволява точно определяне на причините за кодове на грешки и задаване на няколко източника за многослойни ФС, каквито са overlayfs;
    • В интерфейса за асинхронен вход/изход io_uring е добавена нова операция IORING_OP_SYNC_FILE_RANGE, която извършва действия, еквивалентни на системното повикване sync_file_range(), както и е реализирана възможност за регистрация на eventfd с io_uring и получаване на уведомления за завършване на операции;
    • За файловата система CIFS е добавен ioctl FIEMAP, осигуряващ ефективно сопоставяне на екстентите, както и поддръжка на режимите SEEK_DATA и SEEK_HOLE;
    • В подсистемата FUSE предложен API за управление на кеширането на данни;
    • В Btrfs е извършена оптимизация на реализацията на qgroups и е увеличена скоростта на изпълнение на fsync за файлове с множество твърди линкове. Подобрено е кода за проверка на целостта на данните, който вече отчита възможното повреждане на информация в ОЗУ преди изписването на данните на диск;
    • В CEPH е добавена поддръжка за експортиране на моментни снимки чрез NFS;
    • Подобрена е реализацията на монтиране на NFSv4 в режим „soft“ (при възникване на грешка в достъпа до сървъра в режим „soft“ извикването веднага връща код на грешка, а в режим „hard“ управлението не се освобождава до възстановяване на наличността на ФС или тайм аута). В новото издание е осигурена по-точна обработка на тайм аута, ускорено е възстановяването след срив и е добавена нова опция за монтиране „softerr“, която позволява промяна на кода на грешка (ETIMEDOUT), връщан при настъпване на тайм аута;
    • В API nfsdcld, предназначено за проследяване на състоянието на клиенти на NFS, е предоставена възможност за коректно проследяване на състоянието на клиента от NFS сървъра при рестартиране. Така демона nfsdcld вече може да изпълнява ролята на обработчик nfsdcltrack;
    • За AFS е добавена емулация на блокировки на диапазони от байтове в файловете (Блокиране на диапазон от байтове);
  • Виртуализация и сигурност
    • Извършена е работа за отстраняване на места в ядрото, позволяващи изпълнение на код от достъпни за писане отражени области в паметта, което дава възможност за блокиране на потенциални уязвимости, които могат да бъдат експлоатирани при атака;
    • Добавен е нов параметър на командния ред на ядрото «mitigations=», предоставящ опростен начин за управление на включването на определени техники за защита от уязвимости, свързани със спекулативното изпълнение на инструкции в CPU. Предаването на «mitigations=off» деактивира всички налични методи, а режимът по подразбиране «mitigations=auto» активира защитата, но не влияе на използването на Hyper Threading. Режимът «mitigations=auto,nosmt» допълнително деактивира Hyper Threading, ако методът за защита го изисква.
    • Добавено поддръжка на електронен цифров подпис по ГОСТ Р 34.10-2012 (RFC 7091, ISO/IEC 14888-3), разработена от Виталием Чикунов от «Базальт СПО». Вградена е поддръжка на AES128-CCM в TLS. В модула crypto_simd е добавена поддръжка на алгоритми AEAD;
    • В Kconfig е добавена има отделен раздел «уплътняване на ядро» с опции за усилване на защитата на ядрото. В момента в новия раздел са събрани единствено настройки за активиране на усилващи проверки на GCC плугини;
    • Кодът на ядрото е почти освободен използване на непрекъснати изрази case в switch (без return или break след всеки блок case). Остава да се поправят 32 от 2311 случая на такова използване на switch, след което при компилация на ядрото може да се приложи режим «-Wimplicit-fallthrough»;
    • За архитектурата PowerPC е реализирана поддръжка на хардуерни механизми за ограничаване на нежеланите пътища за достъп на ядрото до данни в пространството на потребителя;
    • Добавен е код за блокиране атаки клас на MDS (Microarchitectural Data Sampling) в процесорите на Intel. Проверете податливостта на системата на уязвимостта чрез SysFS променлива «/sys/devices/system/cpu/vulnerabilities/mds». Наличен две режима на защита: пълен, който изисква наличие на актуален микрокод, и обходен, който не гарантира пълно почистване на кешовете на CPU при прехвърляне на управлението в потребителското пространство или гостуваща система. За управление на режимите на защита в ядрото е добавен параметърът „mds=“, който може да приема стойности „full“, „full,nosmt“ (+ изключване на Hyper-Threads) и „off“;
    • В системи x86-64 за IRQ, механизми за отстраняване на грешки и обработчици на изключения е добавена защита „stack guard-page“, която се състои в поставяне на граница със стека на страниците в паметта, достъпът до които води до генериране на изключение (page-fault);
    • Добавена е sysctl настройката vm.unprivileged_userfaultfd, управляваща възможността за използване на системния повик userfaultfd() от непривилегировани процеси;
  • Мрежова подсистема
    • Добавено подкрепа за шлюзове IPv6 за маршрути IPv4. Например, сега е възможно да се задават правила за маршрутизиране от вида „ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0“;
    • За ICMPv6 са реализирани ioctl повиците icmp_echo_ignore_anycast и icmp_echo_ignore_multicast за игнориране на ICMP ECHO за anycast и
      multicast адреси. Добавено възможност за ограничаване на интензивността на обработка на пакети ICMPv6;
    • За mesh протокола B.A.T.M.A.N. („Better Approach To Mobile Adhoc Networking), който позволява създаването на децентрализирани мрежи, всеки възел в които е свързан през съседни възли, е добавена подкрепа за транслация от multicast в unicast, както и възможност за управление през sysfs;
    • В ethtool е добавен е добавен нов параметър Fast Link Down, който позволява да се намали времето за известие за събитие на отключване на линка за 1000BaseT (в нормални условия забавянето е до 750ms);
    • Появи се възможност за привързване на тунели Foo-Over-UDP към определен адрес, мрежов интерфейс или сокет (по-рано привързването се е извършвало само по обща маска);
    • В безжичния стек е осигурена възможност за реализиране на обработчици
      OWE (Opportunistic Wireless Encryption) в потребителското пространство;
    • В Netfilter в веригите nat е добавена подкрепа за семейство адреси inet (например, сега е възможно да се използва едно правило за транслация за обработка на ipv4 и ipv6, без разделяне на правила за ipv4 и ipv6);
    • В netlink е добавен режим строг за стриктна проверка на коректността на всички съобщения и атрибути, в който не се допуска превишение на очаквания размер на атрибутите и забранено е добавянето на допълнителни данни в края на съобщенията;
  • Памет и системни услуги
    • В системния повик clone() е добавен флаг CLONE_PIDFD, с който родителският процес получава файлов дескриптор «pidfd», идентичен на създадения дъщерен процес. Този файлов дескриптор, например, може да се използва за изпращане на сигнали без страх от състезателно състояние (веднага след изпращането на сигнала целевият PID може да бъде освободен поради приключване на работата на процеса и зает от друг процес);
    • За втората версия на cgroups е добавена функционалност на контролера freezer, с помощта на който може да се спре работата в cgroup и временно да се освободят някои ресурси (CPU, вход/изход и потенциално дори памет) за изпълнение на други задачи. Управлението става чрез управляващите файлове cgroup.freeze и cgroup.events в дървото на cgroup. Записване на 1 в cgroup.freeze замразява процесите в текущия cgroup и всички дъщерни групи. Тъй като замразяването изисква известно време, допълнително е предложен файл cgroup.events, чрез който може да се разбере за приключване на операцията;
    • Осигурен експорт на атрибути на паметта, прикрепена към всеки възел в sysfs, което позволява от потребителското пространство да се определи характерът на обработка на паметните банки в системи с хетерогенна памет;
    • Подсистемата PSI (Pressure Stall Information) е доразвита, което позволява анализ на информацията за времето на изчакване на различни ресурси (CPU, памет, вход/изход) за определени задачи или набори от процеси в cgroup. С помощта на PSI обработчиците в потребителското пространство могат по-точно да оценят нивото на натоварване на системата и характера на забавянето, в сравнение с Load Average. В новата версия е осигурена поддръжка на настройка на праговете на чувствителност и възможност за използване на повикване poll() за получаване на уведомление за задействане на установлените прагови стойности за определен период от време. Тази функция позволява организиране на проследяване на недостига на памет в Android на ранен етап, да се определи източникът на проблемите и да се завършат неважни приложения, без да се допуска появата на видими проблеми за потребителя. При стрес тестовете средствата за мониторинг на потреблението на памет на основата на PSI показаха 10 пъти по-малко фалшиви срабатывания в сравнение с статистиката vmpressure;
    • Извършена е оптимизация на кода за проверка на BPF-програми, която за големи програми става до 20 пъти по-бърза. Оптимизацията позволи да се повиши лимитът на размера на BPF-програмите от 4096 до един милион инструкции;
    • За BPF-програми предоставена възможност за достъп до глобални данни, което позволява да се определят глобални променливи и константи в програмите;
    • Добавен API, позволяваща контролиране на промените на параметрите sysctl от BPF-програми;
    • За архитектурата MIPS32 е реализиран JIT-компилатор за виртуалната машина eBPF;
    • За 32-битната архитектура PowerPC е добавена поддръжка за инструмента за отстраняване на грешки KASan (Kernel address sanitizer), който открива грешки в работата с паметта;
    • На системи x86-64 е премахнато ограничението за разполагане на дампове на състоянието при срив на ядрото (crash-dump) в области на паметта над 896MB;
    • За архитектурата s390 е реализирана поддръжка за рандомизация на адресното пространство на ядрото (KASLR) и възможност за проверка на цифрови подписи при зареждане на ядрото чрез kexec_file_load();
    • За архитектурата PA-RISC е добавена поддръжка за отладчика на ядрото (KGDB), маркери за преход и kprobes;
  • Оборудване
    • Включен е драйвер Lima за GPU Mali 400/450, използван в много стари чипове на архитектура ARM. За по-новите GPU Mali е добавен драйвер Panfrost, който поддържа чипове на базата на микроархитектури Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) и Bifrost (Mali G3x, G5x, G7x);
    • Добавена е поддръжка за звукови устройства, използващи открити фърмуер Sound Open Firmware (SOF). Въпреки наличието на открити драйвери, кодът на фърмуерите за звукови чипове все още оставаше затворен и се предоставяше в бинарен вид. Проектът Sound Open Firmware е разработен от Intel за създаване на открити фърмуери за DSP-чипове, свързани с обработката на звук (по-късно Google също се присъедини към разработката). В момента в рамките на проекта вече са подготвени открити фърмуери за звукови чипове на платформите Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake и IceLake;
    • В DRM-драйвера на Intel (i915) е добавена поддръжка за чипове
      Elkhartlake (Gen11). Добавени са PCI идентификатори за чипове Comet Lake (Gen9). Стабилизирана е поддръжката на чипове Icelake, за които също са добавени допълнителни PCI идентификатори на устройства.
      Включен
      режим на асинхронно превключване между две буферни памети в видеопаметта (async flip) при изпълнение на операции по запис чрез mmio, което позволи значително увеличаване на производителността на някои 3D приложения (например, производителността в теста 3DMark Ice Storm нарасна с 300-400%). Добавена е поддръжка на технология HDCP2.2 (High-bandwidth Digital Content Protection) за криптиране на видеосигнала, предавен чрез HDMI;
    • В драйвера amdgpu за GPU Vega20 е добавена поддръжка на RAS (от надеждност, наличност и обслужваемост) и експериментална поддръжка на подсистемата SMU 11, която замени технологията Powerplay. За GPU Vega12 е добавена поддръжка на режима BACO (Bus Active, Chip Off). Добавена е начална поддръжка на XGMI, високоскоростна шина (PCIe 4.0) за свързване на GPU. В драйвера amdkfd са добавени липсващи идентификатори на карти, базирани на GPU Polaris10;
    • В драйвера Nouveau е добавена поддръжка на платки, базирани на чипсета NVIDIA Turing 117 (TU117, използван в GeForce GTX 1650). В
      kconfig е добавена настройка за деактивиране на остарели функции, които вече не се използват в актуалните версии на libdrm;
    • В API DRM и драйвера amdgpu е добавена поддръжка на обекти за синхронизация „timeline“, позволяващи да се избегне използването на класически блокировки.
    • От клон staging в основния състав е преместен драйвера vboxvideo за виртуален GPU VirtualBox;
    • Добавен е драйвер aspeed за GFX чипа SoC ASPEED;
    • Добавена е поддръжка на ARM SoC и платки Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Kobo Aura (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

Съвместно Латинокамериканският Фонд за свободен софтуер сформира
вариант напълно свободно ядро 5.2Linux-libre 5.2-gnu, очистено от елементи за фърмуер и драйвери, съдържащи несвободни компоненти или участъци от код, чиято употреба е ограничена от производителя. В новата версия е включено зареждане на файлове
Sound Open Firmware. Деактивирано е зареждането на блоби в драйверите
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp и ucsi_ccg. Актуализиран е кода за почистване на блоби в драйверите и подсистемите ixp4xx, imx-sdma, amdgpu, nouveau и goya, както и в документацията за микрокода. Прекратено е почистването на блоби в драйвера r8822be поради неговото премахване.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster