Запустите файл 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 |
|
_.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 е., ил.

November 26th, 2011
admin
Опубликовано в рубрике