Формат конфигурационного файла достаточно прост. Каждая строка
представляет собой ключевое слово и один или более аргументов. Для
простоты большинство строк содержат только один аргумент. Всё, что
следует за символом #
является комментарием и
игнорируется. Следующие разделы описывают каждый параметр, в
порядке, в котором они появляются в GENERIC
.
За полным списком архитектурно-зависимых
параметров и устройств обратитесь к файлу NOTES
в том же каталоге, что и GENERIC
. Архитектурно
независимые параметры находятся в
/usr/src/sys/conf/NOTES
.
Директива include
стала доступной
для использования в конфигурационных файлах. Она позволяет включать
в текущий конфигурационный файл содержимое другого файла, тем самым
упрощая процесс внесения небольших изменений в существующий файл.
Например, если вам необходимо добавить всего несколько дополнительных
опций или драйверов в ядро GENERIC
, то вам придется
поддерживать только разницу к файлу GENERIC:
Большинство администраторов оценят значительные преимущества
перед старым способом — написанием конфигурационного файла
«с нуля»: ваш конфигурационный файл будет отображать
только изменения относительно GENERIC
. А после
обновлений исходного кода, новые функциональные возможности, появившиеся
в GENERIC, будут добавлены и в вашу конфигурацию, если только
не препятствовать этому директивами nooptions
или nodevice
. Далее в этом разделе описывается
типовой конфигурационный файл, его опции и устройства, а также
их роли.
Для сборки ядра со всеми возможными опциями (обычно используется
для тестирования), выполните от имени суперпользователя
(root
) следующую команду:
#
cd /usr/src/sys/i386
/conf && make LINT
Это пример конфигурационного файла ядра
GENERIC
с различными дополнительными комментариями,
которые могут понадобиться для ясности. Этот пример должен совпадать с вашей
копией в
/usr/src/sys/
практически полностью.i386
/conf/GENERIC
Это архитектура машины. Она должна быть одной из
следующих:
amd64
,
i386
, ia64
,
pc98
, powerpc
, или
sparc64
.
Эта опция указывает тип процессора, который используется в вашей
системе. В конфигурационном файле может быть несколько вхождений этой
опции (например, если вы не уверены, какой из типов процессора необходимо
использовать — I586_CPU
или
I686_CPU
), но для собственного ядра лучше указывать
только тот тип процессора, который установлен в вашей системе. Если вы
не уверены, какой тип необходимо использовать вам, вы можете
воспользоваться файлом /var/run/dmesg.boot
, чтобы
увидеть протокол загрузки системы.
Этот параметр определяет «метку» ядра. Необходимо,
чтобы она соответствовала названию файла конфигурации ядра, например
, если вы следовали инструкциям в предыдущих
примерах. Значение, которое вы присвоите параметру
MYKERNEL
ident
будет выводиться в процессе загрузки, поэтому
полезно давать новым ядрам другие имена для того, чтобы отличать их от
обычного ядра (например, если вы хотите собрать экспериментальное
ядро).
device.hints(5) используются для
настройки параметров драйверов устройств. Путь по умолчанию, который
loader(8) будет проверять при загрузке -
/boot/device.hints
. Используя опцию
hints
вы можете вкомпилировать эти параметры
статически в ваше ядро. В этом случае не требуется создавать файл
device.hints
в каталоге
/boot
.
При обычном построении ядра в сборку включается отладочная
информация: опция -g
передается компилятору
gcc(1).
Планировщик по умолчанию во FreeBSD. Оставьте эту опцию.
Позволяет высокоприоритетным нитям ядра вытеснять конкурентов, находящихся в режиме выполнения. Эта опция может помочь повысить реактивность системы по отношению к внешним воздействиям, например, за счет снижения латентности нитей, обрабатывающих прерывания.
Поддержка сетевых возможностей. Оставьте эту опцию включенной, даже если вы не планируете подключаться к сети. Большинство программ требуют, чтобы работал хотя бы интерфейс обратной связи (loopback) (т.е. создание сетевых соединений внутри вашего ПК), так что эта опция в принципе является обязательной.
Включает поддержку коммуникационных протоколов IPv6.
Включает поддержку основной файловой системы. Не удаляйте эту опцию, если вы планируете загружаться с жесткого диска.
Этот параметр включает в ядре технологию Soft Updates, которая
повышает скорость записи на диски. Несмотря на то, что эта технология
включена в ядре, она должна быть включена для отдельных дисков.
Просмотрите вывод команды mount(8) чтобы определить, включены ли
Soft Updates для дисков вашей системы. Если вы не увидите параметр
soft-updates
, вам будет необходимо активировать его
при помощи команды tunefs(8) (для существующих файловых систем) или
команды newfs(8) (для новых файловых систем).
Этот параметр включает в ядре поддержку списков управления доступом (ACL). Основывается на использовании расширенных атрибутов и UFS2, детальное описание вы сможете найти в Раздел 15.12, «Списки контроля доступа файловой системы (ACL)». ACL включены по умолчанию и не должны выключаться в случае, если они ранее использовались на файловой системе, так как это удалит списки управления доступом и изменит то, как защищены файлы, непредсказуемым образом.
Эта опция включает функциональность, которая повышает скорость дисковых операций на больших каталогах в обмен на использование дополнительной памяти. Для большого сервера или рабочей станции рекомендуется оставить ее включенной, и выключить для системы, для которой более приоритетна память, чем скорость доступа к дискам, например для брандмауэра.
Этот параметр включает поддержку использования дисков в памяти для корневой файловой системы.
Сетевая файловая система. Если вы не планируете монтировать разделы с файлового сервера UNIX® через TCP/IP, вы можете исключить этот параметр из конфигурационного файла ядра.
Файловая система MS-DOS®. Если вы не собираетесь монтировать
форматированный в DOS раздел жесткого диска в момент загрузки, вы можете
безопасно закомментировать этот параметр. Необходимый модуль будет
автоматически загружен, когда вы в первый раз смонтируете раздел DOS, так,
как это описано ниже. Кроме того, замечательный пакет
emulators/mtools
позволяет получить
доступ к DOS дискетам без необходимости монтировать и размонтировать их
(и не требует наличия MSDOSFS
).
Файловая система ISO 9660 для компакт-дисков. Если у вас нет привода CDROM или вы будете лишь изредка монтировать компакт-диски с данными, закомментируйте эту строку, так как необходимый модуль будет загружен автоматически при первом монтировании компакт-диска с данными. Для использования звуковых компакт-дисков эта файловая система не потребуется.
Файловая система процессов. Это «виртуальная» файловая
система монтируемая в /proc
, которая позволяет таким
приложениям, как ps(1) выдавать вам больше информации о запущенных
процессах. Использование PROCFS
не
требуется, так как большинство мониторинговых и отладочных инструментов
было адаптировано для работы без PROCFS
:
система по умолчанию не монтирует файловую
систему процессов.
Ядра, которые используют PROCFS
, должны
также включать поддержку PSEUDOFS
,
Добавляет поддержку Таблиц Разделов GUID. Этот параметр делает возможным наличие большого количества разделов на одном диске, до 128 в стандартной конфигурации.
Совместимость с 4.3BSD. Не выключайте эту опцию; некоторые приложения будут вести себя странно, если этой опции не будет в ядре.
Эта опция требуется для поддержки приложений, собранных на более старых версиях FreeBSD, которые используют старые интерфейсы вызовов. Рекомендуется использовать данную опцию на всех системах на платформах i386™, на которых могут запускаться старые приложения; платформы, поддержка которых появилась только в FreeBSD 5.X, например ia64 и Sparc64®, не требуют этой опции.
Эта опция необходима для поддержки приложений, скомпилированных на FreeBSD 5.X и использующих интерфейс системных вызовов FreeBSD 5.X.
Эта опция требуется для поддержки приложений, собранных на FreeBSD версий 6.X, которые используют интерфейсы системных вызовов FreeBSD 6.X.
Эта опция требуется на системах FreeBSD версий 8 и более поздних для поддержки приложений, собранных для FreeBSD 7.X и использующих интерфейсы системных вызовов FreeBSD 7.X.
Этот параметр заставляет ядро приостановиться на 5 секунд перед тем, как идентифицировать каждое устройство SCSI в вашей системе. Если у вас установлены только жесткие диски IDE, вы можете игнорировать эту опцию, в противном случае, возможно, вы захотите уменьшить это число, для того чтобы ускорить загрузку. Естественно, если вы сделаете это, а у FreeBSD появятся проблемы с распознанием ваших устройств SCSI, необходимо будет увеличить этот параметр.
Включает поддержку трассировки процессов, что удобно при отладке.
Этот параметр предоставляет поддержку разделяемой памяти System V. Наиболее распространенное применение этого — расширение XSHM в X, которое многие приложения, интенсивно работающие с графикой, будут автоматически использовать для повышения скорости работы. Если вы используете X, эта опция будет необходима.
Поддержка сообщений System V. Этот параметр добавляет в ядро всего лишь несколько сотен байт.
Поддержка семафоров System V. Не настолько часто используемая возможность, но в ядро добавляет всего несколько сотен байт.
Команда ipcs(1) с параметром -p
покажет
все процессы, которые используют любую из этих возможностей
System V.
Расширения реального времени, добавленные 1993 POSIX®. Определенные приложения из коллекции используют их, например StarOffice™.
Этот параметр разрешает формирование файлов устройств в
/dev
для клавиатур.
Giant — имя механизма защиты («спящего»
мьютекса) для крупных наборов ресурсов ядра. На нынешний момент
Giant представляется фактически непригодным для использования в связи
с серьезными потерями в производительности, и активно заменяется
на механизмы, защищающие отдельные ресурсы ядра. Параметр
ADAPTIVE_GIANT
включает Giant в число адаптивных
мьютексов: в случае, когда нить ядра нуждается в Giant, а он уже
захвачен нитью, выполняющейся на другом процессоре, первая нить
будет продолжать выполнение и ждать освобождения Giant. В норме
нить должна была бы уснуть, пока не настанет очередной момент ее
выполнения. Если вы не уверены, оставьте этот параметр в покое.
Для FreeBSD 8.0-RELEASE и более поздних версий, все мьютексы
являются адаптивными по умолчанию, если обратное не указано специально
опцией NO_ADAPTIVE_MUTEXES
. Следовательно,
Giant также адаптивен по умолчанию, и поэтому опция
ADAPTIVE_GIANT
была удалена из файла
конфигурации ядра.
Устройство apic разрешает использование набора I/O APIC для
распределения прерываний. Оно может быть использовано как с
однопроцессорными, так и с многопроцессорными ядрами (для последних
наличие apic является обязательным). Для поддержки многопроцессорности
добавьте строку options SMP
.
Устройство apic существует только на архитектурах i386. На других архитектурах этот конфигурационный параметр использовать не следует.
Включите эту опцию если у вас материнская плата EISA. Это включает автоопределение и конфигурирование поддержки всех устройств на шине EISA.
Включите этот параметр, если у вас материнская плата с поддержкой PCI. Это включит автоопределение карт PCI и проксирование из шины PCI в шину ISA.
Контроллер флоппи-диска.
Этот драйвер поддерживает все устройства ATA и ATAPI. Вам необходима
только одна строка device ata
в ядре для того, чтобы
обнаружить все PCI устройства ATA/ATAPI в современных машинах.
Эта строка необходима вместе с device ata
для
поддержки дисков ATA.
Эта строка необходима вместе с device ata
для поддержки дисков ATA RAID.
Поддержка приводов ATAPI CDROM. Используется вместе с
device ata
.
Поддержка флоппи-приводов ATAPI. Используется вместе с
device ata
.
Поддержка ленточных приводов ATAPI (стримеров). Используется вместе с
device ata
.
Заставляет драйвер нумеровать устройства статически; в противном случае происходит динамическая нумерация.
Контроллеры SCSI. Закомментируйте те, которых у вас в системе нет.
Если у вас в системе исключительно IDE устройства, вы можете удалить все
эти строки. Строки вида *_REG_PRETTY_PRINT
включают
режим отладки для соответствующих драйверов.
Периферийные устройства SCSI. Опять-таки, закомментируйте те, которых у вас в системе нет, или, если у вас в наличии исключительно IDE, можете удалить все.
USB umass(4) драйвер (и некоторые другие драйверы) используют подсистему SCSI, хотя и не являются настоящими SCSI устройствами. Следовательно, вам необходимо сохранить поддержку SCSI, если какой-либо из этих драйверов включен в конфигурацию ядра.
Поддерживаемые RAID-контроллеры. Если у вас нет таковых, можете их закомментировать или удалить эти строки.
Контроллер клавиатуры (atkbdc
) предоставляет
средства ввода/вывода для клавиатуры AT и PS/2 устройств. Этот
контроллер необходим драйверу клавиатуры (atkbd
) и
PS/2 устройств (psm
).
Драйвер atkbd
вместе с контроллером
atkbdc
предоставляет доступ к клавиатуре AT 84 или
улучшенной клавиатуре AT, которая подключена к контроллеру AT
клавиатуры.
Используйте это устройство, если ваша мышь включается в порт PS/2.
Поддержка мультиплексора клавиатур. Если использование двух и более клавиатур не планируется, можете смело исключать этот параметр.
Драйвер видеокарты.
Заставка при загрузке. Хранители экрана также требуют этого устройства.
sc
— это драйвер консоли по умолчанию, который
имитирует консоль SCO. Так как большая часть консольных полноэкранных
приложений обращаются к консоли через терминальную библиотеку
termcap
, вас не должно волновать, будете ли вы
использовать этот драйвер, либо драйвер vt
, который
является VT220
-совместимым драйвером консоли. Если у
вас возникнут какие-либо проблемы с приложениями, работающими с этим
драйвером консоли, установите переменную окружения TERM
в
значение scoansi
.
VT220-совместимый драйвер консоли, обратно совместимый с VT100/102.
Он работает лучше на некоторых лэптопах, у которых возникают проблемы
несовместимости с sc
. Также, установите переменную
окружения TERM
в значение vt100
или
vt220
. Этот драйвер также может быть полезен в
случаях подключения к большому количеству различных машин через сеть, на
которых параметры для устройства sc
для
termcap
или terminfo
могут
отсутствовать — vt100
присутствует практически
на любой платформе.
Включите эту опцию, если у вас есть AGP карта в системе. Это включит поддержку AGP и AGP GART для тех карт, которые поддерживают эту возможность.
Поддержка Advanced Power Management. Чаще всего используется в лэптопах, хотя и отключена по умолчанию.
Устройство таймера для управления энергопотреблением, APM и ACPI.
Поддержка PCMCIA. Включите ее, если вы используете лэптоп.
Четыре последовательных порта, которые известны как
COM
порты
в мире MS-DOS®/Windows®
Если у вас есть внутренний модем на COM4
и последовательный порт
COM2
, вам понадобится поменять IRQ модема на 2 (по непонятным
техническим причинам IRQ2 = IRQ9) для того, чтобы получить к нему
доступ из FreeBSD. Если у вас есть многопортовая карта с
последовательными портами, ознакомьтесь с sio(4) чтобы узнать
корректные значения для добавления в
/boot/device.hints
. Некоторые видеокарты (в частности
те, что используют чипы S3) используют адреса ввода/вывода в форме
0x*2e8
и, так как многие дешевые последовательные
карты не полностью раскодируют шестнадцатибитное пространство адресов
ввода/вывода, они конфликтуют с этими картами, в итоге COM4
оказывается
практически недоступным.
Каждый последовательный порт требует уникального IRQ (кроме тех
случаев, когда вы используете мультипортовую карту, которая
поддерживает совместное использование прерываний), поэтому значения
IRQ по умолчанию для COM3
и
COM4
не могут быть использованы.
Интерфейс параллельного порта на шине ISA.
Поддержка шины параллельного порта.
Поддержка принтеров на параллельном порту.
Все три последних устройства необходимы для поддержка принтеров на параллельном порту.
Драйвер TCP/IP через параллельный порт.
Поддержка ввода/вывода общего назначения («geek port») + IEEE1284 ввода/вывода.
Драйвер привода Iomega Zip. Требует наличия scbus
и da
. Наилучшая производительность достигается с
портами в режиме EPP 1.9.
Раскомментируйте это устройство, если у вас есть «простая» последовательная или параллельная PCI карта, поддерживаемая драйвером puc(4).
Драйвера сетевых карт PCI. Закомментируйте или удалите драйвера тех карт, которые отсутствуют в вашей системе.
Поддержка шины MII требуется для некоторых PCI 10/100 Ethernet карт,
которые используют MII-совместимые передатчики или реализуют
интерфейс управления передатчиком, который имитирует MII. Добавление
device miibus
в конфигурационный файл ядра включает
поддержку стандартного API miibus и всех драйверов PHY, включая стандартный
для тех PHY, которые не обрабатываются специфическим образом конкретным
драйвером.
Драйвера, которые используют контроллер шины MII.
Драйвера сетевых карт ISA. Ознакомьтесь с файлом
/usr/src/sys/
,
чтобы узнать, какие
сетевые карты каким драйвером поддерживаются.i386
/conf/NOTES
Generic 802.11 support. This line is required for wireless networking.
Crypto support for 802.11 devices. These lines are needed if you intend to use encryption and 802.11i security protocols.
Поддержка различных беспроводных карт.
Стандартное устройство обратной связи для TCP/IP. Если вы запускаете
telnet или FTP по отношению localhost
(он же 127.0.0.1
), то соединение пройдёт через это
устройство. Этот параметр обязателен.
Генератор случайных чисел для криптографической защиты.
ether
необходим лишь в случае, если у вас есть
сетевая карта. Он включает поддержку стандартного кода протокола
Ethernet.
sl
— это поддержка SLIP. SLIP был практически
вытеснен PPP, который легче настраивается, лучше подходит для соединений
модем-модем и имеет больше возможностей.
Поддержка PPP в ядре для соединений dial-up. Также существует версия
PPP, реализованного как приложение, использующее tun
, и
предлагающее большую гибкость и большее количество возможностей, как,
например, соединение при необходимости (наличии обращения к сети).
Используется пользовательским программным обеспечением PPP. Обратитесь к разделу PPP этой книги за дальнейшей информацией.
«псевдо-терминал» или имитированный порт для входа.
Используется входящими telnet
и
rlogin
-сессиями, приложением
xterm и некоторыми другими приложениями,
такими как Emacs.
Псевдо-устройства дисков в памяти.
Поддержка туннелирования IPv6 через IPv4, IPv4 через IPv6, IPv4 через
IPv4 и IPv6 через IPv6. Устройство
gif
является «автоклонируемым», и будет
срздавать файлы устройств по мере необходимости.
Это псевдо-устройство захватывает пакеты, которые были посланы ему и перенаправляет их даемону трансляции IPv4/IPv6.
Фильтр пакетов Berkeley. Это псевдо-устройство позволяет переводить сетевые интерфейсы в «неразборчивый» (promiscuous) режим, в котором перехватывается любой пакет в широковещательной сети (например ethernet). Эти пакеты могут быть сохранены на диск и/или исследованы при помощи tcpdump(1).
Устройство bpf(4) также используется программой dhclient(8) для того, чтобы получить адрес шлюза по умолчанию и т.п. Если вы используете DCHP, не удаляйте эту опцию.
Поддержка различных USB устройств.
Поддержка различных устройств Firewire.
За дальнейшей информацией о дополнительных устройствах,
поддерживаемых FreeBSD, обратитесь к файлу
/usr/src/sys/
.i386
/conf/NOTES
Машины с большим количеством оперативной памяти, в которых требуется более 4 гигабайт в пользовательском адресном пространстве и адресном пространстве ядра (User+Kernel Virtual Address, KVA) в обычном случае не смогут использовать более 4 гигабайт. Для решения этой проблемы Intel добавили поддержку 36-битной адресации в Pentium® Pro и более поздних моделях процессоров.
Расширение физического адресного пространства
(PAE) в процессорах Intel® Pentium® Pro и более
поздних позволяет использовать до 64 гигабайт оперативной памяти. FreeBSD
имеет поддержку этой возможности посредством опции ядра
PAE
, доступной во всех текущих версиях FreeBSD.
В связи с ограничениями архитектуры Intel, не делается
никакого различия между памятью ниже или выше 4 гигабайт. Память,
размещенная выше 4 гигабайт, просто добавляется к доступной памяти.
Для того, чтобы включить PAE в ядре, просто добавьте приведенную строку в конфигурационный файл ядра:
Поддержка PAE в FreeBSD существует только для процессоров Intel® IA-32. Также следует заметить, что PAE в FreeBSD не было полностью протестировано и должно считаться находящимся в состоянии бета-тестирования по сравнению с другими, стабильными возможностями FreeBSD.
Поддержка PAE в FreeBSD имеет следующие ограничения:
Процесс не может получить доступ к более, чем 4 гигабайтам пространства VM.
Драйверы устройств, которые не используют интерфейс
bus_dma(9), приведут к повреждению информации в ядре с включенным
PAE. Не рекомендуется использовать такие драйверы.
По этой причине в FreeBSD включен конфигурационный файл ядра
PAE
, из которого удалены все драйверы, о которых
известно, что они не работают при включенной поддержке
PAE.
Некоторые системные переменные определяют использование ресурсов
памяти по количеству доступной физической памяти. Такие переменные
могут привести к ненужному чрезмерному выделению памяти из-за
особенностей работы системы PAE. Один из таких
примеров — переменная kern.maxvnodes
, которая
управляет максимальным количеством vnode, разрешенных в ядре.
Рекомендуется установить эту и подобные ей переменные вручную в
адекватные значения.
Возможно, понадобится увеличить пространство виртуальных адресов
ядра (KVA) или уменьшить какую-либо переменную (см.
выше), значение которой было неоправданно велико и могло привести к
исчерпанию KVA. Для этого может быть использована
опция ядра KVA_PAGES
.
В случае сомнений относительно производительности и стабильности рекомендуется обратиться к странице руководства tuning(7). Страница руководства pae(4) содержит свежую информацию о поддержке PAE в FreeBSD.
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.