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......... <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/

ссылка на оригинал статьи http://habrahabr.ru/post/188308/


Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *