3.6. Než začnete s instalací …

Tato část vás provede nastavením hardwaru, který je občas potřeba před vlastní instalací mírně připravit. Obecně se tím myslí kontrola a případná změna nastavení BIOSu/systémového firmware. BIOS nebo systémový firmware je nejnižší úroveň softwaru, který je využíván zařízeními v počítači, a rozhodujícím způsobem ovlivňuje start počítače po jeho zapnutí.

3.6.1. ARM firmware

Jak jsme již zmínili dříve, na systémech ARM bohužel neexistuje standard pro systémový firmware a proto se různé systémy, které nominálně používají stejný firmware, mohou chovat zcela odlišně. To pramení z faktu, že se ARM architektura používá hlavně v embeded zařízeních, pro které výrobci vytváří vlastní upravené firmwary a přidávají záplaty pro konkrétní zařízení. Výrobci bohužel často zapomenou zaslat své úpravy zpět vývojářům původního firmwaru, takže se jejich změny neobjeví v novějších verzích daného firmwaru.

Výsledkem je, že i nové systémy často používají firmware, který je založený na nějaké prehistorické verzi firmwaru, kterou si výrobce kdysi upravil, přičemž vývoj původního firmwaru mezitím pokračoval a nyní nabízí nové vlastnosti, nebo v některých ohledech jiné chování. Výrobci upravených firmwarů navíc nepojmenovávají integrovaná zařízení konzistentně, takže i když se jedná o stejný základní firmware, je na platformě ARM téměř nemožné poskytnout obecně platné informace.

3.6.2. Obrazy U-Bootu poskytované Debianem

Na .../images/u-boot/ poskytuje Debian obrazy U-Bootu pro nejrůznější armhf systémy, které umí nahrát U-Boot z SD karty. U-Boot je nabízen ve dvou variantách: surové komponenty U-Bootu a předpřipravený obraz pro jednoduché zapsání na SD kartu. Surové komponenty jsou zamýšleny pro pokročilé uživatele, doporučenou cestou jsou předpřipravené obrazy pro SD karty. Obrazy se jmenují <systém>.sdcard.img.gz a na SD kartu se dají zapsat například tímto příkazem:

zcat <systém>.sdcard.img.gz > /dev/SD_KARTA

Jako vždy, zkontrolujte si, zda zapisujete na správné zařízení, protože tím smažete veškerý obsah daného zařízení!

Pokud pro svůj systém naleznete obraz U-Bootu jak u Debianu, tak u výrobce systému, doporučujeme použít verzi z Debianu, jelikož tato bývá novější a mívá více vlastností.

3.6.3. Nastavení ethernetové MAC adresy v U-Bootu

MAC adresa každého ethernetového rozhraní by měla být celosvětově unikátní, resp. musí být unikátní minimálně v rámci dané ethernetové broadcastovací domény. Výrobce si pro sebe obvykle alokuje blok MAC adres z centrálně spravované zásoby (za což zaplatí nějaký poplatek) a pak příslušně nakonfiguruje každé vyrobené zařízení tak, aby mělo unikátní adresu.

V případě vývojářských desek se chce někdy výrobce vyhnout placení poplatků a proto unikátní MAC adresu na ethernetové zařízení nenastaví. V takových případech musí MAC adresu nastavit uživatel. Některé ovladače síťových karet, když zjistí, že MAC adresa není přiřazena, vygenerují náhodnou MAC adresu, která se může při každém restartu měnit. Pro uživatele to pak vypadá, že síťování v zásadě funguje, ale některé služby nemusí být zrovna spolehlivé, jako třeba přiřazování semi-statických IP adres pomocí DHCP na základě MAC adresy.

Aby se předešlo konfliktům se stávajícími, oficiálně přiřazenými MAC adresami, existuje blok adres, které je rezervován pro takzvaně místně spravované adresy. Blok je definován hodnotou dvou konkrétních bitů v prvním bajtu adresy. V praxi to znamená, že se jako lokálně spravovaná adresa dá použít například libovolná adresa začínající hexadecimálním ca (jako třeba ca:ff:ee:12:34:56.

Na systémech používajících jako firmware U-Boot je ethernetová MAC adresa umístěna v proměnné prostředí ethaddr. Adresu můžete zkontrolovat v promptu U-Bootu příkazem printenv ethaddr a nastavit příkazem setenv ethaddr ca:ff:ee:12:34:56. Po nastavení proměnné můžete hodnotu trvale uložit příkazem saveenv.

3.6.4. Problémy s přesunem jádra/initrd/stromu zařízení v U-Bootu

Na některých systémech se starší verzí U-Bootu se mohou objevit problémy s korektním přesunem linuxového jádra, úvodního ramdisku a binárky se stromem zařízení během zavádění. Projevuje se to tak, že U-Boot vypíše hlášku Starting kernel ..., ale systém dál zamrzne bez jakéhokoliv výstupu. Problém byl vyřešen v novějších verzích U-Bootu, tj. od verze v2014.07 dále.

Problém se může projevit i v případě, že systém původně používal verzi U-Bootu starší než v2014.07 a teprv následně byl aktualizován. Aktualizace U-Bootu totiž obvykle nemění stávající proměnné prostředí a oprava problému vyžaduje, aby se nastavila nová proměnná prostředí bootm_size, což U-Boot provádí automaticky pouze u nových instalací v čistém prostředí. Ručně tuto novou proměnnou nastavíte v promptu U-Bootu příkazem env default bootm_size; saveenv.

Jinou možností, jak obejít problém s přesunem, je v promptu U-Bootu spustit příkaz setenv fdt_high ffffffff; setenv initrd_high 0xffffffff; saveenv, kterým zcela zakážete přesun úvodního ramdisku a binárky se stromem zařízení.