<Poprzedni | Spis treści | Następne>
Uruchamianie sieciowe w systemach korzystających z oprogramowania układowego U-Boot składa się z trzech kroków: a) skonfigurowania sieci, b) załadowania obrazów (jądra/początkowego ramdysku/dtb) do pamięci oraz c) rzeczywistego wykonania wcześniej załadowanego kodu.
Najpierw musisz skonfigurować sieć, albo automatycznie przez DHCP, uruchamiając
ustaw automatyczne ładowanie bez dhcp
lub ręcznie, ustawiając kilka zmiennych środowiskowych
ustaw ipaddr ustaw maskę sieci
ustaw ip serwera ustaw dnsip
ustaw ip bramy
Jeśli wolisz, możesz ustawić te ustawienia na stałe, uruchamiając
zapisz v
Następnie musisz załadować obrazy (jądro/początkowy ramdysk/dtb) do pamięci. Odbywa się to za pomocą polecenia tftpboot, któremu należy podać adres, pod którym obraz ma zostać zapisany w pamięci. Niestety mapa pamięci może się różnić w zależności od systemu, więc nie ma ogólnej zasady, które adresy mogą być do tego użyte.
W niektórych systemach U-Boot predefiniuje zestaw zmiennych środowiskowych z odpowiednimi adresami ładowania: kernel_addr_r, ramdisk_addr_r i fdt_addr_r. Możesz sprawdzić, czy są zdefiniowane, uruchamiając
printenv kernel_addr_r ramdisk_addr_r fdt_addr_r
Jeśli nie są zdefiniowane, należy sprawdzić dokumentację systemu pod kątem odpowiednich wartości i ustawić je ręcznie. Dla systemów opartych na Allwinner SunXi SOC (np. Allwinner A10, nazwa architektury „sun4i” lub Allwinner A20, nazwa architektury „sun7i”), można np. użyć następujących wartości:
setenv kernel_addr_r 0x46000000 setenv fdt_addr_r 0x47000000 setenv ramdisk_addr_r 0x48000000
Po zdefiniowaniu adresów ładowania można załadować obrazy do pamięci z wcześniej zdefiniowanego serwera tftp za pomocą
tftpboot ${kernel_addr_r} tftpboot ${fdt_addr_r}
tftpboot ${ramdisk_addr_r}
Trzecia część to ustawienie wiersza poleceń jądra i rzeczywiste wykonanie załadowanego kodu. U-Boot przekazuje zawartość zmiennej środowiskowej „bootargs” jako linię poleceń do jądra, więc wszelkie parametry jądra i instalatora – takie jak urządzenie konsoli (patrz Sekcja 5.3.1) lub opcje wstępnego umieszczania (patrz Sekcja 5.3.2 .XNUMX i Dodatek B) - można ustawić poleceniem takim jak
setenv bootargs console=ttyS0,115200 rootwait panic=10
Dokładne polecenie wykonania wcześniej załadowanego kodu zależy od użytego formatu obrazu. W przypadku uImage/uInitrd polecenie to
bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
i tak jest z natywnymi obrazami Linuksa
bootz ${kernel_addr_r} ${ramdisk_addr_r}:${rozmiar pliku} ${fdt_addr_r}
Uwaga: Podczas uruchamiania standardowych obrazów systemu Linux ważne jest, aby załadować początkowy obraz ramdysku po jądrze i dtb, ponieważ U-Boot ustawia zmienną rozmiaru pliku na rozmiar ostatnio załadowanego pliku, a polecenie bootz wymaga rozmiaru obrazu ramdysku działać poprawnie. W przypadku uruchamiania jądra specyficznego dla platformy, tj. jądra bez drzewa urządzeń, po prostu pomiń parametr ${fdt_addr_r}.