Спустя полтора года после формирования прошлого обновления опубликован релиз операционной системы NetBSD 10. Для загрузки подготовлены установочные образы размером 630 МБ, доступные в сборках для 57 системных архитектур и 16 различных семейств CPU. Новая ветка включает ряд существенных улучшений, таких как поддержка списков контроля доступа в файловой системе FFS, значительная оптимизация производительности, шифрование диска с использованием алгоритма Adiantum и реализация в ядре драйвера для VPN WireGuard.
Проектом поддерживаются 8 первичных портов, составляющих ядро стратегии развития NetBSD: amd64, i386, evbarm, evbmips, evbppc, hpcarm, sparc64 и xen, а также 49 вторичных портов, связанных с такими CPU, как alpha, hppa, m68010, m68k, sh3, sparc и vax. Вторичные порты ещё поддерживаются, но уже потеряли актуальность или не имеют достаточного числа заинтересованных в их развитии разработчиков. Один порт (acorn26) включён в третью категорию, в которой размещены неработоспособные порты, претендующие на удаление, если не найдётся заинтересованных в их разработке энтузиастов.
Основные улучшения в NetBSD 10:
- В файловую систему FFS добавлена поддержка списков контроля доступа (POSIX.1e ACL), реализованная с использованием расширенных атрибутов файлов и перенесённая из FreeBSD. Для использования ACL предложен новый тип ФС FFSv2ea (не используется по умолчанию), на который можно перевести существующие ФС при помощи утилиты fsck_ffs.
- Добавлен сетевой интерфейс wg с реализацией VPN, совместимого с WireGuard.
- Проведена оптимизация производительности. Повышена эффективность работы кэша файловых путей в ядре. Увеличена производительность планировщика задач, который адаптирован для работы на системах big.LITTLE Arm, сочетающих быстрые и медленные ядра CPU.
Повышена производительность системных вызовов select и poll. Повышена производительность ФС tmpfs. Ускорен процесс загрузки. Добавлены оптимизации, специфичные для архитектур x86 и AArch64. Повышена пропускная способность ввода вывода и сетевых операций на системах AArch64. - Внесены оптимизации в систему виртуальной памяти: для поиска страниц памяти задействован более быстрый алгоритм radix tree, повышена скорость отслеживания чистых и грязных страниц памяти, значительно ускорена работа fsync для крупных файлов, улучшена работа с блокировками и повышена эффективность параллельного выполнения операций.
- Добавлена поддержка шифрования дисков с использованием алгоритма Adiantum, позволяющего добиться высокой эффективности на системах без аппаратного ускорения шифрования AES. В утилиту cgdconfig добавлена поддержка разделяемых ключей, которые можно использовать для шифрования нескольких накопителей. Алгоритм хэширования паролей по умолчанию изменён на Argon2id. Включено автоматическое шифрование разделов подкачки (vm.swap_encrypt=1). Добавлена поддержка аппаратных механизмов ускорения шифрования, предоставляемых процессорами x86 и Arm, например, инструкций для ускорения AES и ChaCha. В предоставляемой ядром программной реализации AES обеспечено постоянное время выполнения операций для всех архитектур.
- Добавлена поддержка связанных с безопасностью расширений, предоставляемых в процессорах Armv8-A: PAN (Privileged Access Never), PA (Pointer Authentication), BTI (Branch Target Identification).
- Для выявления проблем с безопасностью в ядре задействованы механизмы Kernel Concurrency Sanitizer и
Kernel Memory Sanitizer. - В сетевом стеке реализована поддержка RFC 7048, улучшающая работу механизма IPv6 Neighbor Discovery и делающего его независимым от адресов.
- Добавлен новый сетевой интерфейс lagg для агрегирования сетевых линков и обеспечения отказоустойчивости (lagg пришёл на смену интерфейсу agr).
- Добавлен драйвер vether с реализацией виртуальных интерфейсов Ethernet, которые можно использовать в сетевых мостах и вместо интерфейсов tap.
- В реализацию ipsec добавлен sysctl net.key.allow_different_idtype для улучшения совместимости с другими VPN.
- Улучшена поддержка формата UDF (Universal Disk Format, ФС для оптических дисков), который теперь совместим на уровне ошибок с реализацией из Windows 10. В утилите newfs_udf появилась возможность формирования в формате UDF 2.50 с отдельным разделом для метаданных. Добавлена утилита fsck_udf для проверки и восстановления сбойных ФС в формате UDF.
- В утилиту fstat добавлена поддержка ZFS.
- Расширена поддержка механизма FUSE (Filesystem in Userspace), в драйвере refuse обеспечена полная поддержка вариантов API FUSE, используемых в версиях FUSE от 1.1 до 3.10.
- В реализацию программных RAID добавлена поддержка конфигураций с
замененным порядком байтов (swapped-endian). В утилиту raidctl добавлена опция «-t» для проверки корректности файлов конфигурации. - Добавлена новая утилита blkdiscard для ручного выполнения операций TRIM на дисках для информирования о неиспользуемых блоках.
- В утилиту scan_ffs добавлена возможность показа текущей статистики при поступлении сигнала SIGINFO (Ctrl+T).
- В состав включены новые программы:
- aiomixer — микшер звука
- realpath — вывод абсолютного пути к файлу на основе относительного пути.
- tradcpp — макропроцессор в стиле K&R C.
- ioctlprint — показ значений ioctl.
- testpat — вывод тестовой таблицы для оценки цветопоредачи экрана.
- warp — классическая игра BSD-систем.
- Включены в состав и задействованы в ctwm растровые шрифты Spleen, поставляемые под лицензией BSD и доступные как для экранов с низким разрешением, так и для экранов с высокой плотностью пикселей. Также в состав включены консольные шрифты Terminus.
- В прослойку совместимости с Linux (compat_linux) добавлена поддержка механизмов eventfd, timerfd, POSIX-таймеров, preadv и pwritev.
- Улучшена поддержка виртуализации. Добавлена поддержка Xen PVH, предоставлена возможность использования драйверов Xen PV в гостевых системах на базе HVM, улучшена реализация паравиртуализированных сетевых интерфейсов. В хостовых ядрах (Dom0) для Xen включена поддержка многопроцессорных систем. В ядрах для Xen предоставлена возможность использования модулей, общих с обычным ядром. Сетевые (xennet) и блочные (xbd) устройства адаптированы для многопроцессорных систем (получили статус MPSAFE). Значительно улучшена поддержка гипервизора HyperV и расширены возможности гипервизора nvmm (NetBSD Virtual Machine Monitor). Добавлена возможность перехода в спящий режим, при выполнении виртуальных машин в nvmm.
- Улучшены драйверы VirtIO, в которых теперь реализована поддержка спецификации VirtIO 1.0. Добавлен драйвер vio9p для монтирования в гостевых системах ФС VirtIO 9P, экспортируемых хост-окружением. Добавлен драйвер viocon для виртуального последовательного порта.
- Реализованы системные вызовы eventfd и timerfd, совместимые с Linux и задействованные в compat_linux. Добавлен системный вызов
fexecve для выполнения файла по файловому дескриптору. - Удалены устаревшие компоненты, например, прекращена поддержка технологий HIPPI, FDDI и TokenRing, из ядра удалены драйверы nsmb и mount_smbfs для SMBFS (не поддерживают новые версии протокола SMB), в пространство пользователя из ядра вынесена поддержка IPv6 Router Advertisment, удалены библиотеки libXTrap, libXevie и libglut,
удалены драйверы для многих устаревших устройств. - Значительно расширена поддержка оборудования. Обеспечена поддержка возможностей новых процессоров Intel и AMD. Добавлена поддержка новых ARM-плат (Raspberry Pi 4, Orange Pi 5, Lichee Pi Zero, ODROID-N2+, M1 Mac Mini, HummingBoard Pulse, UDOO Neo Full, PINE64 Quartz64, Asus Tinker и т.д.). Расширена поддержка архитектуры MIPS.
- Добавлены 17 новых драйверов устройств, например, драйверы для планшетов Wacom, Realtek 8125 2.5 Gigabit Ethernet, Motorcomm YT8511C / YT8511H Gigabit Ethernet, Intel Ethernet 700, Broadcom GENETv5 Ethernet, криптоускорителей Intel QuickAssist и LTE-модемов Intel XMM7360.
- Обновлены графические драйверы для GPU Intel, NVIDIA и AMD для систем x86. Подсистема DRM/KMS синхронизирована с ядром Linux 5.6.
- Обновлены версии сторонних компонентов, включая оконный менеджер ctwm 4.0.3, gcc 10.5, lua 5.4.6, OpenSSL 3.0.12, postfix 3.8.4, tmux 3.2a, OpenSSH 9.6, X.org Server 21.1.7, BIND 9.18.24, Heimdal kerberos 7.8.0, unbound 1.19.1, wpa_supplican 2.9, OpenLDAP 2.5.6,
binutils 2.34, libfido2 1.13.0, pam-u2f 1.2.0, zlib 1.2.13.
Источник: http://www.opennet.ru/opennews/art.shtml?num=60886