summaryrefslogtreecommitdiff
path: root/de/boot-installer/arm.xml
blob: a3952f23adfc4dec283560d9ae94332d9c6b7e7c (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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
<!-- retain these comments for translator revision tracking -->
<!-- original version: 69679 -->

  <sect2 arch="arm" id="boot-image-formats">
    <title>Boot-Image-Formate</title>
    <para>
      Auf ARM-basierten Systemen wird in den meisten Fällen eines
      dieser beiden Formate für die Boot-Images verwendet: a)
      Standard-Linux-Kernel im zImage-Format (<quote>vmlinuz</quote>)
      zusammen mit einer Standard-Linux-Initial-Ramdisk
      (<quote>initrd.gz</quote>) oder b) Kernel im uImage-Format
      (<quote>uImage</quote>) zusammen mit dazu zugehöriger
      Initial-Ramdisk (<quote>uInitrd</quote>).
    </para>
    <para>
      uImage/uInitrd sind Image-Formate, die für die u-boot-Firmware
      ausgelegt wurden, welche auf vielen ARM-basierten Systemen
      eingesetzt ist. Ältere u-boot-Versionen können nur Dateien
      im uImage-/uInitrd-Format booten, daher werden diese Formate oft
      auf älteren armel-Systemen genutzt. Neuere u-boot-Versionen können -
      neben uImage/uInitrd - auch Standard-Linux-Kernel- und Ramdisk-Images
      booten, aber die Befehlssyntax dafür ist etwas anders als beim
      Booten von uImages.
    </para>
    <para>
      Für Systeme, die einen Multiplattform-Kernel verwenden, ist
      zusätzlich zu Kernel- und Initial-Ramdisk-Image noch eine
      sogenannte Gerätebaum-Datei (auch Gerätebaum-Abbild /
      device-tree blob, <quote>dtb</quote>) erforderlich. Diese ist
      spezifisch für jedes unterstützte System und enthält eine
      Beschreibung der jeweiligen Hardware.
    </para>
  </sect2>

  <sect2 arch="arm" id="boot-tftp"><title>Booten per TFTP</title>

&boot-installer-intro-net.xml;

    <sect3 arch="arm" id="boot-tftp-uboot">
      <title>TFTP-Boot in u-boot</title>
      <para>
       Das Booten von Systemen über das Netzwerk mittels der u-boot-Firmware
       erfordert drei Schritte: a) Konfigurieren des Netzwerks, b) Laden
       der Images (Kernel/Initial-Ramdisk/dtb) in den Speicher und c)
       das eigentliche Ausführen des vorher geladenen Codes.
      </para>
      <para>
       Als erstes müssen Sie das Netzwerk konfigurieren, entweder
       automatisch über DHCP, indem Sie dies ausführen:
<informalexample><screen>
setenv autoload no
dhcp
</screen></informalexample>
       oder manuell, indem Sie verschiedene Umgebungsvariablen setzen:
<informalexample><screen>
setenv ipaddr &lt;ip-adresse des clients&gt;
setenv netmask &lt;netmask&gt;
setenv serverip &lt;ip-adresse des tftp-servers&gt;
setenv dnsip &lt;ip-adresse des nameservers&gt;
setenv gatewayip &lt;ip-adresse des standard-gateways&gt;
</screen></informalexample>
       Falls Sie möchten, können Sie diese Einstellungen auch
       fest einrichten mit:
<informalexample><screen>
saveenv
</screen></informalexample>
      </para>
      <para>
       Danach müssen Sie die Images (Kernel/Initial-Ramdisk/dtb)
       in den Speicher laden. Dies wird mit dem tftpboot-Befehl
       erledigt, der zusammen mit der Adresse, an der das Image
       im Speicher abgelegt werden soll, angegeben werden muss.
       Unglücklicherweise kann die Lücke im Speicher von
       System zu System variieren, daher gibt es keine grundsätzliche
       Regel, welche Adresse hierfür verwendet werden muss.                     
      </para>
      <para>
       Auf einigen Systemen legt u-boot einige Umgebungsvariablen mit
       passenden Ladeadressen an: kernel_addr_r, ramdisk_addr_r und
       fdt_addr_r. Sie können überprüfen, ob diese definiert sind,
       indem Sie dies ausführen:
<informalexample><screen>
printenv kernel_addr_r ramdisk_addr_r fdt_addr_r
</screen></informalexample>
       Falls sie nicht definiert sind, müssen Sie die Dokumentation
       des Systems konsultieren bezüglich näherer Angaben zu passenden
       Werten und diese händisch setzen. Für Systeme, die auf
       Allwinner SunXi-SoCs (z.B. dem Allwinner A10,
       Architekturname <quote>sun4i</quote> oder dem Allwinner A20,
       Architekturname <quote>sun7i</quote>) basieren, können Sie
       z.B. folgende Werte nutzen:
<informalexample><screen>
setenv kernel_addr_r 0x46000000
setenv fdt_addr_r 0x47000000
setenv ramdisk_addr_r 0x48000000
</screen></informalexample>
      </para>
      <para>
       Sind die Ladeadressen bereits definiert, können Sie die
       Images von dem vorher definierten TFTP-Server in den Speicher
       laden mit:
<informalexample><screen>
tftpboot ${kernel_addr_r} &lt;dateiname des kernel-images&gt;
tftpboot ${fdt_addr_r} &lt;dateiname des dtb&gt;
tftpboot ${ramdisk_addr_r} &lt;dateiname des initial-ramdisk-images&gt;
</screen></informalexample>
      </para>
      <para>
       Der dritte Schritt ist das Setzen der Kernel-Befehlszeile
       und das eigentliche Ausführen des geladenen Codes. u-boot
       übergibt den Inhalt der Umgebungsvariable <quote>bootargs</quote>
       als Befehlszeile an den Kernel; also können alle Parameter für
       den Kernel und den Installer - wie z.B. die Konsolen-Gerätedatei
       (lesen Sie dazu <xref linkend="boot-console"/>) oder eventuelle
       Voreinstellungsoptionen (Näheres in <xref 
       linkend="installer-args"/> und <xref linkend="appendix-preseed"/>) -
       mit einem Befehl wie dem folgenden gesetzt werden:
<informalexample><screen>
setenv bootargs console=ttyS0,115200 rootwait panic=10
</screen></informalexample>
       Der exakte Befehl zur Ausführung des vorher geladenen Codes hängt
       vom verwendeten Image-Format ab. Bei uImage/uInitrd lautet der Befehl:
<informalexample><screen>
bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
</screen></informalexample>
       Bei nativen Linux-Image ist es:
<informalexample><screen>
bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}
</screen></informalexample>
      </para>
      <para>
       Beachten Sie: wenn Sie Standard-Linux-Images booten, ist es
       wichtig, dass das Initial-Ramdisk-Image nach dem Kernel und der
       DTB geladen wird, da u-boot die filesize-Variable (Dateigröße)
       auf die Größe der letzten geladenen Datei setzt und der
       bootz-Befehl benötigt die Größe des Ramdisk-Images, um korrekt
       zu arbeiten. Beim Booten eines plattformspezifischen Kernels, also
       eines Kernels ohne Gerätebaum-Abbild (DTB), lassen Sie den
       ${fdt_addr_r}-Parameter einfach weg.
      </para>
    </sect3>
  </sect2> 

  <sect2 arch="arm" id="boot-hd-media">
    <title>Booten von USB-Stick in u-boot</title>
    <para>
       Viele moderne Versionen von u-boot haben USB-Unterstützung und
       erlauben das Booten von USB-Massenspeicher-Geräten wie z.B.
       USB-Sticks. Unglücklicherweise können sich die genauen Schritte, die
       dazu nötig sind, von Gerät zu Gerät ein wenig unterscheiden.
    </para>
    <para>
       In u-boot v2014.10 wurde das grundlegende Handling für eine
       Kommandozeile sowie ein Rahmenwerk für automatisches Booten
       (autoboot) eingeführt. Dies erlaubt die Erzeugung generischer
       Boot-Images, die auf jedem System funktionieren, das dieses Rahmenwerk
       implementiert hat. Der &d-i; unterstützt die Installation von
       USB-Stick auf solchen Systemen, aber leider haben noch nicht alle
       Plattformen dieses Rahmenwerk übernommen.
    </para>
    <para>
       Um einen boot-fähigen USB-Stick zur Installation von &debian;
       zu erstellen, entpacken Sie das hd-media-Tarball-Archiv (Näheres
       in <xref linkend="where-files"/>) auf einen USB-Stick,
       der mit einem Dateisystem formatiert ist, welches von der
       u-boot-Version auf Ihrem Gerät unterstützt wird.
       Bei neueren u-boot-Versionen sollten FAT16, FAT32, ext2, ext3
       und ext4 normalerweise funktionieren. Kopieren Sie dann auch die
       ISO-Image-Datei der ersten &debian;-Installations-CD oder -DVD
       auf den Stick.
    </para>
    <para>
      Das autoboot-Rahmenwerk in modernen u-boot-Versionen funktioniert
      ähnlich wie die Optionen für die Bootreihenfolge in einem PC-Bios,
      d.h. auf verschiedenen möglichen Boot-Geräten wird der Reihe nach
      nach einem gültigen Boot-Image gesucht und das erste gefundene wird
      gestartet. Wenn kein Betriebssystem installiert ist, sollte das
      Starten des Systems mit eingestecktem USB-Stick den Installer booten.
      Sie können den USB-Boot-Prozess auch zu jeder Zeit vom
      u-boot-Prompt aus anstoßen, indem Sie den
      <quote>run bootcmd_usb0</quote>-Befehl ausführen.
    </para>

    <para>
       Ein Problem, das beim Booten von einem USB-Stick bei Nutzung der
       seriellen Konsole auftreten könnte, ist eine nicht passende
       Konsolenbaudrate. Wenn die console-Variable in u-boot definiert
       ist, wird das Boot-Skript des &d-i; diese automatisch an den
       Kernel weiterleiten, um das primäre Konsolengerät und - falls
       anwendbar - die Baudrate einzustellen. Unglücklicherweise
       variiert die Handhabung der console-Variable von Plattform zu
       Plattform - auf einigen Plattformen enthält die console-Variable
       die Baurate (wie in <quote>console=ttyS0,115200</quote>), auf
       anderen hingegen lediglich den Gerätenamen (z.B.
       <quote>console=ttyS0</quote>). 
       In letzterem Fall kann es zu einer verstümmelten Konsolenausgabe
       kommen, wenn die Standard-Baudrate bei u-boot und dem Kernel
       nicht übereinstimmt. Moderne u-boot-Versionen verwenden oft
       eine Geschwindigkeit von 115200 Baud, während beim Kernel noch
       der alte traditionelle Wert von 9600 Baud voreingestellt ist.
       Falls dies passiert, sollten Sie die console-Variable händisch
       setzen, so dass Sie die korrekte Baudrate für Ihr System
       enthält, und dann den Installer mit <quote>run bootcmd_usb0</quote>
       starten.
    </para>
  </sect2>

<!-- # None of the arm systems supported in Jessie is able to boot from
     # CD/DVD -> commenting out the "Booting from CD-ROM section" for arm
     
  <sect2 arch="arm"><title>Booten von CD-ROM</title>

&boot-installer-intro-cd.xml;

  </sect2>
-->

<!--

  <sect2 arch="arm" id="boot-firmware"><title>Booten von Firmware</title>

&boot-installer-intro-firmware.xml;

   <sect3 arch="arm" id="boot-firmware-ss4000e">
   <title>Booten des SS4000-E</title>
<para>

Aufgrund von Einschränkungen in der SS4000-E-Firmware ist es derzeit
unglücklicherweise nicht möglich, den Installer ohne Verwendung eines
seriellen Ports zu booten. Um den Installer zu booten, benötigen Sie
ein serielles Nullmodem-Kabel, einen Rechner mit einem seriellen
Port<footnote id="arm-s4ke-port">

<para>
Ein USB-Seriell-Converter funktioniert auch.
</para>

</footnote> und ein Flachbandkabel mit einem männlichen DB9-Anschluß
auf der einen und einem 10-poligen .1" IDC-Stecker auf der anderen
Seite<footnote id="arm-s4k-rib">

<para>
Solch ein Kabel findet sich oft in älteren Desktop-Rechnern mit
eingebauten 9-poligen Anschlüssen für die seriellen Ports.
</para>

</footnote>.

</para><para>

Um den SS4000-E zu booten, verwenden Sie Ihr
Nullmodem-Kabel und das Flachbandkabel, um sich mit dem seriellen Anschluß
des SS4000-E zu verbinden und starten Sie die Maschine neu. Sie müssen
ein serielles Terminal-Programm benutzen, um mit dem Rechner zu kommunizieren;
auf &debian; GNU/Linux-Systemen ist es eine gute Wahl, das Programm
<command>cu</command> aus dem gleichnamigen Paket zu verwenden.
Angenommen, der serielle Port auf Ihrem Rechner ist
<filename>/dev/ttyS0</filename>, benutzen Sie folgende Befehlszeile:

</para>

<informalexample><screen>
cu -lttyS0 -s115200
</screen></informalexample>

<para>

Wenn Sie Windows verwenden, sollten Sie vielleicht das Programm
<classname>hyperterminal</classname> nutzen. Wählen Sie eine
Baudrate von 115200, 8 Bit Wortlänge, kein Stopbit und ein Parity-Bit.

</para><para>

Beim Starten der Maschine werden Sie folgende Ausgabe sehen:

</para>

<informalexample><screen>
No network interfaces found

EM-7210 ver.T04 2005-12-12 (For ver.AA)
== Executing boot script in 1.000 seconds - enter ^C to abort
</screen></informalexample>

<para>

Drücken Sie an diesem Punkt Strg-C, um den Bootloader zu 
unterbrechen<footnote id="arm-s4ke-sec">

<para>
Beachten Sie, dass Sie dazu nur eine Sekunde Zeit haben; falls Sie dies
Zeitfenster verpasst haben, trennen Sie kurz die Stromzufuhr des Rechners und
versuchen Sie es nach dem Start erneut.
</para>

</footnote>. Sie kommen jetzt zum RedBoot-Prompt. Geben Sie folgende Befehle
ein:

<informalexample><screen>
+load -v -r -b 0x01800000 -m ymodem ramdisk.gz
+load -v -r -b 0x01008000 -m ymodem zImage
+exec -c "console=ttyS0,115200 rw root=/dev/ram mem=256M@0xa0000000" -r 0x01800000
</screen></informalexample>

</para><para>
 
Nach jedem <command>load</command>-Befehl erwartet das System die Übermittlung
einer Datei mittels des YMODEM-Protokolls. Wenn Sie cu verwenden, stellen
Sie sicher, dass Sie das Paket <classname>lrzsz</classname> installiert haben,
drücken Sie dann Enter, gefolgt von der <quote>~&lt;</quote>-Escape-Sequenz,
um ein externes Programm zu starten, und führen Sie dann
<command>sb initrd.gz</command> bzw. <command>sb vmlinuz</command> aus.

</para><para>

Alternativ dazu ist es möglich, den Kernel und die Ramdisk mittels HTTP
statt YMODEM zu laden. Dies ist schneller, erfordert jedoch einen funktionierenden
HTTP-Server im Netzwerk. Um diesen Weg zu gehen, schalten Sie zunächst den
Bootloader in den RAM-Modus:

<informalexample><screen>
fis load rammode
g
</screen></informalexample>

</para><para>

Dies führt scheinbar dazu, dass die Maschine neu startet; tatsächlich wird
jedoch reboot in den RAM geladen und die Maschine von dort neu gestartet.
Ohne diesen Schritt würde das System sich im nächsten, zwingend notwendigen
IP-Adressen-Schritt aufhängen.

</para><para>

Sie müssen nochmals Strg-C drücken, um den Bootvorgang zu unterbrechen.
Führen Sie dann folgendes aus:
 
<informalexample><screen>
ip_address -l <replaceable>192.168.2.249</replaceable> -h <replaceable>192.168.2.4</replaceable>
load -v -r -b 0x01800000 -m http /initrd.gz
load -v -r -b 0x01008000 -m http /zImage
exec -c "console=ttyS0,115200 rw root=/dev/ram mem=256M@0xa0000000" -r 0x01800000
</screen></informalexample>

Dabei entspricht <replaceable>192.168.2.249</replaceable> der IP-Adresse
des installierten Systems und <replaceable>192.168.2.4</replaceable> der
IP-Adresse des HTTP-Servers, der die Kernel- und Ramdisk-Dateien enthält.

</para><para>

Der Installer wird nun wie gewöhnlich starten.

</para>
   </sect3>
  </sect2>

-->