Релиз ядра Linux 4.11

После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 4.11. Среди наиболее заметных изменений: поддержка журналирования в программном RAID 4/5/6, новый тип сокетов SMC-R, встроенная реализация SipHash, системный вызов statx(), поддержка протокола Opal для работы самошифруемыми накопителями, раздельные буферы с историей прокрутки для консолей.

В новую версию принято около 12 тысяч исправлений от 1500 разработчиков, размер патча — 39 Мб (изменения затронули 12479 файлов, добавлено 530154 строк кода, удалено 232358 строк). Около 48% всех представленных в 4.11 изменений связаны с драйверами устройств, примерно 20% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 4% — файловыми системами и 5% c внутренними подсистемами ядра.

Основные новшества:

● Дисковая подсистема, ввод/вывод и файловые системы

• В реализации RAID 4/5/6 на базе подсистемы MD появилась поддержка журналирования, защищающая от потери данных в случае пропадании питания или краха. Реализация подготовлена компанией Facebook. Журнал ведётся на отдельном носителе (SSD или NVRAM). Все данные вначале отражаются в журнале, после чего разносятся по дискам, входящим в RAID-массив. В ситуации неожиданного отключения питания, даже если RAID находился в деградированном состоянии или данные были записаны лишь на часть дисков, повреждений удастся избежать, так как вся информация о транзакции отражена в журнале;

• Для файловой системы ext4 реализована новая ioctl-команда EXT4_IOC_SHUTDOWN, которая позволяет убедиться, что раздел остановлен и нет необходимости в сбросе данных, остающихся в оперативной памяти. Возможность подготовлена по аналогии с командой XFS_IOC_GOINGDOWN;

• В файловой системе CIFS реализована поддержка шифрованного доступа к разделам с использованием протокола SMB3;

• В многоуровневой системе очередей (multiqueue), рассчитанной на организацию многопоточного доступа к данным на многоядерных системах, появилась поддержка подключения планировщиков ввода/вывода. В настоящее время для multiqueue пока портирован только планировщик deadline, ведётся портирование планировщика ввода/вывода BFQ, который ожидается в ядре 4.12;

• Добавлена возможность работы с накопителями, соответствующими спецификации Opal, которая определяет механизм шифрования хранимых данных, позволяющий не допустить утечку информации в случае попадания носителя информации не в те руки. Поддержка Opal добавлена только для поддерживающих данную технологию NVME-контроллеров. Пользователям предоставлены команды для настройки, блокирования при переходе в спящий режим и разблокирования SED-накопителей (Self-Encrypting Drives);

• В F2FS, развиваемой компанией Samsung высокопроизводительной файловой системе для Flash-накопителей, включена по умолчанию опция inline_xattr, обеспечивающеая inline-хранение в inode атрибутов xattr. Для отключения предложена опция монтирования «noinline_xattr». Добавлен отдельный поток для асинхронного выполнения команд «discard»;

• В OverlayFS обеспечена поддержка многопоточного копирования содержимого обычных файлов (ранее операции копирования выполнялись последовательно, что было узким местом в производительности);

• Отключена поддержка NFSv4 по UDP, которая была в неработоспособном виде и расходилась со спецификацией. Также по умолчанию отключены метки безопасности для NFS (для активации при экспорте следует явно указывать security_label), так как данная возможность имеет смысл только при установке на сервере и клиенте похожих правил SELinux;

● Виртуализация и безопасность

• Для использования с ядром портирован GCC-плагин structleak, разработанный проектом Grsecurity и выполняющим принудительную инициализацию структур, передаваемых в пространство пользователя для блокирования возможных утечек информации;

• В ядро встроена реализация алгоритма SipHash, предоставляющего более безопасный и быстрый метод хэширования;

• В Xen добавлена поддержка загрузки гостевых систем в режиме PVH, комбинирующем элементы режимов паравиртуализации (PV) для ввода/вывода, обработки прерываний, организации загрузки и взаимодействия с оборудованием, с применением полной виртуализации (HVM) для ограничения привилегированных инструкций, изоляции системных вызовов и виртуализации таблиц страниц памяти;

• Для KVM реализован драйвер PTP, позволяющий получить доступ из гостевой системы к часам реального времени хост-системы, что даёт возможность использовать Chrony для высокоточной синхронизации часов хоста и гостевой системы;

• Добавлен интерфейс /sys/kernel/security/lsm, через который можно узнать список активных LSM-модулей;

• Добавлена реализация алгоритма шифрвоания AES, обеспечивающая фиксированное время выполнения для защиты от атак, пытающихся определить характер данных на основе изменения времени обработки операции;

• Реализация генератора псевдослучайных чисел переведена с хэширования MD5 на использование безопасного и быстрого алгоритма поточного шифра ChaCha20 при формировании энтропии для целочисленного вывода get_random_int и get_random_long;

• Добавлен sysctl для загрузки правил AppArmor непривилегированным пользователем для нового namespace;

● Сетевая подсистема

• Реализован новый тип сокетов «SMC-R» (Shared Memory Communications over RDMA, RFC-7609), предназначенный для организации похожих на TCP каналов связи поверх транспорта RDMA (Remote Direct Memory Access). Протокол разработан компанией IBM и позволяет без внесения изменений (загрузив библиотеку через LD_PRELOAD) адаптировать уже написанные для TCP приложения для работы в сетях RoCE (RDMA over Converged Ethernet);

• Добавлен модуль «psample» для выборки сетевых пакетов, проходящих через сетевой интерфейс, для дальнейшего отсеивания фильтром-классификатором;

• В сетевой подсистеме теперь применяется SipHash вместо MD5 для генерации номеров последовательности и вместо SHA1 для syncookies;

• В TCP-стеке включён по умолчанию механизм определения потери пакетов RACK, который в отличие от штатного метода определения факта потери пакета, отталкивается от времени передачи, а не последовательности прихода пакетов. Суть работы RACK в том, что при получении ACK-подтверждения для пакета, любые неподтверждённые пакеты, отправленные как минимум на RTT (round-trip time) раньше подтверждённого пакета, считаются потерянными и потребуют повторной отправки. Новый алгоритм уже протестирован в инфраструктуре Google и предложен для утверждения в качестве стандарта IETF (draft-ietf-tcpm-rack-01);

• Для TCP-сокетов добавлена новая опция TCP_FASTOPEN_CONNECT, которую можно использовать в качестве альтернативного метода включения режима Fast Open на стороне клиента;

• Параметры tcp_max_syn_backlog, tcp_tw_recycle и tcp_max_tw_buckets теперь могут раздельно выставляться для разных пространств имён;

• Добавлен драйвер «ipvtap» для создания сетевых интерфейсов Ipvlan, для управления которыми можно применять инструменты, рассчитанные на работу с устройствами TAP;

● Память и системные сервисы

• Добавлен системный вызов statx() с реализацией более эффективного и функционального варианта stat(), возвращающего расширенную информацию о файле, включая время создания файла и специфичные для файловых систем флаги;

• Реализованы раздельные буферы прокрутки для VGA-консолей. Ранее для всех консолей применялся один общий буфер прокрутки, что приводило к очистке всей не вмещающейся на экран истории после переключения на другую консоль. После внесения изменения просмотр истории прокрутки стал похож на работу с историей в tmux и screen. По умолчанию возможность отключена, так как наблюдаются проблемы с совместимостью с утилитами (например, clear_console), завязанными на очистку буфера после каждой смены консоли. Для включения следует передать при загрузке параметр «vgacon.scrollback_persistent=1» или собрать ядро с опцией «VGACON_SOFT_SCROLLBACK_PERSISTENT_ENABLE_BY_DEFAULT=y»;

• Проведена существенная оптимизация системы подкачки (swap), изначально рассчитанная на работу с дисковыми накопителями. Подкачка теперь адаптирована для работы с носителями SSD, отличающимися очень низким постоянным временем доступа;

• Инструментарий perf теперь может быть собран с использованием компилятора Clang;

• Добавлена реализация команды «perf ftrace», предоставляющая основанный на perf интерфейс для фреймворка отслеживания вызова функций (ftrace);

• Добавлена возможность использования технологии разгона процессоров Turbo Boost Max 3.0 на системах без поддержки HWP (Hardware P-States). Turbo Boost Max позволяюет увеличить производительность однопоточных приложений за счёт завышения тактовой частоты, при удержании допустимых границ мощности и температуры;

• Модуль для обеспечения сжатия LZ4 заменён на новую реализацию, демонстрирующей более высокую производительность;

• Из-за проблем с безопасностью удалена поддержка механизма /proc/timer_stats, предоставляющего статистику о работе таймера, которая приводит к утечке информации о процессе;

• Для устройств PCI Express добавлена поддержка дополнительных режимов энергосбережения ASPM L1, определённых в спецификции PCIe 3.1, что позволяет добиться перехода на более глубокие уровни сна;

• Реализована поддержка средств управления энергопотреблением APST (Autonomous Power State Transitions), которые позволяют на 20-30% снизить потребление энергии SSD-накопителями на базе технологии NVE. Поддержка APST пока не включена по умолчанию, так как для некоторых накопителей наблюдаются проблемы со стабильностью;

● Оборудование

• В DRM-драйвер (Direct Rendering Manager) Nouveau интегрирована начальная реализация системы регулирования энергопотребления (power budget). Переработана поддержка режима, обеспечивающего загрузку заверенных цифровой подписью блобов с прошивками NVIDIA, которые требуются для активации средств 3D-ускорения в Maxwell (GeForce-1000) и более новых GPU. Необходимы прошивки уже добавлены в набор linux-firmware, но работа пока не доведена до конца, поэтому поддержка использования подобных прошивок появится только в ядре 4.12;

• В драйвере AMDGPU появилась предварительная поддержка технологии виртуализация ввода-вывода SR-IOV (Single Root Input/Output Virtualization), поддерживаемой в профессиональных картах FirePro. Добавлены PCI-идентификаторы для чипов POLARIS12;

• В драйвер для GPU Intel добавлены PCI-идентификаторы видеоподсистемы ещё не поступившей в продажу SoC Gemini Lake (GLK), идущей на смену Apollo Lake. Включено сжатие фреймбуфера для чипов gen9 и новее. Реализована возможность загрузки HuC-прошивок, содержащих компоненты для обеспечения кодирования видео. Добавлена поддержка вывода звука через DP MST (DisplayPort Multi-Stream Transport). Добавлен интерфейс на базе подсистемы perf для сбора метрик о производительности драйвера i915. Представлены новые sysctl dev.i915.oa_max_sample_rate и dev.i915.perf_stream_paranoid. Для систем на базе Baytrail и Cherrytrail включена поддержка режима вывода звука HDMI LPE, если не определён контроллер HDaudio;

• Добавлена подсистема TinyDRM, предоставляющая компоненты для упрощения разработки драйверов для простых LCD-дисплеев, которые подключаются через медленные шины, такие как SPI и MIPI-DBI;

• Добавлена поддержка графической подсистемы и контроллера управления памятью SoC Aspeed AST2500;

• Добавлена поддержка звукового кодека Realtek ALC1220, применяемого на многих материнских платах AMD Ryzen и Intel Kaby Lake (Core-i 7xxx), а также кодеков Nuvoton NAU85L40, Allwinner SUN8I и интерфейса Intel HDMI LPE;

• Добавлена поддержка новых ARM-плат, включая Banana Pi M64, HiSilicon Kirin960/Hi3660/HiKey960, SolidRun MACCHIATOBin, Broadcom BCM958712DxXMC NorthStar2, NXP LS1012a, а также систем на баз Allwinner H2+ и V3;

• Добавлен новый звуковой драйвер и V4L2-драйвер камеры для SoC BCM2835 (используется в Raspberry Pi).

Дополнение: Латиноамериканский Фонд свободного ПО оперативно сформировал вариант полностью свободного ядра 4.11 — Linux-libre 4.11-gnu, очищенного от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В новом выпуске очищен от блобов код для поддержки криптоакселераторов Cavium, а также драйверы для GPU Rockchip, Ethernet-контроллеров Netronome NFP 4000/6000 и сенсорных экранов Silead. В список расширений, в которых могут поставляться блобы, добавлены «.out» и «.nffw». Обновлён код чистки блобов в драйверах для GPU AMD и Intel, в загрузчике прошивок Qualcomm, кодеках Chips&Media, беспроводных драйверах Atheros ath10k, wil6210 и Intel iwlwifi, в звуковых драйверах для Intel Skylake.

                                      

Оцените новость: 
Средняя: 2.5 (53 оценки)