Как создать live-образ из пользовательски скомпилированного ядра? (Live-build)

Вопрос или проблема

Я хочу создать окончательную инфраструктуру для загрузки 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: Подготовка пользовательского ядра

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

    make bindeb-pkg -j4 LOCALVERSION="-custom-amd64" KDEB_PKGVERSION="1"

    Это создаст пакет .deb с вашим ядром.

  2. Размещение пакета ядра: Поместите скомпилированное ядро в каталог config/packages.chroot вашего проекта live-build. Это обеспечит автоматическую установку вашего ядра во время сборки образа.

Шаг 2: Конфигурация live-build

  1. Файл конфигурации auto/lb: Убедитесь, что файл конфигурации настроен корректно. Ваш файл auto/lb уже имеет большинство необходимых параметров, таких как архитектура и загрузчик, однако учтите, что ключевая часть заключается в правильной директиве установки пакетов настроенной в каталоге config/packages.chroot.

  2. Создание хуков: Для удаления стандартных ядер в процессе сборки и генерации 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

    При необходимости измените названия и версии удаляемых ядер в соответствии с используемым дистрибутивом.

Заключительные задачи

  1. Сборка образа: Запустите процесс сборки вашего live-образа, просто выполните команду:

    lb build

    Это создаст ISO-образ, который можно будет использовать для PXE загрузки, включающий ваше пользовательское ядро.

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

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...