The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Руководства по FreeBSD на русском" / Оглавление документа

Chapter 11 Добавление новых параметров конфигурации ядра

Table of Contents
11.1 Что же такое параметр ядра, в конце концов?
11.2 И что я должен для этого сделать?

Предоставил Jörg Wunsch

Note: Перед тем, как читать этот раздел, вы должны усвоить материал раздела Руководства о ``конфигурации ядра''.

11.1 Что же такое параметр ядра, в конце концов?

Использование параметров ядра в основном описано в разделе о ``конфигурации ядра'' в Руководстве FreeBSD. Там же имеется описание ``устаревших'' и параметров ``в новом стиле''. Конечной целью является постепенный перевод всех поддерживаемых параметров ядра к новому стилю, так чтобы для тех, кто корректно выполняют команду make depend в каталоге компиляции ядра после запуска config(8), процесс построения автоматически принимал модифицированные параметры и перекомпилировал только те файлы, которые необходимы. Удаление старого каталога компиляции при каждом перезапуске config(8), как это еще происходит сейчас, затем может быть убрано.

В своей основе параметр ядра является не более чем определение макроса препроцессора C для процесса компиляции ядра. Чтобы сделать построение полностью настраиваемым через опции процессом, соответствующая часть исходных текстов ядра (или файла .h ядра) должна быть написана с упором на концепцию параметров, то есть чтобы значения, используемые по умолчанию, могли быть переопределены параметрами конфигурации. Это обычно делается примерно так:

#ifndef THIS_OPTION
#define THIS_OPTION (некоторое значение по умолчанию)
#endif /* THIS_OPTION */
   

Этим способом администратор, задающий другое значение для параметра в своем конфигурационном файле, избегает использования значения по умолчанию и заменяет его новым значением. Более того, новое значение будет подставлено в исходный код во время работы препроцессора, так что это должно быть правильное выражение языка C в контексте использования значения по умолчанию.

Также возможно создание параметров, которые не принимают определенного значения, а просто включают или выключают некоторую часть кода, обрамляя его в

#ifdef THAT_OPTION

[здесь ваш код]

#endif
   

Простое упоминание THAT_OPTION в конфигурационном файле (со значением или без него) приведет к включению соответствующего кода.

Те, кто знаком с языком C, могут сказать, что все может считаться как ``config option'', там где есть по крайней мере одна строчка #ifdef... Однако вряд ли многие будут писать

options    notyet,notdef
   

в своих конфигурационных файлах и потом удивляться, почему компиляция ядра не проходит. :-)

Более точно, использование уникальных имен для параметров делает очень трудным отслеживание их использования в дереве исходных текстов ядра. В использовании схемы параметров в новом стиле имеется рациональное зерно, когда каждый параметр помещается в отдельный файл .h в каталоге компиляции ядра, который по соглашению называется opt_foo.h. Таким образом, могут быть применены обычные зависимости в Makefile, и утилита make может определить, что нужно перекомпилировать при изменении определенного параметра.

Параметры при использовании механизма в старом стиле имеют одно преимущество для локальных изменений или для экспериментальных параметров, которые имеют короткий срок жизни: так как весьма легко добавить новую строку #ifdef к исходному коду ядра, то это уже превращается в параметр конфигурации ядра. В таком случае администратор, использующий параметры таким образом, несет ответственность за знание влияния этого параметра (и может быть, за принудительную перекомпиляцию вручную частей ядра). Как только перевод всех поддерживаемых опций будет сделан, программа config(8) будет выдавать предупреждение о не поддерживаемой опции, появившейся в конфигурационном файле, однако она будет включать ее в файл Makefile ядра.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2020 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру