.\" Copyright (c) 2006 Daniel Gerzo .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/share/man/man8/nanobsd.8,v 1.4 2007/05/21 15:29:42 ru Exp % .\" $FreeBSDru: frdp/doc/ru_RU.KOI8-R/man/man8/nanobsd.8,v 1.3 2007/11/20 13:50:08 ru Exp $ .\" $FreeBSD$ .\" .Dd 28 августа 2006 .Dt NANOBSD 8 .Os .Sh НАЗВАНИЕ .Nm nanobsd.sh .Nd утилита для создания образа FreeBSD, пригодного для встраиваемых (embedded) применений .Sh СИНТАКСИС .Nm .Op Fl bhkw .Op Fl c Ar файл-конфигурации .Sh ОПИСАНИЕ Утилита .Nm \[en] это сценарий, который создаёт минимальный вариант .Fx (называемый .Nm NanoBSD ) , который обычно помещается на небольшом носителе, таком как карта Compact Flash, или другом устройстве хранения информации. С его помощью можно создавать специализированные версии инсталляций, которые легко устанавливаются и обслуживаются. .Pp Имеются следующие опции: .Bl -tag -width ".Fl c Ar файл-конфигурации" -offset indent .It Fl b Пропустить этапы сборки (и ядра, и мира). .It Fl c Ar файл-конфигурации Указать используемый конфигурационный файл. .It Fl h Вывести информацию о синтаксисе запуска. .It Fl k Пропустить этап сборки .Cm buildkernel . .It Fl w Пропустить этап сборки .Cm buildworld . .El .Pp Возможности .Nm NanoBSD включают в себя следующее: .Pp .Bl -bullet -offset indent -compact .It Порты и пакеты работают так же, как и во .Fx . Любое приложение можно установить и использовать в образе .Nm NanoBSD точно так же, как и во .Fx . .It Нет недостающих функций. Если что-то возможно сделать во .Fx , то же самое можно сделать и в .Nm NanoBSD , за исключением случаев, когда конкретная функция или функции были намеренно удалены из .Nm NanoBSD во время создания образа. .It Во время работы носитель используется только в режиме чтения. Выключение питания безопасно. Нет необходимости выполнять .Xr fsck 8 после аварийного выключения системы. .It Легко собирать и модифицировать. Можно создать сокращённые и модифицированные образы, удовлетворяющие произвольному набору требований, при помощи всего одного сценария оболочки и одного конфигурационного файла. .El .Ss Подготовка носителя для Nm NanoBSD По умолчанию носитель разделяется на три части (которые обычно монтируются только для чтения): .Pp .Bl -bullet -offset indent -compact .It Два раздела образов: .Li code#1 и .Li code#2 . .It Раздел конфигурационных файлов, который можно смонтировать в каталог .Pa /cfg во время выполнения. .El .Pp Каталоги .Pa /etc и .Pa /var реализованы в виде дисков .Xr md 4 (на основе оперативной памяти, выделяемой ядром (malloc backed)). .Pp Раздел конфигурационных файлов расположен в каталоге .Pa /cfg . Он содержит файлы для каталога .Pa /etc , и сразу после загрузки на короткое время монтируется только для чтения, поэтому нужно копировать изменённые файлы из .Pa /etc обратно в каталог .Pa /cfg , если изменения должны сохраняться между перезагрузками. .Sh ПОСТРОЕНИЕ Nm NanoBSD Образ .Nm NanoBSD создаётся при помощи простого сценария оболочки .Nm , который находится в каталоге .Pa src/tools/tools/nanobsd . Этот сценарий создаёт загрузочный образ, который можно скопировать на носитель, используя утилиту .Xr dd 1 . .Pp Для построения и инсталляции образа .Nm NanoBSD необходимы следующие команды: .Bd -literal -offset indent cd /usr/src/tools/tools/nanobsd sh nanobsd.sh cd /usr/obj/nanobsd.full dd if=_.disk.full of=/dev/da0 bs=64k .Ed .Sh МОДИФИКАЦИЯ Nm NanoBSD Вероятно, это наиболее важная и интересная возможность .Nm NanoBSD . Кроме того, именно это займёт у вас основное время при работе с .Nm NanoBSD . .Pp Модификация выполняется двумя способами: .Pp .Bl -bullet -offset indent -compact .It Опции конфигурации. .It Собственные функции. .El .Pp Настройки конфигурации дают возможность задать опции для этапов .Cm buildworld и .Cm installworld процесса построения .Nm NanoBSD , а также внутренние опции для основного процесса сборки .Nm NanoBSD . С их помощью можно уменьшить размер системы, так что она уместится в 64MB. При помощи опций конфигурации можно сократить систему и далее, так что она будет состоять лишь из ядра и двух-трёх пользовательских файлов. .Pp Конфигурационный файл состоит из опций, переопределяющих значения по умолчанию. Наиболее важные опции такие: .Bl -tag -width ".Va CONF_INSTALL" -offset indent .It Va NANO_NAME Имя сборки (используется для формирования имени рабочего каталога). .It Va NANO_SRC Путь к дереву исходных текстов, используемых при построении образа. .It Va NANO_KERNEL Имя файла конфигурации ядра, используемого для построения ядра. .It Va NANO_BOOT0CFG Задаёт опции, передаваемые команде .Xr boot0cfg 8 , которые определяют поведение .Nm boot0 . .It Va NANO_BOOTLOADER Путь к используемому загрузчику .Nm boot0 относительно переменной .Va NANO_WORLDDIR . По умолчанию это .Pa boot/boot0sio . Если необходима консоль VGA, значение нужно заменить на .Pa boot/boot0 . .It Va CONF_BUILD Опции для этапа .Cm buildworld . .It Va CONF_INSTALL Опции для этапа .Cm installworld . .It Va CONF_WORLD Опции для обоих этапов, .Cm buildworld и .Cm installworld . .It Va FlashDevice Определяет тип используемого носителя. Подробности в файле .Pa FlashDevice.sub . .El .Pp Про дополнительные опции конфигурации можно узнать в сценарии .Nm . .Pp Для того, чтобы собрать образ .Nm NanoBSD , используя конфигурационный файл .Pa nanobsd.conf , используйте следующую команду: .Bd -literal -offset indent sh nanobsd.sh -c nanobsd.conf .Ed .Pp Тонкая настройка .Nm NanoBSD достигается использованием функций командной оболочки в файле конфигурации. Следующий пример иллюстрирует основную модель собственных функций: .Bd -literal -offset indent cust_foo () ( echo "bar=topless" > \\ ${NANO_WORLDDIR}/etc/foo ) customize_cmd cust_foo .Ed .Pp Существует несколько готовых предопределённых функций для настройки: .Bl -tag -width ".Cm cust_allow_ssh_root" -offset indent .It Cm cust_comconsole Отключает .Xr getty 8 на виртуальных терминалах .Xr syscons 4 .Pq Pa /dev/ttyv* и включает использование первого последовательного порта в качестве системной консоли. .It Cm cust_allow_ssh_root Разрешает пользователю root вход через .Xr sshd 8 . .It Cm cust_install_files Инсталлирует файлы из каталога .Pa nanobsd/Files , который содержит некоторые полезные для системного администрирования сценарии. .El .Sh ФАЙЛЫ .Bl -tag -width ".Pa src/tools/tools/nanobsd" -compact .It Pa src/tools/tools/nanobsd Базовый каталог сценария построения .Nm NanoBSD . .El .Sh ПРИМЕРЫ Как внести сохраняющиеся между перезагрузками поправки в .Pa /etc/resolv.conf : .Bd -literal -offset indent vi /etc/resolv.conf \&... mount /cfg cp /etc/resolv.conf /cfg umount /cfg .Ed .Pp Вот более полезный пример собственной функции, которая изменяет объём каталога .Pa /etc по умолчанию с 5MB до 30MB: .Bd -literal -offset indent cust_etc_size () ( cd ${NANO_WORLDDIR}/conf echo 30000 > default/etc/md_size ) customize_cmd cust_etc_size .Ed .Sh СМОТРИ ТАКЖЕ .Xr make.conf 5 , .Xr boot 8 , .Xr boot0cfg 8 , .Xr picobsd 8 .Sh ИСТОРИЯ Утилита .Nm впервые появилась во .Fx 6.0 . .Sh АВТОРЫ .An -nosplit .Nm NanoBSD разработал .An Poul-Henning Kamp Aq phk@FreeBSD.org . Эту страницу справочника написал .An Daniel Gerzo Aq danger@FreeBSD.org .