Релиз ядра Linux 4.11
1 мая 2017 года
После двух месяцев разработки Линус Торвальдс представил релиз ядра 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-накопителями на базе технологии NVME. Поддержка APST пока не включена по умолчанию, так как для некоторых накопителей наблюдаются проблемы со стабильностью;
- Оборудование
- В DRM-драйвер (Direct Rendering Manager) Nouveau
интегрирована начальная реализация системы регулирования энергопотребления (power budget). Переработана поддержка режима, обеспечивающего загрузку заверенных цифровой подписью блобов с прошивками NVIDIA, которые требуются для активации средств 3D-ускорения в Maxwell (серия GeForce-900) и более новых 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.
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.