9.5. Сборка и установка собственного ядра
Пред. | Глава 9. Настройка ядра FreeBSD | След.

## 9.5. Сборка и установка собственного ядра

### Примечание:

Для сборки ядра необходимо наличие всех исходных файлов FreeBSD.

Во-первых, давайте сделаем краткий обзор каталога, в котором будет происходить сборка ядра. Все каталоги, которые будут упоминаться, будут относительными по отношению к основному каталогу `/usr/src/sys`, который также доступен как каталог `/sys`. Этот каталог содержит множество подкаталогов, представляющих собой различные части ядра, но наиболее важным для нас будет каталог ``arch`/conf`, в котором вы будете редактировать конфигурационный файл ядра и в котором находится каталог `compile`, где будет собираться ваше ядро. `arch` может быть `i386`, `amd64`, `ia64`, `powerpc`, `sparc64` или `pc98` (альтернативная ветвь аппаратного обеспечения, популярная в Японии). Все, что находится внутри каталога определенной архитектуры, относится только к этой архитектуре; остальной код является машинно независимым и общим для всех платформ, на которые FreeBSD может быть потенциально портирована. Обратите внимание на логическую структуру каталогов, в которой каждое поддерживаемое устройство, каждая файловая система и каждая опция размещается в своём собственном каталоге.

В примерах этой главы подразумевается, что вы используете архитектуру i386. Если архитектура вашей системы отличается от используемой в примерах, то вам необходимо будет соответственно изменить имена каталогов.

### Примечание:

Если каталог `/usr/src/` отсутствует в вашей системе (или этот каталог пуст), то это значит, что исходные тексты не были установлены. Наиболее простой способ установить их — воспользоваться csup(1), как описано в Раздел 22.5, «Синхронизация ваших исходных текстов». Далее, создайте символическую ссылку на `/usr/src/sys/`:

`#` `ln -s /usr/src/sys /sys`

Затем, перейдите в каталог ``arch`/conf` и скопируйте файл конфигурации `GENERIC` в файл с выбранным вами именем. Например:

`#` `cd /usr/src/sys/`i386`/conf` `#` `cp GENERIC `MYKERNEL``

По традиции имя состоит из букв в верхнем регистре, и если вы поддерживаете несколько компьютеров FreeBSD на различном оборудовании, хорошая идея добавлять это имя к имени хоста. Мы назвали ядро ``MYKERNEL`` в этом примере.

### Подсказка:

Помещение файла конфигурации ядра в `/usr/src` может быть плохой идеей. Если вы испытываете проблемы, их можно решить удалив `/usr/src` и начав все с начала. После этого обычно требуется несколько секунд, чтобы понять, что вы удалили собственный файл настройки ядра. Не редактируйте непосредственно `GENERIC`, он может быть также перезаписан и при следующем обновлении дерева исходных текстов, и изменения ядра будут потеряны.

Вы можете сохранить файл конфигурации ядра в другом месте, а затем создать символическую ссылку на этот файл в каталоге ``i386``.

Например:

`#` `cd /usr/src/sys/`i386`/conf` `#` `mkdir /root/kernels` `#` `cp GENERIC /root/kernels/`MYKERNEL`` `#` `ln -s /root/kernels/`MYKERNEL``

Теперь отредактируйте файл ``MYKERNEL`` в своём любимом текстовом редакторе. Если вы только начинаете, единственным доступным редактором скорее всего будет vi, который слишком сложен для того, чтобы описать его здесь, но в библиографии перечислено множество книг, в которых его использование хорошо освещено. Однако FreeBSD предоставляет более простой редактор ee, который, если вы — новичок, подойдёт вам больше всего. Не стесняйтесь изменять строки комментариев в начале файла, с тем, чтобы отобразить вашу конфигурацию или изменения, которые вы сделали по сравнению с `GENERIC`.

Если вам приходилось собирать ядро для SunOS™ или какой-либо другой операционной системы типа BSD, многое из того, что содержится в этом файле будет очень знакомо вам. Если же вы, напротив, использовали другую операционную систему, такую как DOS, файл конфигурации `GENERIC` может показаться вам крайне сложным, поэтому следуйте инструкциям в разделе Конфигурационный файл медленно и внимательно.

### Примечание:

Если вы синхронизируете дерево исходных текстов с деревом проекта FreeBSD, не забудьте свериться с файлом `/usr/src/UPDATING` перед обновлением. В этом файле описаны все важные вопросы и области исходного кода, требующие особого внимания. `/usr/src/UPDATING` всегда соответствует версии ваших исходных текстов FreeBSD, поэтому является более актуальным источником информации, чем это руководство.

Теперь вы должны скомпилировать ядро.

Процедура 9.1. Сборка ядра

### Примечание:

Для сборки ядра необходимо наличие всех исходных файлов FreeBSD.

1. Перейдите в каталог `/usr/src`:

   `#` `cd /usr/src`

2. Соберите ядро:

   `#` `make buildkernel KERNCONF=`MYKERNEL``

3. Установите новое ядро:

   `#` `make installkernel KERNCONF=`MYKERNEL``

### Подсказка:

По умолчанию, при построении ядра, все модули ядра так же будут пересобраны. Если вы хотите обновить ядро быстрее или построить только определённые модули, то вам нужно отредактировать файл `/etc/make.conf` перед началом процесса сборки ядра:

MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs

Эта переменная устанавливает список модулей, которые нужно построить вместо построения всех модулей.

WITHOUT_MODULES = linux acpi sound ntfs

В этой переменной перечисляются основные модули, которые необходимо исключить из процесса сборки. За другими переменными, которые вы можете посчитать полезными в процессе сборки ядра, обращайтесь к странице справочника make.conf(5).

Новое ядро будет скопировано в каталог `/boot/kernel` как `/boot/kernel/kernel`, а старое ядро будет перемещено в `/boot/kernel.old/kernel`. Теперь перезагрузите систему для того, чтобы использовать новое ядро. Если что-то пойдёт не так, вы можете обратиться к разделу Решение проблем в конце этой главы, который может оказаться полезен. Не забудьте прочитать раздел, который объясняет как исправить ситуацию, когда ядро не загружается.

### Примечание:

Другие файлы, относящиеся к процессу загрузки, такие как загрузчик (loader(8)) и его конфигурационные файлы, размещаются в `/boot`. Модули сторонних производителей могут быть помещены в `/boot/kernel`, хотя пользователи должны знать, что очень важно, чтобы модули были синхронизированы с собранным ядром. Модули, не рассчитанные на работу с собранным ядром, могут вызвать нестабильность и некорректность работы.

Пред. | Наверх | След.
9.4. Драйвера, подсистемы и модули ядра | Начало | 9.6. Конфигурационный файл

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

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