Czy można używać vmlinux zamiast uImage?

9

Chcę użyć nieskompresowanego obrazu jądra i uruchomić BeagleBoard. Ogólnie używam uImage do uruchamiania jądra, które jest w skompresowanym formacie. Jak korzystać z nieskompresowanego obrazu jądra?

Sharanya
źródło
Używasz U-Boot jako bootloadera, prawda?
Gilles „SO- przestań być zły”
tak! Czy to możliwe, używając Uboot?
Sharanya

Odpowiedzi:

7

O ile mi wiadomo, U-Boot nie może bezpośrednio uruchomić „surowego” obrazu ELF ( vmlinux). Musisz przekształcić go w uImageformat, który zawiera skompresowany vmlinuxplus kilka dodatkowych bajtów metadanych opisujących adres ładowania jądra. U-Boot FAQ 2.19 wyjaśnia, jak generować uImage; jest dość prosty, używając mkimagenarzędzia w drzewie źródeł U-Boot:

 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

(Możesz potrzebować dodatkowych parametrów wskazujących adres ładowania.)

Gilles „SO- przestań być zły”
źródło
1
Dekompresowanie uImage podczas uruchamiania zajmuje trochę czasu. Muszę to zminimalizować. Pomyślałem więc, dlaczego nie próbuję z nieskompresowanym plikiem vmlinux.
Sharanya
3
Efekt, który chcesz osiągnąć, może być przeciwny do zamierzonego. Czas dekompresji jest zwykle krótszy niż czas kopiowania danych z pamięci flash.
Maciej Kucia,
3
 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

Zmień gzip w powyższym przykładzie na none , a utworzysz nieskompresowany obraz zgodny z U-Boot.

Jim Davis
źródło
1

Jeśli używasz Buildroot, wybierz uImageplik wyjściowy jądra ( BR2_LINUX_KERNEL_UIMAGE=y). Skompiluj normalnie, a Buildroot utworzy również vmlinuxplik w kroku pośrednim. Podczas gdy vmlinuxplik nie jest kopiowany do /output/imageskatalogu można znaleźć w ./output/build/linux-custom/(lub uruchamiając find . -name "vmlinux").

Spearson
źródło