idbuild(1M) |
idbuild(1M) |
idbuild - строит новое базовое ядро системы UNIX и/или конфигурирует загружаемые модули
Одно из средств конфигурирования устанавливаемых драйверов/параметров настройки (Installable Driver/Tunable Parameters - ID/TP) ядра, idbuild строит базовое ядро системы UNIX и/или конфигурирует загружаемые модули ядра с использованием текущей конфигурации системы в каталоге $ROOT/$MACH/etc/conf.
idbuild использует переменные среды пользователя $ROOT и $MACH для построения начального пути как $ROOT/$MACH. За исключением специальных случаев разработки ядра в некорневом дереве исходного кода, переменная командного интерпретатора $ROOT должна всегда быть пустой или устанавливаться в "/"; если значение $ROOT пустое или равно "/", значение $MACH игнорируется (рассматривается как пустое).
Перед тем, как команда idbuild использует конфигурацию системы, она вызывает idconfupdate(1M) для синхронизации базы данных диспетчера ресурсов и файлов sdevice.
idbuild воспринимает следующие опции:
-B | Перестроить ядро немедленно. Если указана любая другая опция, данную опцию указывать не обязательно. |
-# | Выдавать отладочную информацию. |
-K | Сохранять временные конфигурационные файлы и объектные модули, созданные idbuild. Это позволяет выполнять в дальнейшем быструю перестройку с помощью опции -Q. |
-Q |
Выполнять быструю перестройку, при которой часть
обычной обработки и компиляции зависящих от
конфигурации файлов пропускается. Чтобы использовать
опцию быстрого построения, необходимо иметь
временные конфигурационные файлы и объектные
модули, оставшиеся с последней перестройки ядра в
результате использования опции -K для обычного
построения.
Опцию быстрого построения необходимо использовать осторожно. Использование этой опции исключает возможность использования других опций конфигурации, кроме -#, -K, -O, -l. |
-I каталог | Искать в указанном каталоге включаемые по #include файлы до их поиска в стандартном каталоге, $ROOT/usr/include. Эту опцию можно повторять в командной строке сколько угодно раз, чтобы перечислить все необходимые каталоги для поиска. |
-O выходной_файл | Поместить ядро в выходной_файл вместо стандартно используемого файла $ROOT/$MACH/etc/conf/cf.d/unix. |
-S | Статически скомпоновать все сконфигурированные модули ядра в базовое ядро. |
-M имя_модуля | Сконфигурировать указанный загружаемый модуль ядра и поместить его в каталог $ROOT/$MACH/etc/conf/mod.d, используя файл с тем же именем, что и имя модуля. Опцию -M можно повторять в командной строке сколько угодно раз, чтобы перечислить все необходимые модули. Подробнее об использовании этой опции см. ниже. |
-l список_символов | Ограничить информацию таблицы символов, добавляемой к вновь сгенерированному ядру, только символами, указанными в файле список_символов. |
-D символ | Помимо стандартных символов, определить (#define) указанный символ при компиляции файлов, зависящих от конфигурации. Эту опцию можно повторять в командной строке сколько угодно раз, чтобы задать все необходимые символы. |
-U символ | Отменить определение (#undef) указанного символа при компиляции файлов, зависящих от конфигурации, даже если этот символ обычно определен. Опция -U отменяет любую опцию -D для того же символа и может быть повторена в командной строке сколько угодно раз, чтобы задать все символы, определения которых отменяются. |
Файлы с данными конфигурации, необходимыми в качестве входных для каждого модуля, описаны в:
Эти файлы должны быть установлены в каталоге $ROOT/$MACH/etc/conf с помощью idinstall(1M) перед вызовом idbuild. Кроме того, idbuild предполагает наличие следующих файлов в каталоге $ROOT/$MACH/etc/conf/cf.d:
deflist | Этот файл содержит список дополнительных аргументов cc(1) для использования при компиляции файлов, зависящих от конфигурации (включая файлы Space.c); эти аргументы должны иметь вид "-Dxxxxxxx" или "-Uxxxxxxx", где xxxxxxx используется для определения или отмены определения символов препроцессора, зависящих от платформы (например, -Dat386 или -Dhector). Этот файл поставляется как часть базовой системы и его не надо изменять. |
kernmap | Это зависящий от платформы файл карты (mapfile) передается команде ld(1) для управления компоновкой ядра. Этот файл поставляется как часть базовой системы и его не надо изменять. |
stune | Этот файл содержит специфические для конкретной установки значения параметров настройки. Работать с файлом stune надо с помощью утилиты idtune(1M). |
Файл /etc/mod_register генерируется командой idbuild и содержит список всех зарегистрированных загружаемых модулей ядра; описание этого файла см. на странице справочного руководства idmodreg(1M).
Поскольку idbuild вызывает другие системные команды для выполнения переконфигурирования системы, редактирования связей и настройки таблицы символов, он будет сообщать обо всех ошибках, обнаруженных соответствующими командами. В общем случае, код возврата 1 показывает, что при выполнении idbuild произошла ошибка, а код возврата 0 свидетельствует об успешном выполнении.
Обнаруживаемые ошибки разбиваются на следующие категории:
При загрузке модуля с помощью опции -M, если модуль драйвера уже загружен для другого диапазона главных номеров устройств, команда idbuild завершится аварийно с ошибкой ENXIO. Описание действий, которые необходимо предпринять в этом случае, см. в следующем разделе данной страницы справочного руководства.
Если не удастся выполнить idinstall для одного из модулей в коде переконфигурирования, будет выдано сообщение о сбое, а затем переконфигурирование продолжится.
Построение ядра системы UNIX состоит из трех стадий. Сначала на основе файлов с данными конфигурации генерируются таблицы и символы конфигурации, а также списки модулей. Затем файлы, зависящие от конфигурации, компилируются и компонуются вместе со всеми сконфигурированными объектными модулями ядра и драйверов устройств. Наконец, если включена поддержка загружаемых модулей ядра или задействован отладчик ядра, информация таблицы символов ядра присоединяется к ядру.
Ядро по умолчанию помещается в файл $ROOT/$MACH/etc/conf/cf.d/unix.
Если ядро построено успешно и $ROOT имеет пустое значение или значение "/", idbuild устанавливает флаг, извещающий процедуру остановки/перезагрузки системы о необходимости замены стандартного ядра в каталоге /stand/unix на новое. Затем устанавливается другой флаг, вызывающий соответствующее переконфигурирование среды (специальные файлы устройств, /etc/inittab и т.п.).
Если с использованием опции -M указаны один или несколько загружаемых модулей ядра, idbuild будет конфигурировать только указанные загружаемые модули ядра и поместит их в каталог $ROOT/$MACH/etc/conf/mod.d. В противном случае перестраивается базовое ядро системы UNIX и переконфигурируются все загружаемые модули в каталоге $ROOT/$MACH/etc/conf/modnew.d, который будет изменен на /etc/conf/mod.d при следующей перезагрузке системы, если $ROOT имеет пустое значение или значение "/" (см. modadmin(1M)).
Если загружаемый модуль уже был загружен, но для другого диапазона главных номеров устройств, можно либо сначала выгрузить модуль, а затем использовать idbuild с опцией -M, либо вызвать idbuild без опции -M и перезагрузить систему. Если попытаться использовать опцию -M для модуля, который уже загружен для другого диапазона главных номеров устройств, idbuild закончится аварийно с ошибкой ENXIO.
Когда загружаемые модули ядра конфигурируются опцией -M, idbuild также создает необходимые специальные файлы (nodes) в каталоге /dev, добавляя и активизируя записи в /etc/inittab, если с модулями связаны файлы Init, и регистрируя модули в работающем ядре (см. idmodreg(1M)). Это делает их доступными для динамической загрузки, не требуя перезагрузки системы.
Перестройки базового ядра обычно необходимы после установки статически компонуемого модуля ядра, при удалении любого статического модуля или при изменении параметров настройки системы. При выполнении idbuild без опций и если переменная среды $ROOT имеет пустое значение или значение "/", устанавливается соответствующий флаг и перестройка ядра откладывается до следующей перезагрузки системы.
Copyright 1994 Novell, Inc.
Copyright 2000 В. Кравчук,
OpenXS Initiative, перевод на русский язык
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |