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