как загрузить grub с меню в настройке ipxe

Вопрос или проблема

Я пытаюсь настроить среду ipxe на vmware.

Я хотел бы настроить установку с UEFI.

Я установил ubuntu-server и настроил его как pxe-сервер.

через загрузку ipxe, isc-dhcpd, tftp-hpa и nginx.

Конфигурация dhcp isc-dhcp.conf выглядит следующим образом:

subnet 192.168.101.0 netmask 255.255.255.0 {
 range 192.168.101.50 192.168.101.100;
}

# добавьте следующее в /usr/local/etc/dhcpd.conf 
option client-arch code 93 = unsigned integer 16;

if exists user-class and option user-class = "iPXE" {
  filename "http://192.168.101.10/test.ipxe";
} else {
  if exists client-arch {
     if option client-arch = 00:00 {
       filename "undionly.kpxe";
     } elsif option client-arch = 00:07 {
       filename "grubx64.efi";
     } elsif option client-arch = 00:09 {
       filename "grubx64.efi";
     }
  }
}

и tftp root настроен для обслуживания grubx64.efi.

Когда я загружаю клиент сети, я получаю командную строку grub, где ожидаю получить меню grub и выбрать ОС для загрузки.

enter image description here

( echo $prefix, указывает на папку /EFI/ubuntu, я также пытался настроить grub в этой папке вместе с grub.cfg, то есть в корне папки tftp.

что я упускаю, прошу совета, как только я начну получать меню, я настрою grub.cfg для загрузки ОС.

Это связано с тем, как работает iPXE. Есть несколько способов обойти это. Один из ответов можно увидеть по адресу https://serverfault.com/a/1069487/187998, где iPXE собирается с некоторыми отключёнными/включёнными функциями для того, чтобы grub нашёл своё место в мире.

Другой способ — использовать некоторые хаки через, например, wimboot, чтобы предоставить grub виртуальную файловую систему, из которой grub может загружать свою конфигурацию, см. https://forum.ipxe.org/showthread.php?tid=10739&pid=18277#pid18277

Однако есть один хак, который работает, используя wimboot, Что вы делаете, так это загружаете (imgfetch) все файлы, которые нужно иметь в наличии, Загружаемый файл, который вы хотите загрузить, должен быть назван localy как bootx64.efi, что можно сделать с помощью imgfetch -n bootx64.efi file://grubx64.efi и, наконец, вы переходите к wimboot, и это должно создать виртуальную файловую систему VFAT (которая может быть прочитана grub), а затем загружается bootx64.efi, который является вашим grub.

imgfetch — это то же самое, что и initrd, а -n — сокращённый вариант для –name, который вы можете найти в документации.

Сказав всё это, вам, вероятно, следует выбрать между iPXE и grub и не пытаться использовать оба.

.

Ответ или решение

Настройка загрузки GRUB с меню в среде iPXE может быть сложной задачей, особенно при использовании UEFI и современных виртуальных сред, таких как VMware. Для решения этой задачи важно учитывать множество факторов, включая правильную конфигурацию DHCP, iPXE, TFTP и самих файлов конфигурации GRUB. Давайте подробно разберёмся, как это сделать, и обратим внимание на изначальную проблему отсутствия меню в GRUB.

Теория

Ваша задача заключается в том, чтобы через сеть загрузить образ GRUB и обеспечить интуитивно понятную возможность выбора операционной системы для загрузки. Когда вы загружаете машину через сеть с использованием iPXE и GRUB, важно обеспечить корректную передачу GRUB конфигурации. В случае UEFI, основной вызов заключается в правильной настройке и предоставлении GRUB пути к его конфигурационному файлу grub.cfg.

Вам необходима следующая последовательность действий:

  1. Настроить DHCP для взаимодействия с iPXE и GRUB. Это обеспечивает корректную передачу нужных файлов в зависимости от архитектуры клиента.
  2. Обеспечить правильное размещение файлов GRUB на TFTP-сервере. Файлы должны находиться в корректном каталоге, чтобы они были доступны при вызове.
  3. Обеспечить, чтобы iPXE корректно передавал управление GRUB. Важно, чтобы был обеспечен плавный переход и правильная цепочка загрузки, поддерживающая необходимую файловую систему.

Пример

Давайте рассмотрим вашу текущую настройку и предложим возможные изменения и улучшения:

  1. DHCP и iPXE настройки:

    В вашем isc-dhcp.conf вы уже выделили диапазон IP-адресов и используете условные конструкции для определения архитектуры клиента. Обратите внимание, что вы задали загрузку grubx64.efi для архитектур 00:07 и 00:09, что соответствует UEFI.

    subnet 192.168.101.0 netmask 255.255.255.0 {
     range 192.168.101.50 192.168.101.100;
    }
    
    option client-arch code 93 = unsigned integer 16;
    
    if exists user-class and option user-class = "iPXE" {
     filename "http://192.168.101.10/test.ipxe";
    } else {
     if exists client-arch {
       if option client-arch = 00:00 {
         filename "undionly.kpxe";
       } elsif option client-arch = 00:07 {
         filename "grubx64.efi";
       } elsif option client-arch = 00:09 {
         filename "grubx64.efi";
       }
     }
    }
  2. Проблема с отсутствием меню:

    Ваша проблема заключается в том, что при загрузке вы получаете командную строку GRUB вместо меню. Это может быть следствием отсутствия или некорректного расположения файла grub.cfg. Этот файл конфигурации должен быть доступен GRUB при загрузке.

    Убедитесь, что grub.cfg размещён в правильной директории и доступен через TFTP. Это может быть /EFI/ubuntu или корневая директория TFTP.

  3. Использование wimboot для виртуальной файловой системы:

    Как было предложено в вашем описании, можно использовать wimboot для создания виртуальной файловой системы, которая позволит GRUB корректно считывать конфигурацию. Это достигается методом раннего захвата всех необходимых файлов и передаче их в wimboot.

    imgfetch -n bootx64.efi file://grubx64.efi
    chain wimboot

    Такой подход может помочь GRUB увидеть все необходимые файлы и правильно загрузить конфигурацию.

  4. Дополнительные настройки и тестирование:

    Проверьте корректность файлов и их доступность через TFTP. Также удобно провести тестирование последовательности загрузки в более детализированном режиме логирования, чтобы отследить, в какой момент GRUB теряет свои конфигурации.

Применение

Следуя вышеизложенным рекомендациям и примерам, вы сможете оптимизировать процесс загрузки вашего GRUB с меню в среде iPXE и VMware. Это не только обеспечит более гладкую последовательность загрузки, но и значительно упростит последующую конфигурацию и управление загрузочными схемами для конечных пользователей.

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

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

Капча загружается...