Genkernel/ru

— это утилита созданная Gentoo, которая используется для автоматизации процесса сборки ядра и initramfs. Некоторые основные функции:


 * конфигурация исходного кода ядра
 * сборка сжатого ядра и его копирование в
 * создание initramfs и копирование его в
 * создание символьных ссылок в
 * добавление настроенного вручную содержимого в initramfs. Например файлов связанных с шифрованием, splash images, дополнительных модулей и так далее.
 * сжатие initramfs
 * конфигурация загрузчика для загрузки нового ядра и initramfs.

Emerge
Запустите установку genkernel.

Использование
Основная форма вызова команды genkernel выглядит следующим образом:

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

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


 * Место откуда Genkernel будет брать конфигурационный файл (по умолчанию ).
 * Место откуда Genkernel будет брать конфигурационный файл (по умолчанию ).


 * Запускать (или не запускать) команду (которая запускает интерактивное меню для конфигурации) перед компиляцией ядра.
 * Запускать (или не запускать) команду (которая запускает интерактивное меню для конфигурации) перед компиляцией ядра.


 * Предоставляет утилиту настройки ядра, основанную на библиотеках GTK+. Преимущество этого варианта в том, что большинству пользователей легче и понятнее настраивать ядро с помощью этого инструмента, поскольку он опирается на X-windows system. Недостатком этого варианта является то, что X-windows system должна быть установлена, чтобы использовать её, поэтому это не будет работать в командной строке.
 * Предоставляет утилиту настройки ядра, основанную на библиотеках GTK+. Преимущество этого варианта в том, что большинству пользователей легче и понятнее настраивать ядро с помощью этого инструмента, поскольку он опирается на X-windows system. Недостатком этого варианта является то, что X-windows system должна быть установлена, чтобы использовать её, поэтому это не будет работать в командной строке.


 * Предоставляет утилиту настройки ядра, основанную на библиотеках QT. Преимущество этого варианта в том, что большинству пользователей легче и понятнее настраивать ядро с помощью этого инструмента, поскольку он опирается на X-windows system. Недостатком этого варианта является то, что X-windows system должна быть установлена, чтобы использовать её, поэтому это не будет работать в командной строке.
 * Предоставляет утилиту настройки ядра, основанную на библиотеках QT. Преимущество этого варианта в том, что большинству пользователей легче и понятнее настраивать ядро с помощью этого инструмента, поскольку он опирается на X-windows system. Недостатком этого варианта является то, что X-windows system должна быть установлена, чтобы использовать её, поэтому это не будет работать в командной строке.


 * Сохранить [или не сохранять] файл конфигурации ядра в каталог для последующего использования.
 * Сохранить [или не сохранять] файл конфигурации ядра в каталог для последующего использования.


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

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


 * Включает (или отключает) поддержку Fbsplash фреймбуфера в собранном genkernel образе initrd. Чтобы изменить тему по умолчанию с помощью fbsplash, используйте  (где   это название одной из директорий внутри ).
 * Включает (или отключает) поддержку Fbsplash фреймбуфера в собранном genkernel образе initrd. Чтобы изменить тему по умолчанию с помощью fbsplash, используйте  (где   это название одной из директорий внутри ).


 * Эта опция позволяет выбрать какие разрешения заставки будут поддерживаться в initrd во время запуска системы. Это полезно по двум причинам. Во-первых, можно выбрать только те варианты разрешения заставки(ок), которые подходят для системы. Во-вторых, initrd не будет занимать много дискового пространства (так как initrd не должен будет поддерживать разрешения, которые не нужны для данной конфигурации системы). Тем не менее, эту опцию лучше не использовать, если ядро компилируются для установочного CD, что позволит splash поддерживать все возможные варианты разрешений.
 * Эта опция позволяет выбрать какие разрешения заставки будут поддерживаться в initrd во время запуска системы. Это полезно по двум причинам. Во-первых, можно выбрать только те варианты разрешения заставки(ок), которые подходят для системы. Во-вторых, initrd не будет занимать много дискового пространства (так как initrd не должен будет поддерживать разрешения, которые не нужны для данной конфигурации системы). Тем не менее, эту опцию лучше не использовать, если ядро компилируются для установочного CD, что позволит splash поддерживать все возможные варианты разрешений.


 * Принудительный выбор раскладки клавиатуры во время загрузки.
 * Принудительный выбор раскладки клавиатуры во время загрузки.


 * Включает поддержку устройств хранения использующие Logical Volume Management (LVM2) с помощью статических бинарников, если они доступны в системе. Соответствующие (статические) LVM2 бинарники скомпилируются, если они недоступны. Обязательно установите в систему пакет используя  перед включением этой опции, а также проверьте статью LVM на Gentoo wiki.
 * Включает поддержку устройств хранения использующие Logical Volume Management (LVM2) с помощью статических бинарников, если они доступны в системе. Соответствующие (статические) LVM2 бинарники скомпилируются, если они недоступны. Обязательно установите в систему пакет используя  перед включением этой опции, а также проверьте статью LVM на Gentoo wiki.


 * Включает поддержку DMRAID; утилита, которая создает RAID с помощью подсистемы ядра отображения устройств. DMRAID обнаруживает, включает, отключает и отображает настройки программного RAID (например, ATARAID) и содержащихся в них DOS разделов.
 * Включает поддержку DMRAID; утилита, которая создает RAID с помощью подсистемы ядра отображения устройств. DMRAID обнаруживает, включает, отключает и отображает настройки программного RAID (например, ATARAID) и содержащихся в них DOS разделов.


 * Включает поддержку Linux Unified Key Setup или LUKS. Эта опция позволит использовать устройства, которые содержат корневую файловую систему и зашифрованны с помощью LUKS. В загрузчике для зашифрованного устройства задайте значение  (и   для не зашифрованных с помощью LUKS устройств).
 * Включает поддержку Linux Unified Key Setup или LUKS. Эта опция позволит использовать устройства, которые содержат корневую файловую систему и зашифрованны с помощью LUKS. В загрузчике для зашифрованного устройства задайте значение  (и   для не зашифрованных с помощью LUKS устройств).


 * Добавляет поддержку disk label и UUID в initrd.
 * Добавляет поддержку disk label и UUID в initrd.


 * Добавляет поддержку iSCSI в initrd.
 * Добавляет поддержку iSCSI в initrd.


 * Добавляет поддержку Multipath в initrd.
 * Добавляет поддержку Multipath в initrd.


 * Задает расположение созданного пользователем скрипта linuxrc, который инициализируется во время запуска ядра до начала процесса загрузки. Скрипт linuxrc по умолчанию можно найти в каталоге . Этот скрипт позволяет пользователю загрузить маленькое модульное ядро; которое попытается загрузить минимальное количество драйверов, которые необходимы (как модули) системы.
 * Задает расположение созданного пользователем скрипта linuxrc, который инициализируется во время запуска ядра до начала процесса загрузки. Скрипт linuxrc по умолчанию можно найти в каталоге . Этот скрипт позволяет пользователю загрузить маленькое модульное ядро; которое попытается загрузить минимальное количество драйверов, которые необходимы (как модули) системы.


 * Изменяет расположение каталога кэша, который будет использоваться во время компиляции ядра.
 * Изменяет расположение каталога кэша, который будет использоваться во время компиляции ядра.


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


 * Добавление поддержки Unification File System в образ initrd.
 * Добавление поддержки Unification File System в образ initrd.


 * Определяет нужно ли или нет монтировать каталог на отдельный раздел. С этой опцией произойдет проверка скрипта, чтобы узнать как подключить boot раздел в файловой системе (если это необходимо).
 * Определяет нужно ли или нет монтировать каталог на отдельный раздел. С этой опцией произойдет проверка скрипта, чтобы узнать как подключить boot раздел в файловой системе (если это необходимо).

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


 * Определяет компилятор, который будет использован при сборке ядра.
 * Определяет компилятор, который будет использован при сборке ядра.


 * Определяет компоновщик, который будет использован при сборке ядра.
 * Определяет компоновщик, который будет использован при сборке ядра.


 * Определяет ассемблер, который будет использован при сборке ядра.
 * Определяет ассемблер, который будет использован при сборке ядра.


 * Определяет make утилиту (альтернативу GNU make), которая будет использована при сборке ядра.
 * Определяет make утилиту (альтернативу GNU make), которая будет использована при сборке ядра.


 * Определяет компилятор, который будет использован при сборке утилит поддержки.
 * Определяет компилятор, который будет использован при сборке утилит поддержки.


 * Определяет компоновщик, который будет использован при сборке утилит поддержки.
 * Определяет компоновщик, который будет использован при сборке утилит поддержки.


 * Определяет ассемблер, который будет использован при сборке утилит поддержки.
 * Определяет ассемблер, который будет использован при сборке утилит поддержки.


 * Определяет make утилиту (альтернативу GNU make), которая будет использована при сборке утилит поддержки.
 * Определяет make утилиту (альтернативу GNU make), которая будет использована при сборке утилит поддержки.


 * Определяет количество одновременных потоков, которые утилита make может запустить во время компиляции ядра (и утилит). Переменная  это любое число, хотя наиболее распространенные значения получаются путем добавления одного (1) к числу ядер, доступных системе, или же просто использовать количество ядер доступных системе. Так, для системы с одним ядром лучше подойдет вариант значения   или  ; для систем с двумя ядрами, скорее всего подойдет значение   или   и так далее. (Для систем с одним процессором, которые поддерживают технологию Hyper-Threading ™ (HT) можно предположить, что системе доступны 2 ядра, при условии, что поддержка Symmetric Multiprocessing (SMP) включена в ядре.)
 * Определяет количество одновременных потоков, которые утилита make может запустить во время компиляции ядра (и утилит). Переменная  это любое число, хотя наиболее распространенные значения получаются путем добавления одного (1) к числу ядер, доступных системе, или же просто использовать количество ядер доступных системе. Так, для системы с одним ядром лучше подойдет вариант значения   или  ; для систем с двумя ядрами, скорее всего подойдет значение   или   и так далее. (Для систем с одним процессором, которые поддерживают технологию Hyper-Threading ™ (HT) можно предположить, что системе доступны 2 ядра, при условии, что поддержка Symmetric Multiprocessing (SMP) включена в ядре.)

Параметры, воздействующие на процесс компиляции
Следующие параметры обычно имеют эффект во время самой компиляции:


 * Определяет альтернативное расположение исходных кодов ядра, а не стандартное.
 * Определяет альтернативное расположение исходных кодов ядра, а не стандартное.


 * Определяет, какие альтернативные конфигурации будут использованы, а не стандартная.
 * Определяет, какие альтернативные конфигурации будут использованы, а не стандартная.


 * Определяет префикс для директории, в которую будут устанавливаться модули (по умолчанию .)
 * Определяет префикс для директории, в которую будут устанавливаться модули (по умолчанию .)


 * Активирует (или деактивирует) команду перед сборкой ядра.  удаляет все объектные файлы и зависимости из дерева исходных кодов.
 * Активирует (или деактивирует) команду перед сборкой ядра.  удаляет все объектные файлы и зависимости из дерева исходных кодов.


 * Активирует (или деактивирует) команду перед сборкой ядра. Как и у команды, при выполнении  удаляются все объектные файлы и зависимости из дерева исходных кодов. Однако, любые предыдущие конфигурационные файлы (в  или ) будут также вычищены из дерева. Если не желательно удалять, чтобы конфиг ядра  удалялся, то обязательно отключите эту опцию!
 * Активирует (или деактивирует) команду перед сборкой ядра. Как и у команды, при выполнении  удаляются все объектные файлы и зависимости из дерева исходных кодов. Однако, любые предыдущие конфигурационные файлы (в  или ) будут также вычищены из дерева. Если не желательно удалять, чтобы конфиг ядра  удалялся, то обязательно отключите эту опцию!


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


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


 * Активирует (или деактивирует) команду, которая устанавливает образ нового ядра, файл конфигурации, образ initrd и системную карту на загрузочный раздел. Любые собираемые модули будут установлены. По умолчанию genkernel пытается смонтировать , если он является отдельным разделом, перед выполнением команды установки.
 * Активирует (или деактивирует) команду, которая устанавливает образ нового ядра, файл конфигурации, образ initrd и системную карту на загрузочный раздел. Любые собираемые модули будут установлены. По умолчанию genkernel пытается смонтировать , если он является отдельным разделом, перед выполнением команды установки.


 * Воздерживается от копирования каких-либо модулей в созданный genkernel образ initrd. Эта вариант является исключением из правила о  префиксе;  отсутствие приставки создает недопустимый параметр для genkernel.
 * Воздерживается от копирования каких-либо модулей в созданный genkernel образ initrd. Эта вариант является исключением из правила о  префиксе;  отсутствие приставки создает недопустимый параметр для genkernel.


 * Копирует все доступные модули в созданный genkernel образ initrd.
 * Копирует все доступные модули в созданный genkernel образ initrd.


 * Создает образ initrd, предшествующий образу ядра (этот прием сейчас применим только к системам PPC Pegasos).
 * Создает образ initrd, предшествующий образу ядра (этот прием сейчас применим только к системам PPC Pegasos).

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


 * Регулирует количество информации отображаемой genkernel. Переменная  это целое число от 0 до 5. Уровень '0' отображает минимальный уровень информации, а '5' отображает как можно больше информации о работе genkernel во время процесса компиляции.
 * Регулирует количество информации отображаемой genkernel. Переменная  это целое число от 0 до 5. Уровень '0' отображает минимальный уровень информации, а '5' отображает как можно больше информации о работе genkernel во время процесса компиляции.


 * Игнорирует любое значение опции  (о которой написано выше) и отправляет всю отладочную информацию от genkernel в специальный файл. По умолчанию вывод направляется в файл.
 * Игнорирует любое значение опции  (о которой написано выше) и отправляет всю отладочную информацию от genkernel в специальный файл. По умолчанию вывод направляется в файл.


 * Включает (или отключает) цветной вывод отладочной информации (сообщений от genkernel) с помощью управляющих последовательностей терминала.
 * Включает (или отключает) цветной вывод отладочной информации (сообщений от genkernel) с помощью управляющих последовательностей терминала.


 * Включает (или отключает) полную очистку отладочной информации после выполнения.
 * Включает (или отключает) полную очистку отладочной информации после выполнения.

Действия
Действие, переданное командной строке командой, сообщает genkernel действие для выполнения. Поддерживаются следующие действия:

Начав
Хотя существует несколько способов запустить утилиту genkernel, наименее навязчивый подход, рекомендуемый для большинства пользователей, предоставляется командой. В этом примере используется общая конфигурация, которая хорошо работает для большинства используемых систем. Как было упомянуто ранее, этот подход не лишен недостатков; большинство созданных модулей бесполезны для среднестатистического пользователя и могут увеличить время компиляции. Ниже проиллюстрирован более эффективный подход, достигнутый передачей определенных параметров команде genkernel под учетной записью root:

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

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

Выбор ядра
Первое, что надо сделать, это разрешить запуск в файле :

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

Файлы исходного кода
После запуска, если доступна новая версия исходного кода, то для их хранения в создается новый каталог. Обычно, на активный каталог с исходным кодом ядра указывает символьная ссылка.

Каталог может выглядеть так:

Символьная ссылка может быть изменена разными способами.


 * Если установлен USE-флаг, то символьная ссылка  автоматически обновляется и будет указывать на только что установленный исходный код.


 * Если  USE-флаг не установлен, пользователь может изменить назначение для символьной ссылки используя команду, а затем.

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

Файл конфигурации ядра
Если компиляция ядра уже запущена с активным исходным кодом ядра, в каталоге может находиться файл, который содержит конфигурацию ядра, которая применялась при создании последнего файла ядра bzimage. Этот файл может называться, например,, где  может быть заменено на архитектуру системы,   может быть заменено на версию  используемого исходного кода, а   на выпуск (release) исходного кода.

Это тот самый файл, который используется в качестве начальной конфигурации при запуске.

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

Сохранение конфигурации компилирования
Если активирован параметр genkernel, как из командной строки, так и из , конфигурация скомпилированного ядра сохраняется (под именем данным выше) в каталог. В то же время, конфигурация сохраняется в файл в каталоге, но этот файл не используется заново при следующем запуске команды.

Установка ядра и initramfs в каталог
Использование опции  при вызове genkernel, просит   установить образ ядра и initramfs в каталог. Для того, чтобы сделать это удобным образом, установите следующие параметры в файле :


 * Первый параметр говорит сам за себя.


 * Второй параметр сообщает genkernel, чтобы конфигурация скомпилированного ядра была сохранена в.


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

После запуска, каталог может выглядеть следующим образом:

Конфигурация загрузчика
Символьные ссылки, приведенные выше в конфигурации загрузчика, могут быть использованы так, что даже если новое ядро не загружается, пользователь смог всегда загрузить предыдущее.

Чтобы разрешить ядру и initrd, генерируемым genkernel, работать правильно, предоставьте необходимый минимум информации в файле конфигурации загрузчика:


 * Добавьте  к параметрам ядра, передаваемым образу ядра, где  указывает на root раздел (  - это номер раздела, если раздел сущестует).
 * Если используется splash screen, добавьте подходящую строку режима (mode line), такую как  в список параметров, передаваемых ядру и также добавьте   или , в зависимости от уровня вывода сообщений, требуемого в процессе загрузки.
 * Добавьте информацию initrd, как это требуется загрузчиком. Обратитесь к главе конфигурация загрузчика Gentoo Handbook, чтобы узнать как настроить поддержку initrd в загрузчике.

Ниже приведено то, как может выглядеть файл.

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


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


 * Второй важной вещью необходимо сохранить уже загружаемые образы ядра и initramfs. Способ, которым это можно выполнить, зависит от контекста:
 * Если ранее скомпилированное ядро загружается, запуск переименует образ этого ядра (и, также, initramfs) в  и создаст новый . Это значит, что даже если новое ядро не загружается, пользователи всегда смогут загрузить предыдущее.
 * Если последнее скомпилированное ядро не загружается и исходные тексты не изменялись с того момента как пользователь скомпилировал загружаемое ядро, до запуска, сперва удалите образ нового ядра и уберите суффикс из последнего загружаемого ядра. Без этого, если заново скомпилированное ядро не загружается во второй раз, загружаемое ядро  будет удалено переименованием незагружаемого , приводя пользователя к незагружаемой системе. Используйте те же самые рассуждения для initramfs.

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

С установочного диска
Утилита может собрать образ ядра и initrd, которые имеют поддержку сетевой загрузки, или netbooting. Если хоть немного повезет, пользователи смогут загрузить по сети какой-либо новый компьютер в среду, предоставляемую загрузочным CD.

Волшебство заключается в сценарии linuxrc утилиты genkernel: он попытается смонтировать загрузочный диск по сети используя NFS. Оттуда, сценарии инициализации загрузочного CD смогут получить контроль, как если бы CD присутствовал локально.

Сборка ядра и initramfs с поддержкой сетевой загрузки
Для разрешения поддержки загрузки по сети, включите следующие параметры при конфигурации ядра:

Во-первых, образ ядра должен включать драйверы для сетевых карт в системе (Network Interface Cards - NIC). Обычно, драйверы для таких устройств компилируются в качестве модулей. Однако, важно (для загрузки по сети), чтобы подобные драйверы были скомпилированы прямо в образ ядра, а не как модули.

Во-вторых, предполагается что включен параметр "IP: kernel level autoconfiguration", также как и "IP: DHCP support options". Это позволяет избежать лишних сложностей, так как IP-адрес и путь NFS к установочному CD могут быть сконфигурированы на DHCP-сервере. Определенно, это означает, что командная строка ядра будет оставаться постоянной для любой машины - что очень важно для etherbooting.

Эти параметры сообщают ядру, чтобы оно отправило DHCP-запрос при загрузке.

Кроме того, включите SquashFS, потому что большинство современных установочных дисков Gentoo требуют этого. Поддержка SquashFS не включается в основное дерево исходных текстов ядра. Чтобы включить SquashFS, примените необходимые патчи к основному исходному коду ядра или установите gentoo-sources.

Как только процесс компиляции завершен, создайте сжатый архив tar (tarball - tar.gz), который содержит модули ядра. Этот шаг требуется только если версия ядра не соответствует версии образа ядра на установочном CD.

Чтобы создать архив содержащий все модули:

В зависимости от механизма загрузки по сети, необходимо последовать одному из следующих шагов:

Для создания образа etherboot:

Для создания образа OpenBoot/SPARC64 TFTP:

Файл является образом ядра.

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

Настройка NFS
Для настройки общего ресурса NFS, который содержит установочный CD, используйте loop-устройство, чтобы примонтировать образ ISO и затем скопировать содержимое CD в общий ресурс NFS. В качестве приятного дополнения, сценарии initrd утилиты genkernel извлекут все файлы tar.gz, расположенные в каталоге. Все, что требуется здесь сделать, это скопировать архив в каталог.

Следующее предполагает что является экспортируемым общим сетевым ресурсом NFS:

Теперь, скопируйте файл в :

Настройка DHCP
Образы netboot запросят IP у DHCP-сервера в сети, а также опцию. Оба параметра могут быть указаны отдельно для каждого хоста с использованием идентификации машин на основе MAC-адреса:

Инструкции загрузки по сети
Напомним, что загрузка по сети является очень платформо-зависимой. Важной деталью является указать параметры  и   в командной строке ядра, так как это вызовет сетевой интерфейс и сообщит сценариям initrd о том, что необходимо примонтировать установочный CD через NFS. Здесь приведены несколько платформо-зависимых советов:

Для etherboot, вставьте etherboot-диск в привод и перезагрузитесь. Командная строка ядра была указана, когда собирался образ.

На Sparc64, нажмите + в командной строке загрузки и затем введите:

Для PXE, настройте pxelinux (часть пакета syslinux), затем создайте подобно тому как:

Введение
Если initramfs установлен с помощью genkernel, то присмотритесь к следующим параметрам загрузки которые могут (или должны) быть определены в конфигурации загрузчика. Наиболее общие добавлены в это руководство.

Загрузка LVM или программного RAID
Если система использует LVM или программный RAID, initramfs должен быть собран с использованием параметров  и. Не забудьте также включить поддержку во время процесса загрузки. Это можно сделать с помощью параметров dolvm и domdadm.

Загрузка в однопользовательском режиме
Если по какой-то причине загрузка завершается с ошибкой, все еще возможно восстановление системы с помощью загрузки в однопользовательском режиме. Это загрузит только действительно необходимые службы и затем перебросит пользователя в (root) оболочку восстановления.

compile failed: Kernel not found
Эта ошибка может произойти при попытке собрать ядро для одной архитектуры, но используется файл конфигурации ядра в котором определена другая архитектура. Это так же, как на машине с архитектурой пытаться собрать.

Это можно проверить с помощью загрузки с x86_64 LiveCD на железе способном работать в 64-битном режиме, однако установленная система является 32-битной. После того, как начнется процесс компиляции, будет пытаться автоматически определить архитектуру системы на основе текущего ядра. Если в настоящее время работает 64-бит ядро и нет никаких настроек меняющих это, то будет предполагать, что следует искать 64-битное ядро.

Предположим теперь, что файл ядра x64 отключен. Команда будет выполнена и полученный файл ядра будет размещен в соответствующей  директории. Когда переходит к установке (перемещению и переименованию) ядра, оно не может его найти, потому что ожидает 64-битное ядро.

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

Чтобы изменить архитектуру на постоянной основе, измените переменную ARCH_OVERRIDE в файле.

Смотрите также

 * Руководство по конфигурации ядра - Когда компиляция ядра делается вручную.
 * Dracut - Другой сборщик initramfs доступный в Gentoo.