Руководство по Gentoo Linux Genkernel

Tim Yamin  Author
Ilya Krets  Translator

Updated June 15, 2003

1. Вступление

Вступление

Genkernel написан для того, чтобы пользователи, не имеющие опыта по сборке ядра, могли использовать установку подобную Gentoo LiveCD, которая автоматически определяет системное оборудование.

Некоторые пользователи, вероятно, будут заинтересованы в использовании genkernel для устройств, которым необходима инициализация и уже работающее ядро перед его загрузкой, поскольку genkernel также автоматически компилирует модули ядра, тем самым позволяя использовать оборудование, которое необходимо загружать с параметрами модулей.

Нужен ли мне genkernel?

Genkernel - это хороший выбор для тех, кто не имеет опыта сборки ядра собственноручно или тех, кто не уверен в конфигурации своего компьютера.

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

Genkernel сейчас не поддерживает загрузку системы с разделов типа LVM2/EVMS2. Если Вы используете разделы такого типа, вам рекомендуется использовать вручную собранное ядро.

Получение genkernel

Вы можете установить genkernel, просто запустив команду emerge genkernel. Не забудьте использовать для установки флаг -k, если Вы используете бинарные пакеты, то есть GRP. Из-за того, что GRP пакеты включают более старые версии genkernel, возможности Вашей версии genkernel может отличаться от приведенных в этом руководстве. Поэтому Вам следует посмотреть это: Gentoo Handbook и genkernel --help.

Поддерживаемые платформы

Genkernel 3.0.2 поддерживает следующие платформы: alpha, amd64, parisc, parisc64, ppc, ppc64, sparc, sparc64, and x86. Если вам кажется, что существует ошибка в коде поддержки, а не в genkernel, пожалуйста оставьте описание ошибки на Gentoo Bugzilla.

2. Использование genkernel

Вступление

Genkernel может работать в трех режимах:

Большинству необходим только "all" режим, который запускает режимы "kernel" и "initrd". Заметьте, что режимы "kernel" и "initrd" сейчас всего лишь псевдонимы для режима "all", поэтому в текущей версии они никак не отразятся на работе программы.

Несмотря на то, что, в общем, genkernel - утилита, позволяющая упростить задачу компиляции ядра, genkernel также включает в себя различные флаги, которые позволят вам задать дополнительные настройки для сборки или конфигурирования ядра.

Флаги компиляции genkernel

Genkernel поддерживает следующие флаги, которые передаются соответствующим приложениям при сборке ядра:

Флаги ядра genkernel

Genkernel поддерживает следующие флаги (некоторые из них имеют --no-опция эквиваленты), которые влияют на сборку ядра:

Другие флаги genkernel

Genkernel также поддерживает несколько других флагов, которые не относятся к двум другим категориям:

Запуск genkernel

Все что нужно, чтобы запустить genkernel - это команда genkernel с необходимыми флагами под root. Например:

Code Listing 2.1: Запуск genkernel

# genkernel --menuconfig --no-clean --no-install --bootsplash all
(Соберет ядро, запросив, как сконфигурировать его, оставляя нетронутыми все объектные файлы, добавляя поддержку
bootsplash, но не устанавливая ничего.)

Если Вы хотите, чтобы genkernel также установил Ваше ядро, Вы должны смонтировать ваш /boot раздел - последние версии genkernel сделают это за вас автоматически, если переменная MOUNTBOOT в /etc/genkernel.conf равна "yes".

Code Listing 2.2: Монтирование /boot вручную

(Если /boot - правильная запись в /etc/fstab:)
# mount /boot
(... иначе - для IDE дисков:)
# mount /dev/hda1 /boot
(... и для SCSI дисков:)
# mount /dev/sda1 /boot

Настройка genkernel для работы с bootloader

Чтобы настроить genkernel для работы с загрузчиком, в него (в загрузчик) придется внести кое-каки, изменения.

  1. Добавьте root=/dev/ram0 и init=/linuxrc в параметры ядра, передаваемые его образу.
  2. Добавьте real_root=/dev/hda3, например, в параметры ядра, передаваемые его образу, где /dev/hda3 - устройство, которое содержит ваш корневой раздел.
  3. Если Вы используете bootsplash, добавьте подходящую строчку, например vga=0x317, к параметрам, передаваемым ядру и также добавьте splash=verbose или splash=silent в зависимости от желаемого уровня информативности bootsplash.
  4. Добавьте initrd соответственно тому, как ваш bootloader требует этого: посмотрите Gentoo Handbook для детальной информации о том, как сделать этого для вашего bootloader.

3. Портирование genkernel

Вступление

При том условии, что ваша архитектура имеет все необходимые библиотеки и утилиты, необходимые genkernel, включая работающее ядро для вашей архитектуры, работающий комплект компилятора, GNU Make и работающий дистрибутив busybox, вы готовы для портирования genkernel.

Для каждой архитектуры, genkernel использует /usr/share/genkernel/имяАрхитектуры для конфигурационных файлов.

Как работает начальная загрузка системы

  1. Bootloader загружает образ ядра, собранный по конфигурационным спецификациям из директорий genkernel, а так же initrd, подготовленный genkernel.
  2. Ядро загружается, назначает небольшое количество RAM, в котором инициализируется busybox, который пытается загрузить для санной системы из списка modules_load.
  3. После завершения, и при условии, что real_root параметр, который является загрузочным root устройством, был найден busybox, система загружается с этого устройства.

Файлы настроек