Мультизагрузочный PXE-реаниматор. Установка Linux PXE сервера для загрузки Windows PE Подготовка образа диска для загрузки pxe

  • 08.10.2023

У PXE есть одна очень полезная особенность, все что в нем настроено довольно трудно потерять т.к. все это хранится на сервере, а не на съемном носителе, которые имеют обыкновение теряться, вороваться, забываться в приводах DVD/дома, даваться попользоваться и «с концами», так что, вероятность что у вас возьмут попользоваться и «заиграют» стремится к нулю, ну разве что вместе с сервером… Подключив устройство имеющее возможность загрузки PXE, можно делать довольно много полезных вещей, а именно: производить диагностику оборудования, развертывать операционные системы, загрузить Live систему и т.п. на что хватит знаний и фантазии.
Для этого нам понадобится настроить DHCP сервер и TFTP сервер.
Ранее я уже писал о том как настроить сервер для , крайне рекомендую для ознакомления, основные моменты перекочевали из нее.
Что мы получим на выходе?!
А получим меню загрузки с возможностью выбора приложения которое мы будем загружать на клиентскую машину, а также действия, по умолчанию, которые будут произведены системой-если не поступит команд от пользователей.

Для работы нам понадобится:
1) Установленный Ubuntu server
2) Настроенный DHCP сервер, пример настройки можно взять в статье:
3) Диск или ISO-образ, установочного дистрибутива Ubuntu - разрядность значения не имеет, а вот версию лучше брать посвежее.

Все остальное мы установим по ходу дела… Я не буду останавливаться на настройках DHCP, предполагая что он у вас настроен, согласно статье, ссылка на которую представлена в требованиях к системе.

Установка tftp сервера
Установим необходимый пакет:
Поднимаем права до root:
sudo su

Установим необходимый пакет
aptitude install tftpd-hpa

Теперь все файлы которые относятся к нашему tfpt серверу, должны находиться в директории /var/lib/tftpboot/ , все пути указываются относительно нее.

Переходим к созданию меню загрузки
Первым делом, нам нужно добыть зам загрузчик, как это сделать?! Его можно найти на любом диске с ubuntu, в остальных дистрибутивах Linux, расположение почти всегда такое же. Нам потребуется установочный ISO образ или диск вставленный в привод DVD, в котором мы идем в следующею директорию:
Если установочный диск х86 архитектуры:
/install/netboot/ubuntu-installer/i386
Нас интересует файл pxelinux.0 это и есть загрузчик, забираем его и копируем в директорию:
/var/lib/tftpboot/
Тогда путь к нему выглядит:
/var/lib/tftpboot/pxelinux.0
Также, нам понадобится, само boot-меню, которое можно взять на том же диске, в директории boot-sccreens нас интересует файл с именем vesamenu.c32

Копируем его в туже директорию что и загрузчик чтобы путь выглядел:
/var/lib/tftpboot/vesamenu.c32

Настраиваем содержимое PXE меню

В качестве примера, мы сделаем меню загрузки, состоящее из 2х пунктов.
Пункт первый: Загрузка с локального жесткого диска. Этот пункт будет пунктом по умолчанию, если пользователь загрузил ПК по PXE и в течении 15 сек. не выполнил никаких действий, то система автоматически загрузится с локального диска.
Пункт второй: назовем его Testing Внутри данного меню будет находиться, пункт с возможностью загрузки Memtest x86+. Данная программа всегда будет полезна в диагностике проблем рабочих станций и серверов, в общем, вещь нужная, в хозяйстве пригодится всем…

Для начала, нам нужно создать директорию для конфигурационных файлов с именем pxelinux.cfg - имя критично для работы!
mkdir /var/lib/tftpboot/pxelinux.cfg

Теперь создадим конфигурационный файл с параметрами пунктов меню, с именем default
nano /var/lib/tftpboot/pxelinux.cfg/default

Со следующим содержимым:
default vesamenu.c32 prompt 0 menu title PXE Boot Menu MENU AUTOBOOT Starting Local System in # seconds label Boot from local drive menu label ^Boot from local drive menu default localboot 0 timeout 150 TOTALTIMEOUT 9000 LABEL Testing MENU LABEL ^Testing KERNEL vesamenu.c32 APPEND pxelinux.cfg/testing.menu

Наиболее наблюдательные, заметили что в предыдущем файле у нас появилась запись которая касается другого файла testing.menu , в нем у нас будут находиться параметры настройки пункта Testing
Создадим данный файл:

Со следующим содержимым:
MENU TITLE Testing LABEL Test software MENU LABEL ^Return to Main Menu KERNEL vesamenu.c32 APPEND pxelinux.cfg/default label Memory Test menu label ^Memory Test: Memtest86+ v4.20 kernel memtest/mt86plus

Первый пункт меню, будет отвечать за возврат в предыдущее меню, а второй за загрузку Memtest86+ v4.20

Все ничего, но мы не создали директорию где хранится файл Memtest, это мы сейчас исправим, давайте создадим соответствующую директорию.
Сделаем это:
mkdir /var/lib/tftpboot/memtest
Нам осталось добавить исполняемый файл самого Memtest86+, его можно найти на установочном диске, в директории /install/ нас интересует файл mt86plus нам него необходимо скопировать в директорию memtest, чтобы путь к нему выглядел:
/var/lib/tftpboot/memtest/mt86plus

На этом мы закончили с tftp сервером, нам осталось немного допилить DHCP сервер.

Настриваем DHCP сервер

Этот пункт, настройкой можно назвать только с натяжкой, если вы настроили DHCP сервер по статье, то вам необходимо добавить только одну запись в:
nano /etc/dhcp/dhcpd.conf

Находим пункт с настройками пула IP адресов, который имеет вид:
subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.10 192.168.10.254; option domain-name-servers 192.168.10.1; option domain-name "example.org"; option routers 192.168.10.1; option broadcast-address 192.168.10.255; default-lease-time 604800; max-lease-time 604800; }

И в него добавляем запись указывающую на наш PXE загрузчик:
ping-check = 1; filename = "pxelinux.0";
Путь к файлу указан относительно директории /var/lib/tftpboot/ т.е. она считается корневой директорией, о чем я писал ранее…

Вся запись имеет вид:
ping-check = 1; filename = "pxelinux.0"; subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.10 192.168.10.254; option domain-name-servers 192.168.10.1; option domain-name "example.org"; option routers 192.168.10.1; option broadcast-address 192.168.10.255; default-lease-time 604800; max-lease-time 604800; }

Сохраняем изменения и перезагружаем DHCP сервер:
/etc/init.d/isc-dhcp-server restart

Теперь мы можем подключить к нашей локальной сети устройство которое поддерживает загрузку PXE и в котором эта функция включена(смотрите документацию к своему оборудованию) или подключить виртуальную машину, а адаптометром подключенным в режиме моста и без загрузочного носителя.

Если вы все сделали правильно, то меню будет иметь следующий вид:

А если зайти в меню Testing :


Если выбрать пункт с Memtest то запустится тест памяти.
Другие пункты меню добавляются соответствующим образом.

Представим ситуацию, что вам требуется предоставить доступ к одному из меню, ограниченному кругу лиц, например там у вас лежит дистрибутив, который стоит кучу денег. С этой целью на пункт меню можно установить пароль, как это сделать?!
Представим ситуацию, вам нужно установить пароль (например: password ) на Memory Test, делается это просто

Nano /var/lib/tftpboot/pxelinux.cfg/testing.menu

Нам необходимо добавить запись:
MENU PASSWD password

Тогда файл принимает вид:
MENU TITLE Testing LABEL Test software MENU LABEL ^Return to Main Menu KERNEL vesamenu.c32 APPEND pxelinux.cfg/default label memtest MENU PASSWD password menu label ^Memory Test: Memtest86+ v4.20 kernel memtest/mt86plus

Защита конечно, так себе, но от обычных пользователей может помочь.

Тогда при попытке запуска выйдет окно:


если ввести правильный пароль, то запустится Memtest.
Таким способом можно скрывать целые меню или блокировать доступ к отдельным его пунктам.
В случае внесения изменения в эти конфигурационные файлы, DHCP сервер перезапускать нет необходимости, достаточно перезагрузить клиентский ПК если он загрузился по PXE.
По поводу скорости работы tftp, скорость работы не высока, и если вы решите перекачивать большие объемы информации, сторайтесь использовать для этого WEB или FTP сервер, готовьтесь затратить на это некоторое количество времени. Если есть необходимость загрузить какой-то дистрибутив, то лучше загрузить ОС небольшого размера, примером может служить Windows PE , ну или миниатюрный дистрибутив Linux.
На этом я пожалуй и закончу…

Загрузочная флешка с набором нужного софта - замечательный инструмент системного администратора. Казалось бы, что может быть лучше? А лучше может быть загрузочный сервер!

Представьте, вы выбрали в BIOS загрузку по сети и можете установить ОС/вылечить компьютер от вирусов/реанимировать диски/протестировать ОЗУ/etc с PXE Boot сервера, ведь это куда удобнее, нежели бегать с флешкой от машины к машине.
А в случае большого компьютерного парка, такой инструмент и вовсе незаменим.

О том как подготовить Windows к установке с PXE мы писали ранее.
Различие с данной инсталляцией составляет лишь то, что здесь мы можем установить и Windows 2008R2 и Windows 2012R2(впрочем и Windows 7/8 тоже, нужно только подготовить файлы дистрибутива и winpe соответствующим образом). После загрузки winpe мы монтируем папку /srv/tftp/images/ , где содержаться файлы для установки ОС от Microsoft:
ls -l /srv/tftp/images/ total 8 drwxr-xr-x 6 root root 4096 Фев 17 22:19 w2k12r2 drwxr-xr-x 7 tftp tftp 4096 Фев 17 19:05 w2k8r2
и запускаем нужный инсталятор.
Для автоматизации, через startnet.cmd, я набросал вот такое меню:

Теперь осталось разобраться с VMware.
Как вы заметили, конфиг для установки гипервизоров несколько отличается от остальных - именно тут нам и понадобится HTTP сервер.
В /var/www создадим папки vmw5.5, vmw5.0, а в папках сделаем симлинки на конфиг
# cd /var/www # mkdir vmw5.5 # cd vmw5.5/ # ln -s /srv/tftp/vmw/5.5/ks.cfg # mkdir ../vmw5.0 # cd ../vmw5.0/ # ln -s /srv/tftp/vmw/5.0/ks.cfg
О том как подготовить, например, Debian к установке с PXE написано , но я на этом останавливаться не стану.

Добавим способность загружать различные дисковые утилиты и тест памяти

Данный раздел будет содержать:
  1. Memtest86+
  2. Clonezilla-live
  3. SystemRescueCD

Конфиги разместились здесь

default
ui vesamenu.c32 PROMPT 0 menu background background.jpg menu title ServerClub PXE boot menu LABEL bootlocal menu label Boot from first HDD kernel chain.c32 append hd0 0 timeout 120000 TEXT HELP The system will boot after time is up. ENDTEXT LABEL Windows -> KERNEL vesamenu.c32 APPEND pxelinux.cfg/windows LABEL Linux -> KERNEL vesamenu.c32 APPEND pxelinux.cfg/linux LABEL FreeBSD -> KERNEL vesamenu.c32 APPEND pxelinux.cfg/bsd LABEL VMvare -> KERNEL vesamenu.c32 APPEND pxelinux.cfg/vmware LABEL HDD and RAM utils -> KERNEL vesamenu.c32 APPEND pxelinux.cfg/du
du
PROMPT 0 UI vesamenu.c32 MENU BACKGROUND background.jpg MENU TITLE HDD and RAM utils LABEL <- Main Menu KERNEL vesamenu.c32 APPEND pxelinux.cfg/default LABEL Memtest86+ kernel memtest/memtest label Clonezilla-live MENU LABEL Clonezilla Live KERNEL clonezilla/vmlinuz APPEND initrd=clonezilla/initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_live_run="ocs-live-general" ocs_live_extra_param="" keyboard-layouts="" ocs_live_batch="no" locales="" vga=788 nosplash noprompt fetch=tftp://10.0.10.1/clonezilla/filesystem.squashfs label SystemRescueCD kernel SystemRescueCD/isolinux/rescue64 append initrd=SystemRescueCD/isolinux/initram.igz dodhcp nfsboot=10.0.10.1:/srv/tftp/SystemRescueCD LABEL MHDD kernel memdisk initrd mhdd/mhdd32ver4.6.iso append iso raw LABEL <- Main Menu KERNEL vesamenu.c32 APPEND pxelinux.cfg/default


А я расскажу зачем мы ставили еще и NFS сервер.
Как видно из конфига загрузки SystemRescueCD, необходимые этому LiveCD файлы он подтягивает монтируя каталог по протоколу NFS. Сервер уже установлен, остается только отредактировать /etc/exports и перезапустить серверный демон.
# cat >> /etc/exports /srv/tftp/SystemRescueCD/ 10.0.10.1/255.255.255.0(ro,no_subtree_check,all_squash,insecure,anonuid=1000,anongid=1000) # service nfs-kernel-server restart
Предполагаю у вас возник резонный вопрос - «Что тут делает LiveCD, если для них есть отдельный пункт?»
SystemRescueCD содержит массу полезных программ для работы с диском(например таких как GParted и testdisk) и поэтому он доступен и здесь и в LiveCD.

LiveCD

В набор наших LiveCD войдут:
  1. Debian 7 LiveCD
  2. HirensBootCD
  3. Trinity Rescue Kit CD
  4. SystemRescueCD
  5. Plop Live

Конфиги

в конец default добавилось
LABEL LiveCDs -> KERNEL vesamenu.c32 APPEND pxelinux.cfg/livecds
livecds
PROMPT 0 UI vesamenu.c32 MENU BACKGROUND background.jpg MENU TITLE LiveCDs LABEL <- Main Menu KERNEL vesamenu.c32 APPEND pxelinux.cfg/default LABEL Debian LiveCD KERNEL Debian7live/vmlinuz APPEND initrd=Debian7live/initrd boot=live fetch=tftp://10.0.10.1/Debian7live/filesystem.squashfs root=/dev/ram0 rw LABEL HirensBootCD MENU LABEL Hiren"s Boot CD KERNEL memdisk APPEND iso initrd=hirens/hirens.iso LABEL Trinity Rescue Kit CD kernel trk/kernel.trk append initrd=trk/initrd.trk ramdisk_size=65536 root=/dev/ram0 vga=788 splash=verbose pci=conf1 trkmenu timeout 100 trknfs=10.0.10.1:/srv/tftp/trk ip=dhcp LABEL SystemRescueCD kernel SystemRescueCD/isolinux/rescue64 append initrd=SystemRescueCD/isolinux/initram.igz dodhcp nfsboot=10.0.10.1:/srv/tftp/SystemRescueCD LABEL Plop Live KERNEL plop/bzImage APPEND initrd=plop/initramfs.gz vga=normal nfsmount=10.0.10.1:/srv/tftp/plop LABEL <- Main Menu KERNEL vesamenu.c32 APPEND pxelinux.cfg/default

Для загрузки Trinity Rescue Kit CD и Plop Live в /etc/exports нужно добавить строки:
/srv/tftp/trk/ 10.0.10.1/255.255.255.0(ro,no_subtree_check,all_squash,insecure,anonuid=1000,anongid=1000) /srv/tftp/plop/ 10.0.10.1/255.255.255.0(ro,no_subtree_check,all_squash,insecure,anonuid=1000,anongid=1000)
и отправить команду рестарта NFS демону.


Несколько слов о выбраных LiveCD.
Debian 7 LiveCD
Этот CD - сборка одного из наших инженеров, включающая в себя следующее:

Логин / пароль: root / ServerClub

HirensBootCD
Едва ли нуждается в представлении, содержит множество полезных утилит.
Подробнее можно ознакомиться .
Грузится достаточно долго, не работает MiniXP и Linux. Остальные утилиты доступны для использования.

Trinity Rescue Kit CD
Со слов разработчиков, создан для восстановления ОС Windows.
Содержит утилиты для сброса паролей, антивирусы, программу для клонирования «компьютера» по сети(при чем на несколько компьютеров одновременно), а так же многое другое.
Подробнее .

SystemRescueCD
Основан на Gentoo, предназначен для восстановления Linux систем.
Включает в себя большое количество всевозможных программ для администрирования, со списком можно ознакомится по ссылке .

Plop Live
LiveCD с тремя полноценными DE на выбор, а так же необходимым админским софтом .

Итоговый конфигурационный файл основного меню, а так же файл меню антивирусов

default
ui vesamenu.c32 PROMPT 0 menu background background.jpg menu title ServerClub PXE boot menu LABEL bootlocal menu label Boot from first HDD kernel chain.c32 append hd0 0 timeout 120000 TEXT HELP The system will boot after time is up. ENDTEXT LABEL Windows -> KERNEL vesamenu.c32 APPEND pxelinux.cfg/windows LABEL Linux -> KERNEL vesamenu.c32 APPEND pxelinux.cfg/linux LABEL FreeBSD -> KERNEL vesamenu.c32 APPEND pxelinux.cfg/bsd LABEL VMvare -> KERNEL vesamenu.c32 APPEND pxelinux.cfg/vmware LABEL HDD and RAM utils -> KERNEL vesamenu.c32 APPEND pxelinux.cfg/du LABEL LiveCDs -> KERNEL vesamenu.c32 APPEND pxelinux.cfg/livecds LABEL Antiviruses -> KERNEL vesamenu.c32 APPEND pxelinux.cfg/av
av
PROMPT 0 UI vesamenu.c32 MENU BACKGROUND background.jpg MENU TITLE Antivirues LABEL <- Main Menu KERNEL vesamenu.c32 APPEND pxelinux.cfg/default LABEL Kaspersky Antivirus KERNEL kav/rescue APPEND initrd=kav/rescue.igz root=live rootfstype=auto vga=791 init=/init kav_lang=ru udev liveimg doscsi nomodeset LABEL Kaspersky Antivirus (text mode) KERNEL kav/rescue APPEND initrd=kav/rescue.igz root=live rootfstype=auto vga=791 init=/init kav_lang=ru udev liveimg nox kavshell noresume doscsi nomodeset label AVG menu label AVG Rescue CD kernel avg/vmlinuz append max_loop=255 vga=791 initrd=avg/initrd.lzm init=linuxrc reboot=bios label AVG nofb menu label AVG Rescue CD with Disabled Framebuffer kernel avg/vmlinuz append max_loop=255 video=vesafb:off initrd=avg/initrd.lzm init=linuxrc reboot=bios label AVG vgask menu label AVG Rescue CD with Resolution Selection kernel avg/vmlinuz append max_loop=255 initrd=avg/initrd.lzm init=linuxrc vga=ask reboot=bios LABEL <- Main Menu KERNEL vesamenu.c32 APPEND pxelinux.cfg/default

Заключение, оно же и сюрприз

На протяжении статьи я сознательно не давал объяснений где взять и как подготовить контент, потому как действия эти весьма тривиальны и только перегрузили бы текст.

В качестве сюрприза предлагаю вам два варианта нашей сборки, доступные по ссылкам ниже:

  1. Архив со всем контентом /srv/tftp (ссылка на торрент файл , прямая ссылка)
  2. Архив всей ОС (ссылка на торрент файл , прямая ссылка)
В первом случае необходимо самостоятельно подготовить сервер(в этом поможет глава «Начало» данного эпоса), разархивировать содержимое архива и внести корректировки сообразно реалиям вашей среды.

Второй случай подразумевает установку на голое железо или виртуальную машину.
Вкратце шаги по развертыванию сборки из полного архива ОС будут такими:
1. Загрузиться с Linux LiveCD.
2. Разметить диск и отформатировать разделы.
3. Примонтировать "/" раздел.
4. Распаковать архив.
5. Установить загрузчик.
6. Перезагрузиться.
7. Настроить ОС в соответствии вашей сети и начать пользоваться.
Логин / пароль: root / ServerClub.
ВАЖНО: Если в вашей сети есть работающий dhcp сервер, то перед запуском нашей сборки отключите в ней автостарт dhcp.

За сим заканчиваю, благодарю за внимание!

Для тех, у кого нет аккаунта на Хабре.
Если у вас возникнут вопросы/замечания, то пишите мне на почту - erserverclub.com.

PXE

 Исполнительное окружение предварительной загрузки (Preboot Execution Environment , PXE , произносится “пикси”) представляет собой процесс загрузки операционной системы по сети. Его можно сравнить с загрузкой LiveCD с удаленного CD-привода.

Данный метод загрузки требует:

    сервер для хранения файлов, работающий по протоколам DHCP и TFTP (можно запустить каждый протокол на отдельном сервере);

    клиент с загрузчиком PXE в BIOS. Может не иметь жесткого диска.

Шаг 1. Настраиваем сервер PXE

PXE-сервер включает:

    DHCP-сервер для соединения с клиентами;

    файл загрузки DHCP для настройки клиентов;

    TFTP-сервер для загрузки операционной системы.

SliTaz LiveCD можно использовать в качестве PXE-сервера. Для этого запустите приложение Netbox (из меню Система).

    На вкладке Statip IP нажмите Start .

    • Появится окно DHCP-сервера, который не может использовать DHCP для получения информации об IP.

    На вкладке Server выберите вкладку INETD и удостоверьтесь, что строка tftpd в файле /etc/initd.conf не закомментирована . Это настройки по умолчанию. Нажмите Start .

    • Запустится сервер TFTP, который будет загружать SliTaz LiveCD по сети.

    На той же вкладке Server выберите вкладку PXE .

    Отредактируйте настройки согласно вашим опциям загрузки.

    • Этим вы автоматически обновите конфигурацию DHCP-сервера.

    На вкладке Server выберите вкладку DHCP . Приведите настройки в соответствие с конфигурацией вашей сети. Перед этим мы добавили строки boot_file и siaddr . Нажмите Start .

    • Запустится DHCP-сервер. Если клиенты не могут получить IP-адрес, проверьте настройки этого сервера.

    Убедитесь, что файлы bzImage и rootfs.gz находятся в директории /boot на LiveCD.

Шаг 2. Настраиваем клиент PXE

Компьютеры последних поколений со встроенной поддержкой Ethernet имеют BIOS, поддерживающий PXE. Проверьте эту опцию в меню BIOS и убедитесь, что она активирована. Для перехода в настройки BIOS понадобится нажать соответствующую клавишу после включения компьютера (например, F12).

Если ваш компьютер не поддерживает загрузку через PXE, вы можете использовать на нем SliTaz в качестве клиента. Создайте загрузочный CD-ROM или дискету утилитой Boot Floppy/CDROM в меню Система .

На вкладке PXE Network выберите Write floppy. Тем самым вы сможете загружать систему на компьютере клиента.

SliTaz LiveCD содержит настройки для загрузки операционной системы через Интернет. Это может быть полезно при использовании более новой версии SliTaz со старого носителя.

Чтобы начать сетевую загрузку, в момент вывода начального приглашения SliTaz введите команду

Только и всего!

Дальнейшую информацию об использовании Интернет-соединения при загрузке SliTaz см. на домашней странице сетевой загрузки SliTaz .

Вам также понадобится DHCP-сервер для получения IP-адреса, маски подсети и адреса шлюза, как и при настройке обычного соединения - для этого подойдет обычный домашний роутер.

Если у вас нет устройства, которое можно приспособить под DHCP-сервер, вам все равно понадобятся IP-адрес, маска подсети, адрес шлюза и, возможно, адрес DNS .

Title Slitaz Web kernel /boot/gpxe ip=192.168.0.12/24 gw=192.168.0.1 dns=192.168.0.1 url=http://mirror.slitaz.org/pxe/pxelinux.0

Title Slitaz Web kernel /boot/gpxe ip=192.168.0.12/24 gw=192.168.0.1 dns=192.168.0.1 url=ip=192.168.0.12/24 gw=192.168.0.1 dns=192.168.0.1 url=http://mirror.slitaz.org/pxe/pxelinux.0

При таком способе загрузки доступны исключительно следующие опции:

    nodhcp (поможет избежать ошибку таймаута по DHCP)

Дополнительная настройка процесса загрузки

Процесс загрузки по сети можно настраивать и распределять по роутерам и другим устройствам.

Распределенная загрузка через PXE и PROM (предшествует PXE)

    установите gpxe.exe в /jffs/boot

# echo "dhcp-boot=gpxe.pxe" >> /tmp/dnsmasq.conf

Запустите сервер tftp для вашей локальной сети (например, 192.168.0.1/24):

# /jffs/usr/sbin/tftpd 192.168.0.1 /jffs/boot

Изменяем домашнюю страницу GPXE-загрузки

$ dd bs=1 skip=519 count=255 if=gpxe 2> /dev/null | strings $ echo -n "http://myurl.org/myboot" | cat - /dev/zero | dd conv=notrunc bs=1 seek=519 count=255 of=gpxe $ echo -n "ip=192.168.0.10/24 gw=192.168.0.1 dns=192.168.0.1 url=http://myurl.org/myboot" | cat - /dev/zero | dd conv=notrunc bs=1 seek=519 count=255 of=gpxe $ dd if=/dev/zero conv=notrunc bs=1 seek=519 count=255 of=gpxe

Меняем домашнюю страницу для gpxe.exe

$ dd bs=1 skip=5 count=255 if=gpxe.pxe 2> /dev/null | strings

$ echo -n "http://myurl.org/myboot" | cat - /dev/zero | dd conv=notrunc bs=1 seek=5 count=255 of=gpxe.pxe

$ dd if=/dev/zero conv=notrunc bs=1 seek=5 count=255 of=gpxe.pxe

Использование нескольких ссылок при работе с загрузочными серверами

Вот пример для текущих загрузочных серверов SliTaz:

$ echo -n "http://mirror.slitaz.org/pxe/pxelinux.0,http://mirror.switch.ch/ftp/mirror/pxe/pxelinux.0,http: download.tuxfamily.org/slitaz/pxe/pxelinux.0" | cat - /dev/zero | dd conv=notrunc bs=1 seek=519 count=255 of=gpxe

Обзор технологии PXE

Технология PXE (Pre Execution Environment — Среда предварительного исполнения), которая произносится как «Пикси» (Pixie - волшебная пыль), является подходом, который позволяет компьютеру (клиентскому компьютеру) загружаться, используя только свою сетевую карту. Этот метод загрузки был создан еще в 1999 году и если компьютер подключен к сети (и поддерживает этот стандарт), то можно обойти обычную процедуру загрузки (т. е. включение питания -> BIOS -> HD / CD) и сделать некоторые изящные вещи, начиная с поиска и устранения неисправностей, для чего обычно используется живая ОС liveOS, и даже снять образ машины …, но мы забегаем вперед - давайте вернемся к началу.

Когда используется подход PXE, процесс загрузки изменяется с обычного на следующий:

Включение питания -> BIOS -> стек PXE сетевой карты -> программа сетевой загрузки Network Boot Program (NBP), загружаемая с помощью TFTP с сервера в память клиентской машины -> ответственность за выполнение следующего шага возлагается на программу NBP (2-й этап загрузки).

Если использовать программу «PXElinux » NBP, то можно настроить сервер больше, чем просто для загрузки одной программы PXE для наших клиентов. В некотором смысле, это секретный ингредиент, который позволит нам выполнить все вышеперечисленное и даже больше. Для более подробного объяснения всего процесса, его истории и некоторые из имеющихся параметров настройки этой программы и программы gPXE (которая является более развитым клоном первой программы) смотрите эту лекцию на YouTube , предложенную разработчиками этих программ. Кроме того, ниже представлено видео, датированное 2008 годом, рассказывающее о настройке, что позволит быстро перейти к некоторым возможностям загрузки.

Примечание: В этом видео в качестве основы для сервера используется устаревший проект UDA, и аннотации были предназначены для того, чтобы объяснить, что в него были внесены самые новые (на тот момент) дополнения.

Цель

Это руководство будет первым из серии руководств, посвященных PXE. В настоящем руководстве мы заложим основы, на которые мы будет опираться в последующих статьях.

  • Клиентская машина, на которой вы тестируете, поддерживает загрузку PXE и вы знаете, как ее включить.
  • Это руководство было написано и протестировано с использованием Debian Squeeze, Ubuntu Server 9.10 и Linux Mint10. Поэтому предполагается, что у вас также есть система на основе Debian.
  • У вас есть возможность посмотреть статью «Как настроит программный RAID» для «Простого файл-сервера» и «Как настроить всю сеть (802.3ad)» , поскольку скорость работы диска и пропускная способность для этого варианта сервера должны быть очень высокими. Настоятельно рекомендуется собирать такую сеть с использованием сервера с высокоотказоустойчивыми сетевыми и дисковыми подсистемами.
  • Вы увидите, что в качестве редактора мы используем VIM, это только потому, что я привык к нему... Вы можете пользоваться любым другим редактором, который вам нравится.

Установка — трудное начало с использованием системы FOG

Использование FOG в качестве основы для вашего сервера PXE является хорошим способом иметь в наличии все необходимые составляющие, например, TFTP и, если требуется, DHCP без необходимости устанавливать и настраивать их вручную, при одновременном предоставлении вам в качестве бонуса всех функций пакета FOG.

Поскольку наша цель состоит в том, чтобы добавить новые функции к этой уже большой системе, мы не будем вдаваться в детали того, как пользоваться самим пакетом FOG и не будем рассматривать процедуру его установки. Вики пакета FOG , причем как текст, так и видео how-tos , является достаточным для получения подробной информации в том случае, если вы хотите разобраться детально. В общем, шаги следующие:

Это все, что нужно сделать во время установки пакета FOG. Опять же, поскольку FOG представляет собой большую систему, ее использование не входит в круг рассмотрения данного руководства, и для того, чтобы вы могли лучше разобраться с возможностями системы FOG и с тем, как она может помочь вам управлять жизненным циклом ваших компьютеров-клиентов, мы призываем вас обратиться к вики-страницам с описанием этой системы.

Если все пройдет так, как надо, у вас должна быть возможность выполнить загрузку вашей клиентской машине в режиме PXE (обычно с помощью F12) и получить меню-приглашение, используемое в системе FOG по умолчанию.


Изображение получено с помощью Hotfortech.

Чтобы сразу почувствовать вкус возможностей, вы можете выбрать вариант «Run Memtest86+» (выполнить тест Memtest86 +) и получить приглашение программы Memtest, которую мы рассматриваем в нашей статье «Диагностика аппаратных проблем ПК с помощью Ubuntu Live CD» .

Файлы и каталоги

Как отмечалось ранее, наша цель заключается в расширении возможности системы FOG и с этой целью мы должны добавить некоторые файлы и каталоги.

Создайте следующие подкаталоги:

Sudo mkdir -p /tftpboot/howtogeek/menus sudo mkdir -p /tftpboot/howtogeek/linux sudo mkdir -p /tftpboot/howtogeek/pics sudo mkdir -p /tftpboot/howtogeek/utils

Эти подкаталоги будут служить в качестве шаблонов для всех изображений, программ и конфигураций, которыми мы будем пользоваться для того, чтобы расширить систему FOG.

Настройте конфигурационный файл default, используемый по умолчанию

Мы создадим новое главное меню и поместим в свое собственное подменю все функции системы FOG.

Скопируйте конфигурационный файл /tftpboot/pxelinux.cfg/default в howtogeek/menus/fog.cfg.

Sudo cp /tftpboot/pxelinux.cfg/default /tftpboot/howtogeek/menus/fog.cfg

Теперь отредактируйте содержимое исходного файла default, используемого по умолчанию:

Sudo vim /tftpboot/pxelinux.cfg/default

Сделайте так, чтобы его содержимое выглядело следующим образом:

DEFAULT vesamenu.c32 MENU TITLE FOG 0.32 + HowToGeek"s enhancements MENU INCLUDE /pxelinux.cfg/master.cfg menu color title 1;36;44 #ff8c00 #00000000 std LABEL FOG MENU LABEL Manual FOG MENU DEFAULT KERNEL vesamenu.c32 APPEND howtogeek/menus/fog.cfg LABEL Utils MENULABEL Utilities KERNEL vesamenu.c32 APPEND howtogeek/menus/utils.cfg LABEL Linux MENU LABEL Linux stuff KERNEL vesamenu.c32 APPEND howtogeek/menus/linux.cfg LABEL fog.local localboot 0 MENU LABEL Boot from hard disk TEXT HELP Boot from the local hard drive. If you are unsure, select this option. ENDTEXT PROMPT 0 TIMEOUT 300 ONTIMEOUT fog.local

Когда мы закончим, эта конфигурация позволит вам получить следующие 3 подменю: Utilities (Утилиты), Manual FOGing (Ручное управление системой FOG), Linux stuff (Linux).

Создайте мастер-файл

Мастер-файл позволит делать глобальные изменения во внешнем виде меню без повторного ввода их в отдельном порядке снова и снова. Такие особенности, как фоновый рисунок, используемый по умолчанию, стили границ, позиции и т.д., все это будет объединено в этом файле master.cfg.

Создайте файл:

Sudo vim /tftpboot/pxelinux.cfg/master.cfg

Сделайте так, чтобы его содержание было следующим:

MENU BACKGROUND fog/genie.png menu color screen 37;40 #80ffffff #00000000 std menu color border 30;44 #9370db #00000000 std menu color title 1;36;44 #ff8c00 #00000000 std menu color unsel 37;44 #ffffffff #00000000 std menu color hotkey 1;37;44 #ffffffff #00000000 std menu color sel 7;37;40 #4eee94 #9370db all menu color hotsel 1;7;37;40 #e0400000 #20ff8000 all menu color disabled 1;30;44 #60cccccc #00000000 std menu color scrollbar 30;44 #40000000 #00000000 std menu color tabmsg 31;40 #90ffff00 #00000000 std menu color cmdmark 1;36;40 #c000ffff #00000000 std menu color cmdline 37;40 #c0ffffff #00000000 std menu color pwdborder 30;47 #80ffffff #20ffffff std menu color pwdheader 31;47 #80ff8080 #20ffffff std menu color pwdentry 30;47 #80ffffff #20ffffff std menu color timeout_msg 37;40 #80ffffff #00000000 std menu color timeout 1;37;40 #c0ffffff #00000000 std menu color help 37;40 #c0ffffff #00000000 std menu color msg07 37;40 #90ffffff #00000000 std MENU MARGIN 0 MENU PASSWORDMARGIN 3 MENU ROWS 15 MENU TABMSGROW 21 MENU CMDLINEROW 20 MENU PASSWORDROW 11 MENU TIMEOUTROW 20 MENU HSHIFT 0 MENU VSHIFT 0

В конфигурации, приведенной выше, будут созданы фиолетовые границы и выделение текста;, если вы хотите, чтобы внешний вид был другой, просто измените значения.

Чтобы задать фоновый рисунок, поместите картину в каталог /tftproot и укажите для MENU BACKGROUND относительный путь к рисунку (мы рекомендуем использовать изображения с разрешением 640*480). Например полный путь к рисунку, сконфигурированному выше, будет /tftproot/fog/bg.png .

Подключите подменю FOG к основному меню

Т.к. мы сделали простую копию оригинального конфигурационного файла в подкаталог меню (сохранив цветовую схему, тайм-ауты и прочее), то если вы теперь перейдете в это подменю из загруженного клиента PXE, оно будет работать, но вы не сможете вернуться в главное меню без перезагрузки машины.

Поэтому отредактируйте файл /tftpboot/howtogeek/menus/fog.cfg :

Sudo vim /tftpboot/howtogeek/menus/fog.cfg

Добавьте следующую запись после записи «menu color title» и перед функциями FOG:

LABEL back MENU LABEL .. KERNEL vesamenu.c32 APPEND pxelinux.cfg/default

Создайте заготовки для подменю

Мы создали 4 подменю, три из которых будут нами заполнены. Для этого давайте создадим шаблон, которым мы будем пользоваться в дальнейшем.

Создайте файл шаблона:

Sudo vim /tftpboot/howtogeek/menus/template.cfg

Его содержимое должно быть следующим:

MENU INCLUDE /pxelinux.cfg/master.cfg #MENU BACKGROUND howtogeek/pics/fog-sub.jpgLABEL back MENU LABEL .. KERNEL vesamenu.c32 APPEND pxelinux.cfg/default

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

Cd /tftpboot/howtogeek/menus/ sudo cp template.cfg ./utils.cfg sudo cp template.cfg ./linux.cfg

Вот и все, базовая компоновка теперь готова и теперь нам нужно будет ей пользоваться, что мы будем делать в следующих статьях. Поскольку эти статьи еще не опубликованы, мы рекомендуем ознакомиться с системой FOG, т.к. эта система сама по себе исключительно интересная.

AOMEI PXE Boot представляет собой свободное программное обеспечение для загрузки компьютеров с ISO по локальной сети. Будучи очень простой в использовании, эта программа позволяет использовать загрузочный образ диска (ISO) для удаленной загрузки нескольких компьютеров, при условии, что они подключены к одной локальной сети. Это делает AOMEI PXE Boot чрезвычайно полезным инструментом для таких задач, как удаленное развертывание и сопровождение приложений, особенно на предприятиях.

Работать с AOMEI PXE Boot довольно просто: вы устанавливаете программу на систему, которая будет использоваться в качестве сервера, монтируете ISO и ждете загрузки клиентских машин. И лучшая часть заключается в том, что AOMEI PXE Boot поддерживает синхронную загрузку нескольких компьютеров одновременно. Давайте узнаем больше об этой замечательной программе, и выясним, как вы можете использовать ее для загрузки компьютеров с ISO по проводной локальной сети.

AOMEI PXE Boot: основное назначение и несколько слов о Windows PE

Важно отметить, что AOMEI PXE Boot в первую очередь предназначен для устранения проблем с компьютерами в сети. Вы можете использовать программу для загрузки нефункционирующей системы в ограниченной среде. Для этой цели AOMEI PXE Boot лучше всего работает с загрузочными образами дисков Linux, или Windows PE. Последняя является операционной системой с ограниченными службами, которая используется для загрузки компьютера в восстановительных или установочных целях. Основанная на ядре Vista, Windows PE не является полноценной операционной системой. Вместо этого она предоставляет безопасную среду для устранения неполадок с компьютером и восстановления его рабочего состояния.

Нет абсолютно никаких оснований полагать, что AOMEI PXE Boot не будет работать с любым другим образом диска. Во время тестирования я смог удаленно загрузить на клиентской системе Damn Small Linux (DSL), используя загрузочный ISO-образ.

Как загрузить компьютеры с помощью ISO по локальной сети

Теперь, когда вы знаете о AOMEI PXE Boot достаточно много, пришло время увидеть, как эта штука работает. Процесс, по сути, состоит из двух этапов. Первая часть включает в себя настройку клиентского компьютера для загрузки по сети, а вторая состоит из настройки и запуска приложения на системе, действующей в качестве сервера.

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

Часть 1: Настройка клиентского компьютера(ов) для сетевой загрузки

Как и предполагает название, первое, что необходимо сделать, это настроить клиентский компьютер или компьютеры для загрузки через проводную сеть. Чтобы сделать это, вам нужно получить доступ к меню BIOS компьютера. Ниже говорится о том, как это сделать (процесс более или менее такой же, независимо от производителя компьютера):

1. Включите клиентский компьютер и нажмите клавишу для доступа к меню BIOS (обычно Del, Esc, F8 или F12). В BIOS перейдите в подменю «Boot» и в разделе «Boot Options Priorities» выберите «PXE» (на некоторых компьютерах «Legacy LAN», «Realtek PXE B02 D00», «Network boot from Intel» и т.д.) в качестве первого загрузочного устройства. Вам также может потребоваться включить опцию PXE ROM, если она отключена.

2. AOMEI PXE Boot поддерживает только режим загрузки Legacy, поэтому вам также нужно отключить опцию UEFI Boot, если она поддерживается материнской платой компьютера. Эта опция может быть найдена в подменю Boot.

Это все, что нужно сделать на клиентском компьютере. Не забудьте сохранить изменения, внесенные в конфигурацию BIOS. Теперь давайте перейдем к серверу.

Часть 2: Загрузка ISO и запуск приложения на компьютере-сервере

Эта часть на самом деле еще проще. Для начала, скачайте и установите AOMEI PXE Boot (около 5 МБ) на компьютер, который будет использоваться в качестве сервера. В дополнение к этому вы также должны скачать загрузочный образ диска для загрузки клиентского компьютера или компьютеров. Шаги ниже объясняют, что от вас требуется:

1. Запустите AOMEI PXE Boot. На первом экране программы выберите опцию «Boot from custom image file» и перейдите к вашему ISO-файлу (вы также можете использовать другой вариант для загрузки Windows PE или Linux ISO с сайта компании AOMEI, если вы хотите). Когда образ будет выбран, нажмите на кнопку «Start Service», чтобы запустить службу.

2. Теперь в окне AOMEI PXE Boot будет отображаться информация об активности, происходящей на сервере и клиентских компьютерах. Больше на сервере делать ничего не нужно. Чтобы увидеть реальные действия, давайте переместимся дальше. И, само собой разумеется, приложение и, конечно, сервер, должны быть запущены.

Вам только остается запустить клиентский компьютер и дождаться, пока он загрузится по сети, используя ISO-образ, который был выбран вами через AOMEI PXE Boot на компьютере-сервере. Вот полностью рабочий дистрибутив Damn Small Linux, работающий на клиентском компьютере:

Заключительные слова

Если вы администратор сети, и ищите простой и эффективный способ (и без излишеств) для удаленного развертывания и управления ОС, AOMEI PXE Boot может быть именно тем, что вам нужно. Это качественный инструмент, который до смешного прост в настройке и работает на удивление хорошо.

Отличного Вам дня!