iPXE загрузка установщика Debian по HTTP

в 8:55, , рубрики: системное администрирование

В этой статье хочу рассказать быстрый и удобный способ установить debian на виртуальную машину через iPXE.
Такой вариант мне нравится больше всего, т.к. не требует скачивания каких-либо ISO образов или дополнительной настройки DHCP и TFTPсерверов. Вся загрузка пойдет по HTTP через Интернет.

image

Будем считать, что у нас есть виртуальная машина, с ipxe (в случае с qemu, ipxe загружается по умлочанию)
Мы хотим загрузить debian wheezy или squeeze

Приступим

Загрузка виртуальной машины начинается примерно так:


SeaBIOS (version pre-0.6.3-20120507_233324-palmer)



iPXE (http://ipxe.org) 00:03.0 C900 PCI2.10 PnP PMM+3FFC9200+3FF89200 C900
Press Ctrl-B to configure iPXE (PCI 00:03.0)...

Успеваем, жмем Ctrl-B
Получаем консоль iPXE:

iPXE (PCI 00:03.0) starting execution...ok
iPXE initialising devices...ok



iPXE 1.0.0+ -- Open Source Network Boot Firmware -- http://ipxe.org
Features: HTTP iSCSI DNS TFTP AoE bzImage COMBOOT ELF MBOOT PXE PXEXT

iPXE>

Смотрим сетевые интерфейсы.
В моем примере один интерфейс.

iPXE> ifstat
net0: 52:54:00:75:a6:01 using virtio-net on PCI00:03.0 (closed)
[Link:up, TX:0 TXE:0 RX:0 RXE:0]

Настраиваем интерфейс через dhcp
При этом, никаких особых настроек на DHCP сервере.
Получаем только адрес, маску, шлюз и DNS.

iPXE> dhcp net0
DHCP (net0 52:54:00:75:a6:01)...... ok 

Если нет dhcp, не проблема.
Можно настроить руками.

iPXE> config net0

Получаем удобный текстовый интерфейс

iPXE configuration settings - net0

../
dhcp/
busid.......... 01:1a:f4:10:00
mac............ 52:54:00:75:a6:01
gateway........ 192.168.1.1
netmask........ 255.255.255.0
ip............. 192.168.1.6
domain......... <not specified>
dns............ 192.168.1.1
filename....... <not specified>
next-server.... <not specified>
root-path...... <not specified>
initiator-iqn.. <not specified>
skip-san-boot.. <not specified>
keep-san....... <not specified>
...
net0.dhcp/netmask:ipv4 - Subnet mask
http://ipxe.org/cfg/netmask

Ctrl-X - exit configuration utility

Далее нам понадобится указать путь до ядра и до initrd образа для загрузки.
Чтобы не писать полный путь руками (а у Debian он длинный), воспользуемся автоматическим скриптом загрузки и разместим его на HTTP сервере. Поднимать ради этой задачи веб сервер — не нужно. Можно воспользоваться готовыми решениями.
Например pastebin.com

Для загрузки текущей стабильной версии Debian, размещаем текст следующего содержания:

#!ipxe

kernel http://mirror.yandex.ru/debian/dists/stable/main/installer-i386/current/images/netboot/debian-installer/i386/linux
initrd http://mirror.yandex.ru/debian/dists/stable/main/installer-i386/current/images/netboot/debian-installer/i386/initrd.gz
boot

Получаем ссылку для обращения к raw тексту: pastebin.com/raw.php?i=j2rHY5h0
Даем команду загрузчику:

iPXE> chain http://pastebin.com/raw.php?i=j2rHY5h0

Пошла загрузка по HTTP

http://pastebin.com/raw.php?i=j2rHY5h0... ok
http://mirror.yandex.ru/debian/dists/stable/main/installer-i386/current/images/netboot/debian-installer/i386/linux... ok
http://mirror.yandex.ru/debian/dists/stable/main/installer-i386/current/images/netboot/debian-installer/i386/initrd.gz... 57%

Далее идет загрузка установщика debian.
Задача выполнена.

П.С.

1. Есть еще замечательный ресурс www.netboot.me/
Но часть записей на нем уже не работает, а создание кастомных записей требует регистрации.

2. Подобным способом можно загружать и реальное оборудование.
Например загрузив iPXE с USB flash boot.ipxe.org/ipxe.usb (400K)
Либо другого носителя. См.: www.ipxe.org/
Готовые образы: boot.ipxe.org/

Автор: xiff

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js