Сборка NanoBSD

Запустите файл nanobsd.sh как сценарий командного интерпретатора, передав ему имя конфигурационного файла с помощью ключа -с:

#           /bin/sh nanobsd.sh -с mynanoconfig.txt

В ходе сборки NanoBSD на экран выводятся вполне типичные сообщения:

## Clean and create object directory (/usr/obj/nanobsd.SoekrisDNS/) ## Construct build make.conf (/usr/obj/nanobsd.SoekrisDNS//make.conf) ## run buildworld

### log: /usr/obj/nanobsd.SoekrisDNS//_. bw ## build kernel (SOEKRIS)

## build diskimage

### log: /usr/obj/nanobsd.SoekrisDNS//_. dl

#           NanoBSD Image completed

Если вы в конце получили сообщение NanoBSD image completed, следовательно, сборка прошла успешно. В противном случае причину ошибки на последнем этапе вы найдете в файле протокола. Вполне обычное дело, если набор параметров в конфигурационном файле, приводящий к нормальной сборке образа, будет получен не с первой попытки, особенно при агрессивном использовании параметров WITHOUT с целью уменьшить размер FreeBSD.

Каталог сборки NanoBSD

Для сборки NanoBSD используется подкаталог каталога /usr/obj, имя которого задано параметром NAN0_NAME. В нашем конфигурационном файле указано, что выполняется сборка NanoBSD с именем SoekrisDNS, откуда следует, что каталогом сборки будет /usr/obj/nanobsd.SoekrisDNS. Перейдите в этот каталог и посмотрите на файлы. Вы найдете несколько файлов со странными именами, несколько каталогов и образов дисков.

NanoBSD использует файлы, имена которых начинаются с ., как маркеры, протоколы и временные каталоги. Несмотря на лаконизм сообщений, наблюдаемых в процессе сборки, в действительности NanoBSD не скрывает вывод используемых команд, просто он перенаправляется в другие файлы (табл. 20.1).

Таблица 20.1. Файлы, создаваемые в ходе сборки NanoBSD

Файл

Назначение

_.bk

Протокол команды make buildkernel

_.bw

Протокол команды make buildworld

_.cust.<X>

Установка настройки X

_.di

Создание образа диска командой fdisk

_.dl

Создание метки диска командой disklabel

Файл

Назначение

_.env

Окружение, использованное при сборке NanoBSD

_.etc

Протокол команды make distribution

_.fdisk

Конфигурация fdisk(8)

_.ik

Протокол команды make installkernel

_.iw

Протокол команды make installworid

_.w

Вновь созданный «мир»

disk.image

Образ диска для единственного дискового участка

disk.full

Образ полного диска

При выяснении причин ошибок во время сборки используйте файлы протоколов.

Поиск причин ошибок во время сборки NanoBSD

Сообщения об ошибках, которые выводятся в процессе сборки, не отличаются особой информативностью. Например, вот полный вывод неудачной сборки NanoBSD:

# /bin/sh nanobsd.sh -с soekris-dns.conf

## Clean and create object directory (/usr/obj/nanobsd.SoekrisDNS/) ## Construct build make.conf (/usr/obj/nanobsd.SoekrisDNS//make.conf) ## run buildworld

### log: O/usr/obj/nanobsd. SoekrisDNS//_. bw

Здесь видно, что попытка сборки потерпела неудачу, но не видно, почему.

Чтобы выяснить действительную причину, загляните в файл, имя которого указано в сообщении. В данном случае это файл протокола /usr/ obj/nanobsd.SoekrisDNS/_.bw О. В конце этого файла находятся последние сообщения, выведенные в ходе неудавшейся сборки. Здесь вы увидите сообщения об ошибках, типичные для процесса обновления.

Одно из обстоятельств, которые следует запомнить, это использование команды make -j 3 по умолчанию. Эта команда может порождать малопонятные сообщения об ошибках в файле протокола, а сама ошибка, вызвавшая отказ, может располагаться несколькими строками выше.

Почему установка NanoBSD терпит неудачу, в то время как обычное обновление из того же исходного кода проходит благополучно? Основной причиной является несовместимость параметров сборки из дерева исходного кода. Мой файл конфигурации NanoBSD включает множество разнообразных параметров WITHOUT . Вы могли заметить, что некоторые из них закомментированы. Эти параметры отрицательно повлияли на возможность сборки. Хотя для моего сервера DNS в действительности не требуется программное обеспечение, представляемое закомментированными мной параметрами, но отсутствие этих параметров сделало успешную сборку NanoBSD невозможной. (Параметр WITHOUT BIND закомментирован потому, что мне действительно необходим сервер BIND в данном образе.)

Еще одна возможная проблема при сборке образа NanoBSD – это когда сама сборка прошла успешно, но конструирование образа диска завершилось ошибкой:

/usr/obj/nanobsd.SoekrisDNS/_.mnt: write failed, filesystem is full (Перевод: ошибка записи, файловая система заполнена)

Для размещения ваших файлов требуется больше места, чем доступно на диске. По умолчанию участок /conf занимает 1 Мбайт. NanoBSD разбивает оставшееся пространство пополам. Если flash-карта имеет емкость 128 Мбайт, ни один из двух образов NanoBSD не должен занимать больше 63,5 Мбайт дискового пространства. Если в состав сборки FreeBSD включены какие-то дополнительные файлы и были установлены пакеты, что привело к увеличению размера образа, то его конструирование потерпит неудачу. Не забывайте, что производители flash- карт измеряют емкость своих устройств так же, как и производители жестких дисков, по основанию 10, а не по основанию 2. В действительности емкость карты на 128 Мбайт немного меньше этого числа. Попробуйте поместить на диск только один образ NanoBSD, уменьшить объем включаемого программного обеспечения или приобрести flash- карту большей емкости.

Законченная сборка

Итак, сборка закончена! Давайте заглянем в образ диска и посмотрим, что в нем находится:

#     mdconfig -af _.disk.full

mdO

Если запустить утилиту fdisk(8) и передать ей образ диска, можно увидеть три участка – два больших и один совсем маленький. Два больших участка – это образы NanoBSD. Смонтируйте один из них и посмотрите, что в нем находится.

#     mount /dev/md0s1a /mnt

Изучив содержимое, нетрудно заметить, что система NanoBSD собрана полностью, но пока еще ничего стоящего не делает. Это ненастроенная инсталляция FreeBSD. Тем не менее, я рекомендую скопировать образ на flash-диск и выполнить пробную загрузку на устройстве, чтобы убедиться, что система работоспособна. Установку NanoBSD на flash-диск /dev/daO выполняет команда:

#     dd if=disk.full of=/dev/daO

Теперь извлеките flash-диск из компьютера, подключите его к вашему устройству Soekris, запустите последовательную консоль и нажмите кнопку включения питания.

Скорость обмена с последовательной консолью

Если попробовать загрузить устройство Soekris с типичной инсталляцией FreeBSD, у вас возникнут трудности. Дело в том, что в устройствах Soekris скорость обмена с последовательной консолью по умолчанию составляет 19 200 бит/с, тогда как FreeBSD по умолчанию использует более привычную скорость 9600 бит/с. Это означает, что настроив терминал на скорость обмена 19 200, вы сможете увидеть все сообщения времени загрузки устройства Soekris, но при запуске FreeBSD на экране будет сплошной мусор. Если в терминале настроить скорость обмена 9600, вы сможете наблюдать сообщения FreeBSD, но на начальном этапе вместо сообщений Soekris будет выводиться всякий мусор.

Изменение скорости обмена с консолью в системе FreeBSD будет одной из первых настроек, которые мы выполним. Однако при первой пробной загрузке образа FreeBSD оставьте в консоли скорость обмена 9600.

Источник: ЛукасМ. FreeBSD. Подробное руководство, 2-е издание. – Пер. с англ. – СПб.: Символ- Плюс, 2009. – 864 е., ил.

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий