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

След като прекара два месеца в разработка, Линус Торвалдс представи версия на ядрото Linux 5.13. Сред най-забележителните промени са: файловата система EROFS, начална поддръжка на чиповете Apple M1, cgroup контролер „misc“, спиране на поддръжката на /dev/kmem, поддръжка на нови GPU от Intel и AMD, възможност за директно извикване на функции от ядрото от BPF програми, рандомизация на стека на ядрото за всяко системно извикване, възможност за компилация с Clang с защита CFI (Control Flow Integrity), LSM модул Landlock за допълнително ограничаване на процеси, виртуално звуково устройство на базата на virtio и режим multi-shot в io_uring.

В новата версия са приети 17189 поправки от 2150 разработчици (най-много в историята), размерът на пача е 60 MB (промените са засегнали 12996 файла, добавени са 794705 реда код, изтрити са 399590 реда). Около 47% от всички предлагани в 5.13 промени са свързани с драйвърите на устройства, около 14% от промените имат отношение към обновяването на кода, специфичен за хардуерни архитектури, 13% е свързано с мрежовия стек, 5% — с файловите системи и 4% — с вътрешните подсистеми на ядрото.

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

  • Дискова подсистема, вход/изход и файлови системи
    • Добавена е поддръжка на файловата система EROFS (Enhanced Read-Only File System), предложена от компанията Huawei за използване върху дялове, достъпни в режим само за четене. Новата ФС поддържа съхранение на данни в компресиран вид и в сравнение с Ext4 показва подобна производителност при изпълнение на операции за последователно четене, но значително изпреварва Ext4 при произволен достъп до данни. Например, при ниво на компресия 4 и тестване на сървър с твърд диск, ФС EROFS изпревари Ext4 в операции за произволно четене повече от шест пъти, а при използване на Android смартфон с Flash — почти три пъти. Както и в другите файлови системи само за четене, структурата на EROFS е значително опростена чрез отстраняване на определени области на метаданни, като карта на свободните блокове.
    • За файловата система SMB3 е реализирана опция за монтиране „rasize“, с помощта на която може да се определи размерът на прозореца за предварително четене (readahead) за увеличаване на производителността на някои видове натоварвания.
    • В ФС ext4 е осигурена перезапис на елементите в каталог при изтриване на файлове. В ext4 също така е разрешено едновременното използване на режим на работа без оглед на регистра символи и криптиране.
    • Във файловата система exFAT е добавена поддръжка на ioctl-командата FITRIM (discard), предназначена за информиране на устройството за неизползваните блокове във файловата система.
    • Във файловата система XFS е добавена възможност за изтегляне на пространство от последната група на разпределение във файловата система, което стана първата стъпка в реализирането на функцията за намаляване размера на съществуващите дялове с файловата система XFS.
    • Добавен е нов системен повик quotactl_path, който се различава от quotactl по това, че позволява управлението на квотите не чрез файл на специално устройство, а чрез указване на пътя до точката на монтиране на файловата система.
    • В механизма fanotify са разширени възможностите, достъпни за неприлагани потребители. Например, подобно на inotify, без права SYS_CAP_ADMIN сега е възможно да се проследяват събития OPEN, ACCESS, MODIFY и CLOSE за файлове и директории.
  • Памет и системни услуги
    • Добавен е нов контролер cgroup — «Misc» (CONFIG_CGROUP_MISC), предназначен за ограничаване и проследяване на скалярни ресурси, които може да се управляват с помощта на прост брояч и да се ограничават, задавайки максимално допустими стойности. Като пример за приложение на новия контролер cgroup се споменава управлението на идентификаторите на адресното пространство, използвани в механизма AMD SEV (Secure Encrypted Virtualization).
    • В интерфейса за асинхронен вход/изход io_uring за заявки POLL е реализиран режим «multi-shot», при който POLL не се изтрива след генериране на събитие, а остава активен и може да генерира няколко събития.
    • Кодът, осигуряващ обработката на софтуерно генерирани прекъсвания в ядрените потоци, беше пренесен от реалтайм клон на ядрото, което позволява изтласкването им от по-високоприоритетни процеси.
    • Добавена е вътрешна библиотека netfs, в която са изнесени типичните функции, използвани в мрежовите файлови системи.
    • За архитектурата PowerPC е реализирана поддръжка на времеви пространства (time namespaces), позволяващи на контейнера да използва собствено време.
    • За архитектурата RISC-V е реализирана поддръжка на kexec, crash dump, kprobe и стартиране на ядрото на място (execute-in-place, изпълнение от оригинален носител, без копиране в оперативната памет).
    • В BPF програмите за трасировка се появи възможността за използване на локално за задачата хранилище за данни (task-local storage), осигуряващо по-висока производителност чрез обвързване на данните с конкретен BPF обработчик.
    • Внедрен нов механизм за директно извикване на ядрените функции от BPF програми, който вече е приложен при реализацията на алгоритмите за натоварване на TCP. За да се осигури сигурност, извикваните функции трябва да бъдат явно дефинирани в бял списък.
    • В системата за проследяване на функции ftrace е добавена опцията func-no-repeats, която позволява отразяване на повторенията на последователни извиквания на функции под формата на брояч.
    • В системния повик userfaultfd(), предназначен за обработка на page faults (обаждания към неразпределени страници в паметта) в потребителското пространство, е добавена възможност за управление на частични faults, при които страницата е налична, но няма запис в таблицата на страниците.
    • Подкрепата за специалния файл /dev/kmem, чрез който можеше да се осъществи достъп до цялото адресно пространство на ядрото, е прекратена. Този файл е признат за остарял и създаващ проблеми със сигурността.
    • За Intel чиповете е реализиран нов драйвер за управление на охлаждането, който позволява понижаване на честотата на процесора при опасност от прегряване. За разлика от съществуващия механизъм за активиране на TCC (Thermal Control Circuit), новият драйвер манипулира относителни стойности, т.е. може да понижи честотата в ранен етап на значителен ръст в температурата, без да изчака преодоляването на критичното ниво.
  • Виртуализация и безопасност
    • Включен е LSM модул за осигуряване на изолация на приложенията Landlock, който позволява ограничаване на взаимодействието с външната среда на група процеси и е разработен с оглед на механизми за изолация, като XNU Sandbox, FreeBSD Capsicum и OpenBSD Pledge/Unveil. Логиката за предоставяне на достъп се определя чрез BPF програма, но за разлика от seccomp-bpf, Landlock не филтрира системни повиквания и аргументите им, а позволява ограничаване на използването на ядрови обекти, като файлови йерархии. С Landlock всеки процес, включително непривилегирован, може сигурно да се изолира и да предотврати обход на изолацията в случай на откритие на уязвимости или зловредни промени в приложението. Landlock позволява на процеса да създаде защитени изолирани среди, реализирани под формата на допълнителен слой над съществуващите механизми за управление на достъпа.
    • Добавена възможност за рандомизиране на отместванията в стека на ядрото при обработка на системни повиквания с цел затрудняване на атаките срещу стека. Същността на предложената защита е в избора на случайно отместване на стека при всяко системно повикване, което усложнява определянето на подредбата на стека в паметта, дори в случай на получаване на информация за адресите, тъй като при следващото системно повикване основният адрес на стека ще се промени. За включване на рандомизацията са предложени параметри на командния ред на ядрото «randomize_kstack_offset=on/off» и настройка CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Накладните разходи се оценяват приблизително на 1% загуба на производителност.
    • Добавена е поддръжка на компилиране на ядрото с включен механизъм за защита CFI (Control Flow Integrity) в компайлера Clang, който добавя проверка преди всяко непряко извикване на функция за идентифициране на определени форми на неопределено поведение, които потенциално могат да доведат до нарушаване на нормалния ред на изпълнение (control flow) в резултат на използването на експлойти, променящи съ хранимите в паметта указатели на функции. За включване на CFI е предложен параметър CONFIG_CFI_CLANG.
    • В предоставената от ядрото услуга за съхранение на ключове за криптиране (key ring) механизмът на доверителните ключове (Trusted Keys) вече обхваща не само ключове от TPM модули, но и от TEE (Trusted Execution Environment) среди. За управление на източника на доверителни ключове е предложен параметър «trusted.source». Освен това е добавена възможност за обработка на доверителни ключове в формат ASN.1.
    • Добавен е параметър за предварително зареждане на списъка с отзовани сертификати по време на зареждане на ядрото. Решен е проблемът (CVE-2020-26541) с игнориране в черния списък на сертификати UEFI Secure Boot, предоставяни в формат EFI_CERT_X509_GUID, което позволяваше зареждането на системата с отзован сертификат.
    • В криптоподсистемата на ядрото е добавена поддръжка за проверка на цифрови подписи ECDSA, базирани на елиптични криви.
    • Реализирана е възможност за верификация на политиките на SELinux чрез подсистемата IMA (Integrity Measurement Architecture), осигуряваща поддържане на база с хешове за проверка на целостта на данните.
  • Мрежовата подсистема
    • Поддръжката на технологията WiMAX е премахната, тъй като вече не се използва в публичните мрежи, а в ядрото единственият драйвер, с който може да се използва WiMAX, остава остарелият драйвер Intel 2400m. В мрежовия конфигуратор NetworkManager поддръжката на WiMAX бе прекратена през 2015 г. В настоящия момент WiMax практически напълно е изместена от технологии като LTE, HSPA+ и Wi-Fi 802.11n.
    • Добавен е драйвер за мрежовия адаптер MANA (Microsoft Azure Network Adapter).
    • В драйвера ath11k е добавена поддръжка за безжични модули Qualcomm QCN9074 с поддръжка на 802.11ax.
    • В драйвера iwlwifi е реализирана възможността за пасивно сканиране на канали в диапазона 6GHz. За Украйна е добавена поддръжка за включване/изключване на IEEE 802.11ax на база параметри в BIOS.
    • Извършена е оптимизация на подсистемата XDP (eXpress Data Path), която позволява манипулиране на мрежовите пакети на етап преди тяхната обработка от мрежовия стек на ядрото на Linux. Проведените тестове демонстрират увеличение на производителността на XDP с 4-8%. За устройства virtio, увеличението на производителността на софтуерната обработка AF_XDP може да достигне 33%.
    • В ICMP е реализирана поддръжка на разширени PROBE съобщения, определени в RFC 8335.
    • Продължава интеграцията на MPTCP (MultiPath TCP) в ядрото, разширение на протокола TCP за организиране на работа на TCP връзка с доставка на пакети едновременно по няколко маршрута през различни мрежови интерфейси, свързани с различни. IP адреси. В новото издание е добавена поддръжка на sockopt за задаване на типови опции TCP. Реализирана е възможността за нулиране на отделни подпотокове (subflow).
    • В netfilter е добавена поддръжка на управление на ресурсите чрез унифицирана йерархия cgroups v2.
    • В ethtool е реализиран интерфейс за четене на статистика IEEE MIB с поддръжка на mlx5 и bnxt. На мрежовите драйвъри е разрешено извличането на произволни данни от SFP EEPROM, манипулирайки не с комбинацията изместване+размер, а с страници памет.
  • Оборудване
    • Реализирана е начална поддръжка на ARM чипа Apple M1, обхващаща контролера на прекъсванията, таймера, UART, SMP, функции за организиране на вход/изход и MMIO. Обратното инженерство на GPU все още не е завършено, за организиране на извеждане се предоставя поддръжка на framebuffer и конзола през серийния порт.
    • Продължава почистването на ядрото от стари драйвери, премахнати са драйверите „gasket“ (Google ASIC), „sysace“, „umem“ и няколко стари драйвера за серийни портове.
    • След 13 години в стадийна версия, драйверът „comedi“ е стабилизиран и преместен в основния състав за поддръжка на устройства за събиране на данни.
    • Добавен е драйвер GUD (Generic USB Display) с реализация на основен драйвер за екрани и TV адаптери, свързващи се чрез USB интерфейс. Драйверът предоставя DRM свойства (Direct Rendering Manager) за въртене на изображението, управление на яркостта, достъп до EDID, настройка на видео режими и свързване на телевизори, които могат да се използват като основа за създаване на драйвери за конкретни устройства.
    • Добавен е звуков драйвер „virtio“ с реализация на виртуално звуково устройство, което може да се използва в хост системи за възпроизвеждане и запис на звук без проброс на достъп до звуковата карта и без емулация.
    • В драйвера amdgpu е добавена начална поддръжка за GPU Aldebaran (gfx90a). Включена е начална поддръжка за технологията на адаптивна синхронизация FreeSync за HDMI (представена по-рано за DisplayPort), която позволява корекция на честотата на обновяване на информацията на екрана. Включена е поддръжка на ASSR (Alternate Scrambler Seed Reset). Добавен е ioctl за запитване на функции, свързани с кодиране и декодиране на видео. Добавен е режим CONFIG_DRM_AMD_SECURE_DISPLAY за откриване на промени в дисплеите, показващи критична информация. Добавена е поддръжка на механизма за спестяване на енергия ASPM.
    • В драйвера i915 за видеокарти Intel е добавена поддръжка за чиповете Intel Alderlake-S. Добавена е поддръжка за eDP MSO (Embedded DisplayPort Multi-SST Operation).
    • Добавена е поддръжка за игровия контролер Luna (Amazon), както и за сензорни екрани Hycon HY46XX, ILITEK Lego Series и MStar MSG2638.

В същото време Латинскоамериканският Фонд за свободен софтуер създаде вариант на напълно свободно ядро 5.11 — Linux-libre 5.11-gnu, освободено от елементи на фърмуер и драйвери, съдържащи несвободни компоненти или участъци от код, чиято употреба е ограничена от производителя. В новото издание е направена почистване на драйвера comedi. Почистването на драйверите cyclades, isicom tty и i2400m wimax, които са премахнати от ядрото, е преустановено. Кодът за почистване на блобовете в драйверите и подсистемите amdgpu, i915 csr, r8152 usb, mhi bus, x86 touchscreen и qualcomm arm64 е актуализиран.

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

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