О 5-FreeBSD

Алексей Федорчук
[email protected]

Близится год, как FreeBSD пятой ветки доступна в миру (в виде iso-образов). Сначала - в версиях для разработчиков, 1-й (май 2002 г.) и 2-й (осень того же года). Затем, в январе года текущего, она обрела статус как бы релиза. Как бы - потому как резонные люди (и в первую очередь сами разработчики) настоятельно не рекомендовали версию 5.0 к всамделишнему (тому, что называется индустриальным) применению: в этих ролях по прежнему выступали обновляющиеся версии 4-й ветки.

Вообще версии 5.0 не повезло: с одной стороны, до стабильной она явно не дотягивала, с другой - многие новые фичи в нее еще не попали. Но зато в бета-версию 5.1 разработчики засадили все свои задумки, изыски свои засадили, ну разные там прибамбасы, и все такое. Юзерам - чисто для эксперимента: не передохнут ли? Или там на Gentoo с CRUX'ами не разбегутся...

Все это вызывало естественное желание - ознакомиться. Чем я и озаботился на досуге.

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

В данном случае такой приятной неожиданностью оказалась поддержка железа. Установщик (вернее, ядро системы, над которым он работает) не только безошибочно опознал мой контроллер IDE-RAID (на чипе Promise FastTrak 376, обеспечивающим поддержку Serial-ATA/150 и ATA/133), но и увидел сидящий на нем винчестер (Seagate Barracuda IV). Отмечаю этот факт потому, что ни один из нынеживущих Linux'ов (при ядре 2.4.20) на такой подвиг оказался не способным. Да и ядро 2.5.X (конкретно - 2.5.69) не блеснуло - там поддержки Promise'вских RAID'ов как класса не обнаружилось...

Далее, не возникло и проблем с USB-мышью, хотя в списке выбора соответствующий тип отсутствовал и активизации курсора не происходило. Однако при указании типа мыши как Auto она подхватилась системой и заработала, как родная. Правда, об этом узнаешь только после перезагрузки - в ходе инсталляции мыль во FreeBSD бездействует. Так что я был весьма удивлен, когда, загрузив свежеустановленную систему и приготовившись править файл /etc/rc.conf, обнаружил в консоли исправно работающий курсор мыши. В прежних версиях для этого требовалась некоторая ручная доводка.

Что мне, очень далекому от всякого рода коммуникационных материй, всегда нравилось во FreeBSD, - так это настройка сетевых соединений. Я долго не мог понять, почему про это никто практически не пишет. Пока сам однажды не попробовал организовать выход в Интернет из локальной сети своей конторы. Тут-то и стало мучительно ясно - писать-то абсолютно не о чем. Ибо при наличии DHSP-сервера (а в большинстве нормальных сетей так оно и есть) настройка сети выполняется не просто, а очень просто: несколько впоросов, ответы на которые очевидны, и дело в шляпе.

На этот же раз я ставил систему дома, при модемном соединении. Настроить каковое оказалось ничуть не сложнее. Сначала, в поле всяких сетевых параметров, достаточно указания двух из них - имени хоста (каковым может выступать любая комбинация букв) и адреса DNS провайдера. Дальше следует серия вопросов о телефоне для дозвона, логине, пароле, методе авторизации (то есть поддерживается ли PAP или CHAP), характере набора (поддерживается ли тоновый). А потом на третьей виртуальной консоли запускается программа ppp в интерактивном режиме - и можно, набрав в ее собственной командной строке команду dial, соединяться.

Правда, по завершении установки и перезагрузки машины в тупую соединиться сразу - не удалось. По очень простой причине: в соответствующем конфигурационном файле обнаружилось две секции, унаследованная default (с какими-то мифическими параметрами) и installer - именно то, что было настроено через sysinstall. Так что достаточно оказалось внести необходимые коррективы (я просто удалил секцию default, а секцию installer переименовал в умолчальную) - и все заработало.

При создании дисковых разделов - также новшество: по умолчанию на всех партициях создается файловая система UFS2, усовершенствованная, 64-разрядная (то есть позволяющая использовать разделы более 2 терабайт - при нынешних темпах дискостроения недалек тот день, когда это станет актуальным для настольных машин). Правда, она - не журналируемая, то есть требует проверки на целостность после системных сбоев. Однако во FreeBSD 5 эта проверка осуществляется в фоновом режиме, без нудного оджидания во время рестарта, что весьма изводило в 4-й ветке.

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

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

В первую голову это, конечно, файловая система устройств, devfs, во всей ее красе. Отныне не нужно создавать недостающие после регенерации ядра устройства сценарием /dev/MAKEDEV или, паче того, командой mknod. Из каталога /dev исчезли многочисленные терминалы и псевдотерминалы, отсутствующие в реальности. Весь вывод команды

$ ls /dev

занимает только пол-экрана, но зато все имена в нем - файлы реально задействованных в системе устройств. Ну и горячее подключение: стоит воткнуть USB-драйв в соответствующий разъем - как в каталоге /dev появялется новое устройство, /dev/da0 (как и в Linux'е, во FreeBSD все не-ATA накопители любят прикидываться SCSI-дисками).

Что при этом приятно, так это отсутствие смены номенклатуры накопителей (и прочих устройств) при переходе на devfs: никаких тебе /dev/ide/host0/bus0/target0/lun0/disc, первый диск на первом IDE-канале как был /dev/ad0, так им и остался, диск на IDE-RAID сохранил свою девичью фамилию ar0, и так далее.

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

К слову о сидюшниках. Как известно, в Linux писать CD-диски (болванить, по меткому выражению Teo) просто: нужно только правильно сконфигурировать ядро (включить поддержку эмуляции SCSI через IDE, общую поддержку SCSI-интерфейса, generic SCSI и, при желании, SCSI CD-ROM), персобрать его, установить пакет cdrtools - и болванить в свое удовольствие.

А вот во FreeBSD это опять же не просто. А очень просто. В базовый набор (Distributions) входит утилита burncd - специально для работы с ATAPI CD-R/RW. Так что сразу после установки системы ее можно запустить в виде, примерно следующем:

$ burncd -f /dev/acd0 data имя_iso_образа fixate

и диск будет немедленно сболванен. Правда, вот изготовить iso-образ штаными средствами не удастся - для этого нужно установить из портов (или из коллекции пакетов) утилиту mkisofs, по причине лицензии она в Distributions не входит.

Впрочем, о комплектации дистрибутива FreeBSD я сейчас говорить не буду - это тема отдельного разговора. Замечу только, что функционально Distributions - это практически полный аналог того самого Base Linux, о котором столько говорилось в соответствующем разделе.

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

Приведу простой пример: знакомство с любой новой системой я начнию с того, что собираю в ней свои любимые инструменты, в частности, оболочку zsh и редактор joe. Так вот, при попытке установить через порты первую был затребован файл документации к zsh. Что, конечно, идеологически правильно - читать документацию нужно. Однако у меня все доки к zsh давным-давно не только скачаны, но и распечатаны (в частности, PDF страниц на 250 - перечитываю на сон грядущий). И оснований качать еще раз два мегабайта по модему я не видел. Однако и простого (то есть лежащего на поверхности) средства запретить порту это делать я не нашел.

С joe получилось еще забавнее. При выдаче команды make install его порт в первую голову завопил, что желает скачать и установить gnu make определенной (3.80, естественно) версии. Это при том, что в Distributions FreeBSD свой make имеется (иначе как бы система портов работала?). Ладно, думаю, подсовываю ему gnu make в /usr/ports/distfiles. Думаете, успокоился? Нет, захотелось ему еще и gettext (хотя, например, в CRUX'е, где gettext'а в базовом комплекте и в помине нету, joe у меня собирался без звука).

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

Что еще? Ухудшилась (надеюсь, что временно) совместимость с Linux'ом на уровне обмена данными. Раньше теоретически из Linux'а можно было получить доступ к Free'шным слайсам в режиме как чтения, так и записи (хотя и с предупреждением об опастности последнего). Ныне Linux UFS2-разделов понимать не желает. И неизвестно, возжелает ли это в будущем. GRUB текущей (0.93) версии также не знаком с файловой системой UFS2 и, соответственно, ядро FreeBSD загружать отказывается (цепочечную загрузку, вероятно, организовать можно, но я пока не пробовал).

В обратном направлении - еще хуже. Доступ из FreeBSD к ext2-разделам (и ext3, видимо, тоже) возможен после пересборки ядра - штатно эта файловая система ядром GENERIC не поддерживается. И по-прежнему в соответствующем комментарии стоит грозное предупреждение - зело опасная это процедура, запись на ext2-раздел. А вот про ReiserFS или XFS можно пока забыть - их поддержки во Free, кажется, нет и в проекте. Проскочила информация о том, что в текущую версию FreeBSD (это было еще перед ее заморозкой в связи с подготовкой к выходу релиза 5.1) включена поддержка JFS, но в конфигурации ядра я соответствующей опции не нашел. Да и вообще, многие ли линуксоиды пользуют JFS в обыденной жизни?

Вот пока и все мои впечатления. Заметка получилась сумбурная, поэтому подведу краткий итог: в общем и целом FreeBSD 5-й ветки мне понравилась. В своей Distributions-части она сохранила стройность и целостность, обогатилась всякими современными функциями и потому не смотрится в сравнении с текущими дистрибутивами Linux столь архаично, как 4-я ветка. А когда на нее еще и Gentoo-портежи оденут - так вообще будет красота и божья благодать.

Так что очередной тур дискуссии Linux vs. FreeBSD можно в очередной же раз резюмировать словами великого русского поэта Алексея Константиновича aka Толстого:

Мне нравятся очень... обои, -
Сказал я и выбежал вон.

На чем и я откланиваюсь.