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}. Předpřipravený netboot archiv &debian; poskytuje předpřipravený archiv (&armmp-netboot-tarball;), stačí jednoduše rozbalit na TFTP server a který obsahuje všechny potřebné soubory pro zavádění ze sítě. Součástí je i zaváděcí skript, který automatizuje všechny kroky k zavedení instalátoru. Moderní verze u-bootu podporují vlastnost automatického zavádění z TFTP, která se aktivuje v případě, že neexistuje lokální úložné zařízení (MMC/SD, USB, IDE/SATA/SCSI). Předpokladem je, že máte na síti DHCP server, který klientovi předá adresu TFTP serveru. Pokud byste chtěli automatické zavádění z TFTP vyvolat z příkazového řádku u-bootu, můžete použít následující příkaz: run bootcmd_dhcp Alternativně můžete dodávaný zaváděcí skript nahrát ručně pomocí následujících příkazů u-bootu: setenv autoload no dhcp tftpboot ${scriptaddr} /debian-installer/armhf/tftpboot.scr source ${scriptaddr} Zavedení z USB klíčenky in u-boot Mnohé moderní verze u-bootu podporují USB a umožňují zavádět z úložných USB zařízení, jako jsou třeba USB klíčenky. Přesný postup se ale bohužel liší systém od systému. U-Boot v2014.10 přinesl sjednocené zpracování příkazové řádky a framework pro automatické zavádění. To umožňuje vytvářet obecné zaváděcí obrazy, které pracují na všech systémech implementujících tento framework. &d-i; na těchto systémech podporuje instalaci z USB zařízení. Pro vytvoření USB klíčenky pro instalaci &debian;u musí USB klíčenka obsahovat souborový systém podporovaný u-bootem (novější verze obvykle podporují FAT16, FAT32, ext2, ext3 a ext4). Na tento souborový systém rozbalte archiv hd-media (viz ) a pak přikopírujte ISO obraz prvního instalačního CD/DVD &debian;u. Framework pro automatické zavádění v novějších verzích u-bootu funguje podobně jako volby pro zavádění v BIOSu PC, tj. postupně prozkoumá seznam možných zaváděcích zařízení, zda na nich nenalezne platný zaveditelný obraz a spustí první, který nalezne. Pokud na zařízení není nainstalovaný žádný operační systém, mělo by zasunutí USB klíčenky a zapnutí systému způsobit zavedení instalačního systému. Zavedení z USB můžete také vyvolat ručně na výzvě u-bootu příkazem run bootcmd_usb0. Jedním problémem, se kterým byste se mohli potkat při zavádění z USB a použití sériové konzole, je rozdílné nastavení přenosové rychlosti konzoly. Je-li v u-bootu nastavena proměnná console, předá ji zaváděcí skript jádru, aby ji použilo jako primární konzoli a případně nastavilo přenosovou rychlost. Na některých platformách specifikuje proměnná console i rychlost (např. console=ttyS0,115200), zatímco na jiných obsahuje pouze název zařízení (console=ttyS0). Pokud se výchozí přenosová rychlost u-bootu (často 115200) liší od výchozí přenosové rychlosti jádra (tradičních 9600), vede to ve druhém případě k nečitelnému výstupu. Pokud to nastane, měli byste ručně upravit proměnnou console, aby obsahovala správnou rychlost pro váš systém, a pak zavést instalátor příkazem run bootcmd_usb0. Použití předpřipravených obrazů SD karet Pro mnoho systémů poskytuje &debian; obrazy SD karet, které obsahují u-boot společně s &d-i;em. Tyto obrazy existují ve dvou variantách. Jedna stahuje balíky ze sítě (&armmp-netboot-sd-img;), druhá slouží pro offline instalaci z CD/DVD (&armmp-hd-media-sd-img;). Pro šetření přenosového pásma jsou obrazy rozděleny na systémově závislou část firmware.<systém>.img.gz a společnou část nazvanou partition.img.gz. Pro vytvoření kompletního obrazu je třeba tyto dvě části spojit. Na linuxových systémech můžete použít třeba zcat: zcat firmware.<systém>.img.gz partition.img.gz > kompletni_obraz.img Na Windows musíte nejprve obě části rozbalit (např. pomocí programu 7-Zip) a následně tyto rozbalené části spojit dohromady příkazem copy: copy /b firmware.<systém>.img + partition.img kompletni_obraz.img spuštěným v příkazovém řádku CMD.exe. Kompletní obraz pak můžete zapsat na SD kartu. Na linuxových systémech můžete použít třeba: cat kompletni_obraz.img > /dev/SD_KARTA Po zasunutí SD karty do instalovaného systému a jeho zapnutí se z SD karty automaticky zavede instalační systém. Používáte-li variantu pro offline instalaci, musíte instalačnímu systému zpřístupnit první instalační CD/DVD &debian;u na samostatném médiu, jako je například iso obraz prvního DVD uložený na USB klíčence. Až se v instalaci dostanete k rozdělení disků (viz krok ), můžete na instalační SD kartě smazat či nahradit libovolné oblasti, jelikož po zavedení instalátoru již tento běží kompletně z operační paměti a přístup k SD kartě dále nepotřebuje. Pro instalaci &debian;u tak můžete využít plnou kapacitu SD karty. Nejjednodušším způsobem, jak na kartě vytvořit optimální rozvržení oblastí, je nechat to na instalačním systému (viz ).