FreeBSD хорошо зарекомендовала себя как система для построения
интранет
- и
интернет
-сетей и
серверов
. Она предоставляет надёжные сетевые службы и эффективное управление
памятью
.
Помимо своей стабильности, FreeBSD популярна и благодаря своей
лицензии
, которая существенно отличается от широко известной лицензии
GNU GPL
.
Лицензия BSD
позволяет использовать код не только в
свободном ПО
, но и в
проприетарном
. В отличие от
GNU LGPL
, которая
требует раскрытия исходных кодов
,
лицензия BSD
является более простой и непритязательной, требуя лишь упоминания заимствования, авторства и отказ от навязывания ответственности (нельзя отсылать пользователей своего продукта к авторам заимствованного кода).
Содержание
История
Разработка FreeBSD началась в 1993 году с быстрорастущего набора
патчей
пользователей системы
386BSD
. Этот набор позже вырос и отделился от 386BSD в отдельную операционную систему, включив в себя код от
Free Software Foundation
. Первая официальная версия FreeBSD 1.0 вышла в декабре 1993 года
.
Walnut Creek CDROM
согласилась распространять FreeBSD на
компакт-диске
и также предоставила для работы проекту отдельный компьютер с интернет-соединением. Затем, в мае 1994 года, последовал успешный выпуск FreeBSD 1.1.
Однако, из соображений законности использования исходных кодов
в 386BSD, команда разработчиков FreeBSD переработала большую часть системы ко времени выпуска FreeBSD 2.0 в январе 1995 года, используя 4.4BSD-Lite. Руководство к FreeBSD содержит более подробную историческую информацию о происхождении системы
.
Версии системы
Версия
Дата выпуска
Окончание поддержки
Старая версия, не поддерживается:
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
14 марта 2000
Старая версия, не поддерживается:
4.1
27 июля 2000
Старая версия, не поддерживается:
4.1.1
7 ноября 2000
Старая версия, не поддерживается:
4.2
21 ноября 2000
Старая версия, не поддерживается:
4.3
20 апреля 2001
Старая версия, не поддерживается:
4.4
20 сентября 2001
Старая версия, не поддерживается:
4.5
20 января 2002
Старая версия, не поддерживается:
4.6
15 июня 2002
Старая версия, не поддерживается:
4.7
10 октября 2002
Старая версия, не поддерживается:
4.8
3 апреля 2003
31 марта 2004
Старая версия, не поддерживается:
4.9
28 октября 2003
Старая версия, не поддерживается:
4.10
27 мая 2004
Май 2006
Старая версия, не поддерживается:
4.11
25 января 2005
31 января 2007
Старая версия, не поддерживается:
5.0
19 января 2003
30 июня 2003
Старая версия, не поддерживается:
5.1
9 июня 2003
Февраль 2004
Старая версия, не поддерживается:
5.2
12 января 2004
Старая версия, не поддерживается:
5.3
6 ноября 2004
31 октября 2006
Старая версия, не поддерживается:
5.4
9 мая 2005
Старая версия, не поддерживается:
6.0
1 ноября 2005
31 января 2007
Старая версия, не поддерживается:
6.1
8 мая 2006
31 мая 2008
Старая версия, не поддерживается:
6.2
15 января 2007
Старая версия, не поддерживается:
7.0
27 февраля 2008
30 апреля 2009
Старая версия, не поддерживается:
7.1
4 января 2009
28 февраля 2011
Старая версия, не поддерживается:
8.0
26 ноября 2009
30 ноября 2010
Старая версия, не поддерживается:
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
Старая версия, не поддерживается:
9.3
16 июля 2014
31 декабря 2016
Старая версия, не поддерживается:
10.0
20 января 2014
28 февраля 2015
Старая версия, не поддерживается:
10.1
14 ноября 2014
31 декабря 2016
Старая версия, не поддерживается:
10.2
13 августа 2015
Старая версия, не поддерживается:
10.3
4 апреля 2016
30 апреля 2018
Старая версия, не поддерживается:
10.4
3 октября 2017
31 октября 2018
Старая версия, не поддерживается:
11.0
10 октября 2016
31 октября 2017
Старая версия, не поддерживается:
11.1
26 июля 2017
30 Сентября 2018
Старая версия, не поддерживается:
11.2
27 июня 2018
31 октября 2019
Старая версия, не поддерживается:
11.3
9 июля 2019
30 сентября 2020
Старая версия, не поддерживается:
11.4
16 июня 2020
30 сентября 2021
Старая версия, не поддерживается:
12.0
10 декабря 2018
29 февраля 2020
Старая версия, не поддерживается:
12.1
4 ноября 2019
31 января 2021
Старая версия, не поддерживается:
12.2
27 октября 2020
31 марта 2022
Старая версия, не поддерживается:
12.3
7 декабря 2021
31 марта 2023
Текущая версия:
12.4
5 декабря 2022
31 декабря 2023
Старая версия, не поддерживается:
13.0
13 апреля 2021
31 августа 2022
Старая версия, не поддерживается:
13.1
16 мая 2022
31 июля 2023
Текущая версия:
13.2
27 марта 2023
Будущая версия:
14.0
23 октября 2023
Версия
Дата релиза
Окончание поддержки
Легенда:
Старая версия
Старая поддерживаемая версия
Текущая версия
Тестовая версия
Будущая версия
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
, основатели которого поставили своей целью серьёзную оптимизацию ядра для высоконагруженных систем, в частности лучшую поддержку многопроцессорности (уменьшение времени, необходимого для переключения потоков и пр.).
Через 3 года разработки, в январе 2003 года, была выпущена долгожданная версия 5.0-RELEASE. Эта версия предоставляла расширенную поддержку многопроцессорности и
многопоточности
, а также поддержку платформ
UltraSPARC
и
IA-64
.
Наибольшие архитектурные изменения в FreeBSD 5 — это изменение механизма
блокировки
на нижнем уровне ядра, чтобы улучшить поддержку многопроцессорных
SMP
-систем. Это освободило большую часть ядра от так называемой «гигантской блокировки» (Giant lock). Теперь в ядре появилась возможность выполнять более одной задачи одновременно. Другим важным изменением была реализация «родной» поддержки многопоточности типа M:N под названием Kernel Scheduled Entities (
). Начиная с 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),
практически неограниченная масштабируемость
SMP
значительно способствует быстродействию на 16-ядерных системах.
масштабируемость файловой системы как результат использования блокировки виртуальной файловой системы (VFS).
работа расширяемой системы безопасности ядра (
MAC
Framework) из коробки.
переписанную подсистему USB с улучшенным быстродействием и поддержкой новых устройств. Добавлена поддержка USB-target.
ZFS более не находится в экспериментальном статусе.
Кроме того, следует отметить:
Реализован новый контейнер виртуализации, названный «vimage». vimage — это jail с виртуализированным сетевым стеком и может быть создан с помощью команды jail(8)
Подсистема ipsec(4) теперь поддерживает NAT-Traversal (
).
Поддерживаемые версии GNOME desktop environment (x11/gnome2) и KDE desktop environment (x11/kde4) были обновлены до 2.26.3 и 4.3.1 соответственно.
Стабильная ветка разработки 8-STABLE постоянно развивается, в неё постепенно вливается проверенный и отлаженный код из экспериментальной ветки разработки. Продолжается улучшение надёжности и быстродействия файловых систем
UFS2
и
ZFS
, перерабатывается код протокола сетевого доступа
NFS
с целью реализации всех возможностей NFSv4.
Драйверы для полной поддержки видеокарт
Radeon
, вплоть до серии HD 6000 (частичная поддержка серии HD 7000);
Реализована начальная поддержка демона auditdistd, что позволяет организовать ведение полного лога событий, который, в частности, может быть полезен для анализа причин и последствий инцидентов, связанных с нарушением безопасности. В настоящее время ядро передаёт события аудита напрямую в файл или через устройство /dev/auditpip;
GEOM_LABEL начал поддерживать в имени спецзнаки % и ";
Начальная поддержка загрузки FreeBSD/amd64 на системах с UEFI;
Расширены возможности инсталлятора (bsdinstall), в котором появилась поддержка создания зашифрованных (geli) и отзеркалированных (gmirror) разделов подкачки при установке на ZFS;
В загрузчике реализовано меню для выбора используемого для загрузки ядра;
Существенно улучшена производительность кода RPC;
Обновлена реализация ZFS, в которой появилась возможность установки закладок на мгновенные снимки;
Из FreeBSD-CURRENT перенесена реализация файловой системы autofs и связанного с ней демона automountd для организации автоматического монтирования ФС;
В GEOM_MULTIPATH обеспечена поддержка автоматического изменения размера разделов на лету;
Многочисленные обновления драйверов с поддержкой сетевых устройств и систем хранения.
FreeBSD 10.2
FreeBSD 10.2 выпущена 13 августа 2015 года.
FreeBSD 11
FreeBSD 11.0 выпущена 10 октября 2016 года.
Основные изменения:
Новая система автоматического монтирования ФС (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 года.
Основные изменения:
Сильно изменён список поддерживаемых сетевых адаптеров, добавлены новые, выведены из поддержки драйверы для старых;
Улучшена поддержка процессоров 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 13.1
FreeBSD 13.1 выпущена 16 мая 2022 года.
Основные изменения:
Предложен драйвер iwlwifi для беспроводных карт Intel c поддержкой новых чипов и стандарта 802.11ac. Драйвер основан на Linux-драйвере и коде из Linux-подсистемы net80211, работа которых во FreeBSD обеспечивается при помощи прослойки linuxkpi.
Реализация файловой системы ZFS обновлена до выпуска OpenZFS 2.1 с поддержкой технологии dRAID (Distributed Spare RAID) и значительными оптимизациями производительности.
Добавлен новый rc-скрипт zfskeys, при помощи которого можно на этапе загрузки организовать автоматическую расшифровку зашифрованных ZFS-разделов.
В сетевом стеке изменено поведение для IPv4-адресов с нулевым последним числом (x.x.x.0), который теперь можно использовать в качестве хоста и к нему по умолчанию не применяется отправка в широковещательном режиме. Старое поведение можно вернуть при помощи sysctl net.inet.ip.broadcast_lowest.
Для 64-разрядных архитектур включена по умолчанию сборка базовой системы с использованием режима PIE (Position Independent Executable). Для отключения предусмотрена настройка WITHOUT_PIE.
Добавлена возможность вызова chroot непривилегированным процессом, для которого выставлен флаг NO_NEW_PRIVS. Режим включается при помощи sysctl security.bsd.unprivileged_chroot. В утилиту chroot добавлена опция «-n», выставляющая для процесса флаг NO_NEW_PRIVS перед его изоляцией.
В инсталлятор bsdinstall добавлен режим автоматизированного редактирования дисковых разделов, позволяющий для разных имён дисков подключать сценарии разбивки, работающие без участия пользователя. Предложенная возможность упрощает создание полностью автоматически работающих установочных носителей для систем и виртуальных машин с разными дисками.
Улучшена поддержка загрузки на системах с UEFI. В загрузчике включена автоматическая настройка параметра copy_staging в зависимости от возможностей загружаемого ядра.
Проведена работа по повышению производительности загрузчика, nvme, rtsold, инициализации генератора псевдослучайных чисел и калибровки таймера, что привело к сокращению времени загрузки.
Добавлена поддержка работы NFS поверх шифрованного канала связи на базе TLS 1.3. Новая реализация использует предоставляемый ядром стек TLS, позволяющий задействовать средства аппаратного ускорения. Сборка процессов rpc.tlsclntd и rpc.tlsservd с реализацией клиента и сервера NFS-over-TLS, по умолчанию включена для архитектур amd64 и arm64.
Для NFSv4.1 и 4.2 реализована опция монтирования nconnect, определяющая число установленных с сервером TCP-соединений. Первое соединение используется для мелких RPC сообщений, а остальные для балансировки трафика с передаваемыми данными.
Для сервера NFS добавлен sysctl vfs.nfsd.srvmaxio, позволяющий изменить максимальный размер блока ввода/вывода (по умолчанию 128Kb).
Улучшена поддержка оборудования. В драйвер igc добавлена поддержка Ethernet-контроллера Intel I225. Улучшена поддержка Big-endian систем. Добавлен драйвер mgb для Ethernet-контроллера Microchip devices LAN7430 PCIe Gigabit Ethernet
Драйвер ice, используемый для Ethernet-контроллеров Intel E800, обновлён до версии 1.34.2-k, в которой появилась поддержка отражения в системном логе событий прошивки и добавлена начальная реализация расширений протокола DCB (Data center bridging).
В образах для Amazon EC2 по умолчанию включена загрузка с использованием UEFI вместо BIOS.
В гипервизоре bhyve обновлены компоненты для эмуляции накопителей NVMe, в которых обеспечена поддержка спецификации NVMe 1.4. Решены проблемы с NVMe iovec при интенсивном вводе/выводе.
Библиотека CAM переведена на использование вызова realpath при обработке имён устройств, что позволяет использовать символические ссылки на устройства в утилитах camcontrol и smartctl. В camcontrol решены проблемы с загрузкой прошивок на устройства.
Прекращена сборка утилиты svnlite в базовой системе.
Добавлены Linux-варианты утилит для вычисления контрольных сумм (md5sum, sha1sum и т. п.) которые реализованы путём вызова имеющихся BSD-утилит (md5, sha1 и т. п.) с опцией «-r».
В утилиту mpsutil добавлена поддержка управления NCQ и обеспечен показ информации об адаптере.
В /etc/defaults/rc.conf по умолчанию включено применение опции «-i» при вызове процессов rtsol и rtsold, отвечающих за отправку сообщений ICMPv6 RS (Router Solicitation). Указанная опция отключает случайную задержку перед отправкой сообщения.
Для архитектур riscv64 и riscv64sf включена сборка библиотек с ASAN (address sanitizer), UBSAN (Undefined Behavior Sanitizer), OpenMP и OFED (Open Fabrics Enterprise Distribution).
Решены проблемы с определением поддерживаемых процессорами ARMv7 и ARM64 средств аппаратного ускорения криптографических операций, что позволило существенно ускорить работу алгоритмов aes-256-gcm и sha256 на системах ARM.
Для архитектуры powerpc в основной состав включён отладчик LLDB, развиваемый проектом LLVM.
Библиотека OpenSSL обновлена до версии 1.1.1o и расширена применением ассемблерных оптимизаций для архитектур powerpc, powerpc64 и powerpc64le.
SSH-сервер и клиент обновлены до OpenSSH 8.8p1 с отключением поддержки цифровых подписей rsa-sha и поддержкой двухфакторной аутентификации при помощи устройств на базе протокола FIDO/U2F. Для взаимодействия с устройствами FIDO/U2F добавлены новые типы ключей «ecdsa-sk» и «ed25519-sk», в которых используются алгоритмы цифровой подписи ECDSA и Ed25519, в сочетании с хэшем SHA-256.
Обновлены версии входящих в базовую систему сторонних приложений: awk 20210215 (с патчами, отключающими использование локали для диапазонов и улучшающими совместимость с gawk и mawk), zlib 1.2.12, libarchive 3.6.0.
FreeBSD 13.2
FreeBSD 13.2 выпущена 11 апреля 2023 года.
Основные изменения:
Реализована возможность создания снапшотов файловых систем UFS и FFS, на которых включено журналирование (soft updates). Также добавлена поддержка фонового сохранения дампов (запуск dump с флагом "-L") с содержимым примонтированных файловых систем UFS при включённом журналировании. Из возможностей, которые недоступны при использовании журналирования, остаётся фоновое выполнение проверки целостности при помощи утилиты fsck.
В основной состав принят работающий на уровне ядра драйвер wg с реализацией сетевого интерфейса для VPN WireGuard. Для использования необходимых драйверу криптографических алгоритмов было произведено расширение API криптоподсистемы ядра FreeBSD, в который была добавлена обвязка, позволяющая использовать через стандартный крипто-API не поддерживаемые во FreeBSD алгоритмы из библиотеки libsodium. В процессе разработки также была проведена оптимизация для равномерной балансировки привязки задач шифрования и расшифровки пакетов к ядрам CPU, что позволило снизить накладные расходы при обработке пакетов WireGuard.
Прошлая попытка включения WireGuard в состав FreeBSD была предпринята в 2020 году, но завершилась скандалом, в результате которого уже добавленный код был удалён из-за низкого качества, безалаберной работы с буферами, использования заглушек вместо проверок, неполной реализации протокола и нарушения лицензии GPL. Новая реализация , совместно подготовлена основными командами разработчиков FreeBSD и WireGuard при участии Джейсона Доненфилда (Jason A. Donenfeld), автора VPN WireGuard, и Джона Болдуина (John H. Baldwin), известного разработчика FreeBSD. Перед принятием нового кода при поддержке организации FreeBSD Foundation было проведено полное рецензирование изменений.
Реализована поддержка коммуникационного протокола Netlink (
), применяемого в Linux для организации взаимодействия ядра с процессами в пространстве пользователя. Проект ограничивается поддержкой семейства операций NETLINK_ROUTE для управления состоянием сетевой подсистемы в ядре, что позволяет использовать во FreeBSD Linux-утилиту ip из пакета iproute2 для управления сетевыми интерфейсами, установки IP-адресов, настройки маршрутизации и манипуляции объектами nexthop, хранящими данные о состоянии, используемом для передачи пакета в желаемую точку назначения.
Для всех исполняемых файлов базовой системы на 64-разрядных платформах включена по умолчанию рандомизация адресного пространства (ASLR, Address Space Layout Randomization). Для выборочного отключения ASLR можно использовать команды "proccontrol -m aslr -s disable" или "elfctl -e +noaslr".
В ipfw для поиска MAC-адресов задействованы базисные таблицы (Radix table), что позволяет создавать таблицы с MAC-адресами и использовать их для фильтрации трафика.
Добавлены и доступны для загрузки через loader.conf модули ядра dpdk_lpm4 и dpdk_lpm6 с реализацией алгоритма поиска маршрутов DIR-24-8 для IPv4/IPv6, который позволяет оптимизировать функции маршрутизации для хостов с очень большими таблицами маршрутизации (в тестах наблюдается прирост скорости на уровне 25%). Для настройки модулей может использоваться штатная утилита route (добавлена опция FIB_ALGO).
Реализация файловой системы ZFS обновлена до выпуска OpenZFS 2.1.9. В стартовом скрипте zfskeys обеспечена автоматическая загрузка ключей, хранимых в ФС ZFS. Добавлен новый RC-скрипт zpoolreguid для назначения идентификатора GUID к одному или нескольким zpool (например, полезно для окружений виртуализации с общими данными).
В гипервизоре Bhyve и модуле vmm реализована поддержка прикрепления к гостевой системе более 15 виртуальных CPU (регулируется через sysctl hw.vmm.maxcpu). В утилите bhyve реализована эмуляция устройства virtio-input, при помощи которого можно подставлять события ввода с клавиатуры и мыши в гостевую систему.
В KTLS, реализацию протокола TLS, работающую на уровне ядра FreeBSD, добавлена поддержка аппаратного ускорения TLS 1.3 через вынос на сторону сетевой карты некоторых операций, связанных с обработкой зашифрованных входящих пакетов. Ранее подобная возможность была доступна для TLS 1.1 и TLS 1.2.
В стартовом скрипте growfs при расширении корневой ФС обеспечено добавление раздела подкачки, если такой раздел изначально отсутствовал (например, полезно при установке на SD-карту готового системного образа). Для управления размером подкачки в rc.conf добавлен новый параметр growfs_swap_size.
В стартовом скрипте hostid обеспечена генерация случайного UUID в случае отсутствия файла /etc/hostid и невозможности получения UUID от аппаратного обеспечения. Также добавлен файл /etc/machine-id с компактным представлением идентификатора хоста (без дефисов).
В rc.conf добавлены переменные defaultrouter_fibN и ipv6_defaultrouter_fibN, через которые можно добавить маршруты по умолчанию в FIB-таблицы, отличные от первичной.
В библиотеку libmd добавлена поддержка хэшей SHA-512/224.
В библиотеке pthread реализована поддержка семантики функций, используемых в Linux.
В kdump добавлена поддержка декодирования системных вызовов Linux. В kdump и sysdecode добавлена поддержка трассировки системных вызовов в стиле Linux.
В утилите killall появилась возможность отправки сигнала процессам, привязанным к определённому терминалу (например, "killall -t pts/1").
Добавлена утилита nproc для вывода числа доступных текущему процессу вычислительных блоков.
В утилиту pciconf добавлена поддержка декодирования параметров ACS (Access Control Services).
В ядро добавлена настройка SPLIT_KERNEL_DEBUG, позволяющая сохранять в отдельные файлы отладочную информацию для ядра и модулей ядра.
В ABI linux почти завершена реализации поддержки механизма vDSO (virtual dynamic shared objects), предоставляющего ограниченный набор системных вызовов, доступный в пространстве пользователя без переключения контекста. ABI linux на системах ARM64 доведён до паритета с реализацией для архитектуры AMD64.
Улучшена поддержка оборудования. Добавлена поддержка мониторинга производительности (hwpmc) для CPU Intel Alder Lake. Обновлён драйвер iwlwifi для беспроводных карт Intel c поддержкой новых чипов и стандарта 802.11ac. Добавлен драйвер rtw88 для беспроводных карт Realtek с интерфейсом PCI. Расширены возможности прослойки linuxkpi для использования во FreeBSD драйверов Linux.
Библиотека OpenSSL обновлена до версии 1.1.1t, LLVM/Сlang до версии 14.0.5, а SSH-сервер и клиент обновлены до OpenSSH 9.2p1 (в прошлой версии использовался OpenSSH 8.8p1). Также обновлены версии bc 6.2.4, expat 2.5.0, file 5.43, less 608, libarchive 3.6.2, sendmail 8.17.1, sqlite 3.40.1, unbound 1.17.1, zlib 1.2.13.
Дополнительно объявлено о переводе в разряд устаревших и удалении начиная с ветки FreeBSD 14.0 одноразовых паролей OPIE, драйверов ce и cp, драйверов для карт с интерфейсом ISA, утилит mergemaster и minigzip, компонентов ATM в netgraph (NgATM), фонового процесса telnetd и класса VINUM в geom.
Модель разработки FreeBSD
Существует около 4000 разработчиков, которые работают над системой на добровольной основе. Все они могут читать дерево
репозитория
, но не могут вносить изменения. Вместо этого разработчик обращается к
, который имеет право вносить изменение в код. Существует около 400 коммитеров. Разработчик может вырасти по социальной лестнице проекта и стать коммитером. Кандидатуру нового коммитера предлагает к рассмотрению ментор будущего коммитера. В зависимости от основной области деятельности, новый коммитер утверждается основной командой, portmgr@ или docmgr@. Основная команда является административным ядром проекта и состоит из 9 человек, которые выбираются на 2 года коммитерами из своего состава. Основная команда решает конфликты между коммитерами
.
Участники проекта разрабатывают ветку 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 объявили
о переводе архитектуры i386 (32-разрядные системы x86) на второй уровень поддержки платформ (Tier 2
). Изменения вступят в силу начиная с выпуска 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 не сформированы.
Варианты установки
Операционная система FreeBSD может быть установлена с различных носителей, таких как:
В настоящее время FreeBSD предоставляет пользователю две взаимодополняющие технологии установки программного обеспечения сторонних разработчиков: коллекция портов FreeBSD и бинарные пакеты с программным обеспечением. Любая из этих систем может быть использована для установки самых последних версий приложений с локальных носителей или прямо из сети.
Поддерживаемые устройства перечислены в документе FreeBSD 12.1-RELEASE Hardware Notes.
Другие конфигурации также могут работать, но пока ещё не были протестированы. Списки поддерживаемых идентификаторов устройств доступны в стороннем репозитории.
В 2020 году был представлен новый проект для автоматического сбора информации о протестированных конфигурациях оборудования.
Талисманы-логотипы
Основным талисманом системы является красный демонёнок, известный также как
Beastie
. Кроме него, талисманом также считается
Devilette
, девушка в красном костюме демона.
Если вы не согласны с этим, пожалуйста, покажите в тексте существенность излагаемого материала. В противном случае раздел может быть удалён. Подробности могут быть
на странице обсуждения
.
DesktopBSD
— дистрибутив для домашнего использования.
DragonFly BSD
— ответвление от FreeBSD 4.8, созданное как логическое продолжение 4-й ветви. Она включает систему потоковой обработки сообщений, похожую на ту, которая используется в системах с
микроядром
.
FreeNAS
— основанное на m0n0wall сетевое хранилище
NAS
.
— дистрибутив FreeBSD с графическим окружением по умолчанию.
GhostBSD
— LiveCD с настольной средой Mate по умолчанию.
HardenedBSD
helloSystem — Настольная система, ориентированная на простоту, элегантность и удобство использования для пользователей macOS, недовольных политикой Apple.
— компактный дистрибутив FreeBSD.
— миниатюрный загрузочный LiveCD на базе FreeBSD, загружаемой полностью в оперативную память компьютера.
TrueBSD
— белорусский LiveDVD-дистрибутив на основе FreeBSD.
TrueOS (ранее PC-BSD
) — дистрибутив с графическим инсталлятором
PBI
и настольной средой Lumina по умолчанию.
XigmaNAS
— свободная операционная система для сетевого хранилища.
— дистрибутив направленный на работу в роутерах Asus, Buffalo, D-Link, NorthQ, Soekris, TPLink, Ubiquiti
XNU
— ядро
Mac OS X
, многие команды взяты от FreeBSD 4/5, разрабатывается компанией
Apple
, весьма дальний родственник FreeBSD, так как использует ядро
Mach
.
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.
. — 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
.
(англ.)