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

В этой статье хочу рассказать быстрый и удобный способ установить 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… dns… 192.168.1.1 filename… next-server… root-path… initiator-iqn. skip-san-boot. keep-san… … 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/

© Habrahabr.ru