Открыть сервис

NetBSD

NetBSD — это свободная, переносимая, Unix-подобная операционная система с открытым исходным кодом, происходящая из семейства BSD (Berkeley Software Distribution). Она известна своим акцентом на чистоту кода, корректность проектирования и, в первую очередь, на высокую степень переносимости: NetBSD работает на большем числе аппаратных платформ, чем любая другая операционная система.

История

Проект NetBSD был основан в 1993 году группой разработчиков во главе с Крисом Деметриу (Chris Demetriou), Тео де Раадтом (Theo de Raadt) и Адамом Глассом (Adam Glass). Причиной создания стала неудовлетворённость скоростью и направлением развития исходного кода 386BSD, одной из первых свободных версий BSD для платформы Intel 80386. Разработчики решили взять за основу чистую, не форкнутую версию кода 386BSD и сосредоточиться на создании качественной, переносимой и стабильной системы.

Первым публичным выпуском стала версия 0.8 в 1993 году. Уже в ней была заложена философия проекта: поддержка нескольких платформ (i386, Amiga, HP 9000, Sun-4 и др.) и строгое следование стандартам POSIX и BSD.

В 1994 году из проекта выделилась группа разработчиков во главе с Тео де Раадтом, основавшая проект OpenBSD, сфокусированный на безопасности и аудите кода. Несмотря на это, NetBSD продолжил активное развитие.

Ключевой вехой стал выход версии 1.0 в 1994 году, которая уже поддерживала 6 аппаратных платформ. В 1998 году вышла версия 1.3, в которой была представлена подсистема UVM (управление виртуальной памятью), заменившая более старую систему Mach VM. UVM стала одной из первых реализаций, эффективно поддерживающих асинхронный ввод-вывод и копирование при записи (copy-on-write).

В 2004 году вышла версия 2.0, в которой была введена поддержка многопоточности (NPTL — Native POSIX Threads Library) и улучшена работа с симметричной многопроцессорностью (SMP). В 2007 году, с версией 4.0, была представлена система пакетов pkgsrc, которая стала стандартным менеджером пакетов для NetBSD и была портирована на другие операционные системы, включая Linux, macOS и Solaris.

Версия 6.0 (2012 год) принесла поддержку 64-битных ARM-процессоров (ARMv8/AArch64) и улучшенную поддержку виртуализации через Xen. Версия 7.0 (2015 год) добавила поддержку архитектуры AArch64 (ARM64) и улучшила производительность на многопроцессорных системах.

На 2024 год последней стабильной версией является NetBSD 10.0, выпущенная в марте 2024 года. Она включает значительные улучшения в поддержке современных архитектур (RISC-V, ARM64, Intel/AMD x86-64), новую подсистему управления памятью и улучшенную поддержку Wi-Fi и Bluetooth.

Философия и цели

Основные принципы проекта NetBSD зафиксированы в его девизе: «Of course it runs NetBSD» («Конечно, на нём работает NetBSD»). Это отражает главную цель — обеспечить работу операционной системы на максимально возможном числе аппаратных платформ, от встраиваемых систем до мейнфреймов.

Ключевые принципы разработки:

  • Переносимость (Portability): Код ядра и пользовательского пространства пишется так, чтобы минимизировать привязку к конкретной архитектуре. Аппаратно-зависимый код строго изолирован.
  • Чистота кода (Code Quality): Код должен быть читаемым, хорошо документированным и следовать установленным стандартам кодирования. Это облегчает аудит, поддержку и портирование.
  • Следование стандартам (Standards Compliance): NetBSD стремится к максимальной совместимости с POSIX, Single UNIX Specification и другими открытыми стандартами.
  • Безопасность (Security): Хотя проект не ставит безопасность во главу угла, как OpenBSD, в NetBSD реализованы многие механизмы защиты: ASLR (рандомизация адресного пространства), PaX (защита памяти), KASLR (рандомизация адреса ядра), а также система привилегий через systrace (устарела) и pledge (заимствована из OpenBSD).

Архитектура и компоненты

NetBSD построена на монолитном ядре с возможностью загрузки модулей (LKM — Loadable Kernel Modules). Ядро включает драйверы устройств, файловые системы, сетевой стек и подсистему управления памятью.

Ядро

Ядро NetBSD написано на языке C с небольшими вставками на ассемблере для критических участков. Оно поддерживает:

  • Симметричную многопроцессорность (SMP): Начиная с версии 2.0, ядро может эффективно использовать несколько процессоров/ядер.
  • Виртуальную память (UVM): Современная подсистема управления памятью с поддержкой копирования при записи, отображения файлов в память (mmap) и асинхронного ввода-вывода.
  • Сетевой стек: Полноценная реализация стека протоколов TCP/IP (IPv4 и IPv6), включая поддержку IPsec, QoS, маршрутизации и фильтрации пакетов (pf, заимствован из OpenBSD).
  • Файловые системы: Поддержка множества файловых систем: FFS (Fast File System, BSD), UFS2, ext2/3/4, FAT, NTFS (только чтение), ISO 9660, ZFS (через порт из FreeBSD), а также сетевая файловая система NFS.

Пользовательское пространство

Пользовательское окружение NetBSD включает стандартные утилиты Unix (из проекта NetBSD Userland), компилятор GCC (или LLVM/Clang), библиотеку C (libc), а также систему пакетов pkgsrc.

Система пакетов pkgsrc

pkgsrc (Package Source) — это система управления пакетами, разработанная для NetBSD, но портированная на многие другие Unix-подобные системы (Linux, macOS, Solaris, AIX, HP-UX и др.). Она позволяет собирать и устанавливать программное обеспечение из исходных кодов или бинарных пакетов. На 2024 год pkgsrc содержит более 25 000 пакетов.

Переносимость и поддерживаемые платформы

NetBSD известна своей рекордной поддержкой аппаратных платформ. Проект поддерживает более 50 различных архитектур (портов), разделённых на категории:

  • Основные (Tier I): Архитектуры, которые активно поддерживаются и для которых выпускаются официальные бинарные релизы. Примеры: amd64 (x86-64), i386, aarch64 (ARM64), evbarm (ARM), sparc64.
  • Вторичные (Tier II): Архитектуры, для которых поддерживается сборка, но бинарные релизы могут выпускаться нерегулярно. Примеры: m68k, mips, powerpc, riscv, vax.
  • Экспериментальные (Tier III): Архитектуры, находящиеся на стадии портирования или с ограниченной поддержкой. Примеры: alpha, hppa, ia64, s390.

NetBSD работает на широком спектре устройств: от встраиваемых систем (маршрутизаторы, NAS, одноплатные компьютеры) до старых рабочих станций (Sun, SGI, HP, DEC) и современных серверов.

Применение

NetBSD используется в различных областях:

  • Встраиваемые системы: Благодаря компактности и переносимости, NetBSD часто применяется во встраиваемых устройствах, таких как сетевые хранилища (NAS), маршрутизаторы, промышленные контроллеры и системы умного дома. Примеры: NetBSD используется в некоторых моделях оборудования компаний Wasabi Systems и Netgate.
  • Серверы: NetBSD может использоваться в качестве серверной операционной системы для веб-серверов, файловых серверов, почтовых серверов и DNS-серверов. Её стабильность и безопасность делают её пригодной для критически важных приложений.
  • Образовательные и исследовательские цели: Чистота кода и хорошая документация делают NetBSD популярной в академической среде для изучения операционных систем.
  • Ретро-компьютинг: NetBSD является одной из немногих современных ОС, которые могут работать на старых компьютерах (например, VAX, Amiga, Macintosh 68k), что делает её популярной среди энтузиастов ретро-компьютинга.

Критика

Несмотря на свои достоинства, NetBSD имеет ряд недостатков, которые ограничивают её распространение:

  • Меньшая популярность: По сравнению с Linux, FreeBSD и OpenBSD, у NetBSD меньшее сообщество пользователей и разработчиков. Это приводит к меньшему количеству доступных бинарных пакетов и менее активной поддержке стороннего ПО.
  • Отставание в производительности: На современных архитектурах (x86-64, ARM64) NetBSD часто уступает в производительности Linux и FreeBSD, особенно в области ввода-вывода и многопоточности. Это связано с более консервативным подходом к оптимизациям.
  • Ограниченная поддержка современного оборудования: Из-за меньшего числа разработчиков, драйверы для нового оборудования (например, видеокарт, Wi-Fi-адаптеров) появляются в NetBSD с задержкой или отсутствуют вовсе.
  • Сложность настройки: Для пользователей, привыкших к Linux, установка и настройка NetBSD может показаться более сложной из-за отсутствия некоторых автоматизированных инструментов.

Интересные факты

  • NetBSD является одной из немногих операционных систем, которая была портирована на архитектуру VAX (Digital Equipment Corporation).
  • В 2004 году NetBSD была запущена на космическом аппарате «Mars Exploration Rover» (марсоходы Spirit и Opportunity) в качестве операционной системы для некоторых бортовых компьютеров.
  • Код NetBSD был использован в качестве основы для операционной системы OS X (macOS) от Apple, хотя впоследствии Apple перешла на собственное ядро XNU (гибридное ядро, основанное на Mach и FreeBSD). В macOS до сих пор используются многие пользовательские утилиты из NetBSD (например, ls, cp, ps).
  • Проект NetBSD является одним из старейших активно развивающихся проектов свободного ПО.

Источники

  • Официальный сайт проекта NetBSD (netbsd.org)
  • NetBSD Guide (официальное руководство)
  • История NetBSD (статья на сайте NetBSD)
  • Статья «NetBSD» в английской Википедии
  • «The Design and Implementation of the 4.4BSD Operating System» (М. К. МакКьюзик и др.)
  • Документация pkgsrc (pkgsrc.org)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →