2

Я пытаюсь настроить бездисковую загрузку UEFI + PXE + NFS для CentOS 7 в ARM. Как правило, процесс выглядит так:

  1. Клиентский процессор загружает прошивку UEFI
  2. Прошивка PEFE UEFI клиента запрашивает DHCP из сети
  3. Сервер предоставляет IP-адрес, IP-адрес TFTP-сервера, PXE NBP (программа начальной загрузки сети)
  4. UEFI клиента загружает NBP с TFTP-сервера
  5. Клиентский UEFI выполняет NBP, который загружает образ ядра с TFTP-сервера
  6. Клиент NBP выполняет образ ядра, который монтирует файловую систему через NFS

Каждое руководство по загрузке PXE, которое я могу найти, в конечном итоге требует pxelinux.0 от Syslinux в качестве NBP (шаги 3, 4, 5). Syslinux не поддерживает ARM (афаик?). С этим в мыслях:

Может кто-нибудь описать, как PXE загружает aarch64?

1 ответ1

0

Вот мои возможные выводы и решения, с большой помощью из комментариев!

  • Syslinux не поддерживает ARM
  • Даже если это так, pxelinux.0 применяется только к BIOS, но не к UEFI.
  • Используйте GRUB2 вместо Syslinux

Предполагая, что сервер (ы) PXE (DHCP + TFTP) уже настроены в соответствии со многими руководствами,

  1. Скопируйте ядро и initramfs в корневой каталог TFTP (обычно /var/lib/tftpboot)
  2. Скопируйте grubaa64.efi из /boot/efi/EFI/centos/ в корневой каталог TFTP (или ./boot/ subdir)
  3. Создайте файл конфигурации grub.cfg в том же каталоге

    (GRUB рассматривает / как ваш корневой каталог TFTP. Измените linux & initrd мере необходимости)

    menuentry 'Shared CentOS (4.5.0-23.el7.aarch64)' {
        linux       /vmlinuz-4.5.0-23.el7.aarch64 rw root=/dev/nfs ip=dhcp nfsroot=/netboot/CentOS_7.3 enforcing=0
        initrd      /initramfs-nfs-only.img
    }
    menuentry 'Refresh GRUB menu' {
        configfile  /boot/grub.cfg
    }
    
  4. Укажите ваш DHCP-сервер на grubaa64.efi вместо pxelinux.0

  5. Это оно! Попробуйте отредактировать grub.cfg на TFTP-сервере, затем выберите "Обновить меню GRUB", чтобы увидеть, что он тянет в новой конфигурации

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .