Загрузка по сети. PXE

Забытая, но иногда весьма удобная технология загрузки компьютера по сети, с помощью сетевой карты, без использования локальных носителей информации (жёстких дисков) — Preboot eXecution Environment. Информации по ней в Интернет не много, особенно на русском языке. Но мне удалось, так сказать воскресить и даже применить на практике.

Нам понадобится: собственно ЛВС (локальная вычислительная сеть), относительно любой компьютер с сетевой картой и ЖД, установленной ОС Debian и по желанию, клиентский компьютер, можно без ЖД (для практического применения).

Из программного обеспечения, необходимо установить следующее:

  • isc-dhcp-server (ISC DHCP server for automatic IP address assignment)
  • tftpd-hpa (HPA’s tftp server)
  • nfs-kernel-server (support for NFS kernel server)
  • …а также зависимые пакеты

Кроме этого будут нужны iso и img образы нужных нам утилит и операционных систем:

  • Ubuntu 14.04 LTS
  • Memtest86
  • Victoria HDD
  • Norton Ghost
  • Kolibri OS
  • Hiren’s Boot CD
  • Debian 7 (только файлы: «linux» и «initrd.gz»)
  • …а также файлы «pxelinux.0», «menu.c32», «vesamenu.c32», «memdisk» из архива «syslinux».

Хочу обратить внимание, данный список вовсе не является обязательным. Вы можете сами выбрать, что вам нужно.

Начнём с того, что создадим каталог под наши нужды, например такой: «/srv/PXE/». Зайдём в него и скачаем архив «syslinux»:
wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.05.tar.gz

После чего извлечём файлы: «pxelinux.0», «menu.c32», «vesamenu.c32», «memdisk» (искать в каталогах: core, menu, memdisk). Все эти файлы нужно расположить в созданном нами каталоге «/srv/PXE/».
Для создания загрузочного меню, создадим каталог, а в нём файл: «/srv/PXE/pxelinux.cfg/default». В файл «default» поместим следующее содержимое:

# Меню (vesamenu.c32 — графическое)
default menu.c32
 
# Заголовок и время на выбор пункта меню
menu title PXE Network Boot Menu
#menu background pxelinuf.cfg/logo.png
prompt 0
timeout 300
 
# Первый пункт меню – загрузка с HD
label Boot from first hard disk
localboot 0x80

# Разделительная полоска
menu separator

################
# Меню с подменю
menu begin
menu title Utilites
 
# Переход в родительскую директорию (возврат к предыдущему меню)
label ..
menu exit
 
## Список утилит
# http://www.memtest.org/#downiso
LABEL Memtest86
kernel images/memtest86
text help
Test memory
endtext
 
LABEL Victoria HDD
kernel memdisk
append iso initrd=images/vcr35r.iso
text help
Test HDD
endtext

LABEL Norton Ghost
kernel memdisk
append iso initrd=images/ghost.11.5.iso
text help
Make copy HDD
endtext

# http://kolibrios.org/ru/download
LABEL KolibriOS
kernel memdisk
append initrd=images/kolibri.img
text help
Boot mini OS Kolibri
endtext

# http://www.hirensbootcd.org/download/
LABEL Hiren's Boot CD
kernel memdisk
append iso initrd=images/hirens.iso
text help
Boot rescue Hiren's CD
endtext
 
menu end
########
 
##############################
# Список ОС для живой загрузки
LABEL Ubuntu 14.04 Live CD
kernel ubuntu/casper/vmlinuz
append root=/dev/nfs boot=casper netboot=nfs nfsroot=192.168.3.1:/srv/PXE/ubuntu/ file=preseed/ubuntu.seed initrd=ubuntu/casper/initrd.lz splash=verbose locale=ru_RU --
text help
Boot Ubuntu 14.04 Live CD (32bit)
endtext

# Список операционных систем для установки по сети
LABEL Debian 8 (32bit)
kernel debian8/i386/linux
append vga=normal initrd=debian8/i386/initrd.gz --
text help
Install Debian 8 (32bit) over internet
endtext

LABEL Debian 8 (64bit)
kernel debian8/amd64/linux
append vga=normal initrd=debian8/amd64/initrd.gz --
text help
Install Debian 8 (64bit) over internet
endtext
###

Обратите внимание на файлы и их расположение, теперь нужно что бы всё соответствовало этому меню.
Утилиты можно найти через поиск или по имеющимся в «меню» ссылкам.
ISO образ ОС Ubuntu скачать можно на официальном сайте, после чего его содержимое нужно извлечь в соответствующий каталог.
Загрузить файлы «initrd.gz» и «linux» для 32 битных и 64 битных систем, можно отсюда:

http://mirror.yandex.ru/debian/dists/Debian8.0/main/installer-i386/current/images/netboot/debian-installer/i386/

http://mirror.yandex.ru/debian/dists/Debian8.0/main/installer-amd64/current/images/netboot/debian-installer/amd64/

Далее, отредактируем файл «/etc/default/tftpd-hpa»

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/PXE/"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

И перезапустите службу.

Теперь настроим DHCP «/etc/dhcp/dhcpd.conf», добавив к существующей конфигурации, следующие строки:

…
filename "pxelinux.0";
next-server 192.168.1.1;
…

Где «192.168.1.1» — адрес сервера с установленным TFTP и соответственно файлами загрузки.
Перезапускаем службу.

Осталось настроить NFS. Добавим в файл «/etc/exports» следующую строку:

/srv/PXE/ubuntu/ 192.168.1.1/24(ro,async,no_root_squash,no_subtree_check)

И снова перезапускаем службу.

На этом, всё готово. Можно пробовать загружать клиентский компьютер.

Для чего же, всё таки это нужно? Например, для ремонта ноутбуков.

Так же вы можете почитать про «PXE» здесь: http://xgu.ru/wiki/PXE