Formáty zaváděcích obrazů Systémy založené na architektuře ARM většinou používají dva formáty zaváděcích obrazů: Standardní linuxové jádro ve formátu zImage (vmlinuz) spolu se standardním linuxovým ramdiskem (initrd.gz). Jádro ve formátu uImage (uImage) ve spojení s odpovídajícím ramdiskem (uInitrd). Formáty uImage/uInitrd jsou speciálně navrženy pro firmware u-boot, který se používá na mnoha ARMových systémech. Starší verze u-bootu uměly zavádět pouze soubory ve formátu uImage/uInitrd, proto se používají hlavně na starších systémech armel. Novější verze u-bootu již umí kromě uImage/uInitrd zavádět také standardní linuxová jádra a initrd, ale syntaxe se trošku liší. Na systémech používajících multiplatformní jádro je kromě jádra a initrd ještě zapotřebí soubor se stromem zařízení (device-tree blob, dtb), který je specifický pro každý systém a obsahuje popis toho konkrétního hardwaru. Zavedení z TFTP &boot-installer-intro-net.xml; Zavedení z TFTP přes u-boot Zavedení ze sítě přes firmware u-boot se skládá ze tří kroků: nastavení sítě, zavedení obrazů jádra, initrd a dtb do paměti a konečně spuštění nahraného jádra. Síť můžete nastavit buď automaticky pomocí DHCP: setenv autoload no dhcp nebo ručně nastavením několika proměnných: setenv ipaddr ip_adresa_klienta setenv netmask maska setenv serverip ip_adresa_TFTF_serveru setenv dnsip ip_adresa_DNS_serveru setenv gatewayip ip_adresa_výchozí_brány Budete-li chtít toto nastavení uložit trvale, použijte příkaz saveenv Nyní musíte nahrát obrazy jádra, initrd a dtb do paměti, což se provádí příkazem tftpboot. jako parametr příkazu musíte zadat adresu v paměti, na kterou se má obraz nahrát. Bohužel, mapa paměti se liší systém od systému a proto zde nemůžeme vypsat pevné adresy platné pro všechny. Na některých systémech si u-boot předdefinovává proměnné prostředí s vhodnými adresami. Jsou to proměnné kernel_addr_r, ramdisk_addr_r a fdt_addr_r. Zda jsou ve vašem případě nastaveny, a připraveny k použití, si můžete ověřit příkazem printenv kernel_addr_r ramdisk_addr_r fdt_addr_r Nejsou-li definovány, budete si muset konkrétní hodnoty zjistit v dokumentaci k vašemu systému a nastavit je ručně. Například na systémech založených na SOC Allwinner SunXi (třeba Allwinner A10, architektura sun4i nebo Allwinner A20, architektura sun7i) můžete použít následující hodnoty: setenv kernel_addr_r 0x46000000 setenv fdt_addr_r 0x47000000 setenv ramdisk_addr_r 0x48000000 Po nastavení adres můžete stáhnout obrazy z dříve definovaného TFTP serveru a nahrát je do paměti příkazy: tftpboot ${kernel_addr_r} název_souboru_s_obrazem_jádra tftpboot ${fdt_addr_r} název_souboru_s_dtb tftpboot ${ramdisk_addr_r} název_souboru_s_obrazem_initrd Nyní zbývá nastavit parametry jádra a spustit ho. U-boot předá jádru parametry přes proměnnou prostředí bootargs, takže do ní nastavte veškeré potřebné parametry jádra a instalačního systému, jako je třeba konzole () nebo přednastavení ( a ). Například: setenv bootargs console=ttyS0,115200 rootwait panic=10 Samotné spuštění jádra závisí na použitém formátu. Pro uImage/uInitrd vypadá příkaz následovně: bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r} a pro nativní linuxový formát takto: bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r} Při zavádění standardních linuxových obrazů je důležité nahrát obraz úvodního ramdisku až po jádru a dtb, jelikož u-boot automaticky uloží do proměnné filesize velikost posledně nahraného souboru. Aby příkaz bootz fungoval správně, potřebuje znát velikost ramdisku, kterou mu předáte právě z proměnné filesize. Jestliže zavádíte jádro sestavené pro konkrétní platformu (tj. bez stromu zařízení), jednoduše vynechte parametr ${fdt_addr_r}.