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 (většinou starších 32 bitových) 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. dtb by měl být obsažen přímo ve
firmwaru zařízení, ale ve skutečnosti je často třeba nahrát novější
verzi.
Nastavení konzoly
Archiv pro zavádění ze sítě () a obrazy SD karet
s instalátorem () používají
(platformově závislou) výchozí konzoli, kterou U-Boot definuje
v proměnné console
. Ve většině případů to je sériová
konzole, takže na těchto platformách standardně potřebujete pro
použití instalačního systému sériový kabel.
Na platformách, které podporují též video konzoli, můžete příslušně
upravit proměnnou U-Bootu console
a spustit tak
instalační systém na video konzoli.
Nastavení konzoly
Na architektuře arm64 nemají obrazy &d-i;u pro Stretch povolen grafický
instalátor, tudíž se používá sériová konzole. Firmware by měl konzoli
rozpoznat automaticky, avšak pokud automatika selže, po zavedení
Linuxu z GRUBu uvidíte hlášku Booting
Linux a dál už nic.
Jestliže to je i váš případ, musíte parametry konzoly nastavit
ručně. V nabídce GRUBu stiskněte klávesu e pro
editaci příkazové řádky a upravte část
--- quiet do podoby
console=zařízení,rychlost
například:
console=ttyAMA0,115200n8
Následně stiskněte kombinaci Control
x, čímž bude zavádění pokračovat s novým
nastavením.
Instalace na Juno
Juno používá UEFI, takže je instalace celkem přímočará.
Nejpraktičtější je instalace z USB klíčenky, ovšem aby zavádění z USB
fungovalo, potřebujete aktuální firmware. Sestavení z &url-juno-firmware; po březnu 2015
je ověřeno, že funguje. Více o aktualizaci firmwaru se dozvíte
v dokumentaci k Juno.
Nachystejte si standardní USB klíčenku s obrazem arm64 CD a vložte ji
do jednoho ze zadních USB portů. Následně připojte sériový kabel do
horního 9 pinového sériového portu. Vyžadujete-li síťové připojení,
zapojte ethernetový kabel do zdířky na přední straně.
Spusťte sériovou konzoli s rychlostí 115200, 8 bitů bez parity a Juno
zapněte. Juno by mělo nastartovat z USB klíčenky do nabídky GRUBu.
Nastavení konzoly na Junu zlobí, takže prosté pokračování klávesou
&enterkey; nezobrazí žádný výstup. Nejprve musíte podle () nastavit konzoli na
console=ttyAMA0,115200n8
a teprve pak lze pokračovat v běžné instalaci.
Instalace na Applied Micro Mustang
Tento počítač se běžně dodává s U-Bootem, ale je dostupný i UEFI
firmware. Budete se tedy muset rozhodnout, zda nejprve nainstalujete
UEFI firmware a pak použijete standardní způsob instalace, nebo zda
použijete U-Boot a jeho metody. Pro ovládání
instalačního systému budete muset použít sériovou konzoli, protože
grafická instalace není na architektuře amd64 povolena.
Doporučený postup instalace je pomocí openembedded systému dodávaného
s počítačem nakopírovat &d-i;, jádro a initrd na pevný disk a pak
z těchto souborů zavést instalační systém. Alternativně můžete jádro,
dtb a initrd získat a zavést ze sítě protokolem TFTP (viz část ). Po dokončení instalace je třeba ruční
zásah, aby bylo možno nově nainstalovaný systém zavést.
Spusťte sériovou konzoli s rychlostí 115200, 8 bitů bez parity
a počítač zapněte. Restartujte počítač a až se zobrazí hláška
Hit any key to stop autoboot,
stiskněte libovolnou klávesu. Objeví se výzva
Mustang#, kde můžete použít příkazy
U-Bootu pro nahrání a zavedení jádra, dtb a initrd.
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 přes UEFI
&boot-installer-intro-usb.xml;
Zavedení z USB klíčenky přes 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 ).