summaryrefslogtreecommitdiff
path: root/cs/preparing/bios-setup/arm.xml
blob: 18a07d3993a48439c2f920de28b7e07a15e843c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<!-- $Id$ -->
<!-- original version: 69757 -->

  <sect2 arch="arm" id="arm-firmware-overview">
  <title>ARM firmware</title>
<para>

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.

</para><para>

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.

</para>
  </sect2>

  <sect2 arch="armhf" id="armhf-uboot-images">
  <title>Obrazy U-bootu poskytované &debian;em</title>
<para>

Na &armmp-uboot-img; 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í
<literal>&lt;systém&gt;.sdcard.img.gz</literal> a na SD kartu se dají
zapsat například tímto příkazem:

<informalexample><screen>
<userinput>zcat <replaceable>&lt;systém&gt;</replaceable>.sdcard.img.gz &gt; /dev/<replaceable>SD_KARTA</replaceable></userinput>
</screen></informalexample>

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í!

</para><para>

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

</para>
  </sect2>


  <sect2 arch="arm" id="uboot-macsetting">
  <title>Nastavení ethernetové MAC adresy v U-bootu</title>
<para>

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.

</para><para>

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.

</para><para>

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ě
<quote>místně spravované</quote> 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 <literal>ca</literal> (jako třeba
<literal>ca:ff:ee:12:34:56</literal>.

</para><para>

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

</para>
  </sect2>

  <sect2 arch="arm" id="uboot-relocation-issues">
  <title>Problémy s přesunem jádra/initrd/stromu zařízení v U-bootu</title>
<para>

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
<computeroutput>Starting kernel ...</computeroutput>, 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.

</para><para>

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í
<literal>bootm_size</literal>, 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
<command>env default bootm_size; saveenv</command>.

</para><para>

Jinou možností, jak obejít problém s přesunem, je v promptu U-bootu
spustit příkaz

<command>setenv fdt_high ffffffff; setenv initrd_high 0xffffffff; saveenv</command>,

kterým zcela zakážete přesun úvodního ramdisku a binárky se stromem
zařízení.

</para>
  </sect2>