Грузим ВСЁ по сети в DualBoot. Часть 3: Добавляем поддержку UEFI

Грузим ВСЁ по сети в DualBoot. Часть 3: Добавляем поддержку UEFI

В предыдущей части мы закончили на том, что по сети успешно загрузился MemTest86, чем в принципе никого не удивить. Загружается он только в Legacy, а в UEFI выдает ошибку бинарного файла: оно и понятно, они несовместимы. Разберемся более детально в этом моменте.

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

В чем проблема?

Итак, теперь наш мир поделился на до и после, и с этим нужно что-то делать. Опции DHCP, используемые для сетевой загрузки, здесь те же самые. Используя ту же 67 опцию разработчики будто бы хотели сохранить совместимость с Legacy, но видимо что-то пошло не так и бинарники не грузятся в UEFI, а номер опции решили не менять. Может быть и не хотели сохранять совместимость, тогда еще интереснее, почему нельзя было выделить другую опцию под UEFI загрузку…

Как бы там ни было, перед нами стоят две задачи:

  1. Обучить DNSMasq, чтобы он раздавал Legacy и UEFI загрузчикам разные имена файлов в опции 67
  2. Обзавестись вторым комплектом бинарных загрузочных файлов, под UEFI и обеспечить их загрузку согласно типу загрузки

Донастраиваем DNSMasq

В этом деле неплохо помог блог корейца, имя которого я найти не смог. Суть в том, что в DHCP запросе клиент отправляет опцию 93, а именно Client System Architecture, по которой представляется возможность выдать нужные опции в ответ. Скопируем к себе и немного подкорректируем под наши нужны предоставленный им файл конфигурации:
nano /etc/dnsmasq.conf

......
# настройка опций 67 и 66 для сетевой загрузки
# комментируем эту строку
# dhcp-boot=/ipxe/ipxe.legacy,,192.168.9.1

# сравниваем полученную опцию и назначаем категорию
dhcp-match=LegacyBoot, option:client-arch, 0
dhcp-match=UEFIBoot, option:client-arch, 7

# отдаем нужные опции согласно типу загрузки
dhcp-boot=tag:LegacyBoot,/ipxe/ipxe.legacy,,192.168.9.1
dhcp-boot=tag:UEFIBoot,/ipxe/ipxe.efi,,192.168.9.1

......

Перезагружаем dnsmasq, запускаем виртуальную машину Client UEFI и проверяем, что она запрашивает файл ipxe.efi, которого пока у нас нет.

service dnsmasq restart
tail -f /var/log/syslog
...
...
pxesrv dnsmasq-tftp[34052]: file /pxe/ipxe/ipxe.efi not found

DHCP сервер MikroTik не поддерживает такую выдачу опций.

Компилируем UEFI iPXE

Ранее мы компилировали бинарный файл iPXE для платформы Legacy, а для UEFI его необходимо компилировать отдельно, этим и займемся. Загрузочный скрипт подойдет из предыдущей части, его менять не будем. Ну и если вам компилировать не хочется, то бинарный файл лежит здесь.

cd ~/ipxe/src
make -j4 bin-x86_64-efi/ipxe.efi EMBED=starter.script.ipxe
cp bin-x86_64-efi/ipxe.efi /pxe/ipxe/ipxe.efi

Пробуем загрузить виртуальную машину Client UEFI и iPXE успешно стартует и показывает меню, но MemTest86 сломался, хочет подходящий бинарный файл.

Загрузка iPXE в UEFI

Пару слов стоит упомянуть про Secure Boot: он не поддерживается, так как наш бинарный файл не подписан. Поэтому в случае с виртуальной машиной Hyper-V в параметрах нужно будет отключить безопасную загрузку.

А как же MemTest86?

MemTest86+, который «старый» бесплатный не поддерживает загрузку в UEFI, а тот что поддерживает — PassMark MemTest86 в бесплатной и даже в Pro версии не поддерживает PXE Boot. Поддерживает только Site Edition, стоимостью $2500, которой даже вылеченной нигде нет. А memdisk, используемый для загрузки ISO в предыдущей части также не работает под UEFI.

Один комментарий к “Грузим ВСЁ по сети в DualBoot. Часть 3: Добавляем поддержку UEFI

  1. С dnsmasq можно проще, есть опция pxe-service, там прописывается, какой архитектуре сопоставить какой файл.

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

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