Линус Торвальдс представил ядро Linux 4.11
Сегодня, после двух месяцев работы, Линус Торвальдс представил ядро Linux 4.11. Среди прочих изменений стоит выделить такие пункты, как включение поддержки журналирования в программном RAID 4/5/6, системный вызов statx (), плюс поддержка протокола Opal, что позволяет работать с самошифруемыми накопителями информации.
О масштабах изменений можно судить по количеству принятых исправлений — около 12000 от полутора тысяч разработчиков. Размер патча составляет 39 МБ. Изменены 12479 файлов, добавлено чуть больше полумиллиона строк кода, удалено более 200 тысяч. Примерно половина представленных изменений имеет отношение к драйверам устройств, около 20% — поддержка различных аппаратных архитектур, остальное — сетевой стек, файловые системы и внутренние подсистемы ядра.
Обновления, чтобы получить о них лучшее представление, стоит разделить на несколько секций. Это «железо», «память», «сетевая подсистема», «дисковая и файловые системы» и «виртуализация».
Железо
- Здесь добавлено несколько ожидаемых многими элементов, включая интеграцию в DRM-драйвер начальной реализации системы регулирования энергопотребления. Речь идет о Power budget, как это называется на английском. Кроме того, усовершенствована поддержка режима, который обеспечивает загрузку завершенных цифровой подписью блобов с прошивками NVIDIA. Это требуется для того, чтобы позволить активировать средства 3D ускорения графики в GeForce-1000 и более новых видеоадаптерах. К сожалению, полная поддержка новых прошивок будет обеспечена лишь в ядре 4.12;
- В драйвер AMDGPU добавили предварительную поддержку технологии виртуализации ввода-вывода SR-IOV (Single Root Input/Output Virtualization), которая поддерживается в профессиональных картах FirePro. Появились PCI-идентификаторы для чипов POLARIS12;
- Кроме того, в драйвере для GPU от Intel добавлены PCI-идентификаторы видеоподсистемы SoC Gemini Lake. Примечательно, что она еще не поступила в продажу, предназначена она для смены Apoolo Lake;
- Разработчики добавили поддержку таких ARM-плат, как Banana Pi M64, HiSilicon Kirin960/Hi3660/HiKey960, SolidRun MACCHIATOBin, Broadcom BCM958712DxXMC NorthStar2, NXP LS1012a, а также систем на баз Allwinner H2+ и V3;
- Есть новый звуковой драйвер и драйвер камеры, которая используется в Raspberry Pi.
Дисковая и файловые системы
- Разработчики ядра добавили поддержку журналирования в RAID 4/5/6. Этот ход позволил защитить систему от потери данных в случае отключения питания или падения. Разрабатывала этот компонент компания Facebook. Журнал ведется на отельном носителе, причем данные изначально отражаются в журнале, а после — разносятся по различным дискам, которые входят в RAID-массив. В том случае, если отключается питание, даже, если информация была записана только на часть дисков, повреждений можно избежать;
- Что касается файловой системы ext4, здесь реализована команда нового типа EXT4_IOC_SHUTDOWN. Она позволяет убедиться в том, что раздел уже остановлен и необходимости в сбросе данных, которые находятся в оперативной памяти, нет;
- Как и говорилось выше, разработчики реализовали работу с накопителями, которые соответствуют спецификации Opal. Эта спецификация определяет принцип шифрования хранимых данных, что позволяет не допустить утечку информации в случае, если носитель с ценными данными украден или потерян. Пользователям предоставлена возможность изменять ряд настроек;
- Для F2FS, системы, которая разрабатывается корпорацией Samsung, включена опция inline_xattr, обеспечивающеая inline-хранение в inode атрибутов xattr;
- Поддержка NFSv4 по UDP отключена, поскольку она была неработоспособной. Плюс ко всему, отключены по умолчанию метки безопасности для NFS.
Виртуализация
- В ядро теперь встроена реализация алгоритма SipHash, которая представляет собой безопасный и быстрый метод хэширования;
- Добавлен интерфейс /sys/kernel/security/lsm — через него теперь можно узнать список активных LSM-модулей;
- Добавлена реализация алгоритма шифрования AES, которая обеспечивает фиксированное время выполнения для защиты от атак определенного типа, когда злоумышленник пытается определить тип данных на основе изменения времени обработки операции;
- Генератор псевдослучайных чисел переведен с хэширования MD5 на использование безопасного и быстрого алгоритма поточного шифра ChaCha20.
Сеть
- Здесь реализован новый тип сокетов, «SMC-R» (Shared Memory Communications over RDMA, RFC-7609), который предназначен для организации каналов связи поверх RDMA (Remote Direct Memory Access). Этот протокол разработан корпорацией IBM и обеспечивает возможность адаптировать написанные для TCP приложения для работы в
- сетях RoCE (RDMA over Converged Ethernet);
- Появился новый модуль «psample» для выборки сетевых пакетов, которые проходят через сетевой интерфейс для дальнейшего отсеивания фильтром-классификатором;
- В TCP-стеке включен по умолчанию механизм RACK, позволяющий определять потери пакетов. В этом случае используется время передачи, а не последовательность прихода пакетов;
- Для TCP-сокетов добавлена новая опция TCP_FASTOPEN_CONNECT;
- Есть новый драйвер для создания сетевых интерфейсов Ipvlan, драйвер — ipvtap.
Память
- Здесь добавлен системный вызов statx (), где реализован более эффективный и функциональный вариант stat () с возвращением расширенной информации о файле, с включением времени создания файла и специфичных для файловых систем флагов;
- Появилась реализация раздельных буферов прокрутки для VGA-консолей;
- Система подкачки оптимизирована, адаптирована на работу с SSD с малым постоянным временем доступа;
- Появилась возможность использования разгона процессоров Turbo Boost Max 3.0 на системах без поддержки HWP (Hardware P-States);
- Устройства PCI Express получили поддержку дополнительных режимов энергосбережения ASPM L1;
- Также реализована поддержка средств управления энергопотреблением APST (Autonomous Power State Transitions), которые обеспечивают возможность на 20–30% снизить потребление энергии SSD-накопителями на базе технологии NVE.
Как всегда Латиноамериканский Фонд свободного ПО представил свою версию ядра Linux-libre 4.11-gnu, полностью свободного от проприетарных элементов. Так, здесь «почищен» код для поддержки криптоакселераторов Cavium, а также драйверы для GPU Rockchip, Ethernet-контроллеров Netronome NFP 4000/6000 и сенсорных экранов Silead.
Более подробная информация о ядре доступна здесь и здесь.