Назад | Перейти на главную страницу

Загрузка UEFI iPXE в debian приводит к появлению оболочки grub

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

В настоящее время экспериментирую с PXE. Несколько дней назад я установил несколько виртуальных машин ESXi, одна из которых является сервером DHCP и TFTP, а две другие - клиентами BIOS и UEFI. Мне удалось загрузить debian через PXE на машинах с BIOS и UEFI.

Я слышал о iPXE и ​​возможностях, которые он предоставляет (например, загрузка по HTTP, iSCSI, ...), и решил попробовать. На данный момент я все еще пытаюсь загрузить свой локальный установщик debian netboot, я подумал, что протестирую удаленные файлы, убедившись, что установка была правильной.


На данный момент вот как выглядит моя конфигурация DHCP (за вычетом всего, что не представляет особого интереса):

option arch code 93 = unsigned integer 16;
class "pxe-clients" {
    match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
    option tftp-server-name "192.168.0.5";
    next-server 192.168.0.5;
    if option arch = 00:00 {
        if exists user-class and option user-class = "iPXE" {
            filename = "pxelinux.0";
        } else {
            filename = "undionly.kpxe";
        }
    } elsif option arch = 00:02 or option arch = 00:06 or option arch = 00:07 or option arch = 00:08 or option arch = 00:09 {
        if exists user-class and option user-class = "iPXE" {
            filename = "bootnetx64.efi";
        } else {
            filename = "ipxe.efi";
        }
    } else {
        filename = "UNKNOWN_VCI";
    }
}

192.168.0.5 это LAN IP-адрес сервера DHCP / TFTP.

Что касается корневого каталога моего TFTP-сервера:

root@vmpxe:/srv/tftp# ls -l
total 968
lrwxrwxrwx 1 root root   37 Sep 22 14:01 bootnetx64.efi -> debian-installer/amd64/bootnetx64.efi
drwxrwxr-x 3 root root 4.0K Sep 22 00:21 debian-installer
-rw-r--r-- 1 root root 896K Sep 22 16:00 ipxe.efi
lrwxrwxrwx 1 root root   47 Sep 22 00:21 ldlinux.c32 -> debian-installer/amd64/boot-screens/ldlinux.c32
lrwxrwxrwx 1 root root   33 Sep 22 00:21 pxelinux.0 -> debian-installer/amd64/pxelinux.0
lrwxrwxrwx 1 root root   35 Sep 22 00:21 pxelinux.cfg -> debian-installer/amd64/pxelinux.cfg
-rw-r--r-- 1 root root  64K Sep 22 16:00 undionly.kpxe
-rw-rw-r-- 1 root root   64 Sep 22 00:21 version.info

Опять же, я настаиваю на том, что до iPXE все работало нормально на обеих архитектурах. Единственные изменения, которые я внес, - это загрузка undionly.kpxe и ipxe.efi файлы с веб-сайта iPXE, и отредактируйте конфигурацию DHCP, чтобы обернуть настройки имени файла в if exists user-class and option user-class = "iPXE" {...} else {...} условия.

Теперь машина с BIOS выполняет PXE -> iPXE -> установщик сетевой загрузки Debian. Все нормально работает.

Однако машина UEFI выполняет PXE -> iPXE -> grub shell.

Я попытался выполнить tcpdump процесса, но это ничего не дало: весь трафик выглядит нормальным и ожидаемым. Он не сильно отличается от того, что было у меня до iPXE.

Есть идеи, что здесь может происходить?


РЕДАКТИРОВАТЬ: Дальнейшее тестирование tcpdump показывает, что без iPXE моя машина EFI отправляет RRQ-пакеты для загрузчика и кучу других файлов, на которые, как я полагаю, ссылается сам загрузчик. Однако с iPXE только загрузчик я вижу только загрузчик.

Итак, я думаю, правильный вопрос: что происходит с iPXE, чтобы он не извлекал все те файлы, которые правильно загружены стандартным PXE?

не связано с вашей проблемой, но

для загрузки EFI64

} elsif option arch = 00:02 or option arch = 00:06 or option arch = 00:07 or option arch = 00:08 or option arch = 00:09 {

следует изменить на

} elsif option arch = 00:07 or option arch = 00:09 {

По поводу вашего вопроса, если вы загружаетесь bootnetx64.efi вот что вы получите; экран Grub.

посмотреть здесь: http://lists.ipxe.org/pipermail/ipxe-devel/2015-De December/004532.html

РЕДАКТИРОВАТЬ: когда вы загружаете pxelinux.0, в зависимости от его версии, он извлекает динамические компоненты плюс определение меню pxelinux.0. когда вы загружаете iPXE, у вас не загружаются эти дополнительные файлы.