Глава 7. Конфигурирование ядра

7.1. Я хочу изменить настройки ядра. Это сложно?
7.2. Почему моё ядро такое большое?
7.3. Почему мне не удаётся откомпилировать ни один вариант ядра, даже GENERIC?
7.4. Какой планировщик используется в работающей системе?
7.5. Что такое kern.sched.quantum?

7.1.

Я хочу изменить настройки ядра. Это сложно?

Вовсе нет! Обратитесь к соответствующему разделу Руководства, который посвящён этому вопросу.

Примечание:

Новый файл kernel будет установлен в каталог /boot/kernel вместе со своими модулями, а старое ядро и его модули будут сдвинуты в каталог /boot/kernel.old. Если сделана ошибка в конфигурации, просто загрузите предыдущую версию ядра.

7.2.

Почему моё ядро такое большое?

Конфигурация ядра GENERIC, которая содержится в дистрибутиве FreeBSD, компилируется в отладочном режиме. В таком режиме ядра содержат много символьной информации в разных файлах, которая используется для отладки и сильно увеличивает размер /boot/kernel/. Заметьте, что уменьшения производительности при использовании отладочного ядра нет или оно незначительно, однако отладочное ядро полезно иметь под рукой на случай аварийного завершения работы системы.

Однако при нехватке дискового пространства существует несколько вариантов уменьшения размера >/boot/kernel/.

Чтобы не устанавливать файлы с символьной информацией, убедитесь в наличии следующей строки в /etc/src.conf:

WITHOUT_KERNEL_SYMBOLS=yes

Для получения дополнительной информации смотрите страницу Справочника src.conf(5).

Если вы не хотите компилировать отладочное ядро, убедитесь в выполнении следующих условий:

  • В конфигурационном файле ядра нет такой строчки:

    makeoptions DEBUG=-g
  • Вы не запускали утилиту config(8) с опцией -g.

В любой из вышеописанных ситуаций ядро будет построено с отладочным режимом.

Чтобы скомпилировать и установить только нужные модули, укажите их в /etc/make.conf:

MODULES_OVERRIDE= accf_http ipfw

Замените accf_httpd ipfw на нужный список модулей. Это уменьшит размер каталога с ядром, а также время сборки. Для получения дополнительной информации почитайте /usr/share/examples/etc/make.conf.

Для дальнейшего уменьшения размера также можно удалить ненужные устройства из ядра. Для получения дополнительной информации смотрите Вопрос: 7.1.

Для вступления любого из этих действий в силу следуйте указаниям по сборке и установке нового ядра.

Большинство ядер (/boot/kernel/kernel), как правило, занимают от 12 до 16 Мбайт.

7.3.

Почему мне не удаётся откомпилировать ни один вариант ядра, даже GENERIC?

Есть несколько причин, приводящих к возникновению этой проблемы:

  • Дерево исходных текстов отличается от того, что использовалось для построения работающей в данный момент системы. Перед обновлением прочитайте файл /usr/src/UPDATING, обращая особое внимание на раздел <<COMMON ITEMS>> в его конце.

  • Команда make buildkernel не завершилась успешно. Корректное выполнение цели make buildkernel зависит от файлов, полученных после выполнения make buildworld.

  • Даже при построении FreeBSD-STABLE возможно, что дерево исходных текстов было загружено в тот момент, когда оно модифицировалось или было неработоспособно. Построение гарантируется только для релизов, хотя в большинстве случаев FreeBSD-STABLE строится без проблем. Попробуйте сгрузить дерево исходных текстов повторно и посмотрите, разрешилась ли проблема. Если с сервером есть проблемы, попробуйте другое зеркало.

7.4.

Какой планировщик используется в работающей системе?

Название используемого планировщика доступно напрямую в виде значения sysctl-параметра kern.sched.name:

% sysctl kern.sched.name
kern.sched.name: ULE

7.5.

Что такое kern.sched.quantum?

kern.sched.quantum определяет максимальное количество тактов, которое процесс может выполняться, не будучи прерванным.

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

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

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.