Ubuntu → Настройка PXE Boot меню с мемтестом и паролями
У PXE есть одна очень полезная особенность, все что в нем настроено довольно трудно потерять т.к. все это хранится на сервере, а не на съемном носителе, которые имеют обыкновение теряться, вороваться, забываться в приводах DVD/дома, даваться попользоваться и «с концами», так что, вероятность что у вас возьмут попользоваться и «заиграют» стремится к нулю, ну разве что вместе с сервером… Подключив устройство имеющее возможность загрузки PXE, можно делать довольно много полезных вещей, а именно: производить диагностику оборудования, развертывать операционные системы, загрузить Live систему и т.п. на что хватит знаний и фантазии.
Для этого нам понадобится настроить DHCP сервер и TFTP сервер.
Ранее я уже писал о том как настроить сервер для установки Ubuntu по локальной сети, крайне рекомендую для ознакомления, основные моменты перекочевали из нее.
Что мы получим на выходе?!
А получим меню загрузки с возможностью выбора приложения которое мы будем загружать на клиентскую машину, а также действия, по умолчанию, которые будут произведены системой-если не поступит команд от пользователей.
2) Настроенный DHCP сервер, пример настройки можно взять в статье: Настройка DHCP сервера под управлением Ubuntu
3) Диск или ISO-образ, установочного дистрибутива Ubuntu — разрядность значения не имеет, а вот версию лучше брать посвежее.
Все остальное мы установим по ходу дела… Я не буду останавливаться на настройках DHCP, предполагая что он у вас настроен, согласно статье, ссылка на которую представлена в требованиях к системе.
Поднимаем права до root:
Установим необходимый пакет
Теперь все файлы которые относятся к нашему tfpt серверу, должны находиться в директории /var/lib/tftpboot/, все пути указываются относительно нее.
Если установочный диск х86 архитектуры:
Нас интересует файл pxelinux.0 это и есть загрузчик, забираем его и копируем в директорию:
Тогда путь к нему выглядит:
Также, нам понадобится, само boot-меню, которое можно взять на том же диске, в директории boot-sccreens нас интересует файл с именем vesamenu.c32
Копируем его в туже директорию что и загрузчик чтобы путь выглядел:
Настраиваем содержимое PXE меню
В качестве примера, мы сделаем меню загрузки, состоящее из 2х пунктов.
Пункт первый: Загрузка с локального жесткого диска. Этот пункт будет пунктом по умолчанию, если пользователь загрузил ПК по PXE и в течении 15 сек. не выполнил никаких действий, то система автоматически загрузится с локального диска.
Пункт второй: назовем его Testing Внутри данного меню будет находиться, пункт с возможностью загрузки Memtest x86+. Данная программа всегда будет полезна в диагностике проблем рабочих станций и серверов, в общем, вещь нужная, в хозяйстве пригодится всем…
Для начала, нам нужно создать директорию для конфигурационных файлов с именем pxelinux.cfg — имя критично для работы!
Теперь создадим конфигурационный файл с параметрами пунктов меню, с именем default
Со следующим содержимым:
Наиболее наблюдательные, заметили что в предыдущем файле у нас появилась запись которая касается другого файла testing.menu, в нем у нас будут находиться параметры настройки пункта Testing
Создадим данный файл:
Со следующим содержимым:
Первый пункт меню, будет отвечать за возврат в предыдущее меню, а второй за загрузку Memtest86+ v4.20
Все ничего, но мы не создали директорию где хранится файл Memtest, это мы сейчас исправим, давайте создадим соответствующую директорию.
Сделаем это:
Нам осталось добавить исполняемый файл самого Memtest86+, его можно найти на установочном диске, в директории /install/ нас интересует файл mt86plus нам него необходимо скопировать в директорию memtest, чтобы путь к нему выглядел:
На этом мы закончили с tftp сервером, нам осталось немного допилить DHCP сервер.
Настриваем DHCP сервер
Этот пункт, настройкой можно назвать только с натяжкой, если вы настроили DHCP сервер по статье, то вам необходимо добавить только одну запись в:
Находим пункт с настройками пула IP адресов, который имеет вид:
И в него добавляем запись указывающую на наш PXE загрузчик:
Путь к файлу указан относительно директории /var/lib/tftpboot/ т.е. она считается корневой директорией, о чем я писал ранее…
Вся запись имеет вид:
Сохраняем изменения и перезагружаем DHCP сервер:
Теперь мы можем подключить к нашей локальной сети устройство которое поддерживает загрузку PXE и в котором эта функция включена( смотрите документацию к своему оборудованию) или подключить виртуальную машину, а адаптометром подключенным в режиме моста и без загрузочного носителя.
Если вы все сделали правильно, то меню будет иметь следующий вид:

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

Если выбрать пункт с Memtest то запустится тест памяти.
Другие пункты меню добавляются соответствующим образом.
Представим ситуацию, что вам требуется предоставить доступ к одному из меню, ограниченному кругу лиц, например там у вас лежит дистрибутив, который стоит кучу денег. С этой целью на пункт меню можно установить пароль, как это сделать?!
Представим ситуацию, вам нужно установить пароль (например: password) на Memory Test, делается это просто
Нам необходимо добавить запись:
MENU PASSWD password
Тогда файл принимает вид:
Защита конечно, так себе, но от обычных пользователей может помочь.
Тогда при попытке запуска выйдет окно:

если ввести правильный пароль, то запустится Memtest.
Таким способом можно скрывать целые меню или блокировать доступ к отдельным его пунктам.
В случае внесения изменения в эти конфигурационные файлы, DHCP сервер перезапускать нет необходимости, достаточно перезагрузить клиентский ПК если он загрузился по PXE.
По поводу скорости работы tftp, скорость работы не высока, и если вы решите перекачивать большие объемы информации, сторайтесь использовать для этого WEB или FTP сервер, готовьтесь затратить на это некоторое количество времени. Если есть необходимость загрузить какой-то дистрибутив, то лучше загрузить ОС небольшого размера, примером может служить Windows PE, ну или миниатюрный дистрибутив Linux.
На этом я пожалуй и закончу…
Для этого нам понадобится настроить DHCP сервер и TFTP сервер.
Ранее я уже писал о том как настроить сервер для установки Ubuntu по локальной сети, крайне рекомендую для ознакомления, основные моменты перекочевали из нее.
Что мы получим на выходе?!
А получим меню загрузки с возможностью выбора приложения которое мы будем загружать на клиентскую машину, а также действия, по умолчанию, которые будут произведены системой-если не поступит команд от пользователей.
Для работы нам понадобится:
1) Установленный Ubuntu server2) Настроенный DHCP сервер, пример настройки можно взять в статье: Настройка DHCP сервера под управлением Ubuntu
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
Создадим данный файл:
nano /var/lib/tftpboot/pxelinux.cfg/testing.menu
Со следующим содержимым:
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.
На этом я пожалуй и закончу…
54 комментария
Что может быть не так?
DHCP сервер работает как часы
Новичок я в этом всем
должны показать процессы
ну или выполнить
Если служба запущена то выдаст ошибку, ели не запущена, то запустится.
/etc/init.d/tftpd-hpa start
выдало root 3934 0.0 0.0 5928 2124 pts/8 S+ 12:57 0:00 grep --color=auto tftp
root@nirian-HP-655-Notebook-PC:/home/nirian# aptitude install tftpd-hpa
Ни одного пакета не будет установлено, обновлено или удалено.
0 пакетов обновлено, 0 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено.
Необходимо получить 0 Б архивов. После распаковки 0 Б будет занято.
Я вот так пробовал пишет что все есть
root@nirian-HP-655-Notebook-PC:/home/nirian# apt-get install tftpd-hpaЧтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Уже установлена самая новая версия tftpd-hpa.
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
А то все до статьи Установка Ubuntu по сети (DHCP, PXE, boot-menu) / На примере Ubuntu 14.04 не дойду не как, а очень надо
Других вариантов я не знаю, посмотрите что лежит в директории /etc/init.d/ там должен быть скрипт запуска, с похожим названием ( в имени должно быть tftp)
pxe-t02 only absolute filenames allowed
pxe-e3c tftp error — access violation
нужно смотреть логи ftpd, логи лежат в /var/log ответ будет там 100%
Проблема решилась переустановкой дистрибьютива (хотя выявить корень зла не удалось)
На счёт теста памяти, не знаю, самое простое что приходит на ум, проверьте путь к бинарному файлу ну и его наличие.
на диске ubuntu сервер все это есть, включая 16.04, путь к файлам в начале статьи
Проверьте путь куда вы положили файлы pxe, приложите путь где они лежат у вас!
в файле конфигурации tftp сервера тоже проверил, указана эта папка
Я либо нахожу свои ошибки, как в прошлый раз, когда шлюз на автомате прописал, либо срабатывает аура присутствия. Ничего не менял, просто заново запустил клиент, чтобы по всему логу не искать, и получилось.
Спасибо вам за статью и присутствие)
Переходите в раздел IP — > DHCP-Server, вкладка Network и в настройках пула в пункте Boot File Name указываем файл для загрузки
Вот пример настройки!