Вопрос или проблема
Я хочу создать окончательную инфраструктуру для загрузки PXE пользовательского образа ядра, но в процессе я застрял на создании промежуточного “live” CD ISO, используя ранее скомпилированное пользовательское ядро с помощью инструмента live-build
.
Я не знаю, как и где указать инструмент конфигурации/сборки lb
, чтобы использовать мой собственный deb пакет ядра вместо стандартного типа amd64-kernel
.
Я думаю, что мне нужно использовать параметр --linux-packages
, но я не очень понимаю как. Я не могу найти какую-либо информацию или пример.
Я читал все man страницы и так далее, но я застрял.
Моя текущая конфигурация auto/lb
:
*lb config no auto \
--architectures amd64 \
--distribution stretch \
--system live \
--chroot-filesystem squashfs \
--apt-recommends false \
--apt-indices none \
--memtest none \
--debian-installer false \
--interactive shell \
--bootloaders syslinux \
--bootappend-live "boot=live components hostname=test username=test sudo" \
"${@}"*
Как создать live образ с настроенным скомпилированным ядром?
Извините за задержку
Но для тех, кто тоже хочет это сделать…
Вы можете положить deb-пакеты с настроенным ядром в папку config/packages.chroot … И lb build автоматически их установит
Как сказал Sounak Kar, вы должны положить пользовательское ядро в папку config/packages.chroot.
Имя ядра должно заканчиваться на “-arch”, заменяя “arch” на архитектуру, для amd64, оно может быть скомпилировано следующей командой, для процессора на 4 потока:
make bindeb-pkg -j4 LOCALVERSION="-custom-amd64" KDEB_PKGVERSION="1"
Вам, возможно, придется добавить хук для завершения сборки chroot, чтобы удалить встроенное ядро и создать initramfs для пользовательского ядра.
Например, исполняемый файл с именем: config/hooks/normal/0600-kernel.hook.chroot
#!/bin/sh
set +e
# удалить встроенное ядро bookworm:
apt -y remove linux-image-amd64
apt -y remove linux-image-6.0.0-*
apt -y autoremove
apt -y clean
# создать initramfs для всех установленных ядер:
update-initramfs -c -k all
set -e
В этом скрипте, написанном для создания live DVD bookworm, вам нужно заменить имена встроенных ядер, которые следуют за apt -y remove
, в зависимости от тех, которые установлены в дистрибутиве, который вы собираете.
Ответ или решение
Создание "живого" образа на базе пользовательского скомпилированного ядра с использованием инструмента live-build
может показаться сложной задачей, особенно если вы впервые сталкиваетесь с необходимостью интеграции собственного ядра. Однако следуя поэтапному процессу, это можно сделать относительно просто. Давайте рассмотрим подробный алгоритм действий.
Постановка задачи
Для того чтобы создать загружаемый по PXE образ с пользовательским ядром, вы хотите использовать инструмент live-build
для сборки ISO-образа, где вместо стандартного ядра будет устанавливаться ваше скомпилированное ядро. Основная проблема заключается в указании инструмента lb
использовать ваше пользовательское ядро вместо стандартных пакетов, таких как amd64-kernel
.
Решение
Шаг 1: Подготовка пользовательского ядра
-
Компиляция ядра: Первоначально скомпилируйте ваше пользовательское ядро. Для этого используйте следующую команду, адаптированную для четырёхъядерного процессора, при необходимости заменив значения под ваши нужды:
make bindeb-pkg -j4 LOCALVERSION="-custom-amd64" KDEB_PKGVERSION="1"
Это создаст пакет .deb с вашим ядром.
-
Размещение пакета ядра: Поместите скомпилированное ядро в каталог
config/packages.chroot
вашего проектаlive-build
. Это обеспечит автоматическую установку вашего ядра во время сборки образа.
Шаг 2: Конфигурация live-build
-
Файл конфигурации
auto/lb
: Убедитесь, что файл конфигурации настроен корректно. Ваш файлauto/lb
уже имеет большинство необходимых параметров, таких как архитектура и загрузчик, однако учтите, что ключевая часть заключается в правильной директиве установки пакетов настроенной в каталогеconfig/packages.chroot
. -
Создание хуков: Для удаления стандартных ядер в процессе сборки и генерации
initramfs
для вашего ядра добавьте хук:Создайте файл
config/hooks/normal/0600-kernel.hook.chroot
, содержащий следующее:#!/bin/sh set +e # Удаление предустановленного ядра (например, для Bookworm): apt -y remove linux-image-amd64 apt -y remove linux-image-6.0.0-* apt -y autoremove apt -y clean # Создание initramfs для всех установленных ядер: update-initramfs -c -k all set -e
При необходимости измените названия и версии удаляемых ядер в соответствии с используемым дистрибутивом.
Заключительные задачи
-
Сборка образа: Запустите процесс сборки вашего
live
-образа, просто выполните команду:lb build
Это создаст ISO-образ, который можно будет использовать для PXE загрузки, включающий ваше пользовательское ядро.
-
Тестирование: На последнем этапе протестируйте созданный образ на виртуальной машине или подходящем оборудовании, чтобы удостовериться в его работоспособности.
Заключение
Предложенный процесс позволяет создать ISO-образ с вашим произвольным ядром. Следуйте инструкциям внимательно, корректно адаптируя параметры команд и скриптов для вашего окружения. Удачи в реализации проекта и, помните, внимание к деталям часто становится ключевым фактором успеха.