Как PXE загрузиться с ARM?
Я пытаюсь настроить бездисковую загрузку UEFI + PXE + NFS для CentOS 7 в ARM. Как правило, процесс выглядит так:
- Клиентский процессор загружает прошивку UEFI
- Прошивка PEFE UEFI клиента запрашивает DHCP из сети
- Сервер предоставляет IP-адрес, IP-адрес сервера TFTP, имя файла PXE NBP (программа начальной загрузки сети)
- Клиентский UEFI загружает NBP с TFTP-сервера
- Клиентский UEFI выполняет NBP, который загружает образ ядра с TFTP-сервера
- Клиент NBP выполняет образ ядра, который монтирует файловую систему через NFS
Каждое руководство по загрузке PXE, которое я могу найти, в конечном итоге требует pxelinux.0 от Syslinux в качестве NBP (шаги 3, 4, 5). Syslinux не поддерживает ARM (афаик?). С этим в мыслях:
Может кто-нибудь описать, как PXE загружает aarch64?
1 ответ
Решение
Вот мои возможные выводы и решения, с большой помощью из комментариев!
- Syslinux не поддерживает ARM
- Даже если бы это было,
pxelinux.0
применяется только к BIOS, а не к UEFI - Используйте GRUB2 вместо Syslinux
Предполагая, что сервер (ы) PXE (DHCP + TFTP) уже настроены в соответствии со многими руководствами,
- Скопируйте ядро и initramfs в корневой каталог TFTP (обычно
/var/lib/tftpboot
) - копия
grubaa64.efi
от/boot/efi/EFI/centos/
в корневой каталог TFTP (или./boot/
подкаталог) Создать файл конфигурации,
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 }
Укажите свой DHCP-сервер на
grubaa64.efi
вместоpxelinux.0
- Это оно! Попробуйте редактировать
grub.cfg
на сервере TFTP, затем выберите "Обновить меню GRUB", чтобы увидеть, что он тянет в новой конфигурации