FreeBSD

FreeBSD - вільна Unix-подібна операційна система, нащадок AT & T Unix по лінії BSD, створеній в університеті Берклі. FreeBSD працює на PC-сумісних системах сімейства x86, включаючи Microsoft Xbox, а також на DEC Alpha, Sun UltraSPARC, IA-64, AMD64, PowerPC, NEC PC-98, ARM. Готується підтримка архітектури MIPS.

FreeBSD розробляється як цілісна операційна система. Вихідний код ядра, драйверів пристроїв і базових призначених для користувача програм (т. зв. userland) [2], таких як командні оболонки і т. п., міститься в одному дереві системи управління версіями (до 31 травня 2008 - CVS, зараз - SVN). Це відрізняє FreeBSD від GNU / Linux - іншої вільної UNIX-подібної операційної системи - в якій ядро розробляється однією групою розробників, а набір призначених для користувача програм - іншими (наприклад, проект GNU), а численні групи збирають це все в єдине ціле і випускають у вигляді різних дистрибутивів Linux.

FreeBSD добре зарекомендувала себе як система для побудови інтранет - і інтернет-серверів. Вона надає достатньо надійні мережеві служби і ефективне управління пам'яттю.

Крім своєї стабільності, FreeBSD популярна і завдяки своїй ліцензії, яка істотно відрізняється від широко відомої ліцензії GNU GPL - вона дозволяє використовувати код не тільки у вільному ПЗ, але і в пропрієтарного. На відміну від GNU LGPL, яка теж дозволяє використовувати вільний код в закритій програмі [3], ліцензія BSD більш проста й коротка.


1. Історія

Розробка FreeBSD почалася в 1993 з швидкорослого набору патчів користувачів системи 386BSD. Цей набір пізніше виріс і відокремився від 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 містить більш детальну історичну інформацію про походження системи [4].


2. Версії системи

На 31 грудня 2012 останній реліз FreeBSD має номер 9.1 [1].

2.1. FreeBSD 3

3.0-RELEASE анонсована 13 жовтня 1998. Основна відмінність від 2.2 - перехід на ELF виконувані файли. Останній 3.5-RELEASE вийшов 23 червня 2000 року.

2.2. FreeBSD 4

4.0-RELEASE з'явилася в березні 2000 і остання версія 4.11 була випущена в січні 2005. FreeBSD 4 була дуже популярною в інтернет-провайдерів і хостерів часів першого " міхура доткомів "і вважалася однією з найстабільніших і високопродуктивних систем класу Unix.

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

FreeBSD 4 поставила своєрідний рекорд за тривалістю розробки однієї гілки операційної системи - за п'ять років було усунено велику кількість помилок і отримана на рідкість стабільна система.

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


2.3. 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 були визнані стабільними і високопродуктивними, але більш ранні версії не годилися для використання в робочих умовах.


2.4. FreeBSD 6

FreeBSD 6.0 була випущена 4 листопада 2005. 11 листопада 2008 була випущена версія 6.4. Ці версії є продовженням оптимізації підтримки SMP і багатопоточності укупі з розширеною підтримкою стандарту 802.11, записом подій безпеки проекту TrustedBSD, серйозними поліпшеннями продуктивності мережевої підсистеми. Основне досягнення цього релізу - виключення "гігантської блокування" (Giant lock) з віртуальної файлової підсистеми ( VFS), реалізація додаткової, більш продуктивної підтримки багатопоточності (libthr) з моделлю 1:1, і додавання OpenBSM - первинного модуля безпеки, який був створений проектом TrustedBSD.


2.5. FreeBSD 7

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

  • оптимізований мережевий протокол транспортного рівня SCTP,
  • експериментальна адаптована версія файлової системи ZFS (розробленої компанією Sun),
  • компілятор GCC4.2,
  • базова підтримка платформи ARM,
  • новий менеджер пам'яті jemalloc, оптимізований для паралельних обчислень [5],
  • великі зміни і оптимізації підсистем роботи з мережами, аудіопристрій і SMP -системами [6],

Нова система показала значні поліпшення в швидкості в порівнянні з попередніми версіями і системою Linux [7].

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 для цієї гілки майже завершена [8].

24 січня 2011 вийшла версія 7.4.

Підтримка гілки FreeBSD 7 спливає 28 лютого 2013


2.6. FreeBSD 8

Про вихід релізу FreeBSD 8.0 було оголошено 25 листопада 2009 [9]. Серед нововведень у цій версії можна відзначити:

  • експериментальна підтримка 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.



2.7. FreeBSD 9

FreeBSD 9.0 випущена 12 січня 2012. Основні зміни:

  • Перехід на новий модульний інсталятор BSDInstall
  • Інтеграція в систему LLVM 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

2.8. FreeBSD 10 (остання)

Експериментальна основна гілка розробки операційної системи призначена для розробників, тестерів і всіх тих, хто цікавиться реалізаціями нових технологій в FreeBSD. Останню версію системи завжди можна скомпілювати і зібрати з вихідного коду, доступного в публічному CVS-або SVN-репозиторії. Важлива інформація про всі зміни в системі публікується у файлі / usr / src / UPDATING.

Основні зміни:

  • FreeBSD-CURRENT переведений за замовчуванням на Clang 3.2
  • Підтримка TRIM для SSD в ZFS [10]
  • Реалізована початкова підтримка демона auditdistd, що дозволяє організувати ведення повного логу подій, який, зокрема, може бути корисний для аналізу причин і наслідків інцидентів, пов'язаних з порушенням безпеки. В даний час ядро ​​передає події аудиту безпосередньо у файл або через пристрій / dev / auditpip
  • GEOM_LABEL почав підтримувати в імені спецзнаки% і "

Почалася публікація настановних зборок для знаходяться в розробці гілок FreeBSD, які можна скачати з сервера (Швидке дзеркало для Європи: mirror.yandex.ru), (Офіційне дзеркало: ftp.freebsd.org).


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

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

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

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

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

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

В настоящее время поддерживаются стабильные ветви разработки 7-STABLE, 8-STABLE и 9-STABLE и текущая 10-CURRENT. Группа разработчиков, исправляющих проблемы безопасности системы (security officers) поддерживает ветвь 7-STABLE для тех пользователей, которые ещё не обновили FreeBSD до версии 8 и 9.


4. Варіанти установки

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


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

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

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


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

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

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

BSD-ліцензія дозволяє зберігати комерційну таємницю при модифікації FreeBSD для вбудованих систем і виробляти інші похідні пропрієтарні системи, що робить FreeBSD привабливою для промисловості [13]. Разом з тим, залишається невідомим, в який конкретно техніці застосовують FreeBSD, крім маршрутизаторів Juniper і ТВ-панелей [14]. Нижче наведені вільні похідні операційні системи.

  • DragonFly BSD - відгалуження від FreeBSD 4.8, створене як логічне продовження 4-й гілки. Вона включає систему потокової обробки повідомлень, схожу на ту, яка використовується в системах з мікроядром.
  • FreeSBIE - LiveCD -дистрибутив FreeBSD, схожий на дистрибутив Linux під назвою Knoppix.
  • Frenzy - інший проект по створенню LiveCD на основі FreeBSD, орієнтований в першу чергу на російськомовних системних адміністраторів.
  • TrueBSD - білоруський LiveDVD-дистрибутив на основі FreeBSD.
  • BSDeviant - ще один LiveCD.
  • PicoBSD - версія FreeBSD на одній дискеті.
  • MiniBSD - компактний дистрибутив FreeBSD.
  • NanoBSD - ще один компактний дистрибутив FreeBSD.
  • mfsBSD - мініатюрний завантажувальний LiveCD на базі FreeBSD, що завантажується повністю в оперативну пам'ять комп'ютера.
  • Debian GNU / kFreeBSD - похідна версія, що базується на наборі інструментів GNU, розробляється групою користувачів Debian.
  • Darwin - ядро Mac OS X, багато команд взяті від FreeBSD 4/5, розробляється компанією Apple, вельми далекий родич FreeBSD, так як використовує ядро Mach.
  • m0n0wall - вбудовуваний міжмережевий екран, заснований на FreeBSD.
  • pfSense - відгалуження від проекту m0n0wall, що відрізняється більшою функціональністю.
  • FreeNAS - засноване на m0n0wall мережеве сховище NAS.
  • PC-BSD - дистрибутив із графічним інсталятором і настільною середовищем KDE за замовчуванням.
  • РУС-BSD - русифікований дистрибутив для користувачів країн СНД, спирається на Frenzy і свої розробки.
  • GhostBSD - LiveCD з настільною середовищем GNOME за замовчуванням.
  • DesktopBSD - ще один дистрибутив для домашнього використання.
  • BSD Router Project (BSDRP) - компактний програмний роутер на базі FreeBSD.
  • zRouter - дистрибутив спрямований на роботу в роутерах Asus, Buffalo, D-Link, NorthQ, Soekris, TPLink, Ubiquiti [1]
  • RoFreeSBIE - Румунський дистрибутив заснований на FreeBSD.
  • MidnightBSD.
  • ІКС Server.

8. Великодні яйця

  • Якщо запустити Make C метою love, система видасть на stdout повідомлення Not war. (Працює тільки на версіях 7.0 і вище) [15].

9. Література

10.1. Книги

  • FreeBSD HandBook
  • Christopher Negus, Francois Caen, BSD UNIX Toolbox: 1000 + Commands for FreeBSD, OpenBSD and NetBSD, Wiley, May травня 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.
  • Брайан Таймен. FreeBSD 6. Повне керівництво = FreeBSD 6 Unleashed. - М .: "Вильямс", 2007. - 1056 с. - ISBN 5-8459-0741-1
  • Harald Zisler, FreeBSD, Franzis Verlag GmbH, August 31 2006, 381 стор, ISBN 3-7723-6538-8
  • Родерік Сміт. Повний довідник по FreeBSD = FreeBSD: The Complete Reference. - М .: "Вильямс", 2005. - 672 с. - ISBN 5-8459-0576-1
  • Yanek Korff, Paco Hope, Bruce Potter., Mastering FreeBSD and OpenBSD Security, O'Reilly, March 2005. ISBN 0-596-00626-8.
  • Майкл Лукас. FreeBSD. Детальний керівництво = Absolute BSD. The Ultimate Guide to FreeBSD. - СПб. : Символ-Плюс, 2004. - 616 с. - ISBN 5-93286-066-9
  • 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.

10.1.2. Журнали