Глава из книги Сага о FreeBSD
Алексей Федорчук
2008-11-12
Рискну предположить, что большинство пользователей BSD-систем приходят из Linux-мира. И не из последних причин к тому являются запутанные лабиринты дистрибутивов последней, многообразие схем инициализации, масса дистрибутив-специфичных средств настройки и, наконец, обилие инструментов пакетного менеджмента. После чего BSD-мир выглядит столь простым и понятным, что поневоле возникает вопрос: а почему бы мне было не начать знакомство с POSIX-системами именно с FreeBSD?
Тем не менее, мало кто рискнет предложить FreeBSD в качестве системы для совсем уж начинающего пользователя. И причин к тому две: не вполне интуитивно понятный инсталлятор (sysinstall) и непривычная схема разметки диска.
Ни то, ни другое не являют собой непреодолимого рубежа на пути в новый дивный берклианский мир. Но — если бы пользователь двигался туда с нулевой отметки; то есть не имея представления о компьютерах и операционках вообще. Или — если бы его знакомство с последними ограничивалось "черным DOS'ом". Но вся беда в том, что к первой инсталляции FreeBSD пользователь подходит, получив некий опыт работы в Windows (вполне достаточный, чтобы привить стойкое отвращение к этой системе) и, скорее всего, в каком-либо юзерофильном Linux-дистрибутиве, более или менее успешно уже на стадии инсталляции мимикрирующем "под винду". После чего внутренняя логика sysinstall может показаться ему чуждой и непонятной.
Что же касается дисковой разметки... При первой в своей жизни установке Linux пользователь сталкивается с теми же Primary и Extended Partitions и логическими разделами в последних, с которыми он уже был знаком в DOS/Windows (разница только количественная — вместо одного первичного и одного расширенного раздела с логическими томами перед ним предстают все четыре первичных раздела, один из которых может быть подвергнут дальнейшему дроблению). BSD-мир же требует от пользователя погружения в омут слайсов и их разделов — в материи, для которых не существует даже устоявшейся англоязычной номенклатуры, а все русские эквиваленты ее способны только еще больше сбить с панталыку. Хотя "внутре" эти понятия не содержат ничего сложного, будучи много логичней схемы "матрешечных контейнеров" в расширенном разделе DOS-схемы разметки.
Есть ли выход из этого тупика? В Linux-мире, где обозначенная проблема "вхождения в тему" также существует, хотя и менее выражено, выход нашли в создании "юзерофильных" (user friendly) дистрибутивов, призванных снизить порог вхождения в проблему. Непременным атрибутом такого дистрибутива стал легкий и простой в использовании графический инсталлятор (или, по крайней мере, инсталлятор, воплощающий представление разработчиков о легкости и простоте). Способный к выполнению наиболее критичных для начинающего пользователя действий (дисковая разметка, выбор компонентов, настройка Иксов) в автоматическом или полуавтоматическом режиме.
Однако специфика Linux-дистрибутивостроения была такова, что все такие дистрибутивы рано или поздно обрастали собственными "всеобъемлющими" графическими конфигураторами, средствами пакетного менеджмента и своеобычными схемами инициализации, превращаясь в практически самостоятельные системы, умножающие сущности, либо так и оставаясь "дистрибутивами для бедных", тех, кто так и "ниасилил" дистрибутивы нормальные (почему — не смог или не захотел — это уже совсем другой вопрос).
На берклианской почве традиции юзерофилии долгое время не прививались. Инсталляторы ни одной из трех главных BSD-систем за все время их существования не сделали ни шага в этом направлении. А немногочисленные LiveCD, построенные на базе FreeBSD, предназначались либо для специальных целей (как Frenzy или FreeNAS), либо просто для получения самых общих представлений о системе (как FreeSBIE или её отпрыск RoFreeSBIE).
Но вот наконец на протяжении 2005 года появляются подряд сразу два "юзерофильных" дистрибутива FreeBSD — сначала PC-BSD, затем DesktopBSD. А еще через пару лет к ним присоединяется MidnightBSD. Подчеркну, что все они возникли именно как дистрибутивы в узком смысле слова, то есть способы распространения основной системы: в основе их всех лежат акутальные версии FreeBSD в неизменном виде, лишь дополненные некоторыми компонентами, среди которых наиболее значимые — инсталляторы и, в случае PC-BSD и MidnightBSD, собственные системы пакетного менеджмента.
Ниже я вкратце расскажу об особенностях установки PC-BSD и DesktopBSD — с MidnightBSD дела не имел, так что сказать о ней мне нечего. Может быть, кто-то из читателей, заинтересовавшись этим берклианским отпрыском, восполнит данный пробел.
Дистрибутив PC-BSD основывается на FreeBSD актуальной стабильной ветке — и нумерация его версий ныне приведена в соответствие с таковыми праматери, то есть на момент сочинения этих строк текущей является весрия 7.01 (основанная на FreeBSD 7.0 с некоторыми компонентами из разрабатываемой 7.1).
Первое время дистрибутив PC-BSD представлял собой одинокий компакт, выступавший как в роли установочного, так и ознакомительного LiveCD. Однако постепенно он распухал в объёме, а функции "живого" диска редуцировались. И ныне с официального сайта и его многочисленных зеркал (смотреть здесь) можно получить чисто установочные наборы для архитектур i386 (точнее, в сборке, оптимизированной под i686) и x86_64 в следующих вариантах:
Оба образа для сетевой установки рекомендую скачивать только в том случае, если вы более чем уверены в скорости и, главное, устойчивости своего сетевого подключения. Я, например, на своё не жалуюсь, но попытка установить систему с носителя USB BootOnly заглохла у меня примерно после скачивания двух третей необходимого для стандартной инсталляции объема.
Что делать с образами установочных компактов или DVD-дисков, понятно: их надо "сболванить" на соответствующие носители любым подручными способом, например, через burncd во FreeBSD или через cdrecord или любой его фронт-энд — в Linux'е (во FreeBSD, как мы узнаем со временем, этот метод также доступен).
С образами USB-носителей — ничуть не сложнее: они переносятся на флэшку соответствующего объема посредством примерно такой команды:
# dd if=path2/img_file.iso of=/dev/da0 bs=1m
Как обеспечить загрузку машины с CD-привода — знает нынче любой ребёнок. А вот установка USB-носителя в качестве загрузочного устройства осуществляется по-разному в зависимости от BIOS'а материнской платы — и тут лучше свериться с документацией к оной.
После старта с любого из установочных носителей выводится меню BSD Loader'а, несколько модифицированное по сравнению с классическим его видом во FreeBSD:
1. Boot PC-BSD installer; 2. Boot PC-BSD with ACPI disabled; 3. Boot PC-BSD in safe mode; 4. Boot PC-BSD in single user mode; 5. Boot PC-BSD with verbose logging; 6. Boot PC-BSD to emergence console; 7. Run installer in VESA mode; 8. Enable installer ZFS support; 9. Escape to loader prompt.
Разумеется, выбираем пункт 8, после чего видим сообщение
bootzfs set
нажимаем Enter — и наблюдаем процесс загрузки.
В ходе её задаётся вопрос о проверке целостности источника установки. Ответ по умолчанию — yes, однако лучше ответить отрицательно. В противном случае и так не очень торопливый процесс загрузки системы затянется вообще до бесконечности.
По завершении загрузки собственно системы стартует X-сервер и запускается графический инсталлятор — тот самый Qt'шный фронт-энд над BSD Installer'ом. К слову сказать, кроме инсталлятора в загруженной системе ничего и нету — в отличие от ранних версий PC-BSD, ныне мы не видим ни LiveCD-окружения, ни даже виртуальных текстовых консолей.
Первым пунктом в меню инсталлятора будет — Select language. Он включает подпункты:
Ну а по поводу отправки анонимной статистики использования — это уж решайте сами.
По идее, локализация должна зело способствовать на следующем этапе установки — ознакомлении с лицензионным соглашением и согласием с ним. Однако в случае с великим и могучим прочитать лицензионное соглашение несколько затруднительно, ибо написано оно нечленораздельными кракозябрами. Благо разработчики нечто вроде этого предвидели и продублировали его и по-аглицки, так что соглашаться с ним можно не совсем втёмную.
После согласия с лицензией переходим к следующему пункту — выбору типа установки. Возможные альтернативы:
Отмечаем нужные чекбоксы — Новая установка (впрочем, альтернатива Обновление и недоступна за отсутствием её предмета, то есть предыдущей версии системы; обновить стандартную FreeBSD до PC-BSD невозможно), Редакция для настольных систем и желаемый источник инсталляции, с учётом сказанного выше о требованиях к сетевому соединению.
Если была выбрана установка по сети, далее происходит переход к настройке оной: указание сетевой карты (у меня она определилась автоматически — и правильно), использование DHCP (если от него отказаться, последует запрос на ручной ввод IP-адреса, маски подсети и шлюза) и сервера-источника (официальный сервер проекта или его зеркала).
Следующий этап — системные учётные записи. В соответствующих полях вводится пароль администратора и его подтверждение, затем логин и пароль обычного пользователя, его командная оболочка, после чего эти данные, с помощью кнопки Добавить, вносятся в список пользователей — их аккаунтов можно создать сколько угодно. Тут же отмечается включение автоматического входа в систему для пользователя, возглавляющего список.
После этого переходим к разметке диска. Сначала выбирается целевой носитель (если есть, из чего выбирать), а вслед за этим — раздел. Возможные варианты — использовать весь диск, один из существующих первичных разделов (разумеется, с уничтожением данных на них), или свободное пространство, если оно имеется. Тут же отмечается, устанавливать ли локальный загрузчик — то есть модифицировать ли MBR для использования BSD Loader'а. Если какой-либо мультисистемный загрузчик (GRUB или Lilo) на диске уже имеется, от этого лучше отказаться, а потом настроить существующий.
Однако предположим, что свободное (то есть неразмеченное) пространство на диске у нас имеется, или есть первичный раздел, содержимым которого можно пожертвовать. В этом случае инсталлятор предлагает нам разметку по умолчанию — в виде корневого раздела и раздела подкачки. И предлагает на выбор файловые системы для первого — UFS2, UFS2+SoftUpdates или UFS+Journal. Однако нас интересует в первую очередь ZFS, которой в списке не наблюдается. Да и умолчальная схема разметки, мягко говоря, далека от совершенства.
Благо, есть и иной выбор — настроить разделы вручную, и тут можно уже выбрать ZFS в качестве файловой системы корня файловой иерархии. Хотя всё это не так просто. За основу предлагается принять такую схему разметки:
Зачем нужен специальный раздел под каталог /bootdir — мы поговорим в главе о файловой системе ZFS. Пока же примем его как данность, с той только поправкой, что двухсот мегабайт для него слишком жирно — за глаза хватит и пятидесяти (а то и 20–30). Не резон также валить в корень единой файловой системы пользовательские данные и многое другое — впрочем, об оптимальных схемах дисковой разметки вдоволь говорилось в предыдущих главах. Здесь же замечу только, что наличие кнопок Добавить, Редактировать и Удалить позволяет перекроить дисковую разметку так, как душе будет угодно.
Следующий шаг после разметки диска — выбор дополнительных компонентов, среди которых присутствуют такие приложения, как Firefox, GIMP, Openoffice.org, Amarok, K3b, Quanta, Pidgin, VLC и другие. Стоит ли устанавливать что-либо из них, даже при наличии потребности, — вопрос спорный. И для осмысленного ответа на него нужно знать, что программы эти будут установлены из бинарных пакетов собственного, весьма специфического, формата (так называемых PBI-пакетов). С другой стороны, в последующем все нужные дополнительные приложения можно будет установить и традиционным для FreeBSD способом — то есть собрать из системы портов. Так что если PC-BSd для вас только трамплин, позволяющий облегчить прыжок в мир BSD-систем, от них, наверное, стоит отказаться.
Теперь, вне зависимости от этого, уже последнего, выбора, начинается процесс инсталляции — разметка диска и установка системы. С локального носителя она происходит достаточно быстро — не смотря на то, что кроме базовой системы, у нас разворачиваются также Иксы, KDE и довольно приличный набор его приложений. А вот установка по сети будет продолжаться весьма долго — и, как я уже говорил, без гарантии успеха.
Однако будем оптимистами и предположим, что установка, вне зависимости от её способа, завершилась успешно, как успешно прошла и последующая перезагрузка машины — уже в новую систему. Вслед за этим стартуют Иксы и предлагается выбрать разрешение экрана (в том числе доступны и нестандартные, типа 1280x800), глубину цвета и драйвер (из числа штатных Иксовых, по умолчанию стоит vesa). В расширенных настройках есть выставление частот развертки и включение вывода на два монитора.
После завершения настроек графического режима предлагается авторизоваться через KDM (если при установке не был включён автоматический вход в систему) и загружается KDE ультрамодерновой версии 4.1.2, весьма симпатично оформленное (рисунок).

Во избежание недоразумений следует подчеркнуть: то, что мы получили после установки дистрибутива PC-BSD, являет собой самую что ни на есть обычную FreeBSD с ядром GENERIC и своеобычной схемой инициализации: никаких отличий от материнской системы макроскопически выявить не удается. Не считать же таковым KDE и его приложения...
Из приятных мелочей можно отметить автоматическое монтирование сменных носителей (компакт-дисков и USB-флэшек), что называется, "из коробки". При этом используется тот же самый механизм HAL, что и в Linux'е, и, соответственно, монтирование происходит от лица пользователя. Во FreeBSD, как мы увидим позднее, это также можно настроить -- но только вручную.
Набор установленных из дистрибутива KDE-приложений не то чтобы поражает воображение — но содержит практически все необходимое: от сетевых средств до графики и мультимедиа, и даже игр. В то же время KDE-излишеств (типа пакетов kdeedu и kdetoys) не наблюдается.
Далее, при установке PC-BSD автоматически включается поддержка режима совместимости с Linux'ом, что даёт возможность использовать без перекомпиляции бинарные приложения, распространяемые для этой операционной системы. Ну а инсталлированный wine обеспечивает доступ к Windows-приложениям.
Возникает вопрос — где брать софт, не попавший на дистрибутивный диск? И тут "средь мира дольного, для сердца вольного, есть два пути". Одна — "просторная, дорога торная", и ведет она к использованию обычных портов и пакетов FreeBSD. Правда, дерева портов при инсталляции не устанавливается — однако получить его не составит труда, причём различными способами (об этом будет говориться в главе о портах и пакетах), после чего порт нужной программы устанавливается обычным способом. Ну а установка прекомпилированных пакетов из репозитория FreeBSD и того проще — это делается командой pkg_add (о чём также разговор впереди).
Есть, однако, и еще один путь наращивания функциональности дистрибутива: это прекомпилированные пакеты в собственном формате, получаемые с сайта проекта. Установка их предельно проста: средствами KDE (например, через kget или непосредственно konqueror) файл такого пакета (вида *.pbi.gz) скачивается, помещаясь на рабочий стол (или в иное другое место). После чего инсталлятор пакетов запускается, запросив предварительно пароль администратора, щелчком мышью на пиктограмме или имени файла.
При установке задается один-единственный вопрос — включать ли пакет в K-меню и помещать ли его пиктограмму на рабочий стол. Затем можно наблюдать процесс распаковки архива. По завершении чего на рабочем столе появляется пиктограмма установленного пакета.
Система пакетного менеджмента — главное (и чуть ли не единственное) отличие PC-BSD от прародительницы — FreeBSD. И, нужно сказать, в этой системе ее создатели замахнулись на самое святое — на принцип размещения установленных компонентов. Потому что все они собираются в каталог /usr/local/MyPrograms/pkg_name — и исполняемые бинарники, и все библиотечные составляющие. То есть такой пакет оказывается абсолютно автономным, не испытывая никакой потребности в каких-либо внешних библиотеках. А для удобства его запуска символическая ссылка на исполняемый бинарник помещается на обычное место — в /usr/local/bin.
Крамола! — воскликнет стойкий приверженец True Unix Way. Не совсем, — возразим ему мы. Начать с того, что предлагаемая система пакетного менеджмента ни в коем случае не позиционируется разработчиками как замена традиционных ports/packages, а лишь как их дополнение: все общесистемные компоненты и главные приложения (включая Иксы и KDE) устанавливаются и размещаются традиционным способом (в разделяемые подкаталоги /usr/local и /usr/X11R6). А каталог /usr/local/MyPrograms предназначен преимущественно для дополнительного программного обеспечения, подобно каталогу /opt во многих дистрибутивах Linux. Особенную рнадость от такой локализации пакетов ощущаешь при их удалении — для чего достаточно просто снести одноименный подкаталог.