Забытая, но иногда весьма удобная технология загрузки компьютера по сети, с помощью сетевой карты, без использования локальных носителей информации (жёстких дисков) — 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 битных систем, можно отсюда:
Далее, отредактируем файл «/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
4 ответа к “Загрузка по сети. PXE”
Скажите правильно ли я понимаю, что можно обойтись без NFS, если складывать образы систем непосредственно в корень tftp?
Да, можно. Если не нужна живая загрузка убунты. Но обойтись одним только tftp не всегда получится. Так или иначе, у меня описан реальный способ, который работает. Другие варианты нужно пробовать, тестировать… 🙂
Спасибо за ответ. Хочется еще спросить в чем тонкость с живой загрузкой убунты таким методом?
Как раз пытаюсь это сделать и оказываюсь в busybox.