Релиз операционной системы NetBSD 9.0
15 февраля 2020 года
Доступен значительный релиз операционной системы NetBSD 9.0, в котором реализована очередная порция новых возможностей. Для загрузки подготовлены установочные образы размером 470 Мб. Релиз NetBSD 9.0 официально доступен в сборках для 57 системных архитектур и 15 различных семейств CPU.
Отдельно выделены 8 первично поддерживаемых портов, составляющих ядро стратегии развития NetBSD: amd64, i386, evbarm, evbmips, evbppc, hpcarm, sparc64 и xen. 49 портов, связанных с такими CPU, как alpha, hppa, m68010, m68k, sh3, sparc и vax, отнесены ко второй категории, т.е. ещё поддерживаются, но уже потеряли актуальность или не имеют достаточного числа заинтересованных в их развитии разработчиков. Один порт (acorn26) включён в третью категорию, в которой размещены неработоспособные порты, претендующие на удаление, если не найдётся заинтересованных в их разработке энтузиастов.
Ключевые улучшения NetBSD 9.0:
- Добавлен новый гипервизор NVMM, поддерживающий аппаратные механизмы обеспечения виртуализации SVM для CPU AMD и VMX для CPU Intel. Особенностью NVMM является то, что на уровне ядра выполняется только минимально необходимый набор обвязок вокруг аппаратных механизмов виртуализации, а весь код эмуляции оборудования вынесен из ядра в пространство пользователя. Для управления виртуальными машинами подготовлен инструментарий на базе библиотеки libnvmm, а также пакет qemu-nvmm для запуска гостевых систем с использованием NVMM. API libnvmm охватывает такие функции как создание и запуск виртуальной машины, выделение памяти гостевой системе, распределение VCPU. При этом libnvmm не содержит функции эмулятора, а лишь предоставляет API, позволяющий интегрировать поддержку NVMM в существующие эмуляторы, такие как QEMU;
- Обеспечена поддержка 64-разрядной архитектуры AArch64 (ARMv8-A), включая серверные системы, соответствующие требованиям ARM ServerReady (SBBR+SBSA), и системы big.LITTLE (комбинация в одном чипе мощных, но потребляющих много энергии, ядер, и менее производительных, но более энергоэффективных ядер). Поддерживается выполнение 32-разрядных приложений в 64-разрядном окружении через использование COMPAT_NETBSD32. Возможно использование до 256 CPU. Поддерживается запуск в эмуляторе QEMU и SoC:
- Allwinner A64, H5, H6
- Amlogic S905, S805X, S905D, S905W, S905X
- Broadcom BCM2837
- NVIDIA Tegra X1 (T210)
- Rockchip RK3328, RK3399
- Серверные платы SBSA/SBBR, такие как Amazon Graviton, Graviton2, AMD Opteron A1100, Ampere eMAG 8180, Cavium ThunderX, Marvell ARMADA 8040.
- Расширена поддержка устройств на базе архитектуры ARMv7-A. Добавлена поддержка систем big.LITTLE и загрузки через UEFI. Возможно использование до 8 CPU. Добавлена поддержка SoC:
- Allwinner A10, A13, A20, A31, A80, A83T, GR8, H3, R8
- Amlogic S805
- Arm Versatile Express V2P-CA15
- Broadcom BCM2836, BCM2837
- Intel Cyclone V SoC FPGA
- NVIDIA Tegra K1 (T124)
- Samsung Exynos 5422
- TI AM335x, OMAP3
- Xilinx Zynq 7000
- Обновлены графические драйверы для GPU Intel (добавлена поддержка Intel Kabylake), NVIDIA и AMD для систем x86. Подсистема DRM/KMS синхронизирована с ядром Linux 4.4. Добавлены новые драйверы для GPU, применяемые на системах ARM, включая DRM/KMS-драйверы для Allwinner DE2, Rockchip VOP и TI AM335x LCDC, драйвер framebuffer для ARM PrimeCell PL111 и TI OMAP3 DSS;
- Улучшена поддержка работы NetBSD в качестве гостевой ОС. Добавлена поддержка устройства fw_cfg (QEMU Firmware Configuration), Virtio MMIO и PCI для ARM. Обеспечена поддержка HyperV для x86;
- Реализованы счётчики для мониторинга производительности, позволяющие на лету анализировать производительность ядра и пользовательских приложений. Управление производится через команду tprof. Поддерживаются платформы Armv7, Armv8, и x86 (AMD и Intel);
- Для архитектуры x86_64 добавлен механизм рандомизации адресного пространства ядра (KASLR, Kernel Address Space Layout Randomization), который позволяет увеличить стойкость к некоторым видам атак, эксплуатирующих уязвимости в ядре, за счёт формирования случайной раскладки кода ядра в памяти при каждой загрузке;
- Для архитектуры x86_64 добавлена поддержка KLEAK, техники для выявления утечек памяти ядра, которая позволила найти и исправить более 25 ошибок в ядре;
- Для архитектур x86_64 и Aarch64 реализован отладочный механизм KASan (Kernel address sanitizer), который позволяет выявлять ошибки работы с памятью, такие как обращения к уже освобождённым блокам памяти и переполнения буферов;
- Добавлен механизм KUBSAN (Kernel Undefined Behavior Sanitizer) для выявления случаев неопределённого поведения в ядре
- Для архитектуры x86_64 реализован драйвер KCOV (Kernel Coverage) для анализа покрытия кода ядра;
- Добавлен Userland Sanitizer для выявления ошибок и аномалий при выполнении приложений в пространстве пользователя;
- Добавлен механизм KHH (Kernel Heap Hardening) для защиты кучи от некоторых видов ошибок работы с памятью;
- Проведён аудит безопасности сетевого стека;
- Улучшен отладочный инструментарий ptrace;
- Проведена чистка ядра от старых и оставшихся без сопровождения подсистем, таких как NETISDN (драйверы daic, iavc, ifpci, ifritz, iwic, isic), NETNATM, NDIS, SVR3, SVR4, n8, vm86 и ipkdb;
- Расширены возможности и проведена оптимизация производительности пакетного фильтра NPF, который теперь активирован по умолчанию;
- Обновлена реализация файловой системы ZFS, которая доведена до состояния, пригодного для повседневного использования. Возможности загрузки с ZFS и использования ZFS на корневом разделе пока не поддерживаются;
- Добавлены новые драйверы, включая bwfm для беспроводных устройств Broadcom (Full-MAC), ena для Amazon Elastic Network Adapter и mcx для Ethernet-адаптеров Mellanox ConnectX-4 Lx EN, ConnectX-4 EN, ConnectX-5 EN, ConnectX-6 EN;
- Переработана подсистема SATA, в которой появилась поддержка NCQ и улучшена обработка ошибок, выдаваемых накопителем;
- Предложен новый фреймворк usbnet для создания драйверов для Ethernet-адаптеров с интерфейсом USB;
- Обновлены версии сторонних компонентов, включая GCC 7.4, GDB 8.3, LLVM 7.0.0, OpenSSL 1.1.1d, OpenSSH 8.0 и SQLite 3.26.0.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.