8.3.1.
Установка
ядра
Сборка
ядра
состоит из
нескольких
шагов—конфигурирования,
компиляции
и
установки.
Обратитесь
к файлу README
,
который
находится
в дереве
исходников
ядра, если
Вас
интересуют
альтернативные
методы
конфигурирования
ядра, не
описываемые
в этой
книге.
Подготовим
ядро к
компиляции
следующей
командой:
make mrproper
Эта
команда
очищает
дерево
исходных
кодов ядра
от
возможно
присутствующих
в нем
временных
файлов.
Команда
разработчиков
ядра
рекомендует
выполнять
это
действие
перед
каждой
компиляцией.
Не стоит
полагаться
на то, что
дерево
исходников
будет
чисто
после
распаковки
архива - это
не всегда
так.
Конфигурирование
ядра будет
выполняться
при помощи
псевдографического
интерфейса.
Основная
информация
о
конфигурации
ядра
изложена
здесь:
http://www.linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt.
Также в
книге BLFS
есть
некоторые
сведения о
требованиях
пакетов, не
входящих в
LFS, к опциям
ядра -
http://www.linuxfromscratch.org/blfs/view/svn/longindex.html#kernel-config-index.
Замечание
В связи с
последними
изменениями
в udev, не
забудьте
включить
следующую
опцию:
Device Drivers --->
Generic Driver Options --->
Maintain a devtmpfs filesystem to mount at /dev
make LANG=<host_LANG_value>
LC_ALL= menuconfig
Значения
параметров
make:
-
LANG=<host_LANG_value>
LC_ALL=
-
Устанавливает
ту же
локаль
для
использования,
что и на
хост-системе.
Это
необходимо
для
правильного
отображения
линий
интерфейса
ncurses в menuconfig для
локалей,
основанных
на UTF-8.
Не
забудьте
заменить
<host_LANG_value>
значением
переменной
$LANG
из
окружения
Вашей
хост-системы.
Если эта
переменная
не
установлена,
вместо
нее можно
использовать
значение
переменной
$LC_ALL
or $LC_CTYPE
.
В
некоторых
ситуациях
make oldconfig
может быть
более
подходящим
вариантом.
Обратитесь
к файлу README
за
более
поробными
разъяснениями.
Вы можете
пропустить
конфигурирование
ядра,
скопировав
файл
настройки
.config
(если,
конечно, он
у Вас
имеется) из
хост-системы
в
директорию
исходников
linux-3.8.1
.
Однако, мы
не
рекомендуем
этот
вариант.
Гораздо
лучше
вручную
пройтись
по всем
настройкам
ядра и
создать
конфигурацию
с нуля.
Скомпилируем
ядро и
модули:
make
Если Вы
используете
модули
ядра,
возможно,
Вам
понадобится
дополнительно
настроить
их в /etc/modprobe.d
.
Информацию
о
настройке
модулей и
самого
ядра Вы
можете
подчерпнуть
из Раздел 7.4,
«Device and Module Handling on an LFS System» и
документации
ядра в
директории
linux-3.8.1/Documentation
.
Также,
возможно,
Вас
заинтересует
страница
modprobe.conf(5)
.
Установим
модули,
если
конфигурация
ядра
подразумевает
их
использование:
make modules_install
После того,
как
компиляция
ядра
завершена,
необходимо
выполнить
несколько
дополнительных
шагов для
завершения
установки.
Нужно
скопировать
некоторые
файлы в
директорию
/boot
.
Путь к
образу
ядра на
разных
платформах
может
сильно
отличаться.
Вы можете
свободно
изменить
имя файла,
используемое
ниже, но оно
обязательно
должно
начинаться
со слова vmlinuz,
чтобы не
возникло
проблем с
автоматической
назтройкой
загрузчика
в
следующей
секции.
Следующая
команда
предполагает,
что Вы
используете
архитектуру
x86:
cp -v arch/x86/boot/bzImage /boot/vmlinuz-3.8.1-lfs-7.3
Файл System.map
содержит
карту
символов
ядра. В нем
указаны
точки
входа для
всех
функций API и
адреса
структур
данных для
запущенного
ядра. Он
полезен
при
исследовании
возникающих
в системе
неполадок.
Выполните
команду
ниже для
установки
map-файла:
cp -v System.map /boot/System.map-3.8.1
Файл
настроек
.config
,
созданный
выше на
шаге make
menuconfig,
содержит
значения
всех опций
конфигурации
для только
что
собранного
ядра.
Неплохой
идеей
будет
сохранить
его на
будущее:
cp -v .config /boot/config-3.8.1
Установим
документацию
для ядра Linux:
install -d /usr/share/doc/linux-3.8.1
cp -r Documentation/* /usr/share/doc/linux-3.8.1
Важно
помнить,
что файлы в
директории
исходных
кодов ядра
не
принадлежат
пользователю
root.
Даже если
архив был
распакован
из-под
пользователя
root (как
мы и
сделали в
chroot-окружении),
файлы
будут
иметь те же
идентификаторы
пользователя
и группы,
что и на
компьютере
того, кто
упаковывал
этот архив.
Для любого
другого
пакета это
не
является
проблемой,
поскольку
дерево
исходников
удаляется
сразу
после
установки.
Но, как
правило,
исходные
коды ядра Linux
остаются в
системе
надолго.
Поэтому
существует
вероятность,
что UID,
который
имеют
файлы ядра,
будет
присвоен
какому-либо
пользователю
на машине.
Этот
пользователь
будет
иметь
доступ на
запись в
исходные
файлы ядра.
Если Вы
собираетесь
оставить
дерево
исходников
ядра,
выполните
команду chown -R 0:0
над
директорией
linux-3.8.1
,
чтобы быть
уверенным,
что все
файлы
доступны
только
пользователю
root.
Внимание
В
некоторых
разделах
документации
ядра Вы
можете
наткнуться
на
рекомендацию
создать
символическую
ссылку /usr/src/linux
,
указывающую
на каталог
с
исходниками
ядра. Совет
относится
к ядрам до 2.6,
и эта
ссылка не
должна
присутствовать
в системе LFS,
поскольку
из-за нее
могут
возникнуть
проблемы
со сборкой
некоторых
пакетов,
которые,
возможно,
понадобятся
Вам по
окончании
сборки LFS.
Внимание
Файлы в
системной
директории
include
должны всегда
быть
именно
теми
подготовленными
заголовочными
файлами из
архива
ядра Linux,
которые
использовались
при сборке
Glibc. Ни в
коем
случае
нельзя
заменять
их "сырыми"
заголовочными
файлами
или
заголовочными
файлами
другой
версии
ядра!