FreeBSD в деталях. О плюсах и минусах системы

Многие Linux пользователи уже слышали про FreeBSD, эта система использует ядро BSD, похожее на Linux, поскольку оба ядра основаны на Unix и поддерживают одни и те же стандарты POSIX. Это такая же свободная, бесплатная операционная система с открытым исходным кодом, разработанная для обеспечения максимальной безопасности и гибкости. Чаще всего она используется на серверах. Основное отличие от Linux в том, что разработкой ядра и программного обеспечения занимается одна команда разработчиков.

FreeBSD поддерживает множество различных процессорных конфигураций, от серверов до микрокомпьютеров, таких как Raspberry Pi. Как и Linux, система поставляется с множеством программ, которые можно очень просто установить с помощью портов. Всего доступно более 20 000 пакетов. В этой инструкции мы рассмотрим как выполняется установка FreeBSD 11 последней, на данный момент, версии на компьютер amd64. Будем устанавливать версию с интерфейсом командной строки, она лучше всего подходит для серверов.

Как обычно, сначала нам нужно скачать установочный образ, и только потом может быть выполнена установка и настройка freebsd 11.

На официальном сайте есть несколько версий для разных архитектур, нам нужна amd64 или x86, в зависимости от количества оперативной памяти, которую вы желаете использовать.

Мы будем устанавливать последнюю версию FreeBSD 11.1, но если позже выйдет более новая версия, то я думаю, что статья будет все еще актуальна и для нее.

Шаг 2. Запись образа на диск

Далее вам нужно записать полученный образ на диск или на флешку. Вы можете использовать один из известных вам методов для этого. Например, в Linux вы можете использовать Unetbootin или Etcher, а в Windows есть Rufus.

Далее вставьте носитель в компьютер и измените настройки BIOS так, чтобы загрузка выполнялась из вставленного носителя. Чтобы войти в BIOS, во время загрузки нажмите одну из клавишей: F2, F11, F12 перед загрузкой операционной системы. Затем перейдите на вкладку "Boot" и поставьте там ваш носитель на первое место.

Установка FreeBSD 11

Шаг 3. Меню загрузчика

В первом меню загрузчика вам не нужно менять никаких параметров. Просто нажмите "Enter" для продолжения работы:

Шаг 4. Выбор действия

Шаг 5. Раскладка клавиатуры

Выберите вашу раскладку клавиатуры, по умолчанию используется английская, в большинстве случаев лучше ее оставить:

Шаг 6. Имя хоста

Введите имя хоста для новой системы:

Шаг 7. Выбор программ

На следующем экране вам предстоит выбрать компоненты системы, которые вы хотите установить FreeBSD 11 на свой компьютер. Для того, чтобы отметить компонент нажмите "Пробел" . Для сервера достаточно оставить библиотеки совместимости lib32 и Ports.

Когда завершите, нажмите "Enter" .

Шаг 8. Автоматическая разметка диска

Дальше нужно выполнить разметку диска. Вы можете довериться установщику и выполнить автоматическую разметку или же сделать все вручную. Если у вас есть несколько жестких дисков, которые необходимо подключить, лучше использовать ZFS. Но мы рассмотрим на примере UFS.

Затем выберите таблицу разделов. Если ваш диск больше 2 Тб или вы используете UEFI вместо BIOS, то вам лучше использовать GPT, в всех остальных случаях более предпочтительно MBR. Даже будет лучше если вы отключите защищенную загрузку и будете использовать MBR:

В следующем окне система покажет вам созданные разделы. В случае MBR будет создано два раздела - корень и раздел подкачки. Используйте "Tab" для выбора кнопки "Commit" , а затем нажмите "Enter" :

Шаг 9. Установка FreeBSD


Шаг 10. Пароль суперпользователя

Когда установка завершится, система предложит вам ввести пароль для суперпользователя. Установщик спросит пароль два раза, но он не будет отображаться на экране:

Шаг 11. Настройка сети

Затем выберите "Yes" , чтобы выполнить настройку ip адреса IPv4:

Вы можете выбрать вариант получения адреса по DHCP или настроить его вручную:

Настройку адреса IPv6 можно пропустить:

Последний этап настройки сети - настройка DNS серверов. Лучше всего добавить, кроме стандартного, DNS сервер от Google - 8.8.8.8:

Шаг 12. Регион

Выберите географический регион, в котором расположен ваш компьютер:

Затем выберите вашу страну:

Шаг 13. Настройка даты

На следующем этапе нужно ввести текущую дату и время, если они были неверно получены из сети:


Дальше нужно выбрать какие сервисы будут загружаться по умолчанию при старте системы. Например, SSH, NTP и Powerd. Последний позволяет автоматически регулировать частоту процессора в зависимости от нагрузки на систему.

Шаг 15. Дополнительные оптимизации

Эти опции позволяют усилить безопасность вашей системы. Отключите доступ к буферу ядра для непривилегированных пользователей. Отключите отладку, Включите очистку /tmp во время загрузки, отключите сокет Syslogd и Sendmail если вы не планируете использовать почтовый сервер:

Шаг 16. Другие пользователи

Дальше установщик спросит вас не желаете ли вы добавить к системе еще пользователей. Выберите "yes" и введите всю необходимую информацию о пользователе. Безопаснее всего оставить все поля по умолчанию, для этого достаточно нажимать "Enter" :

В качестве оболочки вы можете выбрать Bourne shell (sh) или tcsh. Когда завершите, просто наберите "Yes" :

Шаг 17. Завершение установки

На последнем экране перед вами появится простое меню действий. Если вы не хотите ничего менять, просто выберите первый пункт - "Exit" и ответьте "no" , чтобы перезапустить компьютер:


  • Перевод

FreeBSD хороша для серверов, но не для настольных компьютеров

У FreeBSD есть полнофункциональная звуковая подсистема c низкой задержкой, а смешивание в ядре позволяет нескольким приложениям воспроизводить звуки одновременно (с независимыми настройками громкости) без дополнительных настроек. Дефолтные настройки включают в себя X.org и настройки рабочего стола, такие как KDE или GNOME, это так же просто как выбрать метапакет в зависимости от того, какой вы предпочитаете.

Если даже это кажется слишком сложным, PC-BSD - полнофункциональная настольная система, созданная поверх FreeBSD с простым в использовании установщиком и опцией коммерческой поддержки.

FreeBSD использует модель закрытого развития

FreeBSD развивают более 400 разработчиков по всему миру, все они имеют полный доступ ко всей системе и данным этой ОС. Третьи лица так же зачастую фиксят родные патчи. Если Вы хотите увидеть количество исправленных патчей, вы можете поискать "Submitted by" в логах фиксации.

Нет никаких жестких рамок для FreeBSD. Решения приняты людьми готовыми сделать работу. Если все же возникают споры, то они разрешаются группой разработчиков, которые избираются каждые два года. Обязательным критерием, по которому избираются разработчики, является обязательное исправление или доработка кода проекта в прошлых годах.

FreeBSD - Просто OS X без красивого GUI интерфейса

Это такой же миф про OS X, как и про FreeBSD: OS X просто FreeBSD с красивым графическим интерфейсом. Эти две операционных системы действительно совместно используют часть кода, например большинство утилит пользовательского пространства и библиотека C по OS X получены из версий FreeBSD. Часть этого кода развивается в разное время и в разных направлениях, например FreeBSD 9.1 позднее включила стек C++ и компилятор, который первоначально были разработаны для OS X сотрудниками Apple. Так же есть и кардинально разные детали.

Ядро XNU, которое используется на OS X включает в себя несколько подсистем из более старых версий FreeBSD, но в основном считаются независимой реализацией. Но все же за счет своего сходства продукты реализованные на OS X значительно проще адаптировать под FreeBSD. Например libdispatch и libc ++ были записаны для OS X и работали на FreeBSD раньше, чем на любой другой ОС.

В FreeBSD все необходимо компилировать с исходного кода

Коллекция портов FreeBSD представляет собой очень мощный способ установки программного обеспечения, что позволяет настраивать параметры для различных сторонних программ и библиотек. Однако, это не единственный способ установки программного обеспечения на FreeBSD. Всегда можно установить программное обеспечение из бинарных пакетов. Проект pkgng добавил новый формат пакета и инструмент управления пакетами, обеспечив современный набор инструментов для двоичного управления.

Вы можете установить pkgng из портов (ports-mgmt/pkg) на более старых версиях FreeBSD. Она включена по умолчанию на FreeBSD 9.1 и более поздние версии.

FreeBSD это UNIX из 90-х (или 80-ых)

FreeBSD - линейный потомок исходного UNIX через Распределение программного обеспечения Беркли, но она продолжала развиваться отдельно. За последние несколько лет мы видели, что ZFS становится значительно производительней: поддержка 10 ГБ, 40 ГБ и 100 ГБ канала, улучшеная звуковая подсистема, поддержка 802.11n и других улучшений.

Это не означает, что FreeBSD отказалась от своих UNIX корней. Есть много причин, почему UNIX системы стали популярными. Они включают в себя свободно распространяемую систему, которую легко портировать на новые платформы, набор простых инструментов и ядро, которое хорошо зарекомендовало себя на различных платформах. FreeBSD поддерживает эти традиции.

Весь хороший код в FreeBSD родом из Solaris

FreeBSD импортировала две функции высокого профиля из OpenSolaris: DTrace и ZFS. Обе теперь хорошо поддерживаются FreeBSD. ZFS, в частности, находится в центре внимания многих разработчиков FreeBSD, в том числе тех, которые используются iXsystems, компанией, которая поддерживает развитие FreeNAS и продает коммерческие NAS устройства на базе FreeBSD. Разработчики FreeBSD также работают в тесном сотрудничестве с разработчиками Illumos, одной из веток с открытым исходным кодом Solaris, для улучшения обеих этих функций.

Несмотря на преимущества ZFS, это по-прежнему относительно небольшая часть общей системы. ZFS и DTrace составляют менее чем 4% кода в ядре, которое равно почти 10% кода в основной системе. Если считать, что только 0.4% FreeBSD хороши, то система не приобрела бы такой популярности.

FreeBSD не имеет драйверов

Это проблема, с которой сталкиваются все операционные системы, - даже новые версии Windows. Большую часть времени пользователи не заботятся об общем количестве драйверов, только если драйверы уже установлены по умолчанию. Есть некоторые упущения с точки зрения поддержки драйверов, но FreeBSD поддерживает широкий спектр сетевых карт (в том числе 802.11n чипсеты), большинство звуковых карт AMD, Intel и графические процессоры NVIDIA.

Поддержка аппаратных средств - это та часть реализации, которая требует постоянной доработки, потому что нельзя просто сказать производителям аппаратных средств, чтобы они подождали пару лет, пока разработчики ПО их догонят. Обеспечение поддержки новых устройства занимает время для настройки, хотя некоторые производители сами обеспечивают драйверы, например Nvidia обеспечивает драйверы для их GPU и Intel для новейших сетевых контроллеров. Другие производители обеспечивают помощь в разработке драйверов FreeBSD, включая Broadcom, JMicron, HP, Mellanox, Chelsio и Solarflare. Если Вы знаете устройства, которые не поддерживаются FreeBSD, лучше сообщить про это разработчикам и производителям устройств. Как правило, лучшим толчком для решения проблемы со стороны производителей - сообщение о том, что их клиенты не могут использовать их продукты.

FreeBSD 4.x лучшее из всего что было

4.x релиз был самым стабильным и FreeBSD гордились тем, что они смогли реализовать такой продукт. Многие пользователи продолжали использовать его на протяжении многих лет. Серия 5.x вышла во время перехода к оптимизации многопоточности. Эта включало замену одной блокировки вокруг ядра с рядом меньших блокировок, которые используются отдельными подсистемами. Это требовало большого куска работы, что не могло не привести к некоторым ошибкам. 5.x поставлялась с двумя реализациями поточной обработки, а это еще больше осложняло ситуацию. Первые два выпуска в серии 5.x были отмечены «только разработчикам», но 5.2 была нацелена на более широкую аудиторию и не оправдала ожиданий пользователей системы FreeBSD. Ряд крупных пользователей решили не менять серию 4.x.

Серия 5.x была болезненным уроком для проекта. В серии 6.x восстановили стабильность выпуска 4.x., а в серии 7.x восстановили производительность одного процессора. Во время выпуска серии 8.x можно было увидеть ряд опубликованных третьими лицами тестов, которые продемонстрировали лучшую масштабируемость FreeBSD на многопроцессорных системах, чем любая другая операционная система.

Все эти релизы имели значительное количество улучшений, такие как улучшенная звуковая подсистема, ZFS, DTrace, ведение журналов UFS и многое другое, но стабильность и производительность остались ключевыми задачами системы FreeBSD.

Недостатки программного обеспечения FreeBSD

Коллекция FreeBSD в настоящее время содержит более 26 000 единиц программного обеспечения. Трудно сравнить это число с другими репозиториями, потому что программы разделены по-другому (например, GCC порт в FreeBSD устанавливает программы и библиотеки, которые разделены между 6-10 пакетами в Debian, в зависимости от версии GCC), но большинство вещей Вы все же можете там найти. Одной из причин, по которой пользователи выбирают FreeBSD является тот факт, что набор портов обеспечивает определенную, относительно неясную часть программного обеспечения, в котором она нуждается, в то время как другие системы этого не делают.

Большая часть программного обеспечения в наборе портов работает исходно на FreeBSD. Большая часть программного обеспечения с открытым исходным кодом - агностик относительно ОС и требует, чтобы минимальная модификация была скомпилирована и работала на FreeBSD. Есть исключения такие как Valgrind, которые требуют детального понимания системы. Проприетарное программное обеспечение может быть более серьезной проблемой. Некоторые разработчики, такие как Opera, обеспечивают FreeBSD своим исходным кодом.

Другое программное обеспечение должно работать в режиме эмуляции. Например, бинарные файлы Linux могут работать на уровне Linux ABI, где системные вызовы Linux переводятся на их эквиваленты FreeBSD. Единственный изъян - немного увеличенная нагрузка системных вызовов; обычно сложно измерить различие в производительности между выполнением программ Linux на Linux и на FreeBSD: в некоторых случаях программы работают быстрее на FreeBSD, чем на Linux из-за более эффективных реализаций базовых вызовов. Например, версия Linux Flash-плагина может работать, используя NSPluginWrapper на уровне Linux ABI с собственным веб-браузером.

Аналогичное решение существует для запуска Windows приложений.

FreeBSD не поддерживает виртуализацию

FreeBSD 9 работает как гость Xen (domU) и на x86, и на x86-64, включая Amazon EC2. Благодаря работе, проделанной совместно с Microsoft, NetApp и Citrix, FreeBSD можно запускать на Hyper-V гипервизора Microsoft. FreeBSD 11 будет включать Dom0 поддержку управления домена.

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

И наконец, если Вам не требуется полная виртуализация, то для выполнения изолированных пространств пользователя FreeBSD (или даже пространств пользователя Linux, используя уровни Linux ABI) на одном ядре FreeBSD Вы можете использовать подсистему контейнеров. Контейнеру можно даже предоставить их собственный независимый сетевой стек и т.д., и таким образом, одна машина может использоваться, чтобы эмулировать целый парк машин.

Лицензия BSD способствует взаимному сотрудничеству

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

Некоторые компании, почти наверняка возьмут наш код, изменят его и никогда ничего не предоставят взамен.

Рассмотрим в качестве примера случай двух крупнейших интернет-компаний: Google и Yahoo! Прежде их внутренняя инфраструктура основывалась на операционной системе GPL, в то время как более поздние версии уже используют FreeBSD. Поскольку Google не распределяет их измененную операционную систему, они могут сохранить к примеру GoogleFS в частной собственности. В таких случаях как этот, где программное обеспечение разработано для внутреннего использования, по лицензионному соглашению компания не обязана раскрывать свои доработки для разработчиков FreeBSD.

Существуют, однако, некоторые проблемы с соединением: например, нельзя использовать библиотеку с лицензией GPL, если уже используется BSD.

На протяжении многих лет не мало компаний внесло значительный вклад в FreeBSD. И вызвано это не только чувством альтруизма, ведь поддержка любого проекта, который быстро развивается, очень дорогое удовольствие.

В данной статье рассмотрим операционную систему – FreeBSD, чем она привлекает пользователей и какие недостатки имеет. Еще в 1993 году началась разработка операционной системы FreeBSD (Berkeley Software Distribution) , в этом же году вышла первая официальная версия. Последний релиз системы появился в августе 2015. Как видим, ОС FreeBSD стабильно развивается и естественно имеет своих поклонников. Давайте разберемся, за что так пользователи любят FreeBSD и какие недостатки имеет данная система.

Многие пользователи часто сравнивают FreeBSD с Linux , так как обе эти системы похожи между собой. Общая черта: свободная загрузка из сети, открытые исходники, бесплатность, форумы поддержки, где можно найти много приверженцев данной ОС. Основные отличия Linux и BSD более подробно .

Главные преимущества системы FreeBSD:

  • Стабильность работы. Несколько лет назад компания Netcraft привела к сведенью результаты анализа работы сайтов. Наиболее долгую непрерывную работу (по календарным дням) имели веб-проекты, которые работали под управлением FreeBSD.
  • Бесплатное скачивание ОС. Большинство пользователей всегда делают выбор в пользу бесплатных систем, и не обременяют себя покупкой дорогих лицензий для ОС. Таким образом скачать и установить FreeBSD Вы можете абсолютно бесплатно.
  • Открытый исходный код. Любой желающий может вносить свои правки в код и выполнять желаемые проверки без проблем, правда, есть некие ограничения, но они слишком минимальны.
  • Качественность. Многие популярные на весь мир веб-сервисы используют данную систему, что есть беспорным подтверждением качества работы. За оценками экспертов почти 40% серверов на рынке СНГ работают именно на данной ОС.
  • Надежность. Данный фактор обеспечивается монолитным ядром и законченной логической структурой ОС, которая по сути является целостной.

Структура системы FreeBSD:

  1. Библиотека С используется в качестве системного интерфейса программирования.
  2. Ядро, которое предназначено для планировки всех процессов, управлением памяти, работы с устройствами и тп.
  3. Разнообразные файловые утилиты, компиляторы, оболочки, редакторы связей, и другие программы для конечного пользователя, некоторые из них основываются на коде GNU.
  4. За графический дизайн отвечает встроенная в FreeBSD X Window.
  5. Огромный выбор системных и прикладных программ.

Разработкой FreeBSD занимаются почти 4 тыс. добровольцев , которые и выпускают оновленные версии. Всего релизов насчитывают десять, последний из которых был выпущен 13 августа 2015 года. Но все-таки система не является столь популярной, как к примеру Linux. Давайте разберемся в причинах, почему FreeBSD имеет небольшое количество пользователей. В превую очередь, это “заслуга” разработчиков, которые занимаются шлифовкой кода системы, и очень мало времени уделяют рекламе своего продукта. Кроме того, они мало заботятся о рядовом пользователи и не упрощают процесс настройки и установки ОС, что для многих является ключевым этапом при выборе операционной системы. Ведь настроить Linux намного проще чем FreeBSD .

Недостатки системы FreeBSD .

Среди минусов ОС пользователи чаще всего выделяют сложность установки и настройки системы, но с приходом определенных навыков в администрировании, этот недостаток становится несущественным. Кроме того, для изучения работы FreeBSD недостаточное количество литературы и трудный доступ к документации. Если Вы все-таки хотите, чтобы данная ОС работала на вашем выделенном сервере, можете обратиться в нашу тех.поддержку и они быстро и качественно установят и настроят FreeBSD. Также достаточно будет просто при сервера выбрать FreeBSD желаемой ОС и она будет предустановлена на Ваш сервер.

Вывод. Если Вы выбираете ОС для своего сервера, прочитайте следующие советы, которые, надеемся, помогут Вам сделать правильный выбор. Часто можно встретить информацию на интернет-ресурсах, что FreeBSD улучшает производительность, это действительно так, но данное правило не следует считать универсальным. Хорошая репутация FreeBSD вполне заслуженная благодаря предоставленному качеству ОС. И последнее, если Вы уже используете выбранную ранее ОС, не стоит ее менять.

К Вашему сведению, ОС FreeBSD (9,10) уже предустановленна на наших ВПС серверах и Вы сможете ощутить все преимущества данной системы, сделав заказ виртуального сервера в компании Hyper Host™ . ?

6703 раз(а) 1 Сегодня просмотрено раз(а)


Вступление незапланированное

Он пришел с лицом убийцы,
С видом злого кровопийцы,
И сказал, что он мой критик,
И добра желатель мой.
Что ему, мол, стиль мой низкий
Эстетически не близкий.
Я фуфло, а он Белинский,
Весь неистовый такой.

Тимур Шаов,
Разговор с критиком

К сочинению настоящего вступления меня побудило большое количество откликов на первые три статьи этого цикла. Которые можно разделить на положительные и критические. Вот я и решил ответить на все, так сказать, оптом.

С откликами первой группы все понятно: могу только поблагодарить за поддержку. Конечно, все свои сочинения писались в первую очередь ради собственного удовольствия, однако приятно, что еще кому-то интересно их читать.

На голословную критику я ответил бы так: уважаемые господа, если вы полагаете, что разбираетесь в рассматриваемых вопросах лучше меня (во что я готов охотно поверить), почему бы вам не уделить толику времени, проводимого в форумных флеймах, просвещению широких народных масс? И не сочинять бы то, что нужно, и так, как нужно, на соответствующие темы? Желательно — русским литературным языком, с минимумом идио-мат-тических выражений. Я же с удовольствием возьму на себя роль внимательного читателя, впитывая всю представленную вами полезную информацию. И критика — с позиций русского литературного языка (интуиция мне посказывает, что поводов для оной будет более чем достаточно).

Тем не менее, должен добавить, что очень признателен за всю критику конструктивного характера. На которую надеюсь и впредь.Просто вступление

В настоящей заметке речь пойдет о способе физической организации блоков дискового раздела, обеспечивающем возможность записи, хранения и манипулирования файлами, специфичном для FreBSD вообще и 5-й ее ветки в особенности.

Файловая система FreeBSD принадлежит к Unix-семейству файловых систем и обладает множеством общих для всех них черт. Она носит название UFS, в 5-й ветке используется ее усовершенствованная разновидность — UFS2. Для начала рассмотрим общие принципы устройства той и другой, а потом обратимся к рассмотрению особенностей, свойственных UFS2.

Для файловой системы FreeBSD (и вообще BSD-систем, начиная с 4.2BSD) можно встретить и еще одно наименование — FFS (Fast File System, обозначение «быстрая» введено в сравнении с файловой системой Unix System V — s5). В доступной литературе мне не удалось обнаружить четкой формулировки их взаимоотношения. У меня сложилось впечатление, что FFS — это родовое обозначение файловых систем всех операционок BSD-клана (Free-, Net-, OpenBSD и BSDi), тогда как UFS (и UFS2) — имя конкретной реализации для FreeBSD. Хотя и в NetBSD ныне (начиная с версии 1.6 и выше) наряду с традиционной FFS может использоваться UFS2. В общем, однозначно осветить этот вопрос затрудняюсь, и потому был бы признателен за разъяснение.

Как уже было выяснено ранее , дисковая партиция — это, говоря метафорически, группа смежных цилиндров, разбитых на физические блоки по 512 байт. Партиция, несущая на себе файловую систему UFS, разделяется на три самостоятельные области (от начала группы цилиндров к ее концу) — суперблок, индексную таблицу и область данных. Рассмотрение их целесообразно начать с конца списка, то есть с области данных.Блоки данных

Область данных (она занимает подавляющий объем пространства партиции) образована блоками файловой системы. Подобно физическому блоку, блок файловой системы (именуемый также блоком логическим) представляет собой квант информации, доступный за одну операцию чтения/записи, но уже не дисковой головки, а операционной системы. Очевидно, что логический блок не может быть меньше физического (то есть 512 байт), и размер его обязательно кратен целому числу последних.

Понятие логического блока введено для повышения производительности дисковых операций. Не требует доказательства утверждение, что скорость обмена данными квантами по 1 Кбайт будет выше, чем 512-байтными, 2-килобайтными — еще быстрее, и так далее. И потому с точки зрения быстродействия файловых операций выгоден максимальный размер логического блока файловой системы.

С другой стороны, увеличение размера логического блока ведет к непроизводительному расходу дискового пространства за счет т.н. внутренней фрагментации данных. Ее не следует путать с внешней фрагментацией, для борьбы с которой на файловых системах FAT-семейства были в свое время мобилизованы всякого рода speeddisk"и с комбатантами: вследствие особенностей алгоритмов управления данными файловые системы Unix-семейства настолько мало подвержены внешней фрагментации, что о преодолении оной вообще практически не говорят.

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

Ясно, что размер фрагмента все равно не может быть меньше физического блока. При этом UFS накладывает на него и встречное ограничение — минимальный размер фрагмента определяется в 1/8 логического блока. Другие же возможные значения — 1/4 и 1/2 блока файловой системы (очевидно, что выделение фрагмента в размере блока равносильно отказу от фрагментации блока вообще, хотя это, как будто бы, не запрещено).Inodes

Каким образом определяется принадлежность блока данных тому или иному файлу? К помощью индексной таблицы, именуемой также таблицей файловых дескрипторов или таблицей inodes. Она образована некоторым (конечным) количеством записей фиксированной длины (128 Кбайт в UFS, 256 — в UFS2), каждая из которых однозначно соответствует одному файлу, как реально существующему, так и только могущему быть созданным.

Такая запись индексной таблицы носит название inode, которое мы и оставим за нею. Ибо все известные мне переводы этого термина, вроде информационных узлов или индексных дескрипторов, выглядят очень коряво. Кроме того, слово «дескриптор» фигурирует еще и в контексте «дескриптор файла», под чем подразумевается идентификатор (уникальный, иначе что же он будет идентифицировать?) файла, используемого неким процессом (что уже к файловым системам не имеет ни малейшего отношения — это сфера подсистемы управления процессами). И эти дескрипторы — не имеют меж собой ничего общего. Так, inode c идентификатором 2 (а это всегда идентификатор корневого каталога файловой системы) и дескриптор файла с номером 2 (а им для любого процесса будет стандартное устройство вывода сообщений об ошибках, /dev/stderr) ни коим образом друг с другом не соотносятся (хотя об этом почему-то не любят говорить вслух).

Однако я отвлекся — вернемся к нашим inodes. Каждый член этой таблицы содержит так называемые метаданные файла. Для реально существующего файла они включают в себя:

  • уникальный идентификатор inode (и, соответственно, файла, метаданные которого он содержит) — это просто счетчик создаваемых файлов в файловой системе);
  • тип файла — это может быть каталог, символическая ссылка, файл устройства, именованный канал или сокет, или же обычный (то есть не относящийся ни к какому из перечисленных типов) файл;
  • размер файла в байтах;
  • количество ссылок на файл (к этому вопросу придется вернуться чуть ниже);
  • адреса логических блоков и их фрагментов, составляющих файл;
  • число занятых им блоков;
  • атрибуты файла — принадлежности, доступа, времени (и это еще не раз будет предметом подробного рассмотрения).

А вот чего в inode не обнаружить никакими силами — так это имени соответствующего ему (или ей? — мне почем-то кажется, что inode, вопреки грамматике, — женского рода). В любой книжке про Unix не устают повторять (и я не отступлю от этой традиции), что имя файла — атрибут не самого файла, а каталога, в который он входит. Поскольку понимание этого потребуется при знакомстве с механизмом Soft Updates в следующей заметке, сделаю маленькое отступление для прояснения вопроса именования файлов во FreeBSD (и вообще в Unix).

При описании содержания таблицы inodes вскользь было упомянуто поле типа файла. Так вот, в Unix все файлы (а все, что в Unix имеется вообще, включая физические устройства, для системы представляется в виде файлов) делятся на две группы — каталоги и прочие. Прочие файлы могут служить для различных целей (хранения данных и исполняемых программ, быть символическими ссылками, описывать устройства или средства взаимодействия процессов — обо всем этом мы поговорим своевременно или несколько позже). Назначение же каталогов — единственное, но оченно важное: быть хранителями имен входящих в них файлов, которым однозначно поставлены в соответствие идентификаторы inodes, хранящих метаданные этих файлов.

То есть имя файла существует только в списке каталога и нигде более в системе. А создание файла — это не только заполнение относящейся к нему записи в индексной таблице и заполнение указанных в ней блоков данных, но и внесение записи вида «идентификатор — имя_файла» в область данных какого-либо каталога. А каталог, как и любые другие файлы, имеет свои метаданные в таблице inodes и свою область данных. И, в свою очередь, имя его вместе с идентификатором inode входит в каталог более высокого уровня, и так — вплоть до корня файловой системы. В поле количества ссылок inode создаваемого файла устанавливается минимально возможное значение, равное единице, поскольку любой файл входит по меньшей мере в один каталог, иначе он просто не будет доступен системе — файлы с нулевым количеством ссылок для нее как бы не существуют (и на самом деле их inodes и блоки данных со временем неизбежно будут перезаписаны физически).

На самом деле один и тот же набор данных и метаданных может быть приписан к произвольному количеству каталогов в пределах одной файловой системы и даже фигурировать под разными именами в одном каталоге — в этом случае количество ссылок на него будет соответствующим. А вот минимальное количество ссылок на каталог равно двум — так как запись о нем существует как в родительском каталоге (..), так и в текущем (. — то есть в самом себе). И каждый вложенный подкаталог увеличивает счетчик ссылок каталога на единицу.

Ссылки, с помощью которых связывается имя файла как элемент каталога с его записью в таблице inodes и блоками образующих файл данных, именуются еще жесткими (hardlinks, хорошим русскоязычным эквивалентом было бы слово «связь», но оно как-то не прижилось). Посредством жестких ссылок одному и тому же набору данных или исполняемой программе можно придать произвольное количество имен, которые никто не запрещает включить в один и тот же или разные каталоги. Единственное условие для этого — все эти имена-дублеры должны находиться в каталогах единой файловой системы, то есть располагаться на одной дисковой партиции. И в одной из последующих заметок станет ясно, почему.

Забегая несколько вперед, отмечу, что жесткие ссылки нужно отличать от ссылок символических (symlinks, часто говорят просто links — почему и резонно было бы сохранит за ними обозначение ссылок, а hardlinks по русски именовать связями). Символические ссылки — файлы особого типа, отдаленно сходные с ярлыками в Windows или shadow в OS/2, которые сами по себе никаких данных не содержат, а просто ссылаются на метаданные и данные другого файла (который может локализоваться и за пределами данной файловой системы).

Для файлов несуществующих свободные записи в таблице inodes просто резервируются. А поскольку количество этих записей — конечно, именно объем индексной таблицы и определяет, сколько файлов реально может быть создано в данной файловой системе. Исчерпание свободных записей в ней приводит к тому, что, вне зависимости от объема свободного дискового пространства, ни одного нового файла создать не удастся.Суперблок

Однако сведений об объеме индексной таблицы внутри нее не обнаруживается. Ибо место их размещения — тот самый суперблок, который идет первым в нашей партиции (вообще-то первым в любой партиции будет загрузочный блок, но реально он занят только в загрузочном же разделе — во всех остальных для него просто зарезервировано место). Кроме этого, в суперблоке же записывается размер блока файловой системы и их суммарное количество, число блоков данных, размер блокового фрагмента и их число в блоке, число блоков, реально занятых файлами, объем партиции, перманентно резервируемый как свободный, и еще множество характеристик файловой системы, о которых сейчас говорить неуместно.

На самом деле описанное выше несколько упрощено. Специфика файловых систем BSD-клана заключается в том, что реально дисковая партиция разбивается на части фиксированного объема (зависящего от объема раздела). Это т.н. группы цилиндров, каждая из которых имеет свою копию суперблока (чем обеспечивается устойчивость к механическим повреждениям диска), свой блок группы цилиндров, оную описывающий (в нем, в частности, содержатся карты свободных/занятых inodes и карты свободных/занятых блоков данных), собственную таблицу inodes и область блоков данных. Это имеет целью размещение inodes и относящихся к ним блоков данных максимально близко друг к другу, что, кроме повышения производительности, влечет за собой и сведение к минимуму той самой внешней фрагментации данных, о которой говорилось выше.Практика форматирования

Таким образом, процесс создания файловой системы сводится к а) выделению суперблока и записи общих параметров файловой системы, б) созданию таблицы inodes (в UFS, в отличие от некоторых современных файловых систем для Linux, все inode создаются раз и навсегда, а не выделяются динамически, по мере надобности), и в) разметке блоков в области данных. Из за все это, подобно незабвенной Катерине Матвевне, отвечает одна-единственная программа, именуемая незамысловато — newfs.

Команда newfs требует единственного аргумента — имени файла форматируемой партиции, например, $ newfs /dev/ad0s1a

после чего все базовые свойства файловой системы будут определены по умолчанию. Однако пользователь в силах влиять на них с помощью опций, важнейшие из которых мы и рассмотрим (или — определив их раз и навсегда глобально, через sysinstall, но это — тема отдельного разговора).

Опция -b определяет размер логического блока файловой системы. Минимальный размер его — 4096 байт, максимальный, насколько я знаю, определяется только здравым смыслов. А с точки зрения оного, «умолчальное» значение в 16384 байт представляется разумным.

Опция -f устанавливает размер фрагмента блока. Рекомендуется определить его в 1/8 размера блока, что по умолчанию и составит 2048 байта. Значения в 1/4 или 1/2 блока также допустимы, но очень не рекомендуются в документации.

Опция -i очень важна — она-то косвенно и устанавливает количество записей в индексной таблице (то есть максимальное количество файлов в файловой системе). Значение этой опции дается в байтах, отводимых на элемент индексной таблицы, и должно быть кратным размеру блокового фрагмента. Значение по умолчанию — учетверенный объем оного, что определяет средний прогнозируемый размер файла (8096 байт).

Еще одна интересная опция — это -m, значение которой указывается в процентах от суммарного объема дискового пространства отведенного на партицию. И представляет собой объем, резервируемый от записи обычными пользователями (но не root"ом — тот всегда имеет возможность записать свои действия на диск). Он определяется потому, что быстродействие файловых операций в UFS просто катастрофически падает, когда количество свободных блоков в области данных близко к исчерпанию (проверено на практике). И потому некий объем файловой системы резервируется принудительно (по умолчанию — 8%).

С этой опцией связана еще одна, -o, которая определяет алгоритм выделения свободных блоков данных при создании новых файлов. Дело в том, что UFS в состоянии размещать их двумя способами. Первый — методом плотнейшей упаковки с целью минимизации внутренней фрагментации и экономии дискового пространства. И называется он оптимизацией по объему (опция -o принимает значение space). Второй же метод (-o time) обеспечивает быстрейшее выделение свободных блоков с целью увеличения скорости создания файлов (то есть вопреки принципу Леонида Ильича — «экономика должна быть экономной»). Так вот, умолчальное значение -o коррелирует со значением -m: если оно больше или равно 8%, применяется оптимизация по времени, если меньше — по объему. Хотя явным образом можно указать прямо противоположные значения.

Вообще-то, все приведенные выше опции очень важны, интересны и полезны для общего образования, однако пользователю вряд ли придется к ним прибегать: их значения по умолчанию, как и почти все во FreeBSD, разумны и приемлемы в подавляющем большинстве случаев. А вот опция -U при запуске newfs по умолчанию не задействуется. Обеспечивает же она поддержку штуки крайне полезной — механизма Soft Updates, способствующему (парадоксально, но — правда) как повышению быстродействия файловых операций, так и устойчивости файловой системы.

Тема Soft Updates, однако, столь интересна сама по себе, что заслуживает отдельного обсуждения, чем мы и займемся в следующем разделе этой же заметки. А пока под рассмотрим отличия текущей разновидности файловой системы FreeBSD, UFS2, от ее предшественницы — UFS.

Все, что было сказано выше о файловой системе FreeBSD, относилось в равной мере к обеим ее разновидностям. Главная особенность UFS2 — то, что она 64-разрядная и, соответственно, способна работать с дисковыми объемами более терабайта (интересно, скоро это станет актуальным для настольного пользователя? Судя по темпам дискобольства, срок этот не за горами). В этой связи напомню, что длина записи в таблице inodes в UFS2 удвоилась, и равна 256 байт.

Далее, в UFS2 включена поддержка расширенных атрибутов файлов, в частности, ACL, но это существенно для сетевых администраторов. А вот что может заметить пользователь — то, что создание новой файловой системы происходит быстрее (на больших дисковых разделах это действительно заметно, что называется, органолептически). Происходит это за счет т.н. «ленивой» инициализации inodes, хотя динамического их выделения, как, например, в XFS, и нету.

А вообще, с точки зрения пользователя, различий между UFS и UFS2 можно и не увидеть. Тем не менее, отказываться от UFS2 также оснований нет. Тем более, что и newfs, о которой говорилось выше, и sysinstall, о которой разговор впереди, по умолчанию ныне (в 5-й ветке) создают именно ее. Если же требуется создать просто UFS (для совместимости с версиями прежних веток, UFS2 не поддерживающих), это нужно сделать принудительно, указав для newfs опцию -O 1.Парадокс Soft Updates

При всех своих многочисленных достоинствах, файловая система FreBSD не может похвастаться одним — быстродействием. И это не смотря на то, что в основе ее лежит обще-берклианская FFS — быстрая файловая система. Однако эпитет здесь выступает в сравнении с прежней Unix"овой файловой системой — s5, все вариации которой, как говорят знающие люди, отличались исключительной задумчивостью. Если же сравнить производительность файловой системы FreeBSD с родной для Linux Ext2fs — оно окажется не в пользу первой, особенно на операциях с большим количеством мелких файлов.

Почему? Нетрудно ответить: вследствие принятого во FreeBSD по умолчанию режима обращения с измененными файлами. Большинство нормальных файловых систем способны функционировать в одном из трех режимов:

  • полностью синхронном, когда обновления и метаданных, и области данных файла записываются на диск сразу вслед за его изменением;
  • полностью асинхронном, при котором все изменения файла (и его метаданных, и области данных) кэшируются в оперативной памяти и реально записываются на диск в подходящее для того время;
  • смешанном, реализующем синхронный механизм для измененных метаданных и кэширование — для модификаций области данных.

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

Так вот, в файловой системе Linux (конкретно — в ext2fs, Linux нынче за родные признает много файловых систем) по умолчанию задействуется полностью асинхронный режим работы, а во FreeBSD — смешанный. Конечно, это определяется при монтировании файловых систем, и с помощью соответствующих опций команды mount (что я покажу в соответствующей заметке) файловую систему FreeBSD можно заставить работать полностью асинхронно. Однако резонные люди не рекомендуют это делать категорически — и, вероятно, имеют к тому основания (одна из причин к тому станет ясной в конце заметки).

И действительно, в умолчальном режиме файловая система FreeBSD (в сравнении с той же ext2fs) демонстрирует замечательную устойчивость. За два с половиной года общения с этой ОС (а из них полтора пришлось на селянские условия, когда неожиданное отключение электричества были вещью более чем обычной) мне ни разу не пришлось столкнуться с проблемами из-за аварийного завершения сеанса работы (в Linux"е такие проблемы, до внедрения журналируемых файловых систем, возникали сплошь и рядом).

Однако цена за это — быстродействие. Вернее, отсутствие оного. И проявляется это особенно наглядно именно при копировании большого количества мелких файлов (процедура, весьма обычная при работе с текстовыми, по преимуществу, материалами). Действительно, при этом в синхронном режиме обновляется огромное количество файловых inodes, тогда как собственно данных изменяется ничтожное по объему количество, и их кэширование доставляет мало радости. В любом случае копирование набранных в текстовом редакторе статеюшечек размером с эту заметку и суммарным объемом в стандартный CD затягивается на вполне чувствительное время (в отличие от Linux"а, где подобная операция выполняется внешне мгновенно — другое дело, что индикатор активности жесткого диска может еще долго подмигивать).

Далее, не смотря на всю свою фактическую устойчивость, файловая система FreeBSD, не будучи журналируемой, сама по себе не имеет механизма гарантии собственной целостности. То есть: при аварийном завершении работы, когда в файловой системе не устанавливается т.н. бит чистого размонтирования (clean byte — это один из важных параметров файловой системы, записываемый в ее суперблоке при корректном выходе из системы), в ходе процедуры последующей загрузки принудительно вызывается программа проверки ее на предмет нахождения противоречий между метаданными и областями данных (и их устранения). А при современных объемах дисков (и, соответственно, файловых систем на них) такая проверка может затянуться на часы. Конечно, это особенно прискорбно для серверов, но и на настольной машине доставляет мало положительных эмоций.

Проблема нарушения целостности существует и в Linux"е (по указанным выше причинам — даже в большей мере). И в Linux"е с нею борются посредством журналирования, то есть опережающей регистрации изменений метаданных (и, в некоторых случаях, даже и данных). Во FreeBSD же борьба за целостность файловой системы велась исторически по двум направлениям. Второе из них — появившаяся в 5-й ветке фоновая проверка целостности файловой системы, допускающая начало нормальной работы сразу после аварийной перезагрузки машины. Поскольку это — одно из принципиальных новшеств, скажу пару слов по сему поводу.

Для проверки целостности файловой системы во FreeBSD используется утилита fsck (одноименная есть и в Linux — для ext2fs, есть аналогичные инструменты и для прочих файловых систем). Она может быть запущена пользователем (вернее, root"ом) из командной строки. Однако схема старта системы предусматривает ее автоматический запуск, если в какой-либо из автоматически монтируемых файловых систем не обнаружен бит чистого размонтирования. А поскольку fsck — побитная операция, во избежание тяжких последствий она обычно проводится на размонтированных файловых системах. Что и было во FreeBSD вплоть до версии, как минимум, 4.6 (более старших из 4-й ветки уже не видел). А вот в версиях 5-й ветки, начиная с первой, более чем годичной давности, developer"ской, проверка диска может выполняться на смонтированной и готовой к работе файловой системе. И, соответственно, в фоновом режиме после полной загрузки системы, параллельно с выполнением обычной работы. Казалось бы — пустячок, а приятно: затрудняюсь сказать, сколько заняла бы полная проверка обычных ныне 80- или 120-гигабайтных винтов.

Однако первым по времени реализации способом борьбы за целостность файловой системы был механизм Soft Updates, обеспечивающий одновременно (вернее, главным образом) и повышение быстродействия файловых операций.

Сам по себе механизм Soft Updates (оставим этот термин без перевода — варианты оного типа «мягких обновлений» не только не блещут литературным изяществом, но и сути дела не проясняют) детально описан в специальной статье Макказика и Ганджера, смысла пересказывать которую я не вижу (благо она имеется в ). В двух же словах суть этого механизма — в сведении к минимуму синхронных операций записи без явно асинхронного манипулирования метаданными, с одной стороны, но и без предварительного журналирования метаданных (как в файловых системах типа ReiserFS или XFS) — с другой.

Реализуется это, опять же говоря довольно грубо (детали реализации моему пониманию недоступны — каюсь) за счет так называемых зависимостей обновления. Что такое эти зависимости — интуитивно ясно из примера создания нового (для простоты — пустого) файла. Для этого требуется:

  • запись в таблице inodes, с заполнением полей типа файла, его идентификатора, счетчика ссылок (со значением 1 — каждый файл должен принадлежать как минимум одному каталогу), ну и прочих там — прав доступа в соответствие с их маской, и так далее;
  • изменение карты свободных/занятых inodes в блоке группы цилиндров (соответствующий новому файлу inode должен быть помечен в ней битом занятости);
  • внесение записи вида «идентификатор — имя_файла» в структуру каталога, в котором новый файл создается, что обеспечивает ту самую единственную ссылку в соответствующем поле inode файла.

С точки зрения целостности файловой системы, эти операции должны быть выполнены именно в этой последовательности. То есть наличие в каталоге имени файла с идентификатором незаполненного (еще не созданного или уже уничтоженного) inode — явный непорядок: именно для исправления такого рода безобразий и запускается программа проверки диска после аварийного завершения сеанса.

Выполнять связанные зависимостями операции обновления в синхронном режиме — долго (каждая потребует своего обращения к диску), в асинхронном — нет гарантии сохранения последовательности (обновления в кэше могут быть записаны тогда, когда бог на душу положит). Так вот, механизм Soft Updates обеспечивает, с одной стороны, контроль за последовательностью выполнения зависимых обновлений (что способствует целостности состояния файловой системы), с другой — группирует их в единую атомарную операцию синхронного обращения к диску, за счет сокращения числа коих и растет производительность. В этом, насколько я понимаю, и состоит объяснение парадокса Soft Updates — неожиданного увеличения и надежности, и быстродействия.

В общем, постарался объяснить, как смог и как сам понял — за подробностями к упомянутой статье. В дополнение только замечу — во избежание недоразумений: механизм Soft Updates не только не гарантирует сохранности пользовательских данных, не сохраненных по раздолбайству юзера перед крахом системы, но и не преследует такой цели. Его призвание — следить, чтобы файловая система всегда представала по возможности в непротиворечивом виде. Впрочем, то же можно сказать и о любой журналируемой файловой системе — ни одна из них не страхует от ошибок пользователя...

Теперь посмотрим, как же Soft Updates можно использовать. Если создавать файловые системы через sysinstall — все просто: там по умолчанию включение этого механизма уже давно (версии примерно с 4.3) предусмотрено для всех файловых систем, кроме корневой. Последнее аргументируется соображениями безопасности, которые (для настольной машины) не кажутся мне убедительными — так что я включаю ее и здесь. Хотя именно для корневой файловой системы Soft Updates не особо нужна: при правильном разбиении диска и грамотной эксплуатации запись в нее (после первичной установки) происходит только при инсталляции нового ядра, а часто ли это проделывается в нормальных условиях?

При создании же файловых систем вручную, командой newfs, Soft Updates автоматически не включается: это нужно сделать, как уже говорилось, указанием опции: $ newfs -U /dev/ad#s#?

Впрочем, если она при форматировании была забыта — ничего страшного: для всех разделов, кроме корневого, включить Soft Updates легко с помощью команды tunefs. Для этого следует перейти в однопользовательский режим (очень рекомендуется; я как-то обошелся без этого, но лучше следовать советам резонных людей), что делается командой $ shutdown now

Размонтировать все файловые системы, кроме корневой (с ней все равно этот номер не пройдет) командой $ umount -Af

Дать команду tunefs -n enable /dev/ad#s#?

для каждого раздела, в файловой системе которого требуется Soft Updates. И, наконец, повторением команды $ shutdown now

Протестировал FreeBSD 10 и пришел в неописуемый восторг. Сначала сильно разочаровался, а потом еще сильнее удивился, но уже приятно.

Часть 1. Разочарование

После установки FreeBSD 10 пользователь получает только командную строку. Выбрать GNOME, KDE, Xfce и т.п. еще в инсталляторе нельзя. Даже Иксов нет. Все это предстоит установить и настроить пользователю.

По умолчанию используется файловая система UFS, отличающаяся медлительностью и тем, что в случае внезапного выключения компьютера вы останетесь без своих файлов. Собственно, это и произошло. Во время настройки Xorg система повисла. Пришлось жать хард ресет. После этого в /etc пропала половина файлов, включая главный конфигурационный файл /etc/rc.conf. В домашней директории файлы остались, но стали нулевой длины. В результате программы начали вести себя немного странно. Ну, например:

Невозможно загрузить штатную тему оформления. Штатная тема оформления была загружена.

Локализация проводится в ручную. Загрузчик GRUB отсутствует, есть какой-то совсем примитивный загрузчик версии 1.0.

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

Часть 2. Восторг

Ну не может быть Фряха настолько убогой, наверное это я не разобрался в философии FreeBSD. Сел за чтение руководства. Выделил под установку комп с отдельным диском (весь диск под установку, а не один из разделов - о том, зачем это нужно чуть ниже).

На стадии разбивки диска выбрал экспериментальную функцию установки файловой системы ZFS на корневой раздел, чтобы вообще избавиться от протухшей UFS. К сожалению, эта экспериментальная опция требует отдать ей весь диск. На тестовом компьютере это требование еще уместно, но вот на основном рабочем ноутбуке хотелось иметь не только FreeBSD.

Pkg install mc

Пакетный менеджер pkg показался мне даже более удобным, чем apt-get. Зацените как просто найти пакет по описанию:

Pkg search apache

А вот пользователя apt-get зачем-то заставляют запускать apt-cache search для этих целей, что не вполне логично.

Таким образом, установка Иксов и Гнома выглядит так:

Pkg install xorg pkg install gnome2

Да-да, Гном здесь второй! Моя любимая версия, по которой я очень скучал. Третьего Гнома нет не потому, что во Фряхе и все остальное ПО старых версий, а потому, что он не нужен. Кстати, софт в FreeBSD будет посвежее того, что в Debian. Например, удивил LibreOffice, который оказался едва ли не последней версии. Ruby так и вообще версии 2.0, тогда как даже в Ubuntu до сих пор 1.9.

Настройка автозапуска Гнома вместо консоли тоже довольно проста. Основная сложность лишь в том, что это нигде не задокументировано. В хваленом официальном руководстве описаны неработающие способы через извращения с startx и.xinintrc. Правильный рецепт удалось найти - вы не поверите - в ролике на Ютюбе. Оказывает, правильно запускать Гном так:

Hald_enable="YES" dbus_enable="YES" gnome_enable="YES"

Всё. Это один раз заносится в главный конфигурационный файл /etc/rc.conf и после этого Gnome стартует автоматически.

Загрузив графическую среду, я принялся доустанавливать привычный мне софт. И тут началось самое удивительное - программы запускаются в 5-10 раз быстрее, чем в Linux. Не по субъективным ощущениям, а я засекал. Например, запуск LibbreOffice Writer выглядит так: появляется окно с логотипом и прогрессбаром, прежде чем индикатор прогрессбара успевает тронуться с места закрывается окно с логотипом - Writer загружен. Такое же было, когда я заменил HDD на SSD. Но на этом тестовом компьютере стоял старенький Seagate 1 Tb.

То ли дело в ZFS, то ли в отказе от GCC в пользу Clang, то ли из-за легкого GNOME 2, то ли еще какая причина, но факт в том, что все летает и это очень приятно. Очень трудно после такого возвращаться на Linux, который по сравнению с FreeBSD кажется еле живым.

Таким образом, установив FreeBSD 10 пользователь получает:

  • одну из самых продвинутых файловых систем - ZFS;
  • удобный менеджер пакетов;
  • свежие версии программ, к которым пользователь привык в Linux;
  • репозиторий набит под завязку, в нем есть практически все;
  • программы запускаются значительно быстрее;
  • порядок в директориях (файлы операционной системы и стороннего прикладного софта не перемешиваются);
  • удобный и быстрый GNOME2;
  • бинарники под Linux даже в режиме эмуляции работают в FreeBSD быстрее, чем в самом Linux;
  • и множество других приятнейших особенностей.

В общем, FreeBSD 10 - приятнейшая система, которую я буду обязательно использовать. Остается только сравнить производительность Apache под FreeBSD, но мне уже кажется , что пользователей Фряхи и тут ждет приятный сюрприз.