RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
YandexMoney: 
41001198119846 
E-gold:
5128052

Linux From Scratch. Версия 6.0

Глава 8. Обеспечение загрузки LFS системы

8.3. Linux-2.6.8.1

Пакет Linux содержит ядро и файлы заголовков.

Расчетное время сборки 4.20 SBU

Требуемое место на диске 181 MB

Linux зависит от установки: Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl и Sed.

8.3.1. Установка ядра

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

Подготовимся к компиляции запуском следующей команды:

make mrproper

Это позволит убедиться, что дерево исходников будет абсолютно чистым. Команда разработки ядра рекомендует запускать эту команду перед каждой компиляцией ядра. Вы не можете быть абсолютно уверены в отсутствии лишних файлов даже после распаковки исходников.

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

sed -i 's@/sbin/hotplug@/bin/true@' kernel/kmod.c

Если в разделе 7.6. “Настройка консоли Linux” было решено вкомпилировать раскладку клавиатуры в ядро, используйте следующую команду:


loadkeys -m /usr/share/kbd/keymaps/[path tokeymap] > \
            drivers/char/defkeymap.c

Например для использования русской клавиатуры (один из вариантов), используйте /usr/share/kbd/keymaps/i386/qwerty/ru1.map.gz.

Отконфигурируем ядро через меню-подобный интерфейс:

make menuconfig

Альтернативно, make oldconfig может быть более подходящим в некоторых ситуациях. Смотрите файл README для большей информации.

[Note]

Замечание

При конфигурации ядра убедитесь, что включили опцию “Support for hot-pluggable devices” в меню “General Setup”. Это разрешит события горячих подключений, которые используются udev для заполнения /dev нодами устройств.

Если хотите, можете пропустить конфигурацию ядра копированием файла конфигурации .config из основной системы (если он доступен) в распакованный каталог linux-2.6.8.1, хотя я это не рекомендую. Часто лучше пройтись по всему меню конфигурации для создания нормального файла конфигурации ядра.

Для поддержки POSIX-разделяемой памяти убедитесь, что опция “Virtual memory file system support” включена. Она расположена в меню “File systems ” и обычно включена по умолчанию.

Скрипты загрузки LFS также предполагают, что обе опции “Support for Host-side USB” и “USB device filesystem” были вкомпилированы непосредственно в ядро или они не были скомпилированы вообще. Скрипты загрузки не будут работать правильно, если эта поддержка выполнена в виде модуля (usbcore.ko).

[Note]

Замечание

NPTL требует, чтобы ядро было скомпилировано GCC 3.x, в данном случае 3.4.1. Компиляция GCC 2.95.x известна некоторыми ошибками при тесте glibc, поэтому не рекомендуется компилировать ядро gcc 2.95.x.

Скомпилируем образ ядра и модули:

make

Если Вы будете использовать модули, то может понадобиться файл /etc/modprobe.conf. Информация по модулям и конфигурации ядра находится в документации ядра в каталоге linux-2.6.8.1/Documentation. Также может быть интересна man-страница modprobe.conf.

Будьте осторожны при чтении другой документации, так как обычно она применима только к ядрам 2.4.x. Как мы давно знаем, проблемы конфигурации ядра, специфичные для Hotplug и Udev, не документированы. Проблема в том, что Udev будет создавать ноды устройств только, если Hotplug или созданный пользователем скрипт вставит соответствующий модуль в ядро и не все модули определяются Hotplug. Заметьте, что утверждения, похожие на указанное ниже, в файле /etc/modprobe.conf не работают с Udev:

alias char-major-XXX some-module

Поскольку планируется компиляция с поддержкой Hotplug, Udev и модулей, я рекомендую начинать с полностью монолитной конфигурацией ядра, особенно при первом использовании Udev.

Установим модули, если ядро их использует:

make modules_install

Если имеется много модулей и очень мало свободного места на диске, подумайте о компрессии модулей. Для большинства пользователей такая компрессия не стоит затрат времени, но если система сжимается для экономии места, смотрите http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html .

После завершения компиляции ядра требуются дополнительные шаги для завершения установки. Некоторые файлы необходимо скопировать в каталог /boot.

Путь к образу ядра может отличаться для различных платформ. Используйте следующую команду для установки ядра:

cp arch/i386/boot/bzImage /boot/lfskernel-2.6.8.1

System.map это файл карты символов для ядра. Он содержит карту точек входа в каждую функцию API ядра. Используйте следующую команду для установки этого файла:

cp System.map /boot/System.map-2.6.8.1

Файл конфигурации ядра .config, созданный после выполнения команды make menuconfig, содержит все выбранные опции конфигурации для только что откомпилированного ядра. Хорошей идеей будет сохранение этого файла:

cp .config /boot/config-2.6.8.1

Важно отметить, что файлы в каталоге исходников ядра не принадлежат пользователю root. Хотя пакет был распакован пользователем root (так как мы находимся в среде chroot), файлы имеют ID пользователя и группы, соответствующие компьютеру, на котором проводилась упаковка. Обычно это не является проблемой для остальных пакетов, поскольку дерево исходников удаляется после установки ядра, хотя часто оно сохраняются очень долго. В связи с этим имеется вероятность, что пользователь с таким же ID, как у собранного пакета исходников ядра, получит права доступа на запись в каталоге исходников ядра.

Если дерево исходников ядра планируется сохранить, выполните chown -R 0:0 на каталоге linux-2.6.8.1 для передачи всех файлов пользователю root.

8.3.2. Содержимое Linux

Установленные файлы: ядро, заголовки ядра и System.map.

Короткое описание

Ядро .

Это двигатель системы Linux. При включении компьютера ядро является первой частью операционной системы, которая будет загружена. Оно определяет и инициализирует все аппаратные компоненты компьютера, после чего делает эти компоненты доступными для программ в виде дерева файлов и включает одиночный процессор в многопроцессорной системе.

Заголовки ядра.

Описывают интерфейс к предоставляемым ядром сервисам. Заголовки в системном каталоге include должны всегда быть теми же, что использовались для компиляции Glibc и поэтому не должны быть заменены при обновлении ядра.

System.map.

Список адресов и символов: карта точек входа и адреса каждой функции API ядра и структур данных ядра.

Поиск

 

Найди своих коллег!