Руководство FreeBSD
Пред. | Глава 8. Настройка ядра FreeBSD | След.

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

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

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

> Замечание: Если в вашей системе отсутствует каталог `/usr/src/sys`, это означает, что исходные тексты ядра не были установлены. Наиболее простой способ установить их - запустить `sysinstall` как `root`, выбрать Configure, потом Distributions, потом src, потом base и sys. Если вы испытываете отвращение к sysinstall и у вас есть доступ к ''официальному'' FreeBSD CDROM, вы также можете установить исходные тексты при помощи командной строки:

>     # mount /cdrom
>     # mkdir -p /usr/src/sys
>     # ln -s /usr/src/sys /sys
>     # cat /cdrom/src/ssys.[a-d]* | tar -xzvf -
>     # cat /cdrom/src/sbase.[a-d]* | tar -xzvf -

Затем, перейдите в каталог ``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, поэтому является более актуальным источником информации, чем это руководство.

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

Сборка ядра

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

       # cd /usr/src

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

       # make buildkernel KERNCONF=MYKERNEL

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

       # make installkernel KERNCONF=MYKERNEL

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

> Подсказка: По умолчанию, при построении ядра, все модули ядра так же будут пересобраны. Если вы хотите обновить ядро быстрее или построить только определённые модули, то вам нужно отредактировать файл `/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`, хотя пользователи должны знать, что очень важно, чтобы модули были синхронизированы с собранным ядром. Модули, не рассчитанные на работу с собранным ядром, могут вызвать нестабильность и некорректность работы.

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

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

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