Сегодня 12 августа 2025
18+
MWC 2018 2018 Computex IFA 2018
реклама
Мастерская

Мультизагрузочный PXE-реаниматор

Напоминаем, что попытки повторить действия автора могут привести к потере гарантии на оборудование и даже к выходу его из строя. Материал приведен исключительно в ознакомительных целях. Если же вы собираетесь воспроизводить действия, описанные ниже, настоятельно советуем внимательно прочитать статью до конца хотя бы один раз. Редакция 3DNews не несет никакой ответственности за любые возможные последствия.

HUAWEI Pura 80 Ultra глазами фотографа

#HUAWEI Pura 80 Ultra глазами фотографа

Первый взгляд на смартфон HUAWEI Pura 80 Ultra

#Первый взгляд на смартфон HUAWEI Pura 80 Ultra

Пять причин полюбить HONOR 400

#Пять причин полюбить HONOR 400

Обзор смартфона HONOR 400: реаниматор

#Обзор смартфона HONOR 400: реаниматор

HUAWEI nova Y73: самый недорогой смартфон с кремний-углеродной батареей

#HUAWEI nova Y73: самый недорогой смартфон с кремний-углеродной батареей

Обзор HUAWEI MatePad Pro 12.2’’ (2025): обновление планшета с лучшим экраном

#Обзор HUAWEI MatePad Pro 12.2’’ (2025): обновление планшета с лучшим экраном

Обзор смартфона HUAWEI nova Y63: еще раз в ту же реку

#Обзор смартфона HUAWEI nova Y63: еще раз в ту же реку

Обзор ноутбука HONOR MagicBook Pro 14 (FMB-P) на платформе Core Ultra второго поколения

#Обзор ноутбука HONOR MagicBook Pro 14 (FMB-P) на платформе Core Ultra второго поколения

Пять причин полюбить ноутбук HONOR MagicBook Pro 14

#Пять причин полюбить ноутбук HONOR MagicBook Pro 14

Помните, мы когда-то рассматривали создание универсальной USB-«аптечки» для экстренной починки компьютера? В последней статье мы познакомились с загрузкой по сети и программой DRBL. Ну а в этот раз мы займёмся созданием аналога мультизагрузочного носителя, только загружаться мы будем не с флешки, а по сети — с помощью PXE. Делается это довольно просто. Как обычно, нам понадобится машина под управлением Ubuntu Server 11.10 с двумя сетевыми картами, которая будет исполнять роль сервера. В BIOS клиентских машин должна быть включена поддержка сетевой загрузки.

Дабы упростить себе задачу и не возиться по отдельности с установкой и настройкой различных сетевых служб вроде DHCP- и TFTP-сервера, мы воспользуемся более универсальным решением — dnsmasq. Это лёгкий DNS/DHCP/TFTP-сервер, который прекрасно подходит для сетевой загрузки машин. Как и в прошлый раз, договоримся, что сетевой интерфейс eth0 автоматически получает IP-адрес от роутера и имеет доступ в Интернет. В свою очередь eth1 смотрит во внутреннюю сеть и имеет статический IP-адрес 192.168.0.1. Отредактируйте сетевые настройки в файле /etc/network/interfaces с помощью текстового редактора nano, если вы этого ещё не сделали.

sudo nano /etc/network/interfaces

В конце файла добавим настройки интерфейса eth1 и сохраним его (F2, Y, Enter).

auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0

Если необходимо дать доступ в Сеть для локальных клиентов, то придётся сделать ещё кое-что. Во-первых, раскомментировать (убрать # в начале) строчку net.ipv4.ip_forward=1 в файле /etc/sysctl.conf. Во-вторых, выполнить пару команд. Последнюю команду надо добавить в конец файла /etc/rc.local перед строчкой exit 0, чтобы проброс Сети запускался при старте.

sudo sysctl -p
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

Теперь надо установить dnsmasq, а также несколько утилит для облегчения работы — файловый менеджер Midnight Commander и утилиты для распаковки ISO-образов и архивов ZIP/RAR/7ZIP.

sudo apt-get install dnsmasq mc genisoimage unzip unrar p7zip-full

Приступаем к настройке dnsmasq.

sudo nano /etc/dnsmasq.conf

Добавляем в самом конце следующие строки:

interface=eth1 
dhcp-range=192.168.0.10,192.168.0.100,255.255.255.0,24h
server=8.8.8.8
enable-tftp
tftp-root=/pxe
dhcp-boot=pxelinux.0

Что есть что? Параметр interface указывает на то, с каким сетевым интерфейсом будет работать dnsmasq. В dhcp-range первые два параметра указывают начало и конец диапазона выдаваемых клиентским компьютерам адресов, затем идёт маска подсети и время аренды адресов. В поле server указываются IP-адреса вышестоящих DNS-серверов (например, провайдера), но при желании можно воспользоваться Google DNS или OpenDNS. Директива enable-tftp включает встроенный TFTP-сервер, а в tftp-root указывается корневой каталог для него. Наконец, в dhcp-boot прописывается загрузчик, который будет отдаваться по сети.

Сохраним настройки и перезапустим сервер, а также создадим необходимые папки и запустим Midnight Commander (mc), где и продолжим основную работу. В /pxe/images/ будут храниться образы утилит или дистрибутивов, которые будут загружаться через локальную сеть. Каталог /pxe/pxelinux.cfg предназначен для хранения настроек PXE.

sudo mkdir -p /pxe/images/
sudo mkdir /pxe/pxelinux.cfg
sudo service dnsmasq restart
sudo mc

Первым делом надо получить загрузочные программы из проекта syslinux. Скачайте наиболее свежий архив в домашнюю папку. Команды можно набирать прямо в mc или для удобства переключаться между консолью и панелями сочетанием клавиш Ctrl+O. Качать файлы удобнее всего программой wget. Например, вот так:

wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.05.tar.gz 

Входим в скачанный архив, просто переместив выделение к нему и нажав Enter. Из него в директорию /pxe надо скопировать несколько файлов — pxelinux.0 из папки /core, menu.c32 из /com32/menu и memdisk из одноимённого каталога.

Начинаем потихоньку заполнять настройки по умолчанию pxelinux.

sudo nano /pxe/pxelinux.cfg/default

Добавим в этот файл следующие строки:

DEFAULT menu.c32
TIMEOUT 600
MENU TITLE PXE BOOT MENU
LABEL HDDBoot
MENU LABEL Local Boot
MENU DEFAULT
LOCALBOOT 0

Вообще вся документация по формированию параметров загрузчиков syslinux, и загрузочного меню PXE в частности, находится в текстовых файлах каталога docs архива syslinux. Разберём те параметры, которые мы только что использовали. По умолчанию запускается файл menu.c32, который и отображает наше PXE-меню. В TIMEOUT указывается время ожидания (в 1/10 с), после которого будет произведена загрузка пункта по умолчанию. В MENU TITLE содержится заголовок нашего меню. Туда можно вписать всё, что душе угодно.

Затем идёт описание первого пункта меню. Каждому пункту для удобства обращения с ним присваивается метка (LABEL). В MENU LABEL имя метки, которое пользователь увидит при загрузке. MENU DEFAULT означает, что этот пункт из текущего меню будет запущен по умолчанию. Ну а директива LOCALBOOT 0 указывает на то, что надо завершить работу PXE и вернуться к обычной загрузке компьютера. Лучше оставить этот пункт для запуска по умолчанию.

Разнообразим наш мультизагрузчик некоторыми утилитами. Возьмём, к примеру, известнейшую программу для тестирования памяти Memtest86+. Скачиваем с сайта архив с Pre-Compiled Bootable Binary. Сохраняем из него файл memtest.bin как memtest (без расширения!) в папку /pxe/images. Здесь мы сталкиваемся сразу с двумя особенностями. Во-первых, для набора syslinux ряд файлов (.0, .bin, .bs и так далее) должны иметь строго определённый формат. Тот же .bin для isolinux читается как загрузочный сектор CD, а memtest.bin таковым не является. Во-вторых, этот файл напрямую поддерживает загрузку с помощью syslinux, поэтому мы можем смело указать его в качестве запускаемого «ядра».

LABEL Memtest86+
MENU LABEL Memtest86+
KERNEL images/memtest

Ещё один полезный вариант загрузки — использование memdisk. В этом случае носитель (iso-образ, raw-образ дискеты, образ HDD) полностью копируется в оперативную память компьютера и дальнейшая загрузка происходит с него. Вот пример для запуска KolibriOS. Из архива с дистрибутивом надо скопировать файл kolibri.img в папку /pxe/images, а в /pxe/pxelinux.cfg/default дописать нижеследующие строки.

LABEL Kolibri
MENU LABEL KolibriOS
KERNEL memdisk
APPEND initrd=images/kolibri.img

Можно поступить «суровее» — поставить в загрузку Hiren's Boot CD. Уже можно догадаться, что iso-образ надо сохранить как /pxe/images/hirens.iso. На клиентской машине придётся подождать минуту-другую, пока полугигабайтный iso скопируется в память. Естественно, что на самом ПК должен быть хотя бы один гигабайт RAM. Зато после загрузки работа с Hiren's Boot CD крайне быстра. Впрочем, таких экстремальных вариантов лучше, наверное, избегать.

LABEL Hirens
MENU LABEL Hiren's Boot CD
KERNEL memdisk
APPEND iso initrd=images/hirens.iso

Возьмём пример посложнее — загрузим Clonezilla Live через PXE. Создаём папку /pxe/images/clonezilla. Туда надо будет скопировать все файлы из папки /live, которая лежит в ISO-образе. В настройках мы указываем загрузку ядра Linux (vmlinuz), а в APPEND передаём ему параметры. Их можно подсмотреть в файле isolinux/isolinux.cfg внутри ISO-образа (ключи ocs_* относятся непосредственно к Clonezilla, а не ядру как таковому). В нашем случае отличия от него будет немного — надо только указать, что файл с образом системы в Squashfs следует забрать при загрузке с TFTP-сервера.

LABEL Clonezilla
MENU LABEL Clonezilla
KERNEL images/clonezilla/vmlinuz
APPEND initrd=images/clonezilla/initrd.img boot=live config noprompt noswap nomodeset nolocales/nosplash edd=on vga=788 ocs_live_run="ocs-live-general" ocs_live_extra_param="  " ocs_live_keymap="  " ocs_live_bash="no" ocs_lang="  " fetch=tftp://192.168.0.1/images/clonezilla/filesystem.squashfs
TEXT HELP
Clonezilla Live — Boot to RAM
ENDTEXT

Внимание! Всё, что находится после APPEND, является одной-единственной строкой без переносов. Текст между директивами TEXT HELP и ENDTEXT будет показан в качестве подсказки при выборе соответствующего пункта загрузочного меню. Аналогичным образом добавляются в загрузку и другие дистрибутивы или утилиты на основе Linux. Попробуйте в качестве разминки прописать настройки для легковесного дистрибутива SliTaz.

LABEL Slitaz
MENU LABEL SliTaz Linux
KERNEL /boot/bzImage
APPEND initrd=/boot/rootfs4.gz,/boot/rootfs3.gz,/boot/rootfs2.gz,/boot/rootfs1.gz rw root=/dev/null vga=normal autologin

Как видите, всё довольно просто и достаточно гибко настраивается. Для дальнейшего изучения PXE-загрузки на базе Ubuntu Server неплохо было бы ознакомиться с wiki syslinux и документацией, которая прилагается в архиве к этой утилите. Из интересных решений с использованием PXE можно почитать, к примеру, про сетевую установку Windows 7 без применения RIS/WDS. А из полезных дополнений стоит присмотреться к дистрибутиву Thinstation для создания тонких клиентов, а также к менеджеру загрузки Plop. Несомненно, пригодятся утилиты для тестирования «железа» и диагностики проблем, для восстановления данных и создания бекапов, для… В общем, дело за вами. Удачи!

 
 
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.

window-new
Soft
Hard
Тренды 🔥
Изучай, расширяй, эксплуатируй, уничтожай: в Steam стартовал фестиваль 4X-стратегий, а Endless Legend 2 получила временную демоверсию 7 ч.
У DeepSeek произошёл масштабный сбой — регистрация новых пользователей ограничена 7 ч.
Microsoft начала тестировать облачные ПК для аварийной замены обычных через Windows 365 7 ч.
Глава GitHub ушёл в отставку — компания перейдёт под прямое управление Microsoft 7 ч.
Календарь релизов — 11 – 17 августа: The Scouring, Echoes of the End и ремастер W40K: Dawn of War 11 ч.
Mortal Kombat 1 покорила новую вершину продаж и взяла курс на звание «самой сбалансированной» игры серии 12 ч.
«Займёт своё место в пантеоне "Цивилизаций"»: руководство Take-Two не потеряло веру в Sid Meier’s Civilization VII, несмотря на слабый старт продаж 12 ч.
Россияне пожаловались на массовые сбои при звонках в WhatsApp и Telegram 13 ч.
Бывший президент Blizzard предсказал, что Battlefield 6 «раздавит» Call of Duty: Black Ops 7, и все от этого выиграют 16 ч.
Создатели Delta Force анонсировали хоррор-шутер Crossfire: Rainbow — геймплейный трейлер и первые подробности 17 ч.
Рекомендации для главы Intel от властей США будут направлены на следующей неделе 60 мин.
Новая статья: Обзор ноутбука Acer Swift Go 14 (SFG14-63-R7T4) с процессором Ryzen 9 8945HS и OLED-экраном 6 ч.
Биткоин приблизился к историческому максимуму, а Ethereum преодолел $4000 9 ч.
SpaceX запустила новую партию интернет-спутников Amazon Project Kuiper — теперь на орбите их 102 из более 3000 11 ч.
Nvidia представила крошечные видеокарты RTX Pro 4000 SFF и RTX Pro 2000 для профессионалов 11 ч.
Vivo показала свою первую MR-гарнитуру — она похожа на Apple Vision Pro, но гораздо удобнее 11 ч.
Apple выпустит MacBook стоимостью от $599 в следующем году, если слухи верны 11 ч.
Ford сделает электромобили дешевле — первым на платформе Universal EV станет пикап за $30 000 11 ч.
Hyundai потребовала $65 за устранение уязвимости в системе бесключевого доступа к электромобилю Ioniq 5 11 ч.
«Рикор» представил российские 1U-серверы RS7104 и RS7110 на базе Intel Xeon Ice Lake-SP 11 ч.