Релиз операционной системы NetBSD 9.0

Доступен значительный релиз операционной системы 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.

    Источник: opennet.ru