Подготовка артефактов

Подготовьте артефакты для универсального загрузочного образа (для загрузки по сети с медианосителя), а также все iPXE-загрузчики (для загрузки по сети). Ниже приведен перечень всех артефактов в структурированном виде:

  • iso-builder — каталог для сборки универсального загрузочного образа:

    • ipxe.bin-x86_64-pcbios —  каталог, содержащий ядро iPXE для BIOS:

      • ipxe.lkrn —  iPXE-загрузчик для BIOS;

    • isohdpxf.bin — файл для создания MBR-раздела на носителе для BIOS;

    • isolinux — каталог с файлами для загрузки с загрузочного образа (ISO) через ISOLINUX:

      • isolinux.bin — файл для поддержки загрузки с носителя в BIOS;

      • ldlinux.c32 — файл для поддержки загрузки с носителя в BIOS;

      • menu.c32 — файл для поддержки загрузки c носителя в BIOS;

    • uefi — каталог для загрузки в UEFI:

      • ipxe-x86_64.efi — iPXE-загрузчик для UEFI;

  • pxe — каталог с файлами для загрузки по сети (PXE):

    • pcbios — каталог с файлами для загрузки в среде BIOS:

      • undionly.kpxe — iPXE-загрузчик для загрузки по сети для BIOS и UEFI LEGACY;

    • uefi — каталог с файлами для загрузки в среде UEFI:

      • ipxe-x86_64.efi — iPXE-загрузчик для загрузки по сети для.

iPXE-загрузчик для UEFI унифицирован — один и тот же файл используется для сборки универсального загрузочного образа, а также для загрузки по сети.

Для получения исполняемых файлов загрузчика ISOLINUX можно установить пакеты syslinux-common, выполнив команду:

apt install isolinux syslinux-common

После установки пакетов необходимые файлы будут доступны по путям:

/usr/lib/ISOLINUX
/usr/lib/syslinux/modules/bios (ldlinux.c32, menu.c32)

Для получения исполняемых файлов загрузчика iPXE ipx.lkrn, ipxe-x86_64.efi и undionly.kpxe используйте инструкции, приведенные ниже. В инструкциях рассмотрены примеры создания файлов, используемых для загрузки ОС по протоколам HTTP и HTTPS.

  • HTTP

  • HTTPS

  1. Установите необходимые пакеты и зависимости, выполнив команду:

    apt install gcc binutils make perl syslinux git
  2. Скопируйте исходный код для сборки iPXE-загрузчика, выполнив команду:

    mkdir ipxe
    git clone https://github.com/ipxe/ipxe.git
  3. Добавьте поддержку params and param, выполнив команду:

    sed -i 's,//#define PARAM_CMD,#define PARAM_CMD,' ipxe/src/config/general.h
    cd ipxe/src
  4. Соберите файл iPXE-загрузчика для UEFI, выполнив команду:

    make bin-x86_64-efi/ipxe.efi
  5. Соберите файл iPXE-загрузчика для BIOS Legacy, выполнив команду:

    make bin/undionly.kpxe
  6. Соберите файл iPXE-загрузчика для BIOS, выполнив команду:

    make bin/ipxe.lkrn
При работе по HTTPS не забудьте также выполнить дополнительные настройки модуля установки ОС (см. раздел «Дополнительные настройки при работе по HTTPS (доверенная установка ОС)»).
  1. Установите необходимые пакеты и зависимости, выполнив команду:

    apt install gcc binutils make perl mtools genisoimage syslinux openssl nginx sbsigntool git uuid-runtime efitools liblzma-dev
  2. Скопируйте исходный код для сборки iPXE-загрузчика, выполнив команду:

    mkdir ipxe
    git clone https://github.com/ipxe/ipxe.git
  3. Добавьте поддержку HTTPS, выполнив команду:

    sed -i 's/#undef\tDOWNLOAD_PROTO_HTTPS/#define\tDOWNLOAD_PROTO_HTTPS/' ipxe/src/config/general.h
  4. Добавьте поддержку params and param, выполнив команду:

    sed -i 's,//#define PARAM_CMD,#define PARAM_CMD,' ipxe/src/config/general.h
    cd ipxe/src
  5. Соберите файл iPXE-загрузчика с корневым сертификатом (открытый ключ) УЦ, выполнив команду:

    make bin-x86_64-efi/ipxe.efi CERT=${path}/rootCA.crt TRUST=${path}/rootCA.crt
  6. Соберите файл iPXE-загрузчика для BIOS Legacy с корневым сертификатом (открытый ключ) УЦ, выполнив команду:

    make bin/undionly.kpxe CERT=${path}/rootCA.crt TRUST=${path}/rootCA.crt
  7. Соберите файл iPXE-загрузчика для BIOS с корневым сертификатом (открытый ключ) УЦ, выполнив команду:

    make bin/ipxe.lkrn CERT=${path}/rootCA.crt TRUST=${path}/rootCA.crt

    Где переменная ${path} — путь к корневому сертификату УЦ; значение переменной определяется администратором при выполнении соответствующей команды.