Розробка FreeBSD почалася в 1993 році із набору патчів користувачів системи 386BSD, що швидко зростав. Цей набір пізніше виріс і відокремився від 386bsd в окрему операційну систему, що увібрала код від Free Software Foundation. Перша офіційна версія FreeBSD 1.0 вийшла у грудні 1993 року. Walnut Creek CDROM погодилася поширювати FreeBSD на компакт-диску і також надала для роботи проєкту окремий комп'ютер з інтернет-з'єднанням. Керівництво до FreeBSD містить докладнішу історичну інформацію про походження системи[1].
Проте, в січні 1995 року з міркувань законності використання запозиченого у 386BSD коду, а також через судовий процес між Novell та Берклі, проєкт випустив спеціальну версію системи FreeBSD 2.0, де було переписано більшу частину її коду, чимало якого запозичено у 4.4BSD-Lite.
FreeBSD 3.0 приніс до проєкту багато змін: перехід до двійкового формату ELF, з'явилася початкова підтримка SMP-систем і 64-розрядної архітектури Alpha. У свій час, гілка 3.х серйозно критикувалася, оскільки багато змін не були очевидно вигідними і мало впливали на роботу, однак, вона була необхідним кроком у розвитку проєкту, котрий допоміг гілці 4.х стати дуже успішною.
FreeBSD 4 була дуже популярною серед інтернет-провайдерів і хостерів часів першої «бульбашки доткомів» і вважалася за одну з найстабільніших і високопродуктивних систем класу Unix. Одним з головних недоліків FreeBSD 4 вважається погана підтримка багатопроцесорних систем, особливо в режимі багатонитевості. FreeBSD 4 поставила своєрідний рекорд за тривалістю розробки однієї гілки операційної системи — за п'ять років було усунено велику кількість помилок і отримана на рідкість стабільна система. В середині розробки FreeBSD 4 від неї відокремився проєкт Dragonflybsd, засновники якого поставили собі за мету серйозну оптимізацію ядра для високо-навантажених систем, зокрема кращу підтримку багатопроцесорності (зменшення часу, необхідного для перемикання ниток і ін.).
Модель розробки FreeBSD
Існує близько 4000 розробників, які працюють над системою на добровільній основі. Всі вони можуть читати дерево репозиторія, але не можуть вносити зміни. Замість цього розробник звертається до комітера, який має право вносити зміну до коду. Існує близько 400 комітерів. Розробник може вирости по соціальних сходах проєкту і стати комітером. Кандидатуру нового комітера пропонує до розгляду ментор майбутнього комітера. Залежно від основної області діяльності, новий комітер затверджується основною командою, portmgr@ або docmgr@. Основна команда є адміністративним ядром проєкту і складається з 9 чоловік, які вибираються на 2 роки комітерами зі свого складу. Основна команда вирішує конфлікти між комітерами[2].
Учасники проєкту розробляють гілку CURRENT («поточна» версія) і декілька STABLE («стабільна», стабільність означає гарантію незмінності інтерфейсів, як API, ABI і так далі).
Новий код поміщають у гілку CURRENT, де він отримує ширше тестування. Нові функції, додані в CURRENT, можуть залишитися в системі або від них можуть відмовитися, якщо реалізація виявиться невдалою. Інколи ця версія може опинитися в непридатному для використання стані. З початком використання perforce як допоміжного репозиторія, і з виділенням projects/ області в svn, проєкт прагне гарантувати постійну працездатність CURRENT.
STABLE-версія містить тільки ті нововведення, які пройшли перевірку в CURRENT. Проте, ця версія теж призначена в основному для розробників. Не рекомендується оновлювати відповідальні робочі сервери до STABLE, заздалегідь її не протестувавши. На основі STABLE регулярно створюються ретельно протестовані розробниками, групою release-інженерів і ширшим довкола користувачів RELEASE-версії.
Після випуску релізів створюються додаткові гілки розробки для підтримки релізів, але в них вносяться лише найнеобхідніші зміни, що виправляють серйозні помилки або проблеми з безпекою системи. До четвертої версії FreeBSD у стабільної і поточної гілок був один і той же старший номер версії. Потім поточній гілці був привласнений номер 5, а у стабільної залишився номер 4.
Ліцензія
Як і споріднені з нею операційні системи, код FreeBSD розповсюджується під різними ліцензіями. Весь код ядра і весь новостворений код розповсюджується під ліцензією BSD, котра дозволяє будь-кому використовувати і розповсюджувати FreeBSD скільки їм заманеться.
FreeBSD популярна завдяки своїй ліцензії, яка істотно відрізняється від широко відомої ліцензії GNU GPL — вона дозволяє використовувати код не лише в вільному ПЗ, але і в пропрієтарному. На відміну від GNU LGPL, яка теж дозволяє використовувати вільний код в закритій програмі[3], ліцензія BSD простіша і коротша.
Частина коду утиліт розповсюджується за ліцензіями GPL, LGPL, ISC, CDDL та Beerware.
Деякий код доступний лише у двійковому вигляді, на кшталт шару абстрагування апаратних засобів (HAL) драйверів для бездротових пристроїв Atheros та утиліт для Adaptec AAC RAID (поставляється у вигляді пакету).
Сумісність з Linux
FreeBSD забезпечує сумісність з деякими іншими UNIX-подібними операційними системами, зокрема, з Лінукс. Шар сумісності надає можливість працювати з програмним забезпеченням для Лінукс, котре розповсюджується лише у двійковому форматі, і не може бути портовано на FreeBSD.
FreeBSD має два можливих варіанти сумісності: для користувачів та для розробників. Варіант для користувачів має назву, що починається linux_base а для розробників — linux_dist. Обидва варіанти можна встановити із портів, розділ emulators (емулятори).
Відгалуження
DragonFlyBSD — відгалуження від FreeBSD 4.8. Вона має систему потокової обробки повідомлень, схожу на ту, що застосовується в системах із мікроядром.
FreeNAS — дистрибутив на базі мінімального FreeBSD, орієнтований для створення NAS-систем
Була випущена довгоочікувана версія 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).
Ці версії є продовженням оптимізації підтримки smp і багатонитевості разом з розширеною підтримкою стандарту 802.11, записом подій безпеки проєкту TRUSTEDBSD, серйозними поліпшеннями продуктивності мережевої підсистеми. Основне досягнення цього реліза — виключення «гігантського блокування» (Giant lock) з віртуальної файлової підсистеми (VFS), реалізація додаткової, продуктивнішої підтримки багатонитевості (libthr) з моделлю 1:1, і додавання OPENBSM — первинного модуля безпеки, який був створений проєктом TRUSTEDBSD.
можливість призначення декілька 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 хост-контроллеров (кард-рідеров);
практично необмежена масштабованість 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 відповідно.
Початкова підтримка завантаження FreeBSD / amd64 на системах з UEFI. Формування додаткових завантажувальних образів для CD / DVD і flash-накопичувачів з підтримкою завантаження на системах з UEFI;
Компоненти clang / llvm оновлені до випуску 3.4.1;
Пакетний менеджер pkg оновлено до версії 1.3.8;
За замовчуванням newsyslog тепер враховує не тільки newsyslog.conf а й включає конфігураційні файли з директорій /etc/newsyslog.conf.d/ і /usr/local/etc/newsyslog.conf.d/;
Внесено оптимізації в бібліотеку математичних функцій, додані нові реалізації функцій expl (), coshl (), sinhl (), tanhl (), erfl () і erfcl ();
Оновлення версій поставляються в базовій системі сторонніх додатків, у тому числі: OpenSSH 6.6p1 , утиліта nc синхронізована з OpenBSD 5.5, Sendmail 8.14.9, unbound 1.4.22, OpenPAM Ourouparia (20140912), OpenSSL 1.0.1j.
Оновлене з портів десктоп-оточення до: GNOME 3.14.2 і KDE 4.14.3;
Вирішені проблеми при використанні спільно з в'язниця GIF-і GRE-тунелями;
У ядро FreeBSD / i386 додана настройка PAE_TABLES, при якій в ртар[що це?] включається використання формату PAE при роботі з таблицями сторінок пам'яті в умовах 32-розрядної фізичної адресації. У даному режимі можливий маппінг пам'яті в режимі "No Execute", що дозволяє підвищити захищеність системи від деяких видів атак. Крім того, на відміну від режиму PAE, режим PAE_TABLES зберігає сумісність на рівні бінарних інтерфейсів (КБІ) з не-PAE ядрами, дозволяючи використовувати зібрані для них модулі і драйвери. При включенні режимі PAE_TABLES ліміти адресування пам'яті ядром дорівнює 4 гігабайти;
Підтримувана під FreeBSD інфраструктура емуляції оточення Linux CentOS обновлена до 6,6 (порт емулятори / Linux-С6). Пов'язані з емулятором порти адаптовані для використання CentOS 6.6, який тепер пропонується за замовчуванням замість пакетів на основі Fedora 10. Шар сумісності з ядром Linux, тепер посилається на випуск 2.6.18;
Код DRM-драйверів для графічних карт синхронізований з ядром Linux 3.8.13, що дозволило реалізувати IOCTL-виклики setmaster / dropmaster для вирішення проблеми із запуском одночасно декількох X-серверів;
Додана нова утиліта uefisign для формування цифрових підписів для файлів EFI, використовуваних для завантаження в конфігураціях з UEFISecure Boot. До складу завантажувача EFI включений bzipfs;
Представлений новий RC-скрипт growfs, призначений для здійснення операції по зміні розміру КОРЕНЕВОЇ ФС під час Першої Завантаження (якщо створений файл / FirstBoot), даючи можливість автоматично зайняти кореневої ФС все нерозподілених місце на диску. Управління роботою скрипту проводиться через опцію growfs_enable в rc.conf. Скрипт також можна виконати вручну ("/etc/rc.d/growfs onestart"), а не на етапі перезавантаження;
FreeBSD 12.0
11 грудня 2018 року
У утиліту freebsd-update додані дві нові команди «updatesready» і «showconfig». У команді "zfs send" реалізована підтримка прапорів '-vnP'. У kvm додана підтримка 'ps -H'. Виправлені помилки, що зачіпають zfs, imx6, CPU Intel Atom, fsck_msdosfs, SCTP, ixgbe і vmxnet3.[25]
FreeBSD 13.0
13 квітня 2022 року
Утиліти clang, lld і lldb, а також бібліотеки compiler-rt, llvm, libunwind і libc++ оновлено до версії 11.0.1.
Видалено застарілі binutils 2.17 і gcc(1) 4.2.1 з дерева. Усі підтримувані архітектури тепер використовують ланцюжок інструментів LLVM/clang.
Ядро підтримує фреймування в ядрі та шифрування даних безпеки транспортного рівня (TLS) на сокетах TCP для TLS версій 1.0–1.3.
Варіанти установки
Операційна система FreeBSD може бути встановлена з різних носіїв, таких як:
В даний час FreeBSD надає користувачеві дві взаємодоповнюючі технології установки програмного забезпечення сторонніх розробників: колекція портів FreeBSD і бінарні пакети з програмним забезпеченням. Будь-яка з цих систем може бути використана для установки найостанніших версій додатків з локальних носіїв або прямо з мережі. Тепер колекція портів налічує понад 22 тис. додатків самого різного призначення[26].
Талісмани та логотипи
Спочатку FreeBSD використовувала як свій логотип демона BSD, однак у 2005 році, був влаштований конкурс на створення нового логотипу. 8 жовтня2005 змагання завершилися, і переміг у них Anton K. Gural, малюнок котрого став новим логотипом проєкту. Однак, демон BSD залишається талісманом проєкту FreeBSD.
Крім того, талісманом також вважається Devilette — дівчина в червоному костюмі демона.
Список являє собою всі історичні й нібито фактичні часові зони на території України, які відбивають історичні зміни до прийнятого 1996 року закону "Про порядок обчислення часу на території України"[27]. Однак ці опції все одно частково суперечать постанові про єдиний київський час на всій території України від 1992 року[28] і небезпідставно, особливо недотичними назвами, викликають непорозуміння в громадян України, підозри в підтримці сепаратизму в Україні, підтримці російського тероризму, а також сприймаються як загалом неетичні й неповажні до національних почуттів українців, про що свідчать наявні повідомлення про вади системи на офіційному сайті[29][30].
Всі такі повідомлення про вади закрито як вирішені, підтримувачі ОС перекладають відповідальність на розробників бази даних часових поясів. 10 березня 2020 до проєкту часових зон, на який спирається FreeBSD, внесено правки по назвах історичних часових зон України. Зокрема внесок запроваджує такі важливі зміни як видалення MSK з назви часового пояса Криму, а також перейменування Ruthenia на Transcarpathia.[31]
Відомі користувачі
FreeBSD використовують як платформу на багатьох[32] великих серверах такі компанії, як:
↑Архівована копія. Архів оригіналу за 6 січня 2012. Процитовано 22 січня 2012.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Архівована копія. Архів оригіналу за 19 січня 2012. Процитовано 22 січня 2012.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Архівована копія. Архів оригіналу за 4 січня 2012. Процитовано 22 січня 2012.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Архівована копія. Архів оригіналу за 17 січня 2012. Процитовано 22 січня 2012.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Архівована копія. Архів оригіналу за 15 січня 2012. Процитовано 22 січня 2012.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Архівована копія. Архів оригіналу за 27 січня 2012. Процитовано 22 січня 2012.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Архівована копія. Архів оригіналу за 23 січня 2012. Процитовано 22 січня 2012.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Архівована копія. Архів оригіналу за 22 січня 2008. Процитовано 22 січня 2012.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Архівована копія. Архів оригіналу за 2 березня 2008. Процитовано 22 січня 2012.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Архівована копія. Архів оригіналу за 28 березня 2012. Процитовано 22 січня 2012.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Архівована копія. Архів оригіналу за 20 січня 2012. Процитовано 22 січня 2012.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Архівована копія. Архів оригіналу за 21 січня 2012. Процитовано 22 січня 2012.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
↑Архівована копія. Архів оригіналу за 22 вересня 2013. Процитовано 15 вересня 2013.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)