Сменные носители с FreeSBIE


В сравнении с NanoBSD FreeSBIE использует иной подход к созданию многоцелевых инсталляций FreeBSD и преследует иные цели. Назначение FreeSBIE — создание загрузочных сменных носителей с работающей операционной системой, таких как CD, DVD и flash-диски большой емкости, тогда как назначение NanoBSD — удовлетворить потребности пользователей небольших устройств. Больший объем дискового пространства придает FreeSBIE больше гибкости, которой так не хватает NanoBSD. Лично я предпочитаю создавать небольшие устройства с помощью NanoBSD, но многие применяют FreeSBIE для сборки загружаемых компакт-дисков, превращающих старые рабочие станции в серверы.

Работать с такими компакт-дисками не сложнее, чем загружаться с CD. Операционная система на компакт-диске должна идентифицировать аппаратное окружение, настроить установленное программное обеспечение и загрузить свежую работоспособную операционную систему. Если вам нужна подробная информация о FreeSBIE, зайдите на веб-сайт FreeSBIE по адресу http://www.freesbie.org. Далее мы сосредоточимся на сборке нашего собственного диска FreeSBIE.

Ядро и пользовательские приложения FreeSBIE собирает из исходного кода в каталоге /usr/src, но также принимает и собранные пакеты из системы, в которой производится сборка. Это означает, что ваша система должна иметь достаточно непротиворечивый набор пакетов. Если ваша система построена с нарушениями и пакеты собраны с ошибками, вы не сможете использовать их для сборки загрузочного компакт-диска FreeSBIE.

Несмотря на то что в этом разделе постоянно упоминается загрузочный компакт-диск FreeSBIE, все, о чем будет сказано, в равной степени справедливо для дисков DVD и flash-устройств.

FreeSBIE и FreeBSD

FreeSBIE не интегрирована в FreeBSD. Хотя разработчики FreeSBIE упорно трудятся над поддержкой новых версий FreeBSD, они все еще отстают от основной разработки FreeBSD. В данной главе имеется в виду версия FreeSBIE 2, основанная на FreeBSD 6. Полагаю, поддержка FreeBSD 7 появится вскоре после выпуска FreeBSD 7. Собираясь начать работу с FreeSBIE, приготовьтесь к самостоятельным исследованиям и борьбе с неполадками.

Установка инструментов FreeSBIE

Самую свежую версию инструментов FreeSBIE можно получить из репозитария CVS по адресу http://www.freesbie.org или, если у вас есть обновленная версия коллекции «портов», их можно установить из «порта» /usr/ports/sysutils/freesbie. Все инструменты FreeSBIE устанавливаются в каталог /usr/local/share/freesbie.

В наборе инструментов FreeSBIE мало инструкций. Большая часть документации доступна только на веб-сайте FreeSBIE: http://www.freesbie.org.

Конфигурирование FreeSBIE

В каталоге /usr/local/share/freesbie/conf вы найдете конфигурационный файл FreeSBIE freesbie.defaults.conf, используемый по умолчанию. Содержимое этого файла не должно редактироваться напрямую, вместо этого нужно создать файл freesbie.conf в том же самом каталоге. Все определения в файле freesbie.conf имеют приоритет перед определениями в файле freesbie.defaults.conf.

Ниже приведен перечень параметров конфигурации FreeSBIE 2.0, значения которых обычно приходится изменять. Следующий пример показывает, как могло бы выглядеть содержимое файла freesbie.conf, не похожего на файл freesbie.defaults.conf. (Конфигурационный файл по умолчанию имеет специальный синтаксис, что позволяет переопределять значения параметров в файле freesbie.conf.)

Для первой сборки рекомендую вам изменять как можно меньше параметров. Было бы весьма заманчиво изменить некоторые параметры, но старайтесь все-таки придерживаться значений по умолчанию, поскольку они обеспечивают хорошие начальные результаты. Чрезмерное увлечение изменением параметров настройки может привести к появлению ошибок в процессе сборки. Как и во многих других случаях, я рекомендую изучать подводные камни FreeSBIE по одному.

BASEDIR="/usr/local/freesbie-fs"
Каталог, в который FreeSBIE установит свежесобранную систему, пакеты и нестандартные файлы.

CLONEDIR="/usr/local/freesbie-clone"
Этот каталог FreeSBIE использует как временное хранилище во время сборки образов.

SRCDIR="/usr/src"
Каталог с деревом исходного кода, используемого для сборки ядра и приложений.

ISOPATH="/usr/obj/FreeSBIE.iso"
В этот файл записывается полный ISO-образ.

IMGPATH="/usr/obj/FreeSBIE.img"
Полный путь к UFS-образу FreeSBIE, который можно скопировать на flash-диск.

MAKEJ_WORLD="-j3"
Этот параметр определяет аргумент -j утилиты make(1) для сборки приложений. Если сборка завершается с ошибками и вы хотите убедиться, что они не вызваны параллельной компиляцией сразу нескольких файлов, установите этот параметр равным -j 1.

MAKEJ_KERNEL="-j1"
Этот параметр определяет, сколько потоков компиляции запустит утилитой make(1) при сборке ядра.

MAKEOPT="-DN0_CLEAN"
Если вам потребуется использовать какие-либо дополнительные параметры для сборки ядра и приложений, укажите их здесь.

KERNELCONF="/usr/src/sys/i386/conf/CUSTOMFREESBIE"
Полный путь к конфигурационному файлу ядра FreeSBIE. Я считаю, что конфигурация ядра, поставляемая вместе с FreeSBIE, хорошо подходит только в том случае, если вы используете ту же версию FreeBSD, что и разработчики FreeSBIE. Для версии FreeBSD 7.0 FreeSBIE использует следующие конфигурационные параметры, отсутствующие в конфигурации GENERIC:
    options     GE0M_UZIP
    options     GEOM_LABEL
    options     VESA
    options     SC_PIXEL_MODE

Кроме того, я удаляю поддержку всех контроллеров SCSI и RAID, так как мне действительно не требуется доступ к этим дискам. Если мне будет не нужен доступ к жестким дискам, я также удалю поддержку устройств atadisk, чтобы мой образ системы не смог отыскать жесткие диски IDE. Если вам потребуется использовать функции пакетного фильтра PF, добавьте соответствующие конфигурационные параметры ядра.

MAKE_CONF="/etc/make.conf"
Этот параметр определяет нестандартный файл make.conf, который должен использоваться для сборке FreeSBIE. Обратите внимание: в случае копирования пакетов из установленной системы любые специальные настройки в make.conf к этим пакетам применяться не будут. Вместо этого файла вы можете использовать файл src.conf.

SRC_CONF="/etc/src.conf"
Порядок сборки из исходных текстов можно настроить с помощью src.conf, как вы это делали при сборке обычной системы FreeBSD. Укажите в этом параметре полный путь к файлу src.conf, который следует использовать для сборки FreeSBIE.

FILE_LIST="/home/mwlucas/freesbie-files.txt"
Вы можете определить точный перечень файлов, устанавливаемых на диск FreeSBIE. В этом случае в образ будут установлены только файлы из списка. (Фактически это утверждение означает, что из BASEDIR в CLONEDIR будут скопированы только файлы, присутствующие в списке.) То есть вы должны составить на 100 процентов полный список файлов, обязанных находиться на загрузочном компакт-диске. По моему мнению, такая возможность более полезна для малых систем, подобных NanoBSD.

PRUNE_LIST="/home/mwlucas/freesbie-prune.txt"
Этот файл содержит список файлов и каталогов, которые включены в сборку, но должны быть удалены перед началом сборки образа компакт-диска. Все файлы, указанные в этом списке, будут удалены из каталога CLONEDIR до того, как начнется сборка образа из этого каталога. Это может оказаться очень полезным для уменьшения размера компакт-диска.

PKGFILE="/home/mwlucas/freesbie-packages"
Этот файл содержит список пакетов, по одному пакету в строке, без указания информации о версиях. Все перечисленные пакеты будут установлены в образ диска. Если этот параметр не определен, список будет создан командой make packageselect и сохранен в файле /usr/local/share/freesbie/conf/packages.

EXTRA="customroot rootmfs etcmfs sound xautostart"
В состав FreeSBIE входят разные подключаемые модули, реализующие различные функциональные возможности для загрузочного компакт-диска. Стандартные модули мы рассмотрим ниже.

MINIMAL=YES
Если определить параметр MINIMAL, FreeSBIE соберет минимально возможную версию FreeBSD. Результат такой сборки напоминает NanoBSD. Функция минимальной сборки надежно работает только с той же версией FreeBSD, которой пользуются разработчики FreeSBIE.

NO_BUILDWORLD=YES
Определяя этот параметр, вы тем самым сообщаете FreeSBIE о том, что не нужно собирать новые приложения пользователя. При этом в каталоге /usr/obj у вас должны иметься свежесобранные версии приложений.

NO_BUILDKERNEL=YES
Этот параметр предписывает FreeSBIE не собирать новое ядро, а использовать ядро, собранное ранее и находящееся в каталоге /usr/obj.

MAKEOBJDIRPREFIX="/usr/freesbie/obj"
Этот параметр можно использовать, чтобы определить отдельную область сборки FreeSBIE, но это не рекомендуется. Многие сценарии командного интерпретатора предполагают, что свежесобранные приложения и ядро находятся в каталоге /usr/obj.

NO_COMPRESSEDFS=YES
Этот параметр предписывает FreeSBIE использовать несжатую файловую систему в ISO-образе.

Подключаемые модули FreeSBIE

В состав FreeSBIE входят дополнительные подключаемые модули (plug-ins), позволяющие более тщательно настроить образ диска. Сборки, создаваемые FreeSBIE по умолчанию, вполне пригодны к использованию, однако дополнительные модули помогут вам добавить или убрать некоторые функциональные возможности компакт-диска. Подключаемые модули устанавливают в образ загружаемого диска дополнительные конфигурационные сценарии или активизируют различные функции автоматизации операций. Все сценарии модулей размещаются в каталоге /usr/local/share/freesbie/extra. Файл README содержит описание всех модулей, имеющихся по умолчанию.

Перечислите все нужные вам модули в параметре EXTRA в файле freesbie.conf. Ниже я перечислил те модули, которые считаю наиболее полезными или интересными.

adduser
Модуль adduser добавляет в образ диска пользователя freesbie. Вы можете указать свое имя пользователя с помощью параметра FREESBIE_ADDUSER в файле freesbie.conf.

autologin
Модуль autologin служит для автоматического входа в систему во время загрузки под учетной записью пользователя freesbie.

comconsole
Модуль comconsole добавляет в сборку поддержку последовательной консоли в качестве второй консоли. Если в файле freesbie.conf установить параметр SERIAL_ONLY=YES, будет собран образ, использующий только последовательную консоль. Сделать это также можно, добавив в образ нестандартный файл loader.conf с помощью модуля customroot.

customroot
Модуль customroot позволяет добавлять на компакт-диск любые файлы. Эти файлы, расположенные в каталоге /usr/local/share/freesbie/extra/customroot, будут скопированы в новый образ диска. Создайте дополнительные каталоги, чтобы поместить файлы в требуемое место на компакт-диске. Например, если требуется записать на компакт-диск свой файл /etc/rc.conf, поместите его в /usr/local/share/freesbie/extra/customroot/etc/rc.conf. Добавив свой файл с настройками /usr/local/share/freesbie/extra/customroot/var/named/etc/namedb/named.conf, вы получите легко заменяемый вторичный сервер имен, который загружается с носителя, доступного только для чтения. Любые файлы, добавляемые этим модулем, будут перезаписаны поверх любых других файлов, присутствующих в исходной сборке FreeSBIE.

customscripts
В процессе сборки FreeSBIE, непосредственно перед созданием ISO-образа, этот модуль запускает все сценарии, находящиеся в каталоге /usr/local/freesbie/extra/customscripts. С его помощью вы сможете автоматически добавлять пользователей или редактировать файлы.

etcmfs
Этот модуль предписывает системе использовать для каталога /etc файловую систему в памяти.

l10n.sh
Этот модуль предоставляет пользователям компакт-диска возможность выбирать национальный набор символов. Этот модуль будет полезен для неанглоязычных пользователей.

mountdisks
Если этот модуль включен, FreeSBIE будет монтировать все разделы с файловыми системами UFS, FAT или NTFS, найденные на жестких дисках в системе, загруженной с компакт-диска.

pf
Этот модуль создает и активизирует во время загрузки простой набор правил PF «никого не впускать, всех выпускать».

rootmfs
Этот модуль создает корневую файловую систему в памяти. Хотя пользователь получает возможность изменять все, что находится в корневом каталоге, эти изменения исчезнут при перезагрузке.

sound
В ходе загрузки с компакт-диска будет предпринята попытка автоматически обнаружить звуковую карту и установить нужный драйвер.

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

varmfs
В ходе загрузки с компакт-диска для каталога /var будет использована файловая система в памяти. Это позволит вести локальные протоколы, но они будут уничтожены при перезагрузке.

xautostart
В ходе загрузки с компакт-диска будет запущена X Window System.

xconfig
В процессе загрузки будет автоматически выполняться конфигурирование X. Этот модуль желательно использовать в паре с модулем xautostart.

xconfigure-probe
FreeSBIE будет использовать альтернативный метод автоматической настройки X во время загрузки. (X предлагает несколько методов настройки дисплея, такое деление команда разработчиков FreeSBIE не смогла разрешить.)

Выбор пакетов

Вы можете создать текстовый файл со списком всех пакетов, которые требуется установить на загрузочный компакт-диск, или использовать команду make packageselect в каталоге /usr/local/share/freesbie. Эта команда создаст список всех пакетов, установленных в системе, где выполняется сборка, и предложит выбрать пакеты для установки на компакт-диск. При выборе пакетов все зависимости разрешаются автоматически.

Сборка образа FreeSBIE

Чтобы собрать компакт-диск FreeSBIE с учетом вашей конфигурации, просто введите команды:

# cd /usr/local/share/freesbie
# make iso

FreeSBIE выполнит полную сборку системы FreeBSD, удалит ненужное и добавит желаемое, установит пакеты, выполнит сценарии настройки и сожмет полученное в образ компакт-диска.

Если в место образа ISO вам нужно создать образ flash-диска, используйте команду make flash. FreeSBIE попросит указать, какое устройство flash вы предполагаете использовать, инициализирует его, соберет приложения и установит их на указанное устройство.

Пересборка FreeSBIE

FreeSBIE, как и «порты», использует файлы, имена которых начинаются с точки, чтобы указать, какие этапы были выполнены. По умолчанию эти файлы помещаются в каталог /usr/obj/usr/local/share/freesbie.

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

Это была последняя остановка в нашем исследовании потайных уголков FreeBSD. Теперь давайте посмотрим, что делать, когда дела идут очень, очень, очень плохо.

Комментарии запрещены.