NanoBSD — это утилита, позволяющая создать образ системы FreeBSD для применения во встроенных системах и рассчитанное на использование Flash-памяти (или других носителей).
NanoBSD может быть использовано для специальных образов установки, которые предназначены для упрощенной установки и обслуживания компьютерных устройств. Эти устройства могут содержать встроенное программное обеспечение, что означает что все приложения уже должны быть установлены. Устройство должно включаться в существующую сеть и начинать работать немедленно.
NANOBSD(8) Справочник системного администратора FreeBSD NANOBSD(8)
НАЗВАНИЕ
nanobsd.sh -- утилита для создания образа FreeBSD, пригодного для встраи-
ваемых (embedded) применений
СИНТАКСИС
nanobsd.sh [-bhkw] [-c файл-конфигурации]
ОПИСАНИЕ
Утилита nanobsd.sh - это сценарий, который создаёт минимальный вариант
FreeBSD (называемый NanoBSD), который обычно помещается на небольшом
носителе, таком как карта Compact Flash, или другом устройстве хранения
информации. С его помощью можно создавать специализированные версии
инсталляций, которые легко устанавливаются и обслуживаются.
Имеются следующие опции:
-b Пропустить этапы сборки (и ядра, и мира).
-c файл-конфигурации Указать используемый конфигурационный файл.
-h Вывести информацию о синтаксисе запуска.
-k Пропустить этап сборки buildkernel.
-w Пропустить этап сборки buildworld.
Возможности NanoBSD включают в себя следующее:
· Порты и пакеты работают так же, как и во FreeBSD. Любое прило-
жение можно установить и использовать в образе NanoBSD точно
так же, как и во FreeBSD.
· Нет недостающих функций. Если что-то возможно сделать во
FreeBSD, то же самое можно сделать и в NanoBSD, за исключением
случаев, когда конкретная функция или функции были намеренно
удалены из NanoBSD во время создания образа.
· Во время работы носитель используется только в режиме чтения.
Выключение питания безопасно. Нет необходимости выполнять
fsck(8) после аварийного выключения системы.
· Легко собирать и модифицировать. Можно создать сокращенные и
модифицированные образы, удовлетворяющие произвольному набору
требований, при помощи всего одного сценария оболочки и одного
конфигурационного файла.
Подготовка носителя для NanoBSD
По умолчанию носитель разделяется на три части (которые обычно монтиру-
ются только для чтения):
· Два раздела образов: code#1 и code#2.
· Раздел конфигурационных файлов, который можно смонтировать в
каталог /cfg во время выполнения.
Каталоги /etc и /var реализованы в виде дисков md(4) (на основе оператив-
ной памяти, выделяемой ядром (malloc backed)).
Раздел конфигурационных файлов расположен в каталоге /cfg. Он содержит
файлы для каталога /etc, и сразу после загрузки на короткое время монти-
руется только для чтения, поэтому нужно копировать изменённые файлы из
/etc обратно в каталог /cfg, если изменения должны сохраняться между
перезагрузками.
ПОСТРОЕНИЕ NanoBSD
Образ NanoBSD создаётся при помощи простого сценария оболочки nanobsd.sh,
который находится в каталоге src/tools/tools/nanobsd. Этот сценарий
создаёт загрузочный образ, который можно скопировать на носитель, исполь-
зуя утилиту dd(1).
Для построения и инсталляции образа NanoBSD необходимы следующие команды:
cd /usr/src/tools/tools/nanobsd
sh nanobsd.sh
cd /usr/obj/nanobsd.full
dd if=_.disk.full of=/dev/da0 bs=64k
МОДИФИКАЦИЯ NanoBSD
Вероятно, это наиболее важная и интересная возможность NanoBSD. Кроме
того, именно это займёт у вас основное время при работе с NanoBSD.
Модификация выполняется двумя способами:
· Опции конфигурации.
· Собственные функции.
Настройки конфигурации дают возможность задать опции для этапов
buildworld и installworld процесса построения NanoBSD, а также внутренние
опции для основного процесса сборки NanoBSD. С их помощью можно умень-
шить размер системы, так что она уместится в 64MB. При помощи опций кон-
фигурации можно сократить систему и далее, так что она будет состоять
лишь из ядра и двух-трёх пользовательских файлов.
Конфигурационный файл состоит из опций, переопределяющих значения по
умолчанию. Наиболее важные опции такие:
NANO_NAME Имя сборки (используется для формирования имени рабо-
чего каталога).
NANO_SRC Путь к дереву исходных текстов, используемых при
построении образа.
NANO_KERNEL Имя файла конфигурации ядра, используемого для
построения ядра.
CONF_BUILD Опции для этапа buildworld.
CONF_INSTALL Опции для этапа installworld.
CONF_WORLD Опции для обоих этапов, buildworld и installworld.
FlashDevice Определяет тип используемого носителя. Подробности в
файле FlashDevice.sub.
Про дополнительные опции конфигурации можно узнать в сценарии nanobsd.sh.
Для того, чтобы собрать образ NanoBSD, используя конфигурационный файл
nanobsd.conf, используйте следующую команду:
sh nanobsd.sh -c nanobsd.conf
Тонкая настройка NanoBSD достигается использованием функций командной
оболочки в файле конфигурации. Следующий пример иллюстрирует основную
модель собственных функций:
cust_foo () (
echo "bar=topless" >
${NANO_WORLDDIR}/etc/foo
)
customize_cmd cust_foo
Существует несколько готовых предопределённых функций для настройки:
cust_comconsole Отключает getty(8) на виртуальных терминалах
syscons(4) (/dev/ttyv*) и включает использова-
ние первого последовательного порта в качестве
системной консоли.
cust_allow_ssh_root Разрешает пользователю root вход через
sshd(8).
cust_install_files Инсталлирует файлы из каталога nanobsd/Files,
который содержит некоторые полезные для
системного администрирования сценарии.
ФАЙЛЫ
src/tools/tools/nanobsd Базовый каталог сценария построения NanoBSD.
ПРИМЕРЫ
Как внести сохраняющиеся между перезагрузками поправки в
/etc/resolv.conf:
vi /etc/resolv.conf
...
mount /cfg
cp /etc/resolv.conf /cfg
umount /cfg
Вот более полезный пример собственной функции, которая изменяет объём
каталога /etc по умолчанию с 5MB до 30MB:
cust_etc_size () (
cd ${NANO_WORLDDIR}/conf
echo 30000 > default/etc/md_size
)
customize_cmd cust_etc_size
СМОТРИ ТАКЖЕ
make.conf(5), picobsd(8)
ИСТОРИЯ
Утилита nanobsd.sh впервые появилась во FreeBSD 6.0.
АВТОРЫ
NanoBSD разработал Poul-Henning Kamp [email protected]. Эту страницу
справочника написал Daniel Gerzo [email protected].
FreeBSD 6.2 28 августа 2006 FreeBSD 6.2