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?


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ę

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.