О блоге

Все новые материалы размещаются на Блогосайте alv.me. Старые - в процессе переноса.

26.07.2008

Графический инсталлятор для FreeBSD

Как известно, FreeBSD штатным образом устанавливается посредством программы sysinstall (которая одновременно выступает и универсальным постинсталляционным конфигуратором). Отношение к ней в народе - двоякое: те, кто врубился в ее логику, эту программу любят, те, кто не смог или не захотел, - ненавидят. Кроме того, ее псевдографический облик выглядит в наши дни архаичным - в дни, когда даже самые консервативные дистрибутивы Linux, типа Debian, не считают за грех обзавестись графическим инсталлятором. Главный же недостаток sysinstall в том, что он не позволяет своими средствами включить такие функции, как поддержка программного RAID или нестандартных файловых систем - ибо функциональность его не менялась веками. Как сказал один из моих корреспондентов, тех, кто мог бы модернизировать sysinstall, это не интересует, а тем, кто хотел бы видеть его модернизированным, это не под силу.

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

И тем не менее, время от времени предпринимаются попытки прикрутить графический инсталлтор и к FreeBSD. Две из них превратились в самостоятельные проекты, зажившие собственной жизнью - PC-BSD (описан здесь) и DesktopBSD (от нем можно почитать тут). А в рамках программы Google's Summer of Code 2005 и для чистой FreeBSD Эндрю Тернером был придуман альтернативный установщик, правда, текстовый (о чем также говорилось ранее).

Не смотря на разницу в деталях, все эти инсталляторы объединяет их база (back-end), каковой выступает BSD Installer, впервые использованный в DragonFlyBSD (при желании читаем здесь). Различие между ними - только во front-end'ах: в PC-BSD и DesktopBSD они основаны на библиотеке Qt, в проекте Эндрю Тернер - библиотека ncurces. Впрочем, последний не снискал всенародной любви, и развитие его, похоже, прекратилось (последний снапшот датируется 2006-05-15).

И вот перед нами новая попытка одеть FreeBSD во фрак, предпринятая Айвоном Форэсом (Ivan Voras) рамках все той же программы Google's Summer of Code (теперь уже - 2007). Прочитать о ней можно здесь, а скачать первые результаты работы (в виде сжатого образа установочного диска, он же LiveCD под названием freebsd7-finstall-alpha.iso.bz2, объемом 265 Мбайт) - отсюда. В отличие от всех предыдущих вариантов, он основывается на собственном back-end'е и имеет front-end, построенный на Gtk, запускаемый из среды XFce. Сама же устанавливаемая им система - обычная FreeBSD текущей (current) версии для архитектуры i386.

Не то, чтобы я ощущал настоятельную потребность в графическом установщике для FreeBSD, но посмотреть на нее было бы очень любопытно. К тому же в многочисленных новостных сообщениях о finstall проскальзывали такие любопытные сведения, как то, что она дает возможность "из коробки" обеспечить работу программного RAID, журналирование файловой системы и использование новой супер-прогрессивной файловой системы ZFS - то, что при стандартной установке через sysinstall невозможно и требует последующих не вполне тривиальных манипуляций. Забегая вперед, скажу, что сведения эти оказались несколько преувеличенными...

Маленькое отступление. Сама по себе ZFS заслуживает отдельного рассмотрения, которое, надеюсь, со временем появится на этих страницах. А пока - переводы некоторых документов, имеющих отношение к ее использованию во FreeBSD.

Установка предполагалась на машину, конфигурация которой была подробно описана здесь. Отмечу только, что внутри нее наличествовали: процессор AMD 64, материнская плата ASUS M2NPV-MX на чипсете GF6150, 1 Гбайт памяти и винчестер Samsung SATA II объемом 120 Мбайт (прочие компоненты, полагаю, несущественны в данном контексте). Диск нес на себе extended-раздел, размеченный под Linux (как - вряд ли важно) и имел около 25 Гбайт неразмеченного пространства.

Итак, скачиваю указанный выше файл, распаковываю (после чего объем образа оказывается чуть больше 400 мегабайт), записываю на болванку и загружаюсь с нее - обычным образом.

После загрузки появляется обычная FreeBSD'шная заставка - правда, без чёртика (а просто с псевдографической надписью FreeBSD), и с обычными же пунктами меню:

  • 1. Boot FreeBSD [default]
  • 2. Boot FreeBSD with ACPI disabled
  • 3. Boot FreeBSD in Safe Mode
  • 4. Boot FreeBSD in single user mode
  • 5. Boot FreeBSD with verbose login
  • 6. Escape to loader prompt
  • 7. Reboot

В моем случае без всяких проблем прошел пункт 1 - ACPI отключать не потребовалось.

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

С root'ом - все ясно: в этом варианте мы получаем минимальную систему, почти ту же самую, что и при загрузке в однопользовательском режиме. А вот вход под логином install вызывает для начала как бы псевдографическую панельку в обычном FreeBSD'шном стиле (неотличимую от аналогичной панели sysinstall), которая предлагает выбрать раскладку клавиатуры. Переключиться в другую виртуальную консоль, однако, возможно только комбинацией клавиш Alt+Control+Backspace. Консолей - стандартное для FreeBSD количество (то есть 8).

Выбираем раскладку раскладке. Из кириллических раскладок доступны:

  • CP866
  • ISO-8859-5
  • KOI8-R
  • KOI8-R (shift)

Как и следует ожидать, ничего юникодовского нет и в помине – консольный драйвер FreeBSD, syscons, имеет внутреннее 8-битное представление символов и потому принципиально к этому не способен. Хотя, учитывая, что все дальнейшие события осуществляются в графическом режиме в среде XFce, можно было бы предусмотреть и UTF-8 – тем более что, как будет видно дальше, на консоли выбор раскладки все равно не сказывается. Посему выбираем традиционную KOI8-R - в предположении (оказавшемся ошибочным), что это та самая, в которой переключение латиницы и кириллицы выполняется привычным CapsLock.

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

Затем - предложение выбрать часовой пояс, по обычной для sysinstall схеме: континент - > страна - > город (то есть в моем случае Europe -> Russian Federatipn -> Moscow+00 - west Russia.

А вот теперь и начинается охмурёж - загрузка Иксов и с ними - интегрированной среды XFce. После чего мы собственно и оказываемся в обстановке LiveCD с правильно (в моем случае настроенным видеорежимом) - 1280x1024. Впрочем, "жизненность" этой обстановки несколько условна: сеть автоматически не настраивается (хотя у меня банальный DHCP), раскладка клавиатуры в Иксах - только русская (и способа переключения на латиницу я так и не нашел), в консоли же - напротив, только латинская. Из приложений - XFce'шный терминал, редактор Mousepad, файловый менеджер Thunar, браузер FireFox и почтовый клиент Thunderbird, бесполезные из-за отсутствия сети, Да и работает все это хозяйство с компакта крайне задумчиво - много медленней, чем Linux'овые LiveCD аналогичной конфигурации.

Да, виртуальные текстовые консоли по прежнему доступны - по той же комбинации Alt+Control+Backspace. В них можно авторизоваться root'ом, однако что делать дальше - не понятно, консольных приложений, кроме самого необходимого аварийного набора, нет.

В общем, только и остается, что отыскать на рабочем столе пиктограмму FreeBSD Installer и, дважды щелкнув не ней мышью, приступить к установке. Что я и сделал.

После этого появляется установочное меню о четырех пунктах:

  • 1. Novice (minimal interaction)
  • 2. Standard (allow advanced pre-install configuration, including RAID)
  • 3. Expert (only if yuo know what yuo doing)
  • 4. Configuration only (skip install)

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

Тут мне сразу стало скучно, тем не менее, я решил рискнуть и попробовать поставить систему с минимальными interaction – то есть для ленивых.

После нажатия на кнопку Next от меня запросили целевой диск для установки - благо он у меня один (в номенклатуре FreeBSD - ad4), и ломать голову не пришлось.

Тут и случился первый облом: инсталлятор радостно сообщил мне, что ранее размеченные диски он не поддерживает (не смотря на наличие на нем неразмеченного пространства), и предложил мне выбрать диск чистый. Такового в машине не имелось, но был - в ящике стола. Правда, для его подключения требовалось, как легко догадаться, обесточить машину. Штатным средством XFce предусматривалось только перелогирование, которое, разумеется, просто выкидывало в голую консоль. Из которой это и можно сделать с помощью команды halt. Которая опять-таки к автоматическому отключению питания не приводит, и на кнопку power, не смотря на вроде бы имеющуюся поддержку ACPI, машина не реагирует также. А поскольку тумблера на блоке питания у меня нет, приходится банально выдирать силовой кабель.

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

Для чего я все-таки обесточиваю машину и прикручиваю к ней второй винт - Samsung же, также SATA II, но на 160 Гбайт, не зря же я его купил буквально накануне, правда, для других совсем целей.

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

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

  • 1. UFS+SoftUpdate - традиционно для FreeBSD.
  • 2. UFS+gjornal - ее же вариант с журналированием (некое подобие ext3 в Linux).
  • 3. ZFS - последний писк моды в области файловых систем, 128 файловая система, разработанная первоначально фирмой Sun для ее Solaris'а, но ныне обретающая поддержку и на более иных платформах.
  • 4. Ext2 - система для совместимости с Linux.

Как я уже говорил, одной из целей всего этого развлечения было - ознакомиться с файловой системой ZFS. Однако и пункт, касаемый ее, пока нельзя активизировать (видимо, и это - в в светлом будущем, в отдаленной перспективе). Так что останавливаюсь на традиционном UFS+SoftUpdates. После этого предлагается схема автоматической разметки в следующем виде:

  • ad4s1a / 512 MB
  • ad4s1b swap 990MB
  • ad4s1d /var 2048 MB
  • ad4s1e /usr 10240 MB
  • ad4s1f /home 138831 MB

Возможности изменить ее нет. Хотя сама по себе умолчальная схема разметки и разумна, но иногда ее будет недостаточно: подчас целесообразно вынести на самостоятельные разделы такие ветви файловой системы, как /usr/local, /usr/src, /usr/ports, /usr/ports/distfiles.

Все разделы, разумеется, несут на себе UFS+SU (в том числе и корень, который в sysinstall по умолчанию ложится на чистую UFS, без SoftUpdates). Поскольку собственно разметки еще не произошло, возвращаюсь назад и выбираю вариант с UFS+gjornal - чисто для интереса. Схема разметки получается абсолютно та же, только каталоги /usr и /home оказываются лежащими на UFS+gjournal (для корня и /var сохраняется UFS+SU). С gjournal мне раньше иметь дело не приходилось (когда я активно фришничал, ее еще не было), потому оставляю последнюю схему разметки в экспериментальных целях.

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

Установка пакетов оказывается не очень долгой. По ее завершении предлагается задать имя хоста (по умолчанию finstall) и ввести пароль администратора - тут-то и оказывается, что на самом деле при установке единственно возможная раскладка клавиатуры - американская: хотел бы я посмотреть на реакцию системы на кириллический пароль). Правда, имеется кнопка Generate - вероятно, как раз для таких случаев. Правда, запоминать такие сгенерированные пароли - задача не из простых.

Впрочем, проблема оказывается чисто теоретической - в моем случае после назначения root'ового пароля произошел полный зависон - абсолютно мертвый, потребовавший опять-таки выдирания силового кабеля. Попытка, после перезагрузки и прохождения описанных выше стадий - вплоть до запуска инсталлятора, - опробовать 4-й пункт его меню (Configuration only) дала тот же самый результат: мертый вис после определения пароля администратора. Грузиться с винчестера система при этом отказывалась категорически, ссылаясь на невозможность считать ядро. Так что поглядеть на результаты установки мне удалось чисто внешне - загрузившись обратно же с CD, войдя root'ом в консольный режим, подмонтировав разделы / и /usr и проглядев их содержимое командой ls.

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

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

Главная же особенность этого установщика - функциональность - правда, существующая пока только в проекте. Обычно графические альтернативы традиционных текстовых инсталляторов функционально более или менее обеднены. Это касается, например, упоминавшихся выше PC-BSD и DesktopBSD, или, в мире Linux, Ubuntu. В лучшем случае функциональность текстовой и графической версий идентична - чему примером служит современный Debian. Finstall же, напротив, предусматривает функции, недоступные через sysinstall (хотя пока и эвентуальные) - те же программный RAID или поддержку журналируемой UFS и ZFS. Так что остается только пожелать автору удачи в его труде по доведению инсталлятора до ума своего детища.

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

"Так оставьте ненужные споры" о нужности или ненужности графического инсталлятора для FreeBSD: в конце концов, никто не собирается отменять не только sysinstall, но даже ручной перенос системы с компакта на винчестер (такой способ установки FreeBSD тоже не исключен) или FreeBSD from Scratch. А возможность еще одного варианта выбора в мире Open Source еще никогда и никому не мешала.