Jak uruchomić PXE z ARM?

3

Próbuję skonfigurować bezdyskowe uruchamianie UEFI + PXE + NFS dla CentOS 7 na ARM. Ogólnie proces wygląda następująco:

  1. Procesor klienta uruchamia oprogramowanie układowe UEFI
  2. Oprogramowanie układowe PXE klienta UEFI żąda DHCP z sieci
  3. Serwer dostarcza adres IP, nazwę serwera TFTP, nazwę pliku PXE NBP (sieciowego programu ładującego)
  4. Klient UEFI ładuje NBP z serwera TFTP
  5. Klient UEFI wykonuje NBP, który ładuje obraz jądra z serwera TFTP
  6. Klient NBP wykonuje obraz jądra, który montuje system plików przez NFS

Każdy przewodnik rozruchu PXE, jaki mogę znaleźć, ostatecznie wymaga pxelinux.0, od Syslinux , jako NBP (kroki 3, 4, 5). Syslinux nie obsługuje ARM (afaik?). Pamiętając o tym:

Czy ktoś może opisać, jak PXE uruchomić aarch64?

Dan
źródło
Nawet bez edycji oryginalne pytanie bezpośrednio odpowiadało formatowi sugerowanemu na wiki społeczności: „Mam <problem-x>, którego nie umiem rozwiązać. Próbowałem już X, Y, Z, ale te programy nie nie działa, ponieważ to czy tamto. Jak to zrobić? " meta.superuser.com/a/5373/639139
Dan.
Myślę, że zostało to omyłkowo zamknięte, chyba że twoje pytanie było wcześniej zupełnie inne. Wiem, że wiele platform ARM nie używa UEFI, ale U-boot lub inny bootloader - zwykle ładują one jądro i initrd bezpośrednio z partycji ext2 lub fat32, a następnie po prostu przenoszą do niego kontrolę. Istnieją inne platformy ARM, takie jak serwery montowane w stojaku, które mogą się różnić. Naprawdę nie sądzę, że nic poza Microsoft Surface RT używa UEFI w ARM, ale mogę się mylić. W każdym razie musisz nauczyć się / potwierdzić, czym jest bootloader w systemie, w którym próbujesz go zainstalować.
LawrenceC
Nawiasem mówiąc, PXE jest standardem Intel / x86 - na Guruplug, która jest kartą ARM opartą na U-boot, możesz mieć kartę ładującą jądro i initrd z hosta TFTP. Ale to nie jest całkiem równoważne z PXE, ponieważ nie ma dostępnych usług BIOS ani UEFI.
LawrenceC
@LawrenceC, dzięki za komentarze. Dokonałem dość znaczących zmian w nadziei na ponowne otwarcie pytania, ale nawet oryginalne było zgodne z wytycznymi.
Dan
2
UEFI i tak nie używa pxelinux.0. To dotyczy PXE, to plik binarny w trybie rzeczywistym. Chcesz UEFI NetBoot , który nie jest PXE. Ale Syslinux i tak naprawdę nie obsługuje ARM. GRUB 2 może jednak.
Daniel B

Odpowiedzi:

0

Oto moje ostateczne ustalenia i rozwiązania, z dużą pomocą komentarzy!

  • Syslinux nie obsługuje ARM
  • Nawet jeśli tak, pxelinux.0dotyczyło to tylko BIOS-u, a nie UEFI
  • Użyj GRUB2 zamiast Syslinux

Zakładając, że serwery PXE (DHCP + TFTP) są już skonfigurowane zgodnie z wieloma przewodnikami,

  1. Skopiuj jądro i initramfs do katalogu głównego TFTP (zwykle /var/lib/tftpboot)
  2. Skopiuj grubaa64.efiz /boot/efi/EFI/centos/do katalogu głównego TFTP (lub ./boot/podkatalogu)
  3. Utwórz plik konfiguracyjny grub.cfgw tym samym katalogu

    (GRUB traktuje /jako katalog główny TFTP. Zmień linuxi initrdw razie potrzeby)

    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. Wskaż serwer DHCP grubaa64.efizamiastpxelinux.0

  5. Otóż ​​to! Spróbuj edytować grub.cfgna serwerze TFTP, a następnie wybierz „Odśwież menu GRUB”, aby zobaczyć, że pobiera nową konfigurację
Dan
źródło
czy muszę zbudować grub2 dla ARM?
elvis.dukaj
Nie powinieneś. Rozpoczynana dystrybucja jest już zbudowana dla ARM. Jeśli tak, lub zainstalujesz GRUB2, powinien on być już zbudowany dla ARM.
Dan