FreeBSD: физика файловой системы. Мифы о FreeBSD

Протестировал 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, но мне уже кажется , что пользователей Фряхи и тут ждет приятный сюрприз.

Процесс пошаговой установки операционной системы FreeBSD для новичков. Все этапы инсталляции прокомментированы и проиллюстрированы скриншотами.

Я буду рассматривать процесс установки ОС FreeBSD-5.3-RELEASE, но так как установщик не менялся очень давно, практически все описанное в этой статье справедливо и для более ранних версий. В моем случае установка будет производиться с CD-ROM’а.

В биосе (BIOS) компьютера задаем загрузку с CD-ROM’а, вставляем диск с дистрибутивом в привод и перезагружаемся. Мы видим меню программы sysinstall:

Ее можно вызывать и после установки для некоторых настроек, но я бы не рекомендовал. В большинстве случаев подходит тип установки «standart», который я и выбрал. Другие типы установки нужны для тех, кому надо что-то настроить нестандартно или тем, кто точно знает, что ему нужно, чтобы не устанавливать лишнее.

Первым делом нам необходимо создать на жестком диске раздел для установки ОС, что нам и предлагается сделать:

Мы видим список уже существующих разделов и свободное место (все цифры даны в байтах, нажимая «z» можно переключаться между вариантами). Чтобы создать раздел, надо поставить курсор на полоску с указанным количеством свободного места на диске и нажать «c» (create). Вводим желаемый размер раздела (по умолчанию предлагается использовать все доступное место). Если вы хотите использовать не все место, то надо задать количество (чтобы указать количество в мегабайтах надо в конце дописать MB, например 4096MB, по умолчанию предполагается что размер вводится в секторах). Далее задаем тип (оставляем 165). Удалить раздел можно нажатием «d» (delete). Внимание! Будьте осторожны на этой стадии - можно легким движением руки удалить нужные разделы;) Теперь сохраняем изменения - «w», и завершаем - «q». Далее переходим в меню создания разделов файловой системы FreeBSD.

Здесь есть два варианта: доверится автоматическому процессу, нажав «a» (auto) или же вручную создать, нажимая «c» (create, курсор должен находится вверху на строчке с нашим разделом для FreeBSD). Если вы решили создавать вручную, то в диалоге создания раздела файловой системы надо будет вести имя и размер (размер по умолчанию вводится в секторах, чтобы указывать его в мегабайтах, надо в коне цифры дописывать MB, например, 256MB).

Разделы, обязательные для создания:

/ /swap /var /tmp /usr

В принципе, автоматического распределения вполне достаточно, но я бы посоветовал сделать вручную. Сначала посмотреть, что предложит нам установщик, нажав «a», записать эти значения, затем удалить их - «d» и сделать по своему усмотрению. Могу предложить следующие размеры:
/ 128 Mb /swap RAM*2 или больше (RAM - размер оперативной памяти компьютера) /var сервер: 2Gb, домашний компьютер: 128 Mb /tmp сервер: 1 Gb, домашний компьютер: 64 Mb /usr все остальное

Когда мы выбрали размеры разделов, можем, нажав «w» сохранить их и «q», чтобы продолжить. Будет предложено установить менеджер загрузки - надо выбрать этот вариант, если вы хотите чтобы на вашем компьютере совместно жили FreeBSD и, например, Windows или другая ОС (Install the FreeBSD bootmanager).

Если же на компьютере планируется только FreeBSD, то отказываемся от менеджера загрузки (Standart). Последний пункт (None) можно выбрать, в случае если на компьютере уже была установлена ОС FreeBSD и изменять загрузчик на жестком диске нет необходимости.

В этом месте мы выбираем, что установить дополнительно: исходные тексты ОС, документация и пр. В большинстве случаев достаточно просто установить все. Но лучше выбрать custom и там отметить: base, crypto, manpages, doc, src (можно все исходники, но если экономим место, но будем пересобирать ядро, то только sys), ports, compat4x (некоторые программы могут вести себя странно, если не установлен этот режим совместимости).

Вот файлы скопированы.

Теперь необходимо задать некоторые настройки системы. Первым делом можно настроить SLIP/PPP-устройство (если оно есть). Это обычно выделенная линия в интернет. если такой вариант есть, то в диалоге соглашаемся, нажав «YES», выбираем внешний интерфейс (обычно ed0), указываем нужные настройки:

Есть ли поддержка протокола IPv6?

Конфигурация DHCP, IP-адрес компьютера и гейта (компьютера, через который происходит выход в интернет; все эти настройки необходимо узнать у провайдера).

Затем нас спрашивают, желаем ли мы сразу же включить этот интерфейс.

Следом идут вопросы:

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

Хотите ли разрешить доступ к компьютеру удаленно по протоколу ssh (secure shell). Если необходим удаленный доступ, то советую использовать именно ssh, а telnet отключить т.к. telnet - очень небезопасный сервис.

Надо ли разрешить анонимный доступ к машине по ftp? (конечно же, начиная с определенной папки, а не ко всему диску;)

Используется ли машина в качестве NFS-сервера и клиента? (Network File System)

Будем ли настраивать консоль? (надо настроить русский язык, так что выбираем да, заходим по очереди во все категории и выбираем пункт с пометкой «russian» - русский, затем нажимаем «exit»)

Предлагается настроить часы компьютера. Если вы выбрали да, то дальше последуют следующие вопросы:

  • настроены ли часы этого компьютера на международное время? (если да, выбираем «YES», если же они настроены на местное время, или вы не уверены - «NO»)
  • предлагается выбрать регион из списка:


  • страна;
  • что географически ближе всего к вашему городу;
  • предлагается аббревиатура местности, и вопрос «похоже ли это на правду»? Если нет, надо будет выбрать снова.)

Устанавливать ли программу для совместимости с Linux-системами? (если ее установить, то можно будет запускать программы для Linux. Если компьютер для дома, советую установить.)

Есть ли мышь? :) (думаю, вы выберете «YES», в диалоге надо указать тип мыши, порт (для USB выбирайте BusMouse), и нажать «enable». Конфигуратор спросит, «заработала ли мышь?», надо согласится. Возможно, сразу мышь не заработает, но после перезагрузки обычно все мыши определяются и работают на ура).

Диалог выбора дополнительных программ для установки. Программы разбиты по категориям. Советую просмотреть все. Название обычно отражает назначение программы, и вы легко сможете выбрать нужные (конечно, если вы хоть немного знаете английский).

Здесь все зависит от задачи, для которой устанавливается FreeBSD:

  • если это сервер, то надо выбрать какие-либо сетевые программы (apache, samba и т.д.);
  • если же это ОС на домашнем компьютере, то логично будет установить систему X-Window (графический сервер) и мультимедийные программы.

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

Сейчас я покажу пример настроек для пользователя vasya, который входит в группу wheel (группа администраторов) - это необходимо, чтобы он мог в будущем получать права root командой su. Если пользователь не входит в группу wheel, то он не сможет получить права суперпользователя (это сделано из соображений безопасности).

После того, как вы настроили группы и пользователей, нажимайте exit. Появится приглашение для задания пароля пользователя root.

На этом установка ОС FreeBSD завершена! Теперь необходимо настроить ее для своих нужд: сделать локализацию шрифтов в KOI8-R или CP-1251, настроить все сервисы, которые будет предоставлять ОС и т.д. Информацию о том, как это делать, можно найти на сайтах bsdekaterinburg.ru , а также в handbook (настольная книга пользователей FreeBSD; она доступна на сайте freebsd.org.ru , а также, если вы устанавливали документацию, на жестком диске:).

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

P.S. Советами помогал anbioZz.

В топике набег линуксоидов:-) ХЗ, те, кто жалуется на какие-то проблемы на фре -- просто не умеют её готовить. Банально, да? :-) На трёх моих последних местах работы фря использовалась по полной. И на текущем месте работы выносим с линукса всё, что можно, и оставляем только то, что нельзя -- как правило, сильно специфичный софт, разработанный только под линукс. Всё остальное -- PPPoE-сервера, веб, почта, мониторинг, вспомогательные сервера, файловые сервера -- всё крутится на фре. Никаких проблем, что характерно, при этом мы не испытываем.

Я не знаю, какие там технологии используют ораторы выше, которые они не могут использовать на фре, но никаких принципиальных ограничений именно FreeBSD как платформы, я не встречал.

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

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

Любые "универсальные" сервисы на фре работают нормально. Про проблемы с пакетными менеджерами -- это трэш, линуксоиды всё врут:-) Они сильно отстали от жизни, особых проблем с пакетными менеджерами давно уже нет. Отдельно доставили сказки про то, что если ты собираешь софт из портов, то потом с пакетами у тебя будут проблемы:-)

ZFS на линуксе сильно отстаёт по функционалу от ZFS на фре. В ZFS-on-linux только в прошлом релизе был добавлен алгоритм сжатия lz4, что на фре есть уже больше двух лет. Недавно была добавлена поддержка ACL, что опять-таки, фря умеет уже давно.

Короче, примеров можно привести миллион, но вывод довольно простой -- не надо верить заявлениям, что "инструмент XXX -- это фу-фу-фу, а инструмент YYY -- это ого-го". У любого из них есть свои плюсы и минусы, просто нужно их знать, и использовать подходящий инструмент. Если вы планируете настраивать сервера "в корпорации" или для задач провайдера связи, или просто свой сайтик в интернет выложить -- и фря, и линукс эти задачи решит отлично. Если будете делать какую-то хранилку, под виртуализацию, например -- я бы использовал фрю. Если же у вас план делать крупный высоконагруженный web-проект -- возможно, тут линукс подойдёт лучше.

Я, как бывший корпоративный админ, а ныне админ интернет- и сервис-провайдера, никаких проблем с фрёй в своей работе не испытываю.

FreeBSD – свободно распространяемая, Unix-подобная операционная система с открытым исходным кодом. Является потомком AT&T Unix , ответвление BSD, образовавшееся в Калифорнийском университете в Беркли. Работает на PC-совместимых системах x86, в том числе Microsoft Xbox, а также на DEC Alpha, Sun UltraSPARC, IA-64, AMD64, PowerPC, NEC PC-98, ARM.

Краткая история операционной системы FreeBSD

Операционная система Unix, зародилась в 1969 году, в научно-исследовательском подразделении, компании AT&T, Bell Labs. В то время, монополия на компьютерную индустрию принадлежала государству, и кампания AT&T не могла продавать свое программное обеспечение. В результате, в 1976, AT&T решила бесплатно предоставить свое программное обеспечение и его исходные коды, университетской среде. Одни в этом случае получили возможность сэкономить значительные средства, и доступ к технологии, вторые, бесплатную площадку для экспериментов и целое поколение специалистов, выросших на их оборудовании. В конце 70-х годов, в компании AT&T, была создана рабочая группа поддержки Unix (Unix Support Group, USG), в последствии преобразованная в систему лабораторий Unix (Unix System Laboratories, USL). В задачи USL, входила раскрутка операционной системы Unix, в качестве коммерческого продукта, что с успехом и делалось, система продавалась предприятиям за большие деньги. Разработка системы продолжалась и в Bell Labs и в USG. Группа по исследованию компьютерных систем (Computer Systems Research Group, CSRG) Калифорнийского университета, участвовавшая в разработке и усовершенствовании системы Unix, стала центральным хранилищем исходных кодов и их улучшений. Группа собирала изменения, оценивала, упаковывала и передавала остальным обладателям действительной лицензии AT&T Unix. Кроме того, CSRG, работала с подразделением министерства обороны США, управлением перспективных исследовательских проектов (Advanced Research Projects Agency, ARPA), с целью реализации в Unix, различных функциональных возможностей, например, стек протоколов TCP/IP. Итоговая коллекция программного обеспечения Калифорнийского университета, получила название BSD (Berkley Software Distribution). Первый выпуск BSD был создан в 1977 году. В конце концов финансирование CSRG прекратилось, после чего, университетом в Беркли, было принято решение, открыть исходный код BSD для широкой публики. Первым дистрибутивом операционной , стала FreeBSD версии 1.0, выпущенная в 1993 году. За основу была взята лента 4.3BSD-Lite (""Net/2""), университета в Беркли, с многочисленными добавлениями из проекта 386BSD, и уже в мае 1994 года, выла выпущена FreeBSD 1.1 RELEASE. Тем временем, между компанией Novell и Калифорнийским университетом в Беркли назревал скандал, связанный с легальностью версии Net/2 из Беркли. Судебное разбирательство тянулось достаточно долго. В итоге, по условиям соглашения, достигнутого в ходе данного процесса, Калифорнийский университет признавал, что большие куски кода Net/2, были «унаследованным» кодом, права на который принадлежали компании Novell, ранее выкупившей эти права у компании AT&T. Взамен Novell давала «добро» на то, что версия 4.4BSD-Lite, будет объявлена как полностью свободной, а пользователям Net/2 будет настоятельно рекомендовано перейти на нее. Данное соглашение так-же касалось и FreeBSD, проекту было дано время, до конца июля 1994 года, для прекращения распространения продукта на основе Net/2. До истечения срока, было разрешено выпустить версию FreeBSD 1.1.5.1. Проекту предстояло почти все пересоздавать практически с нуля, взяв за основу, по сути не законченный проект 4.4BSD-Lite, и в ноябре 1994 года, была выпущена FreeBSD 2.0. Все это довольно запутанно, информация из различных источников как правило довольно противоречива. Очевидно одно, версия 4.4BSD-Lite, является бабушкой текущего кода FreeBSD а так-же прародительницей многих других операционных систем семейства BSD.

Другие BSD системы

4.4BSD-Lite породила не только операционную систему FreeBSD, но и массу других проектов, из которых можно выделить следующие:

NetBSD

- во многом подобна FreeBSD, а их команды делят между собой разработчиков и сам программный код. Основное назначение NetBSD, предоставить надежную и безопасную операционную систему, которая может быть перенесена практически на любую аппаратную платформу с минимальными усилиями. Так NetBSD работает на VAX, PocketPC, высокопроизводительных серверах SPARC и Alpha.

OpenBSD

- ответвилась от проекта NetBSD в 1996 году. Основным отличием от других BSD систем, изначальная ориентированность на повышенную безопасность. Одним из дочерних проектов OpenBSD, является пакет OpenSSH, использующийся практически всеми операционными системами и производителями аппаратного обеспечения.

MacOS X

- Стабильная операционная система с дружественным интерфейсом, использующаяся на компьютерах компании Apple, на процессорах PowerPC и Intel, так-же содержит в себе значительные участки кода BSD.

Операционные системы на основе FreeBSD:

  • DragonFly BSD
  • ClosedBSD
  • DesktopBSD
  • FreeSBIE
  • FreeNAS
  • Frenzy Live CD
  • Debian GNU/kFreeBSD
  • Gentoo/FreeBSD
  • IronPort AsyncOS - защитные устройства
  • Juniper Networks JunOS - роутеры Juniper
  • MidnightBSD
  • Nokia IPSO - защитные устройства Nokia IP
  • PC-BSD
  • PicoBSD
  • RofreeSBIE
  • The Dark Star
  • TrueBSD
  • m0n0wall
  • pfSense
  • Paxym FreeBSD для Octeon Cavium_Networks

Операционные системы на основе NetBSD:

  • OpenBSD – ответвление от NetBSD 1.0, акцент на активной безопасности и интегрированной криптографии
  • BlackBSD
  • Force10 Networks FTOS, операционная система для роутеров/свичей Force10 TeraScale E-Series
  • Debian GNU/NetBSD
  • Gentoo/NetBSD
  • Jibbed
  • PolyBSD/pocketSAN
  • Redback Networks SEOS, операционная система для роутеров серии Redback SmartEdge

Операционные системы на основе OpenBSD:

  • Quetzal
  • Anonym.OS
  • FuguIta
  • BSDAnywhere
  • Gentoo/OpenBSD
  • MirOS MirOS BSD
  • OliveBSD

Операционные системы на основе Dragonfly BSD:

Firefly BSD

Лицензия BSD

Лицензию BSD, можно считать самой свободной в плане ограничений налагаемых на пользователя, по сравнению с другими лицензиями на свободное программное обеспечение. Данная лицензия существует в двух вариантах, оригинальная и измененная. В измененную был добавлен дополнительный, 3-й пункт, гласящий: * * Ни название <Организации>, ни имена ее сотрудников не могут быть * использованы в качестве поддержки или продвижения продуктов, * основанных на этом ПО без предварительного письменного разрешения. Ниже приведен текст оригинальной лицензии BSD. * Copyright 1994-2009 The FreeBSD Project. All rights reserved. * * Разрешается повторное распространение и использование как в виде исходного * кода, так и в двоичной форме, с изменениями или без, при соблюдении * следующих условий: * * * При повторном распространении исходного кода должно оставаться * указанное выше уведомление об авторском праве, этот список условий и * последующий отказ от гарантий. * * При повторном распространении двоичного кода должна сохраняться * указанная выше информация об авторском праве, этот список условий и * последующий отказ от гарантий в документации и/или в других * материалах, поставляемых при распространении. * * ЭТА ПРОГРАММА ПРЕДОСТАВЛЕНА ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И/ИЛИ ДРУГИМИ * СТОРОНАМИ "КАК ОНА ЕСТЬ" БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, ВЫРАЖЕННЫХ ЯВНО * ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ПОДРАЗУМЕВАЕМЫЕ * ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. НИ В * КОЕМ СЛУЧАЕ, ЕСЛИ НЕ ТРЕБУЕТСЯ СООТВЕТСТВУЮЩИМ ЗАКОНОМ, ИЛИ НЕ УСТАНОВЛЕНО * В УСТНОЙ ФОРМЕ, НИ ОДИН ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ И НИ ОДНО ДРУГОЕ ЛИЦО, * КОТОРОЕ МОЖЕТ ИЗМЕНЯТЬ И/ИЛИ ПОВТОРНО РАСПРОСТРАНЯТЬ ПРОГРАММУ, КАК БЫЛО * СКАЗАНО ВЫШЕ, НЕ НЕСЁТ ОТВЕТСТВЕННОСТИ, ВКЛЮЧАЯ ЛЮБЫЕ ОБЩИЕ, СЛУЧАЙНЫЕ, * СПЕЦИАЛЬНЫЕ ИЛИ ПОСЛЕДОВАВШИЕ УБЫТКИ, ВСЛЕДСТВИЕ ИСПОЛЬЗОВАНИЯ ИЛИ * НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ * ПОТЕРЕЙ ДАННЫХ, ИЛИ ДАННЫМИ, СТАВШИМИ НЕПРАВИЛЬНЫМИ, ИЛИ ПОТЕРЯМИ * ПРИНЕСЕННЫМИ ИЗ-ЗА ВАС ИЛИ ТРЕТЬИХ ЛИЦ, ИЛИ ОТКАЗОМ ПРОГРАММЫ РАБОТАТЬ * СОВМЕСТНО С ДРУГИМИ ПРОГРАММАМИ), ДАЖЕ ЕСЛИ ТАКОЙ ВЛАДЕЛЕЦ ИЛИ ДРУГОЕ * ЛИЦО БЫЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ.

С момента выпуска стабильной версии FreeBSD 9.0 прошло меньше двух лет, а команда разработчиков уже готова представить следующий релиз своей ОС под красивым номером 10. Новая FreeBSD теперь компилируется с помощью Clang, поставляется в комплекте с DNS-сервером Unbound, имеет собственный гипервизор, аналогичный KVM, умеет работать со сжатыми томами ZFS и включает в себя еще несколько десятков интересных изменений.

Clang вместо GCC

Летом 2007 года фонд свободного ПО опубликовал окончательную редакцию лицензии GPLv3, на которую в скором времени должны были перейти все крупнейшие свободные проекты, координируемые фондом. Сообщество FreeBSD изначально не приняло эту лицензию, поскольку она еще более ограничивала реальную свободу ПО, чем GPLv2, а впоследствии отказалось от включения любого GPLv3-софта в базовую поставку ОС, как противоречащего лицензии BSD.

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

Так как поддерживать устаревшую версию GCC бесконечно нельзя, FreeBSD требовался идеологически правильный компилятор, и открытие исходных текстов Clang в том же году оказалось как нельзя кстати. В отличие от GCC, Clang распространялся под лицензией BSD и, по сути, компилятором не являлся. Это был всего лишь сырой фронтенд, который генерировал промежуточный код LLVM и передавал его последнему для оптимизации и компиляции.

Неспешно, но безостановочно Clang доводился до состояния полноценного компилятора, и к началу 2009 года всю FreeBSD, включая ядро и пользовательские утилиты, уже можно было скомпилировать без помощи GCC. В середине 2010 года Clang становится частью FreeBSD, но пока только в качестве альтернативы GCC. В 2012 году переход на Clang завершается, и он становится компилятором по умолчанию.

Для рядового пользователя такой переход, конечно, пройдет практически незамеченным: make buildworld будет работать так, как и раньше, порты будут собираться без всяких проблем, и даже такие команды, как gcc helloworld.c , будут работать без вопросов благодаря симлинкам. Зато настоящую выгоду это принесет разработчикам, многие из которых и раньше использовали Clang для прогона кода на предмет наличия ошибок (о которых Clang информирует гораздо подробнее GCC), но теперь этот инструмент будет использоваться по умолчанию.

Отключить Clang и перейти на GCC 4.2.1, который еще остается в комплекте FreeBSD, можно, добавив опции WITHGCC и WITH GNUCXX в файл /etc/src.conf .

BHyVe или KVM под лицензией BSD

Благодаря следованию идее тотальной свободы, гарантированной лицензией BSD и сведенной в одну знаменитую цитату «Делайте с кодом что хотите, но только не говорите, что он написан вами», фонд FreeBSD за время своего существования успел обзавестись многими покровителями. В их числе такие мастодонты, как Apple, NetApp и Juniper Networks, которые регулярно открывают код своих наработок на базе FreeBSD и смежных технологий (Clang, например, детище Apple). Очередной такой наработкой стал гипервизор BHyVe, созданный NetApp для использования в своем оборудовании. Его код был открыт в 2011 году и практически сразу включен в состав FreeBSD.

Bsdconfig

Начиная с девятой версии, FreeBSD была переведена на использование инсталлятора bsdinstall, пришедшего на смену неуклюжему sysinstall, который сами разработчики называли «запутанным куском кода, который никто не хочет поддерживать». Новый инсталлятор отличался простотой, интеллектуальностью, модульностью и расширяемостью, однако очень сильно уступал sysinstall в плане постинсталляционных настроек. Этот недочет исправили к выходу десятой версии, включив в комплект утилиту bsdconfig.

Новый конфигуратор, как и установщик, написан на шелл, обладает модульной структурой и может быть использован обособленно или в составе другого приложения (в данном случае bsdinstall). Уже сейчас bsconfig позволяет настраивать следующие сущности:

  • управлять настройками /etc/rc.conf (используется утилита sysrc);
  • создавать аккаунты и группы пользователей в системе и управлять ими;
  • конфигурировать часовые пояса (используется tzdialog);
  • конфигурировать сетевые интерфейсы, указывать параметры хоста, используемые DNS-серверы и шлюзы по умолчанию;
  • создавать и редактировать дисковые разделы;
  • настраивать консоль (шрифты, кодировки, локаль, хранитель экрана и прочее);
  • управлять запуском сервисов.

Другое

Из менее заметных, но значимых изменений можно назвать замену DNS-сервера BIND и сопутствующих утилит на кеширующий рекурсивный сервер Unbound и утилиты из комплекта LDNS. О полноценной замене здесь, конечно, речи не идет, а всего лишь выполняется требование иметь в базовой поставке ОС кеширующий DNS-сервер и валидатор DNSSEC. BIND, используемый для этой цели десятилетиями, успел превратиться в дырявого неповоротливого монстра, который уже просто неприлично включать в базовый комплект (BIND 10 требует, например, SQLite 3 и Python 3), а вот компактный и производительный Unbound выполняет эту работу на отлично. Те же, кому нужен полноценный DNS-сервер, могут установить BIND 10 из портов.

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

Во FreeBSD 10 будут включены новые инструменты установки и управления пакетами, названные pkgng. В отличие от устаревших утилит pkg_*, которые были всего лишь инструментом для выкачивания пакетов с FTP-сервера и разворачивания их в систему, pkgng представляет собой полноценный современный менеджер пакетов в стиле apt-get. Он работает с сетевыми репозиториями, учитывает зависимости и умеет правильно обновлять пакеты, а также удалять установленные как зависимости пакеты при удалении приложения. Со стороны пользователя работа с новым менеджером пакетов будет выглядеть примерно так:

# pkg update # pkg install gimp # pkg search firefox

INFO

Слово тивоизация происходит от названия выпущенного в 1999 году видеоплеера TiVo, который работал на ОС Linux, но при этом не позволял никоим образом изменить свою прошивку.

Кроме правильно лицензированного компилятора, в FreeBSD также появились собственные версии утилит sort и patch.

В FreeBSD 10.0 реализована поддержка USB Audio 2.0.



Вариантные символические ссылки

Из DragonFlyBSD во FreeBSD наконец портировали реализацию вариантных символических ссылок (varsym). По своей сути varsym - это та же символическая ссылка, в путях которой могут использоваться переменные, при изменении их значений автоматически меняется и сам путь. Основное преимущество таких ссылок в возможности их изменения пачками с помощью одной команды.


Переключение видеорежимов на уровне ядра

При подготовке FreeBSD 10 была проведена работа по интеграции KMS (переключение видеорежимов на уровне ядра) в драйверы для карт AMD, в дополнение к поддержке KVM в драйверах для Intel GPU, появившейся в 9.1. На данный момент технология KMS не имеет практически никакого значения для FreeBSD, однако она является одним из кирпичиков, используемых для построения графических систем будущего. Тот же Wayland, например, для своей работы требует поддержку KMS в ядре.

Выводы

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