Линус Торвальдс официально представил новую версию ядра Linux 5.7. В релиз включили обновленную реализацию файловой системы exFAT, переработанные средства аутентификации и инструменты для создания UDP-туннелей, а также сняли ограничение на длину строки кода в 80 символов. Предполагается, что новое ядро будет доступно в Ubuntu 20.10.
Краткая статистика
Работа над новой версией заняла у команды около двух месяцев. Торвальдс и другие контрибьюторы приняли более 15 тыс. исправлений от 1961 разработчиков. В патч размером 39 МБ добавлено свыше 570 тыс. новых строк кода и удалено около 300 тыс. строк.
Разработчики подсчитали, что 41% изменений в коде связан с работой драйверов устройств, еще 16% – со спецификой аппаратных архитектур. На долю изменений, касающихся сетевого стека, приходится 13% изменений. По 4% – на внутренние подсистемы ядра Linux и файловые системы.
Обновление exFAT
Свежая реализация драйвера exFAT в Linux 5.7 базируется на кодовой базе sdfat 2.x. Ее разработала Samsung для своих Android-смартфонов. Раньше для драйвера exFAT также использовали код Samsung, но устаревшей версии 1.2.9. Новое решение обеспечивает рост производительности на 10%.
Эксперты ожидают и другие подвижки в exFAT. Толчок этому процессу дала Microsoft: она опубликовала характеристики файловой системы в открытом доступе и предоставила сообществу Linux возможность бесплатно использовать патенты на exFAT.
Безопасность
В Linux 5.7 появилась аппаратная реализация аутентификации указателей. Для защиты от атак решили использовать особые инструкции для ядер CPU ARM64. Это усложнит проведение атак с применением ROP-приемов (возвратно-ориентированного программирования).
Выбирая такой тип атаки, хакер не пытается разместить в памяти компьютера свой код, а оперирует фрагментами кода, которые уже есть в загруженных библиотеках и которые завершаются инструкциями возврата управления. Если для проверки адресов возврата использовать цифровые подписи на уровне ядра и проверять совпадение с помощью инструкций CPU, провести атаку будет практически невозможно.
Снятие ограничений на длину строки
Торвальдс недавно рассказывал, почему давно пора снять ограничение на длину строки кода в 80 символов. Мониторы стали крупнее, в терминалах уже давно помещается значительно больше 80 символов, так что дробить строки не имеет смысла, отметил создатель Linux.
В версии 5.7 официально сняли жесткий лимит на количество символов в строке. Теперь ограничение установлено на уровне 100 символов, и при необходимости строки могут быть длиннее. При сборке предупреждение о превышении лимита будет выдаваться, только если установлена опция --strict для утилиты checkpatch. Таким образом, разработчики будут тратить меньше времени, вручную выравнивая код. Искать нужные строки в файлах также станет проще.
Создание UDP-туннелей
UDP (User Datagram Protocol) является одним из основных элементов стека интернет-протоколов. Используя его, приложения могут отправлять другим хостам сообщения по IP-сети практически без подготовки: так, предварительно не нужно отправлять сообщения для установки специальных путей данных или каналов передачи. UDP считают будущим сетевых протоколов, так как он работает быстрее TCP. Но есть у него и недостатки: например, сообщение, отправленное первым, вполне может быть получено последним.
Для работы с UDP-туннелями в Linux 5.7 добавили новый модуль bareudp. Он позволяет инкапсулировать в UDP-туннель различные L3-протоколы, к примеру, MPLS, IP и NSH.
Контроль температуры
Показатели с датчиков температуры теперь выводятся в планировщике задач. При размещении задач система учитывает возможный перегрев: анализируя статистику, обработчик температуры может настраивать предельную частоту процессора при перегреве.
Кроме того, планировщик учитывает снижение вычислительной мощности системы из-за перегрева. Это позволяет точнее планировать запуск задач.
Разработчики подчеркнули, что задействуют инвариантные показатели отслеживания нагрузки. Такой подход позволяет оценить нагрузку корректно и не привязываться только к текущей частоте работы процессора. В результате когда рабочая частота и вольтаж меняются, прогнозировать поведение задач получается точнее.
Полный список нововведений можно найти в сообщении Торвальдса на официальном сайте LKML – списке рассылки разработчиков ядра Linux.