| ipxe.sh | ||
| README.md | ||
iPXE tool
Скрипт выполняет два основных набора задач:
-
Работа с образом Alpine (
disk.img) — командаimageс подкомандами:image build— создание и первичное наполнение образа;image chroot— вход в chroot;image overlay— вход в chroot с наложением OverlayFS (изменения не сохраняются).
-
Сборка iPXE в режиме overlay с временными изменениями и копированием артефактов на хост — команда
build.
Все команды требуют прав
root.
Требования
-
Поддержка loop-устройств и доступ к утилитам:
losetup,parted,mkfs.ext4,mount,umount,curl,tar,chroot. -
Для создания файла: одна из утилит
fallocate/truncate/dd. -
Для OverlayFS: поддержка
overlayв ядре (/proc/filesystems) и доступенmodprobe(если модуль загружается динамически). -
Интернет-доступ для загрузки
alpine-minirootfs. -
Доступные каталоги:
-
Образ по умолчанию:
/var/ipxe/disk.img -
Внутри образа при первой сборке создаётся
/developс файлами:/develop/build.sh— сценарий сборки iPXE;/develop/certtrust.patch— патч к исходникам iPXE (по необходимости).
-
Быстрый старт
1) Создание образа Alpine
sudo ./ipxe.sh image build
По умолчанию:
- URL minirootfs:
https://dl-cdn.alpinelinux.org/.../alpine-minirootfs-3.22.2-x86_64.tar.gz - Путь к образу:
/var/ipxe/disk.img - Размер:
512МБ (диапазон:512..1024МБ)
Полезные флаги:
--url URL— другой источник minirootfs--img PATH— другой путь к образу--size-mb N— размер образа (512..1024)--no-bootstrap— без установки пакетов/репозитория iPXE--force— перезапись существующего файла--debug— подробный вывод
Пример:
sudo ./ipxe.sh image build --img /var/ipxe/disk.img --size-mb 768 --force
2) Вход в chroot (с сохранением изменений)
sudo ./ipxe.sh image chroot --img /var/ipxe/disk.img
Опционально можно выполнить команду сразу:
sudo ./ipxe.sh image chroot --img /var/ipxe/disk.img -- 'apk add htop'
3) Вход в chroot в режиме OverlayFS (изменения не сохраняются)
sudo ./ipxe.sh image overlay --img /var/ipxe/disk.img
Опционально задать размер tmpfs для верхнего слоя:
sudo ./ipxe.sh image overlay --img /var/ipxe/disk.img --overlay-size-mb 512
4) Сборка iPXE в overlay и копирование артефактов на хост
sudo ./ipxe.sh build --img /var/ipxe/disk.img --out-dir /tmp/out -- --efi --legacy --iso --default --patch
-
Все флаги после
--передаются внутреннему/develop/build.sh. -
Артефакты копируются в
--out-dir(по умолчанию текущий каталог) только если были собраны:ipxe.efi→/root/ipxe/src/bin-x86_64-efi/ipxe.efiundionly.kpxe→/root/ipxe/src/bin-i386-pcbios/undionly.kpxeipxe.iso→/root/ipxe/src/bin/ipxe.iso
Поведение и детали
-
Логи скрипта нейтральные: «создание образа», «монтирование», «скачивание», «распаковка» и т. п.
-
При
image buildвыполняется разметкаmsdos, создаётся один разделext4, монтируется и наполняется содержимымminirootfs. -
При первой сборке внутрь образа добавляется
/develop/build.shи/develop/certtrust.patch. -
image chrootиimage overlayавтоматически монтируют необходимые файловые системы (/dev,proc,sys,run,devpts,shm), а при выходе — размонтируют. -
В
overlay-режиме нижний слой (disk.img) монтируется только для чтения, верхний слой — во временныйtmpfs; все изменения теряются при выходе. -
Команда
build:- Разворачивает
overlay, выполняет/develop/build.shс переданными флагами; - По коду возврата определяет, была ли сборка успешной, и при наличии артефактов копирует их на хост в
--out-dir; - После завершения всё размонтирует автоматически.
- Разворачивает
Часто используемые флаги /develop/build.sh
Передаются через -- в команду build, например:
sudo ./ipxe.sh build -- --efi --default
--efi— сборкаbin-x86_64-efi/ipxe.efi--legacy— сборкаbin-i386-pcbios/undionly.kpxe--iso— сборкаbin/ipxe.iso- Без флагов собираются все цели.
--default— включение набора опций вconfig/general.h(PING_CMD, IPSTAT_CMD, CONSOLE_CMD и т. д.)--patch— применение/develop/certtrust.patchи включение HTTPS/CERT_CMD
Примеры
Создание образа и последующая сборка всех артефактов iPXE в overlay с копированием на хост:
sudo ./ipxe.sh image build --img /var/ipxe/disk.img --size-mb 512
sudo ./ipxe.sh build --img /var/ipxe/disk.img --out-dir /srv/ipxe -- --efi --legacy --iso
Минимальная сборка только EFI, с патчем и дефолтными опциями:
sudo ./ipxe.sh build --img /var/ipxe/disk.img --out-dir /srv/ipxe -- --efi --patch --default
Проверка окружения без сохранения изменений:
sudo ./ipxe.sh image overlay --img /var/ipxe/disk.img --overlay-size-mb 256 -- 'apk info -vv'
Диагностика
- «образ не найден» — проверьте путь
--imgи выполнитеimage build. - «минимальный/максимальный размер» — скорректируйте
--size-mb(диапазон 512..1024). - «отсутствие поддержки overlayfs» — убедитесь в наличии модуля
overlayв ядре и/или возможности загрузки черезmodprobe. - При сетевых операциях используйте актуальный URL minirootfs (
--url).
При любой ошибке скрипт выполняет автоматическую очистку: размонтирование файловых систем и отвязку loop-устройств.