Грузим ВСЁ по сети в DualBoot. Часть 1: Теория и существующие решения

Грузим ВСЁ по сети в DualBoot. Часть 1: Теория и существующие решения

Так или иначе все видели в Boot Menu своего компьютера вариант NetworkBoot, экран с надписями “Realtek PCIe FE Family Controller Series”, а потом или ошибку поиска загрузочного образа, или ошибку в стиле “Media test failure, check cable”. Лишь немногие попробовали развить эту тему в небольших инсталляциях.

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

Часть 1: Теория и существующие решения
Часть 2: Первые грабли в процессе загрузки MemTest86+
Часть 3: Добавляем поддержку UEFI
Часть 4: Загружаем Strelec WinPE
Часть 5: Загружаем полноценный дистрибутив Linux Ubuntu
Часть 6: Загружаем Windows Installer и ставим ОС
Часть 7: Устанавливаем Windows на iSCSI диск по сети
Часть 8: Жонглируем пунктами iPXE меню
Часть 9: Обслуживание сервера и обновление образов

Алгоритм работы

После появления надписей “DHCP” на загрузочном экране, невольно приходит мысль, что служба DHCP (то есть DHCP сервер) одна из основных компонентов в работе сетевой загрузки. (Что такое DHCP) Тут можно сделать отсылку к “домашним” роутерам, в которых раздел “DHCP сервер” заканчивается статической арендой. По факту в протокол DHCP позволяет использовать 254 опции, то есть 254 параметра, из которых обычно используется до 10 штук, остальные остаются пустыми. Полный список опций DHCP

Пример основных опций: IP-адрес устройства, маска подсети (опция 1), шлюз по умолчанию (опция 3), список DNS серверов (опция 6) и т.п. значения которых вы можете увидеть в свойствах соединения Windows.
Конкретно в нашем случае интересны следующие опции: путь загрузочного файла (опция 67) и адрес загрузочного сервера (опция 66). Эти опции интересны DHCP клиенту, встроенному в прошивку сетевой карты. Алгоритм следующий:

  1. После прохождения POST проверок, при выборе Network Boot запускается прошивка сетевой карты, которая поднимает линк и пытается получить настройки по DHCP.
  2. Если линка нет, или DHCP сервера нет, или нужных опций нет она завершает работу и передает управление обратно в BIOS/UEFI.
  3. Если в ответе DHCP Ack есть опции 66 и 67, то прошивка запускает свой TFTP клиент, подключается к IP-адресу, указанному в опции 66 и пытается скачать файл по пути, указанному в опции 67. Если файл загрузился, то передает ему управление.

Что загружаем?

Таким файлом может быть PXELINUX, iPXE, может быть загрузочный файл Acronis Snap Deploy или Microsoft Deployment Toolkit, вообще по факту любое, что сможет исполниться. Разберем их по отдельности.

PXELINUX и iPXE – основные 2 проекта, которые используюся при запуске по сети.
iPXE (официальный сайт) поддерживает достаточно много протоколов, которые быстро настраиваются и быстро работают (iSCSI и HTTP). Имеет поддержку своего скриптового языка для отрисовки меню и контроля процесса загрузки.
PXELINUX – модификация SYSLINUX, Linux’ового загрузчика, заточенного именно под сетевую загрузку. Умеет загружать файлы по TFTP (что достаточно медленно – в районе 5 Мбит/с), заявлена поддержка FTP и HTTP, но я не видел, чтобы их использовали. В основном, в инструкциях по организации сетевой загрузки дистрибутивов Linux используется именно PXELINUX. Не имеет поддержку скриптов, но можно написать свой layout для отрисовки меню.

Инструменты Acronis и от MS представляют собой платные “коробочные решения”, которые предлагают изменение параметров только в своих областях, таким образом, шаг вправо или шаг влево – расстрел и наши полномочия все. Данные решения в статье рассматриваться не будут.

В итоге остается выбор только между PXELINUX и iPXE.
Из-за поддержки скриптов дальнейшее повествование пойдет в основном в контексте использования iPXE, несмотря на то, что PXELINUX по началу мог бы упростить некоторые задачи.

Общая обстановочка

В третьей части пойдет речь про загрузку Legacy+UEFI. Таким образом, наш сервер сможет обслуживать одновременно и Legacy устройства и UEFI примерно одинаково. Для этого будет использоваться DHCP сервер DNSMasq, также возможно использование ISC-DHCP-Server или Microsoft DHCP Server. Бо́льшая часть инструкций, предоставленных в интернете, предполагают загрузку в Legacy only режиме, что удивляет, так как на подходе 2021 год и устройств с Legacy все меньше и меньше. Некоторые возможности, доступные в Legacy не будут работать в UEFI или нужно искать аналоги для UEFI режима, что иногда непросто.

Несмотря на то, что проект iPXE развивается, предложенные решения скорее всего будут уступать по удобности использования и возможно, в ваших условиях, на реальных компьютерах будут возникать другие, не описанные здесь, проблемы. Например, бывает iPXE не загружается вообще, бывает в iPXE нет драйверов на сетевую карту. Некоторые проблемы есть только в Hyper-V и не проявляются на реальных компьютерах и на других гипервизорах, и наоборот.

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

Один комментарий к “Грузим ВСЁ по сети в DualBoot. Часть 1: Теория и существующие решения

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *