FreeBSD

FreeBSD — свободная операционная система семейства UNIX, потомок AT&T Unix по линии BSD, созданной в университете Беркли[5].

FreeBSD
Разработчик The FreeBSD Project
Основана на BSD[1] и 386BSD[2]
Последняя версия 13.0[3] (13 апреля 2021)
Менеджеры пакетов Pkgcore
Поддерживаемые платформы x86, x86_64, SPARC, DEC Alpha, PowerPC, ARM, MIPS и RISC-V
Тип ядра Модульное ядро
Лицензия 2-пунктная лицензия BSD[4]
Репозиторий исходного кода cgit.freebsd.org
Веб-сайт freebsd.org (англ.)
 Медиафайлы на Викискладе

FreeBSD разрабатывается как целостная операционная система. Исходный код ядра, драйвера устройств и базовых пользовательских программ, таких как командные оболочки и т. п., содержатся в одном дереве системы контроля версиями (до 31 мая 2008 — CVS, позже — SVN, а сейчас — Git[6]). Это отличает FreeBSD от GNU/Linux — другой свободной UNIX-подобной операционной системы, в которой ядро разрабатывается одной группой разработчиков, набор пользовательских программ — другими (например, проект GNU). А многочисленные группы собирают это всё в единое целое и выпускают в виде различных дистрибутивов Linux.

FreeBSD хорошо зарекомендовала себя как система для построения интранет- и интернет-сетей и серверов. Она предоставляет надёжные сетевые службы и эффективное управление памятью[7].

Помимо своей стабильности, FreeBSD популярна и благодаря своей лицензии, которая существенно отличается от широко известной лицензии GNU GPL. Лицензия BSD позволяет использовать код не только в свободном ПО, но и в проприетарном. В отличие от GNU LGPL, которая требует раскрытия исходных кодов, лицензия BSD является более простой и непритязательной, требуя лишь упоминания заимствования, авторства и отказ от навязывания ответственности (нельзя отсылать пользователей своего продукта к авторам заимствованного кода).

История

Разработка FreeBSD началась в 1993 году с быстрорастущего набора патчей пользователей системы 386BSD[8]. Этот набор позже вырос и отделился от 386BSD в отдельную операционную систему, включив в себя код от Free Software Foundation. Первая официальная версия FreeBSD 1.0 вышла в декабре 1993 года. Walnut Creek CDROM согласилась распространять FreeBSD на компакт-диске и также предоставила для работы проекту отдельный компьютер с интернет-соединением. Затем, в мае 1994 года, последовал успешный выпуск FreeBSD 1.1.

Однако, из соображений законности использования исходных кодов BSD Net/2 в 386BSD, команда разработчиков FreeBSD переработала большую часть системы ко времени выпуска FreeBSD 2.0 в январе 1995 года, используя 4.4BSD-Lite. Руководство к FreeBSD содержит более подробную историческую информацию о происхождении системы[9].

Версии системы

Версия Дата выпуска Окончание поддержки
Старая версия, не поддерживается: 1.0 Ноябрь 1993
Старая версия, не поддерживается: 1.1 Май 1994
Старая версия, не поддерживается: 2.0 22 ноября 1994
Старая версия, не поддерживается: 2.1.5 16 июля 1996
Старая версия, не поддерживается: 2.1.7 17 февраля 1997
Старая версия, не поддерживается: 2.2 Март 1997
Старая версия, не поддерживается: 2.2.8 29 ноября 1998
Старая версия, не поддерживается: 3.0 16 октября 1998
Старая версия, не поддерживается: 3.1 15 февраля 1999
Старая версия, не поддерживается: 3.2 17 мая 1999
Старая версия, не поддерживается: 3.3 15 сентября 1999
Старая версия, не поддерживается: 3.4 20 декабря 1999
Старая версия, не поддерживается: 3.5 25 июня 2000
Старая версия, не поддерживается: 3.5.1 27 июля 2000
Старая версия, не поддерживается: 4.0[10][11] 14 марта 2000
Старая версия, не поддерживается: 4.1 27 июля 2000
Старая версия, не поддерживается: 4.1.1 7 ноября 2000
Старая версия, не поддерживается: 4.2 21 ноября 2000
Старая версия, не поддерживается: 4.3
Старая версия, не поддерживается: 4.4
Старая версия, не поддерживается: 4.5
Старая версия, не поддерживается: 4.6
Старая версия, не поддерживается: 4.7
Старая версия, не поддерживается: 4.8 3 апреля 2003 31 марта 2004
Старая версия, не поддерживается: 4.9
Старая версия, не поддерживается: 4.10 27 мая 2004 Май 2006
Старая версия, не поддерживается: 4.11 25 января 2005 31 января 2007
Старая версия, не поддерживается: 5.0 14 января 2003 30 июня 2003
Старая версия, не поддерживается: 5.1 9 июня 2003 Февраль 2004
Старая версия, не поддерживается: 5.3 6 ноября 2004 31 октября 2006
Старая версия, не поддерживается: 5.4 9 мая 2005 31 октября 2006
Старая версия, не поддерживается: 6.0 1 ноября 2005
Старая версия, не поддерживается: 6.1 8 мая 2006
Старая версия, не поддерживается: 6.2 15 января 2007 31 мая 2008
Старая версия, не поддерживается: 7.0 27 февраля 2008 30 апреля 2009
Старая версия, не поддерживается: 7.1 4 января 2009 28 февраля 2011
Старая версия, не поддерживается: 8.0 26 ноября 2009
Старая версия, не поддерживается: 8.1 23 июля 2010 31 июля 2012
Старая версия, не поддерживается: 8.2 24 февраля 2011
Старая версия, не поддерживается: 8.3 9 апреля 2012 30 апреля 2014
Старая версия, не поддерживается: 8.4 9 июня 2013 1 августа 2015
Старая версия, не поддерживается: 9.0 12 января 2012 31 марта 2013
Старая версия, не поддерживается: 9.1 30 декабря 2012 31 декабря 2014
Старая версия, не поддерживается: 9.2 30 сентября 2013 31 декабря 2014
Старая версия, не поддерживается: 9.3 16 июля 2014 31 декабря 2016
Старая версия, не поддерживается: 10.0 20 января 2014 28 февраля 2015
Старая версия, не поддерживается: 10.1 14 ноября 2014 31 декабря 2016[12]
Старая версия, не поддерживается: 10.2 13 августа 2015 31 декабря 2016[12]
Старая версия, не поддерживается: 10.3 4 апреля 2016 30 апреля 2018[12]
Старая версия, не поддерживается: 10.4 3 октября 2017[13] 31 октября 2018[14]
Старая версия, не поддерживается: 11.0 10 октября 2016[15] 31 октября 2017
Старая версия, не поддерживается: 11.1 26 июля 2017[16] 30 Сентября 2018[17]
Старая версия, не поддерживается: 11.2[18][19] 27 июня 2018[20] 31 октября 2019[21]
Старая версия, не поддерживается: 11.3 9 июля 2019[22] 30 сентября 2020[21]
Старая версия, не поддерживается: 11.4 16 июня 2020[23] 30 сентября 2021[24]
Старая версия, не поддерживается: 12.0 10 декабря 2018[25] 29 февраля 2020[21]
Старая версия, не поддерживается: 12.1 4 ноября 2019 31 января 2021[21]
Текущая версия: 12.2 27 октября 2020[26]
Текущая версия: 13.0 13 апреля 2021[27]
Версия Дата релиза Окончание поддержки
Легенда:
Старая версия
Старая поддерживаемая версия
Текущая версия
Тестовая версия
Будущая версия

FreeBSD 3

3.0-RELEASE анонсирована 13 октября 1998 года. Основное отличие от 2.2 — переход на ELF исполняемые файлы. Последний 3.5-RELEASE вышел 23 июня 2000 года.

FreeBSD 4

4.0-RELEASE появилась в марте 2000 года и последняя версия 4.11 была выпущена в январе 2005 года. FreeBSD 4 была очень популярной у интернет-провайдеров и хостеров времён первого «пузыря доткомов» и считалась одной из самых стабильных и высокопроизводительных систем класса Unix.

Одним из главных недостатков FreeBSD 4 считается плохая поддержка многопроцессорных систем, особенно в режиме многопоточности.

FreeBSD 4 поставила своеобразный рекорд по продолжительности разработки одной ветки операционной системы — за пять лет было устранено большое количество ошибок и получена на редкость стабильная система.

В середине разработки FreeBSD 4 от неё отпочковался проект DragonFlyBSD, основатели которого поставили своей целью серьёзную оптимизацию ядра для высоконагруженных систем, в частности лучшую поддержку многопроцессорности (уменьшение времени, необходимого для переключения потоков и пр.).

FreeBSD 5

Через 3 года разработки, в январе 2003 года, была выпущена долгожданная версия 5.0-RELEASE. Эта версия предоставляла расширенную поддержку многопроцессорности и многопоточности, а также поддержку платформ UltraSPARC и IA-64.

Наибольшие архитектурные изменения в FreeBSD 5 — это изменение механизма блокировки на нижнем уровне ядра, чтобы улучшить поддержку многопроцессорных SMP-систем. Это освободило большую часть ядра от так называемой «гигантской блокировки» (Giant lock). Теперь в ядре появилась возможность выполнять более одной задачи одновременно. Другим важным изменением была реализация «родной» поддержки многопоточности типа M:N под названием Kernel Scheduled Entities (KSE). Начиная с FreeBSD 5.3, эта реализация потоков была установлена по умолчанию, пока не была заменена на реализацию модели 1:1 во FreeBSD 7.

Во FreeBSD 5 была серьёзно изменена система блочного ввода-вывода посредством введения модульной структурной системы преобразования запросов ввода-вывода GEOM (внесённой Poul-Henning Kamp). GEOM даёт возможность создавать различную функциональность, такую как зеркалирование (mirroring) или шифрование (модули GBDE и GELI).

Версии 5.4 и 5.5 были признаны стабильными и высокопроизводительными, но более ранние версии не годились для использования в рабочих условиях. Более новые версии 3BSD не поддерживают оригинальный процессор Intel 80386, они поддерживаются только во FreeBSD 5.X и более ранних версиях (FreeBSD 5.2-RELEASE и более поздние не поддерживают процессор 80386SX). Следует заметить, что ядро GENERIC поддерживает процессоры 80386 только во FreeBSD 4.X и более ранних версиях.

FreeBSD 6

FreeBSD 6.0 была выпущена 4 ноября 2005 года. 11 ноября 2008 года была выпущена версия 6.4. Эти версии являются продолжением оптимизации поддержки SMP и многопоточности вкупе с расширенной поддержкой стандарта 802.11, записью событий безопасности проекта TrustedBSD, серьёзными улучшениями производительности сетевой подсистемы. Основное достижение этого релиза — исключение «гигантской блокировки» (Giant lock) из виртуальной файловой подсистемы (VFS), реализация дополнительной, более производительной поддержки многопоточности (libthr) с моделью 1:1, и добавление OpenBSM — первичного модуля безопасности, который был создан проектом TrustedBSD.

FreeBSD 7

FreeBSD 7.0 выпущена 27 февраля 2008 года. 5 января 2009 года вышла версия 7.1. Новое в этой ветке включает в себя:

  • оптимизированный сетевой протокол транспортного уровня SCTP,
  • экспериментальная адаптированная версия файловой системы ZFS (разработанной компанией Sun),
  • компилятор GCC4.2,
  • базовая поддержка платформы ARM,
  • новый менеджер памяти jemalloc, оптимизированный для параллельных вычислений[28],
  • большие изменения и оптимизации подсистем работы с сетями, аудиоустройствами и SMP-системами[29],

Новая система показала значительные улучшения в скорости по сравнению с предыдущими версиями и системой Linux[30].

4 мая 2009 года вышла версия 7.2. Нововведения в этой версии:

  • поддержка семейства процессоров UltraSPARC III (Cheetah) и SPARC64;
  • возможность назначения нескольких IPv4- и IPv6-адресов каждой клетке — виртуальной машине Jail;
  • реализация техники Superpages, прозрачного объединения страниц памяти для приложений;
  • увеличенное до 6 Гб адресное пространство ядра для 64-разрядных процессоров;
  • включена поддержка множественных таблиц маршрутизации, в том числе для клеток;
  • улучшена совместимость в работе 32-разрядных клеток в 64-разрядном окружении;
  • из NetBSD портирован демон btpand с реализацией поддержки профилей Bluetooth Network Access Point (NAP), Group Ad-hoc Network (GN) и Personal Area Network User (PANU);
  • добавлен новый драйвер sdhci с поддержкой PCI-SD хост-контроллеров (кардридеров);
  • обновлён модуль ядра DRM (Direct Rendering Manager) в котором улучшена поддержка графических процессоров (GPU) AMD/ATI, XGI, Intel;
  • обновлены драйверы сетевых и дисковых устройств.

На сегодняшний день уже разработаны видеодрайверы NVIDIA для 64-разрядной архитектуры AMD64. Окончательная адаптация файловой системы ZFS v.13 для этой ветки почти завершена[31].

24 января 2011 года вышла версия 7.4.

Поддержка ветки FreeBSD 7 истекла 28 февраля 2013 года

FreeBSD 8

О выходе релиза FreeBSD 8.0 было объявлено 25 ноября 2009 года[32]. Среди нововведений в этой версии можно отметить:

  • экспериментальная поддержка MIPS, основанная на разработках Juniper Networks.
  • практически неограниченная масштабируемость SMP значительно способствует быстродействию на 16-ядерных системах.
  • масштабируемость файловой системы как результат использования блокировки виртуальной файловой системы (VFS).
  • работа расширяемой системы безопасности ядра (MAC Framework) из коробки.
  • переписанную подсистему USB с улучшенным быстродействием и поддержкой новых устройств. Добавлена поддержка USB-target.
  • ZFS более не находится в экспериментальном статусе.

Кроме того, следует отметить:

  • Реализован новый контейнер виртуализации, названный «vimage». vimage — это jail с виртуализированным сетевым стеком и может быть создан с помощью команды jail(8)
  • Подсистема ipsec(4) теперь поддерживает NAT-Traversal (RFC 3948).
  • Поддерживаемые версии GNOME desktop environment (x11/gnome2) и KDE desktop environment (x11/kde4) были обновлены до 2.26.3 и 4.3.1 соответственно.

Стабильная ветка разработки 8-STABLE постоянно развивается, в неё постепенно вливается проверенный и отлаженный код из экспериментальной ветки разработки. Продолжается улучшение надёжности и быстродействия файловых систем UFS2 и ZFS, перерабатывается код протокола сетевого доступа NFS с целью реализации всех возможностей NFSv4.


FreeBSD 9

FreeBSD 9.0 выпущена 12 января 2012 года. Основные изменения:

  • Переход на новый модульный инсталлятор BSDInstall
  • Интеграция в систему LLVM[33] 3.0/Clang 3.0 для постепенной замены устаревшей версии GCC 4.2.2 в базовой системе
  • В DTrace реализованы модули для трассировки 32-разрядных системных вызовов linux32 и freebsd32 на 64-разрядной платформе FreeBSD [amd64]
  • Новая реализация программного RAID graid для замены устаревшей подсистемы ataraid
  • Дисковая подсистема ATA/SATA по умолчанию заменена на реализацию на базе CAM (Common Access Method)
  • Интеграция системы репликации устройств хранения данных HAST
  • Для UFS2 техника мягких обновлений (Soft Updates) дополнена технологией журналирования для быстрого восстановления файловой системы после сбоёв
  • Файловая система UFS2 стала поддерживать операцию TRIM для SSD
  • Обновление ZFS до версии 28
  • Начальная поддержка архитектуры NUMA в подсистемах управления памятью
  • Интеграция в базовую систему Infiniband-стека OFED (OpenFabrics Enterprise Distribution)
  • Добавлены новые 10Gb Ethernet-драйверы
  • Универсальный USB-драйвер с поддержкой протоколов USB 3.0/2.0/1.1/1.0
  • Обеспечена поддержка пяти новых алгоритмов для контроля перегрузки в TCP-стеке
  • Обеспечена возможность использования только IPv6 в TCP-стеке базовой системы и в портированных приложениях
  • Поддержка сетевого протокола NFSv4
  • Новый механизм изоляции выполнения приложений Capsicum
  • Реализация интерфейса управления ресурсами RCTL (Hierarchical Resource Limits) в том числе и для Jail
  • Графические среды GNOME версии 2.32.1, KDE версии 4.7.3
  • Возможен запуск и работа FreeBSD на игровых приставках Sony PlayStation 3

FreeBSD 9.1 выпущена 31 декабря 2012 года. Основные отличия от FreeBSD 9.0:

  • новые драйверы Intel GPU с поддержкой GEM/KMS
  • netmap(4) быстрое пользовательское пространство пакетов системы ввода-вывода
  • в ZFS улучшения от проекта illumos
  • CAM Target Layer (CTL), диск и процессор эмулируются подсистемой
  • выборочный новый C++11 стек, включающий LLVM libc++ и libcxxrt
  • Jail devfs, nullfs, zfs поддержка монтирования и конфигурации файлов
  • POSIX2008 расширение локальной поддержки, включающие совместимость с расширениями Darwin
  • oce(4) драйверы для Emulex OneConnect 10Gbit сетевых карт
  • sfxge(4) драйверы для 10Gb сетевых адаптеров построенных на контроллере Solarflare SFC9000
  • улучшение Xen Paravirtualized Backend Ethernet Driver (netback)
  • hpt27xx(4) драйверы для HighPoint RocketRAID 27xx-based SAS 6Gb/s HBA
  • улучшение многоцелевого класса GEOM
  • класс raid в GEOM включён по умолчания для поддержки программного RAID взамен устаревшего ataraid(8)
  • поддержка ядром AVX FPU расширений
  • многочисленные улучшения в аппаратной поддержке разгрузки IPv6

FreeBSD 9.2 выпущена 27 сентября 2013 года. Основные нововведения:

  • файловая система ZFS теперь поддерживает TRIM когда используется на твердотельных дисках.
  • драйвер virtio(4) был добавлен в GENERIC kernel конфигурации для архитектур amd64 и i386.
  • файловая система ZFS теперь поддерживает lz4 сжатие.
  • OpenSSL был обновлён до 0.9.8y.
  • DTrace hooks теперь доступен в GENERIC kernel.
  • DTrace был обновлён до 1.9.0.
  • Sendmail был обновлён до 8.14.7.
  • OpenSSH был обновлён до 6.2p2.
  • Import unmapped I/O support from head/.

FreeBSD 10

FreeBSD 10.0 выпущена 20 января 2014 года.[34]

Основные изменения:

  • Заменён компилятор по умолчанию с GCC на Clang 3.3;[35]
  • Драйверы Microsoft Hyper-V добавлены в состав GENERIC-ядра;
  • Возможность установки программой BSDInstall на раздел ZFS;
  • Поддержка TRIM для SSD в ZFS;[36]
  • Unbound в составе базовой системы в качестве локального кэширующего DNS резолвера;
  • BIND удалён из состава базовой системы;
  • Драйверы для полной поддержки видеокарт Radeon, вплоть до серии HD 6000 (частичная поддержка серии HD 7000);
  • Реализована начальная поддержка демона auditdistd, что позволяет организовать ведение полного лога событий, который, в частности, может быть полезен для анализа причин и последствий инцидентов, связанных с нарушением безопасности. В настоящее время ядро передаёт события аудита напрямую в файл или через устройство /dev/auditpip;
  • GEOM_LABEL начал поддерживать в имени спецзнаки % и ";
  • Поддержка Raspberry Pi;[37]
  • Полноценная поддержка USB Audio 2.0.[38]

FreeBSD 10.1

FreeBSD 10.1 выпущена 14 ноября 2014 года[39].

Основные изменения:

  • Начальная поддержка загрузки FreeBSD/amd64 на системах с UEFI;
  • Расширены возможности инсталлятора (bsdinstall), в котором появилась поддержка создания зашифрованных (geli) и отзеркалированных (gmirror) разделов подкачки при установке на ZFS;
  • В загрузчике реализовано меню для выбора используемого для загрузки ядра;
  • Существенно улучшена производительность кода RPC;
  • Обновлена реализация ZFS, в которой появилась возможность установки закладок на снапшоты;
  • Из FreeBSD-CURRENT перенесена реализация файловой системы autofs и связанного с ней демона automountd для организации автоматического монтирования ФС;
  • В GEOM_MULTIPATH обеспечена поддержка автоматического изменения размера разделов на лету;
  • Многочисленные обновления драйверов с поддержкой сетевых устройств и систем хранения.

FreeBSD 10.2

FreeBSD 10.2 выпущена 13 августа 2015 года.[40]

FreeBSD 11

FreeBSD 11.0 выпущена 10 октября 2016 года.[41]

Основные изменения:

  • Новая система автоматического монтирования ФС (automounter), унифицированная с реализациями из других Unix-систем (macOS, Solaris), использующая совместимый с Solaris формат сопоставления точек монтирования и поддерживающая интеграцию с LDAP. В auto_master добавлен новый тип сопоставления «-media», позволяющий автоматизировать подключение внешних накопителей CD и USB, а также тип «-noauto» для обработки записей noauto в fstab;
  • Добавлена возможность загрузки с временным rootfs, вместо которого затем монтируется реальный корневой раздел. Процесс смены корневого раздела реализован в форме частичного завершения работы с удалением всех процессов, отмонтированием rootfs, монтированием нового rootfs, запуском процесса init и переходом к выполнению скриптов инициализации;
  • Новая высокопроизводительная реализация системного вызова sendfile, предназначенного для организации прямой передачи данных между файловым дескриптором и сокетом, поддерживающая отправку файла в сокет в асинхронном режиме без ожидания завершения чтения файла.
  • Новая версия подсистемы NetMap c поддержкой двунаправленных потоков, поддержкой kqueue, улучшенной пользовательской библиотекой, возможностью эмуляции netmap для любых адаптеров без родной поддержки netmap, интеграцией со стеком VALE (используется в системе виртуализации bhyve);
  • Усовершенствован гипервизор bhyve, в котором добавлена поддержка новых типов гостевых систем. В настоящее время поддерживается создание хост-систем на базе платформы FreeBSD/AMD64 и запуск гостевых систем c FreeBSD 8+, Linux i386/x64, OpenBSD i386/amd64, NetBSD/amd64, Illumos и Windows Vista/7/8/10/2008r2/2012r2/2016 x64. Отдельно отмечается возможность запуска гостевых систем FreeBSD/i386 на 64-разрядных хост-системах, поддержка процессоров AMD c аппаратными расширениями SVM и AMD-V, поддержка команды DSM TRIM для виртуальных дисков AHCI, поддержка графического режима (эмуляция VGA, framebuffer, мыши, клавиатуры, XHCI USB с применением сервера VNC для доступа к экрану гостевой системы);
  • В Xen добавлена поддержка запуска гостевых систем FreeBSD/amd64 в режиме PVH, который комбинирует элементы режимов паравиртуализации (PV) и полной виртуализации (HVM). Проведена оптимизация производительности драйвера netfront и добавлена поддержка unmapped IO в драйверы blkfront, virtio_blk и virtio_scsi;
  • В механизм управления ресурсами RCTL добавлена возможность ограничения пропускной способности операций с файловой системой. Поддерживается ограничение полосы пропускания чтения/записи (байт в секунду) и интенсивности операций ввода/вывода (число операций чтения/записи в секунду). Также представлен новый механизм придерживания запуска процессов в условиях превышения лимита;
  • Добавлена поддержка стандарта 802.11n для сетей Wi-Fi, позволяющего добиться скорости передачи данных в беспроводной сети до 600 Мбит/с в конфигурации адаптера с четырьмя антеннами (для одной антенны до 150 Мбит/с).
  • Из NetBSD бэкпортирована библиотека libblacklist и связанное с ней приложение Blacklistd, которые можно использовать для реализации динамического межсетевого экрана для защиты от попыток взлома локальных сервисов, таких как ssh, named и ftpd, или для блокирования IP-адресов, участвующих в DDoS-атаках;
  • Добавлена поддержка архитектуры AArch64 (arm64).

FreeBSD 12

FreeBSD 12 выпущена 11 декабря 2018 года.[42]

Основные изменения:

  • Сильно изменён список поддерживаемых сетевых адаптеров, добавлены новые, выведены из поддержки драйверы для старых;
  • Улучшена поддержка процессоров Ryzen и Epyc;
  • Большое количество видеодрайверов теперь доступно в портах. Базовые драйверы предустановлены по умолчанию;
  • Улучшена поддержка виртуализации;
  • Расширены возможности пакетного фильтра pf.

FreeBSD 13

FreeBSD 13 выпущена 13 апреля 2021 года.

Основные изменения:

  • Осуществлён переход на унифицированную c Linux реализацию файловой системы ZFS от проекта OpenZFS.
  • Порт для архитектуры ARM64 (AArch64) переведён на первый уровень поддержки (Tier 1), который подпадает под сопровождение командами, отвечающими за устранение уязвимостей, подготовку релизов и поддержание портов.
  • Архитектура i386 переведена на второй уровень поддержки платформ (Tier 2), при котором будет продолжено формирование установочных сборок, бинарных обновлений и готовых пакетов, но не гарантирует решение специфичных проблем.
  • Компоненты clang, lld, lldb, compiler-rt, llvm, libunwind и libc++ обновлены до версии 11.
  • Разработка переведена из централизованной системы управления исходными текстами Subversion в децентрализованную систему Git.
  • Проведена чистка базовой системы от приложений, распространяемых под лицензией GPL. Из дерева исходных текстов удалены binutils 2.17 и gcc 4.2.1, все поддерживаемые архитектуры переведены на инструментарий LLVM/clang.
  • Переписан стек маршрутизации, в котором появилась поддержка объектов nexthop, хранящих данные о состоянии, используемом для передачи пакета в желаемую точку назначения. Добавлена возможность подключения собственных алгоритмов поиска маршрутов.
  • Переписана и сделана более масштабируемой поддержка Multipath-маршрутизации, в которой время поиска не зависит от размера списка (O(1)). Новая реализация Multipath теперь связана с параметром ядра ROUTE_MPATH, который заменил собой RADIX_MPATH и включён по умолчанию.
  • Переделан реализованный на уровне ядра криптографический фреймворк, в котором появилась поддержка современных криптографических алгоритмов и упрощён интерфейс для использования шифрования в драйверах и других компонентах ядра.
  • В ядро GENERIC включена поддержка драйверов aesni и armv8crypto для ускорения дискового шифрования на базе geli при помощи инструкций AES-NI для архитектур amd64/i386 и AES-XTS для ARM64.
  • Добавлен драйвер qat для криптоакселераторов Intel QuickAssist (QAT) и драйвер ossl с реализацией ускоренных программных процедур шифрования из OpenSSL, оптимизированных при помощи кода на ассемблере.
  • Добавлена реализация TLS (kTLS), работающая на уровне ядра FreeBSD, которая позволяет добиться существенного увеличения производительности шифрования для TCP-сокетов. Поддерживается верcий TLS с 1.0 по 1.3.
  • Добавлен новый тип сетевых буферов mbuf (network data buffer), который может представлять в одном буфере несколько не отражённых физических страниц памяти, что позволяет увеличить производительность вызова sendfile(2) за счёт сокращения размера списков mbuf в буферах сокета.
  • В TCP-стек интегрирована поддержка алгоритма пропорционального снижения интенсивности отправки пакетов (Proportional Rate Reduction, RFC 6937), позволяющего быстрее восстановить оптимальные параметры потока после временных проблем с передачей данных. Для отключения PRR предусмотрен sysctl net.inet.tcp.do_prr.
  • Расширены возможности гипервизора Bhyve: Добавлена поддержка предоставления совместного доступа к файлами при помощи VirtIO-9p (VirtFS). Реализована возможность работы со снапшотами виртуальных машин. Добавлена поддержка устройств PCI HDAudio и дополнительных последовательных портов COM3 и COM4.
  • В драйверы VirtIO добавлена поддержка спецификации VirtIO V1, что улучшило совместимость гостевых систем с FreeBSD с различными эмуляторами и гипервизорами.
  • Для прикрепляемых к jail-окружениям процессов обеспечено преобразование привязок к CPU (изначально привязанный к процессу cpuset будет заменён с учётом cpuset jail-а и выставленных ограничений).
  • Добавлена возможность сборки базовой системы FreeBSD в окружениях на основе других операционных систем.
  • Предложен новый стек MMC/SD, основанный на фреймворке CAM и позволяющий подключать устройства с интерфейсом SDIO (Secure Digital I/O). Например, SDIO используется во WiFi и Bluetooth модулях для многих плат, таких как Raspberry Pi 3. Новый стек также позволяет использовать интерфейс CAM для отправки SD-команд из приложений в пространстве пользователя, что даёт возможность создавать драйверы устройств, работающие на уровне пользователя.
  • Улучшена работа прослойки для совместимости с Linux. Файлы DTS (Device Tree Sources) синхронизированы с ядром Linux 5.8.
  • Добавлена поддержка NFSv4.2 (RFC-7862) и реализована возможность работы NFS поверх шифрованного канала связи на базе TLS 1.3, вместо использования Kerberos (режим sec=krb5p), который ограничивался шифрованием только RPC-сообщений и был реализован только программно.
  • Удалена устаревшая версия отладчика GDB
  • Добавлен новый системный вызов copy_file_range, совместимый с реализацией из ядра Linux и позволяющий ускорить копирование данных из одного файла в другой, благодаря выполнению операции только на стороне ядра без предварительного чтения данных в память процесса
  • В механизме асинхронного ввода/вывода POSIX AIO представлена поддержка векторизированных функций.
  • Прекращена поддержка компонентов пространства пользователя для поддержки формата исполняемых файлов a.out на системах с архитектурой i386. Удалена утилита elf2aout.
  • Объединены утилиты ping и ping6. В ping добавлена возможность установки параметров качества сервиса (QoS) через IP DSCP и Ethernet PCP.
  • В утилите freebsd-update обеспечен показ прогресса загрузки файлов и добавлены команды updatesready и showconfig для проверки наличия обновлений и показа конфигурации.Проведена большая работа по улучшению поддержки систем NUMA (Non-Uniform Memory Access).
  • Обновлены графические драйверы и компоненты графического стека. Решены проблемы с работой окружений на базе протокола Wayland.Добавлена подсистема backlight для создания драйверов управления подсветкой. Добавлен драйвер pwm-backlight для управления подсветкой Pinebook и Pinebook Pro.
  • Поддержка протокола SCTP вынесена в отдельный модуль sctp.ko, который отключён по умолчанию в ядре GENERIC.
  • Для устройств ввода предложен новый драйвер usbhid, использующий фреймворк hid для работы с устройствами USB HID, вместо драйверов ukbd, ums и uhid.
  • В драйвере cpufreq реализована поддержка технологии Intel Speed Shift.Добавлена поддержка новых плат на базе 64-разрядных CPU ARMv8, включая SoC Broadcom BCM5871X и NXP LS1046A.
  • Для архитектуры AMD64 реализована поддержка 57-разрядных виртуальных адресов (LA57). Добавлена поддержка китайских x86 CPU Hygon Dhyana на основе технологий AMD.
  • Порт для архитектуры powerpc64 переведён на использование LLVM и ABI ELFv2 (на системах powerpc64 бинарные файлы из прошлых версий FreeBSD не смогут использоваться во FreeBSD 13). Для powerpc64 портированы драйверы virtio, ixl, mrsas, aacraid, cpld.
  • Удалены драйверы для устаревших Ethernet-адаптеров.

Модель разработки FreeBSD

Существует около 4000 разработчиков, которые работают над системой на добровольной основе. Все они могут читать дерево репозитория, но не могут вносить изменения. Вместо этого разработчик обращается к коммитеру, который имеет право вносить изменение в код. Существует около 400 коммитеров. Разработчик может вырасти по социальной лестнице проекта и стать коммитером. Кандидатуру нового коммитера предлагает к рассмотрению ментор будущего коммитера. В зависимости от основной области деятельности, новый коммитер утверждается основной командой, portmgr@ или docmgr@. Основная команда является административным ядром проекта и состоит из 9 человек, которые выбираются на 2 года коммитерами из своего состава. Основная команда решает конфликты между коммитерами[43].

Участники проекта разрабатывают ветку CURRENT («текущая» версия) и несколько STABLE («стабильная», стабильность означает гарантию неизменности интерфейсов, как то API, ABI и так далее).

Новый код помещают в ветку CURRENT, где он получает более широкое тестирование. Новые функции, добавленные в CURRENT, могут остаться в системе или от них могут отказаться, если реализация окажется неудачной. Иногда эта версия может оказаться в непригодном для использования состоянии. С началом использования perforce как вспомогательного репозитория, и с выделением projects/ области в svn, проект стремится гарантировать постоянную работоспособность CURRENT.

STABLE-версия содержит только те нововведения, которые прошли проверку в CURRENT. Тем не менее, эта версия тоже предназначена, в основном, для разработчиков. Не рекомендуется обновлять ответственные рабочие серверы до STABLE, предварительно её не протестировав. На основе STABLE регулярно создаются тщательно протестированные разработчиками, группой release-инженеров и более широким кругом пользователей RELEASE-версии.

После выпуска релизов создаются дополнительные ветви разработки для поддержки релизов, но в них вносятся лишь самые необходимые изменения, исправляющие серьёзные ошибки или проблемы с безопасностью системы. До четвёртой версии FreeBSD у стабильной и текущей веток был один и тот же старший номер версии. Затем текущей ветви был присвоен номер 5, а у стабильной остался номер 4.

В настоящее время поддерживаются стабильные ветви разработки 9-STABLE, 10-STABLE и 11-STABLE. На данный момент, группа разработчиков активно работает над версией 13.0-CURRENT.

28-го января, 2021-го года, Разработчики FreeBSD объявили[44] о переводе архитектуры i386 (32-разрядные системы x86) на второй уровень поддержки платформ (Tier 2[45]). Изменения вступят в силу начиная с выпуска FreeBSD 13.0

Второй уровень поддержки для систем i386 подразумевает продолжение формирования установочных сборок, бинарных обновлений и готовых пакетов, но не гарантирует решение специфичных проблем.

Среди причин снижения уровня поддержки для архитектуры i386 указывается доминирование 64-разрядных систем x86 и снижение популярности 32-разрядных установок, число пользователей которых сократилось до уровня других арихитектур второго уровня.

Подготовлен первый бета-выпуск FreeBSD 13.0. Выпуск FreeBSD 13.0-BETA1 доступен для архитектур amd64, powerpc64, powerpc64le, powerpcspe, aarch64 и riscv64. Дополнительно подготовлены образы для систем виртуализации (QCOW2, VHD, VMDK, raw) и облачных окружений Amazon EC2. Сборки для i386 и 32-разрядных плат ARM не сформированы.[46][47]

Варианты установки

Операционная система FreeBSD может быть установлена с различных носителей, таких как:

Оболочка

Оболочкой FreeBSD по умолчанию является tcsh[48].

Порты и пакеты

В настоящее время FreeBSD предоставляет пользователю две взаимодополняющие технологии установки программного обеспечения сторонних разработчиков: коллекция портов FreeBSD и бинарные пакеты с программным обеспечением. Любая из этих систем может быть использована для установки самых последних версий приложений с локальных носителей или прямо из сети.

Коллекция портов, как подсистема сборки и сопровождения устанавливаемых программ, периодически обновляется. Сейчас она насчитывает порядка 32 тысяч портированных на FreeBSD программ[49], среди которых: графические среды GNOME, KDE5, Xfce, Enlightenment, офисные приложения и пакеты Apache OpenOffice, LibreOffice, система поддержки печати CUPS, программы доступа в интернет Mozilla Firefox и Thunderbird, Chromium, системы управления базами данных PostgreSQL, MySQL, комплекты Java-разработки OpenJDK, среды разработки Eclipse и NetBeans, мультимедийные плееры MPlayer и VLC. Инфраструктура интерпретируемых языков представлена Perl, Python, Ruby, Lua и другими ЯП.

Совместимость с оборудованием

Поддерживаемые устройства перечислены в документе FreeBSD 12.1-RELEASE Hardware Notes.[50] Другие конфигурации также могут работать, но пока ещё не были протестированы. Списки поддерживаемых идентификаторов устройств доступны в стороннем репозитории.[51]

В 2020 году был представлен новый проект для автоматического сбора информации о протестированных конфигурациях оборудования.[52]

Талисманы-логотипы

Основным талисманом системы является красный демонёнок, известный также как Beastie. Кроме него, талисманом также считается Devilette, девушка в красном костюме демона.

Производные системы

BSD-лицензия позволяет сохранять коммерческую тайну при модификации FreeBSD для встраиваемых систем и производить другие производные проприетарные системы, что делает FreeBSD привлекательной для промышленности[53]. FreeBSD нашла себе применение в маршрутизаторах Juniper и ТВ-панелях[54].

Ниже приведены свободные производные операционные системы:

  • BSDeviant — LiveCD.
  • BSD Router Project (BSDRP) — компактный программный роутер на базе FreeBSD.
  • Debian GNU/kFreeBSD — производная версия, базирующаяся на наборе инструментов GNU, разрабатывается группой пользователей Debian.
  • DesktopBSD — дистрибутив для домашнего использования.
  • DragonFly BSD — ответвление от FreeBSD 4.8, созданное как логическое продолжение 4-й ветви. Она включает систему потоковой обработки сообщений, похожую на ту, которая используется в системах с микроядром.
  • FreeNAS — основанное на m0n0wall сетевое хранилище NAS.
  • FreeSBIE — LiveCD — дистрибутив FreeBSD, похожий на дистрибутив Linux под названием Knoppix.
  • Frenzy — другой проект по созданию LiveCD на основе FreeBSD, ориентированный в первую очередь на русскоязычных системных администраторов.
  • FuryBSD — дистрибутив FreeBSD с графическим окружением по умолчанию.
  • GhostBSD — LiveCD с настольной средой Mate по умолчанию.
  • MidnightBSD
  • MiniBSD — компактный дистрибутив FreeBSD.
  • mfsBSD — миниатюрный загрузочный LiveCD на базе FreeBSD, загружаемой полностью в оперативную память компьютера.
  • m0n0wall — встраиваемый межсетевой экран, основанный на FreeBSD.
  • NanoBSD — ещё один компактный дистрибутив FreeBSD.
  • NomadBSD — проект по созданию LiveUSB с графическим окружением на основе FreeBSD.
  • XigmaNAS — свободная операционная система для сетевого хранилища.
  • TrueOS (ранее PC-BSD) — дистрибутив с графическим инсталлятором PBI и настольной средой Lumina по умолчанию.
  • pfSense — ответвление от проекта m0n0wall, отличающееся большей функциональностью.
  • PicoBSD — версия FreeBSD на одной дискете.
  • RoFreeSBIE — Румынский дистрибутив основан на FreeBSD.
  • TrueBSD — белорусский LiveDVD-дистрибутив на основе FreeBSD.
  • ULBSD — русифицированный десктоп-ориентированный дистрибутив для домашних и корпоративных пользователей, включён в Единый реестр российских программ для электронных вычислительных машин и баз данных[55]
  • XNU — ядро Mac OS X, многие команды взяты от FreeBSD 4/5, разрабатывается компанией Apple, весьма дальний родственник FreeBSD, так как использует ядро Mach.
  • zRouter — дистрибутив направленный на работу в роутерах Asus, Buffalo, D-Link, NorthQ, Soekris, TPLink, Ubiquiti
  • ИКС Server
  • РУС-BSD — русифицированный дистрибутив для пользователей стран СНГ, опирается на Frenzy и свои разработки.

Пасхальные яйца

  • Если запустить make c целью love, система выдаст на stdout сообщение Not war. (Работает только на версиях 7.0 и выше).
 Видео демонстрации пасхального яйца "make love" на FreeBSD 7.4-RELEASE, начиная с 0:10-й сек.

См. также

Примечания

  1. The UNIX system family tree: Research and BSD
  2. https://github.com/freebsd/freebsd/blob/master/share/misc/bsd-family-tree
  3. FreeBSD 13.0-RELEASE Announcement
  4. https://www.freebsd.org/copyright/freebsd-license.html
  5. The FreeBSD Project (англ.). GitHub. Дата обращения: 7 августа 2021.
  6. Майк Сондерс. Знакомьтесь: FreeBSD // Linux Format. — Март 2006. № 3 (77). С. 44-47.
  7. О Проекте FreeBSD
  8. FreeBSD 4.0 Announcement
  9. FreeBSD 4.0 Release Notes
  10. FreeBSD Security Information - End of Life. The FreeBSD Project.. Дата обращения: 10 Октября 2016.
  11. FreeBSD 10.4-RELEASE Announcement. The FreeBSD Project.. Дата обращения: 3 Октября 2017.
  12. FreeBSD Security Information — End of Life (недоступная ссылка). The FreeBSD Project.. Дата обращения: 3 Октября 2017. Архивировано 12 октября 2017 года.
  13. FreeBSD 11.0-RELEASE Announcement. The FreeBSD Project. Дата обращения: 10 Октября 2016.
  14. FreeBSD 11.1-RELEASE Announcement. The FreeBSD Project. Дата обращения: 26 Июля 2017.
  15. BSDSec | FreeBSD 11.1 end-of-life. bsdsec.net. Дата обращения: 5 сентября 2018.
  16. DistroWatch Weekly, Issue 769, 25 June 2018
  17. DistroWatch Weekly, Issue 770, 2 July 2018
  18. FreeBSD 11.2-RELEASE Process. The FreeBSD Project. Дата обращения: 27 Июня 2018.
  19. The FreeBSD Project | Unsupported FreeBSD Releases. www.freebsd.org. Дата обращения: 23 марта 2021.
  20. The FreeBSD Project | FreeBSD 11.3 Release Process. www.freebsd.org. Дата обращения: 23 марта 2021.
  21. The FreeBSD Project | FreeBSD 11.4 Release Process. www.freebsd.org. Дата обращения: 23 марта 2021.
  22. The FreeBSD Project | FreeBSD 11.4-RELEASE Announcement. www.freebsd.org. Дата обращения: 23 марта 2021.
  23. FreeBSD 12.0 Release Process. The FreeBSD Project (18 Сентября 2017).
  24. FreeBSD 12.2-RELEASE Announcement (англ.) ?.
  25. FreeBSD 13.0 Release Process (англ.) ?.
  26. Jason Evans. A Scalable Concurrent malloc(3) Implementation for FreeBSD (недоступная ссылка) (16 апреля 2006). Дата обращения: 13 февраля 2008. Архивировано 22 августа 2011 года.
  27. Federico Biancuzzi. What’s New in FreeBSD 7.0 26 февраля 2008
  28. Introducing FreeBSD 7.0
  29. The arrow of time — ZFS v13 in 7-STABLE Архивировано 27 мая 2009 года.
  30. FreeBSD 8.0-RELEASE Announcement (недоступная ссылка). Дата обращения: 1 декабря 2009. Архивировано 30 ноября 2009 года.
  31. David Chisnall, LLVM in the FreeBSD Toolchain, 2013 (англ.)
  32. FreeBSD 10.0-RELEASE Announcement
  33. FreeBSD 10.0-RELEASE Release Notes
  34. Revision 240868
  35. quick start guide
  36. WhatsNew/FreeBSD10 — FreeBSD Wiki
  37. FreeBSD 10.1 Release Process.
  38. FreeBSD 10.2-RELEASE Announcement. www.freebsd.org. Дата обращения: 29 ноября 2015.
  39. FreeBSD 11.0-RELEASE Announcement. www.freebsd.org. Дата обращения: 12 октября 2016.
  40. FreeBSD 12.0-RELEASE Announcement. www.freebsd.org. Дата обращения: 13 декабря 2018.
  41. МакКузик. FreeBSD. Архитектура и реализация.
  42. i386 demoted to Tier 2 for FreeBSD 13.x (англ.) ?.
  43. committers-guide (англ.) ?.
  44. FreeBSD 13.0-BETA1 Now Available (англ.) ?.
  45. Index of /ftp/releases/ISO-IMAGES/13.0/ (англ.) ?.
  46. 2. Default Shell
  47. Самая свежая информация о портах
  48. FreeBSD 12.1-RELEASE Hardware Notes. The FreeBSD Documentation Project. Дата обращения: 14 июля 2020.
  49. FreeBSD 12.1: ids of supported devices. BSD Hardware Project. Дата обращения: 14 июля 2020.
  50. FreeBSD Hardware Trends. BSD Hardware Project. Дата обращения: 14 июля 2020.
  51. Брайн Таймэн. FreeBSD 6. Полное руководство. С. 30
  52. Panasonic G20 review
  53. Информация в реестре российского ПО Минкомсвязи РФ.

Литература

Англоязычная
  • Christopher Negus. Francois Caen, BSD UNIX Toolbox: 1000+ Commands for FreeBSD, OpenBSD and NetBSD. — Wiley, May 5 2008. — 309 стр. — ISBN 0-470-37603-1. (англ.)
  • Babak Farrokhi. Network Administration with FreeBSD 7: Building, securing, and maintaining networks with the FreeBSD operating system. — Packt Publishing, April 14 2008. — 280 стр. — ISBN 1-84719-264-5. (англ.)
  • Bryan J. Hong. Building a Server with FreeBSD 7. — No Starch Press, April 1 2008. — 288 стр. — ISBN 5-8459-0741-1. (англ.)
  • Joseph Kong. Designing BSD Rootkits: An Introduction to Kernel Hacking. — No Starch Press, April 10 2007. — 144 стр. — ISBN 1-59327-142-5. (англ.)
  • Harald Zisler. FreeBSD. — Franzis Verlag GmbH, August 31 2006, 381 стр. — ISBN 3-7723-6538-8 (англ.)
  • Yanek Korff, Paco Hope, Bruce Potter. Mastering FreeBSD and OpenBSD Security. — O’Reilly, March 2005. — ISBN 0-596-00626-8. (англ.)
  • Dru Lavigne. BSD Hacks, 100 Industrial-Strength tips for BSD users and administrators. — O’Reilly, May 2004. — ISBN 0-596-00679-9. (англ.)
  • Michael Urban, Brian Tiemann. FreeBSD Unleashed. — Second Edition. Sams Publishing, April 2003. — ISBN 0-672-32456-3. (англ.)
  • Greg Lehey. The Complete FreeBSD. — 4th Edition. — Documentation from the Source. — O’Reilly, April 2003. — ISBN 0-596-00516-4. (англ.)
  • Marshall Kirk McKusick, George V. Neville-Neil. The Design and Implementation of the FreeBSD Operating System. — Addison Wesley Professional, August, 2004. — ISBN 0-201-70245-2. (англ.)
  • Ted Mittelstaedt. The FreeBSD Corporate Networkers Guide. — Addison-Wesley, December 2000. — Paperback, book & CD edition. — 401 pages. — ISBN 0-201-70481-1. (англ.)
  • The FreeBSD Handbook, Volume 1: User Guide. — 3rd Edition. — FreeBSD Documentation Project. — FreeBSD Mall, November 2003. — ISBN 1-57176-327-9. (англ.)
  • The FreeBSD Handbook, Volume 2: Admin Guide. — 3rd Edition. — FreeBSD Documentation Project. — FreeBSD Mall, September 2004. — ISBN 1-57176-328-7. (англ.)

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.