Netaddict



Debian auf dem Mini2440

FIXME - Dieser Artikel ist in Bearbeitung.

Hat man seine SD-Speicherkarte erfolgreich hergerichtet, den Linux-Kernel gebaut und installiert, wird es Zeit das ganze mittels eines Root-Dateisystems zu vervollständigen. Ich habe mich für ein Debian-System entschieden, da Debian sehr verbreitet ist, mit Sicherheitsupdates versorgt wird, ausgereifte Software enthält und weil ich gut mit ihm „kann“. Als Vorlage für diese Anleitung dienten einige andere Artikel im Netz 1) 2) 3).

Stiefel bereitstellen

Debian macht es einem sehr leicht ein funktionierendes System zu erzeugen. Dazu verwendet man das Werkzeug Debootstrap. Dieses lässt sich einfach auf jedem Ubuntu oder Debian-System nachinstallieren (Paketname debootstrap). Das Werkzeug ermöglicht danach das Erstellen eines vollständigen Debian-Ökosystems auf einem beliebigen Pfad im Dateisystem. Ich gehe davon aus, dass die dritte Partition (ext3) auf den Pfad /mnt/rootfs gemountet ist und der Benutzer als root eingeloggt ist.

Debootstrap

Wechseln wir auf die Speicherkarte und lassen wir Debootstrap seine Arbeit verrichten.

cd /mnt/rootfs
debootstrap --verbose --arch armel --foreign lenny ./ http://ftp.de.debian.org/debian

Ich verwende hier Debian Lenny (5.0), natürlich kann Lenny durch die aktuelle Debian-Version ersetzt werden. Je nach Internetanbindung dauert dieser Vorgang einige Minuten. Es werden ca. 140 MB heruntergeladen. Wenn der Vorgang abgeschlossen ist, nehmen wir noch ein paar Einstellungen am installierten System vor.

Geräte erzeugen

Falls man, wie ich, kein udev installieren und nutzen will, muss man alle Gerätedateien erzeugen, die man so braucht. Grundsätzlich ist es unschädlich diese zu erzeugen, auch wenn man später udev einsetzt. Ich empfehle es, in jedem Fall erst mal die Gerätedateien zu erzeugen:

mknod -m 0660 dev/mmcblk0   b 179 0
mknod -m 0660 dev/mmcblk0p1 b 179 1
mknod -m 0660 dev/mmcblk0p2 b 179 2
mknod -m 0660 dev/mmcblk0p3 b 179 3
mknod -m 0660 dev/fb0 c 29 0
mknod -m 0660 dev/input/event0 c 13 64
mknod -m 0660 dev/input/event1 c 13 65
mknod -m 0660 dev/input/event2 c 13 66
mknod -m 0660 dev/ttySAC0 c 204 64
mknod -m 0660 dev/ttySAC1 c 204 65
mknod -m 0660 dev/ttySAC2 c 204 66

Login via Seriell

Um ein Login mittels Terminal-Programm auf der seriellen Schnittstelle zu ermöglichen, bedarf es einer kleiner Änderung an der Datei „“. getty FIXME

Dateisysteme

Nun sorgen wir dafür, dass alle Dateisysteme eingehängt werden können und konfigurieren dazu die fstab, weiterhin setzen wir den Namen des neuen Rechners auf „mini2440“ (ist natürlich frei wählbar), konfigurieren die Paketquellen und lassen alle Daten auf die Karte schreiben. Vorsicht beim Abtippen, keinesfalls ein „/“ vor die Zieldateien tippen, sonst überschreibt man sie die im eigenen System. ;)

echo "proc /proc proc none 0 0" >> etc/fstab
echo "/dev/mmcblk0p1 none swap sw 0 0" >> etc/fstab
echo "/dev/mmcblk0p2 /mnt/kernel ext2 defaults 0 2" >> etc/fstab
echo "/dev/mmcblk0p3 / ext3 defaults 0 1" >> etc/fstab
mkdir mnt/kernel
echo "mini2440" > etc/hostname
echo 'deb http://ftp.de.debian.org/debian lenny main non-free contrib' >> etc/apt/sources.list
sync

Netzwerk

Es ist auch ratsam das Netzwerk zu konfigurieren. Dazu öffnet man die Datei „/etc/network/interfaces“ und befüllt sie mit einer der beiden folgenden Konfigurationsvarianten.

Statisch



FIXME

Dynamisch (DHCP)



die IP-Adresse und das Gateway (Router) passt man in der statischen Variante natürlich an die eigenen Bedürfnisse an. Bei der statischen Variante konfiguriert man noch die DNS-Auflösung, dazu öffnet man die Datei „/etc/resolv.conf“ und trägt dort den Nameserver ein, der verwendet werden soll. Im LAN ist diese Adresse meist gleich mit der Gateway-Adresse (Router).

Kernelmodule

FIXME Jetzt fehlen noch die Kernelmodule, sie werden aus dem Pfad des kompilierten Kernels direkt auf die Root-Partition des neuen Debian-Systems kopiert.

cp /home/<benutzer>/kernel/lib/modules /mnt/rootfs/lib/
sync

Abschluss

Nun umountet man alle Partitionen, zieht die SD-Karte aus dem Rechner und steckt sie in den FriendlyARM.

cd ..
sync
umount /mnt/rootfs
umount /mnt/kernel

Erster Start

Für den ersten Start müssen wir den Bootloader u-boot konfigurieren. Ich gehe davon aus, dass der FriendlyARM immer noch wie hier beschrieben am Rechner angeschlossen ist und die serielle Konsole geöffnet ist. Der Schalter „S2“ wird in die Stellung NAND gebracht und der FriendlyARM angeschaltet. Nun muss schnell in der Konsole eine Taste gedrückt werden, da nach drei Sekunden versucht wird automatisch zu booten. Wenn alles richtig gemacht wurde, muss die Ausgabe so aussehen:

U-Boot 1.3.2-mini2440 (Feb 24 2010 - 13:04:49)

I2C:   ready
DRAM:  64 MB
Flash:  2 MB
NAND:  256 MiB
Found Environment offset in OOB..
USB:   S3C2410 USB Deviced
In:    serial
Out:   serial
Err:   serial
MAC: 08:00:2f:00:ca:fe
Hit any key to stop autoboot:  0 
MINI2440 #

Für den ersten Start müssen wir ein wenig tricksen, da wir ja unser System noch abschließen einrichten müssen, bevor ein sauberer Systemstart möglich ist. Daher hängen wir an die Kernel-Kommandozeile ein „init=/bin/sh“ um nach dem Kernelstart sofort eine Root-Shell zu erhalten. Folgende Befehle werden dazu eingetippt:

setenv bootargs noinitrd mini2440=1tb rootfstype=ext3 root=/dev/mmcblk0p3 rw rootwait rootdelay=1 console=ttySAC0,115200 init=/bin/sh
setenv bootcmd 'mmcinit; ext2load mmc 1:2 0x32000000 uImage; bootm'
saveenv

Die Option „1tb“ steht für das 7„-Display mit Tochfunktion und Backlight4). Der Dateisystem-Typ dürfte klar sein, genauso dass wir von der dritten Partition starten möchten. Die Konsole wird auf die serielle Schnittstelle des FriendlyARM umgeleitet. Die zweite Zeile enthält den Boot-Befehl für den U-Boot. Zuerst soll er die SD-Speicherkarte suchen und dann unser Kernel-Image von der zweiten Partition in den RAM laden und schließlich starten. Die einfachen Anführungszeichen sind hier notwendig, weil sonst die Befehle sofort ausgeführt werden. Schließlich wird mit dem letzten Befehl die Einstellung gespeichert. Bei einem Reset sollte der FriendlyARM nun in das neue Debian-System booten und uns eine Root-Shell zur Verfügung stellen. Alternativ zum Reset kann man auch das Kommando „boot“ eintippen.

MINI2440 # boot
mmc: Probing for SDHC ...
mmc: SD 2.0 or later card found
trying to detect SD Card...
Manufacturer:       0x02, OEM "TM"
Product name:       "SD04G", revision 3.2
Serial number:      XXXXXXXXXX
Manufacturing date: 4/2008
CRC:                0x36, b0 = 1
READ_BL_LEN=15, C_SIZE_MULT=0, C_SIZE=365
size = 0
SD Card detected RCA: 0x7f7f type: SDHC

2041148 bytes read
## Booting kernel from Legacy Image at 32000000 ...
   Image Name:   
   Created:      2010-08-17  18:52:30 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2041084 Bytes =  1.9 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Stiefel fertig schnüren

Ist man auf der Root-Shell angelangt kann man mit der Installation weiter machen. Um sie abzuschließen müssen wir Debootstrap nochmal aufrufen mit folgendem Befehl.

/debootstrap/debootstrap --second-stage

Die Installation dauert eine Weile, man kann währenddessen ruhig mal die leeren Colaflaschen und Pizzaschachteln aus dem Frickelzimmer schaffen und die Bude lüften. :) Wenn am Ende etwas mit „successfully“ steht ist alles glatt gegangen. Mir ist es aber auch schon passiert, dass ich den Befehl ein zweites Mal ausführen musste, weil beim ersten Lauf Fehler auftraten.

Nachbereitung

Das neue System ist installiert und fast fertig, jetzt geht es an die Feinheiten. Zunächst setzen wir ein Root-Passwort, dazu tippt man „passwd“ ein und vergibt eine neues Passwort. Außerdem ist es sinnvoll die Zeitzone richtig einzustellen, dazu gibt man den Befehl „dpkg-reconfigure tzdata“ ein und wählt einen passenden Eintrag aus.

Nun ist es Zeit das neue System starten zu lassen. Dazu tippt man „reboot“ ein. Mit etwas Glück startet der FriendlyARM nun ein vollständiges Debian GNU/Linux-System.

Pakete nachinstallieren

Wer möchte kann mit apt-get Softwarepakete nachinstallieren die er benötigt. Ich empfehle zumindest ssh und popularity-contest nachzuinstallieren. Mindestens die Installation von ssh empfehle ich dringend. Ich hatte über die serielle Verbindung oft massive Probleme, wenn ich längere Konfigurationsdaten per Copy&Paste kopieren wollte. Teilweise fehlten z. B. einzelne Zeichen oder ganze Zeilen.

apt-get install openssh-server popularity-contest

Die Installation des Paketes popularity-contest sorgt dafür, dass das Debian-Projekt ein Gefühl dafür bekommt, wieviele ARM-Architekturen mit Debian betrieben werden. Dies kann Einfluss darauf haben, wie intensiv diese Plattform unterstützt wird.

Grafische Oberfläche

Wer einen FriendlyARM mit Display gekauft hat, möchte dieses vielleicht auch mit einer grafischen Benutzeroberfläche nutzen.

Pakete

Zunächst müssen wir einige Pakete nachinstallieren, für eine folgenden Pakete werden als Basis benötigt:

apt-get install xserver-xorg-input-evtouch xorg xserver-xorg-video-fbdev xfonts-base xinit xfonts-base xfonts-75dpi xserver-xorg-input-mouse xserver-xorg-input-kbd

Damit ist es nach Konfiguration (s. nächster Punkt) möglich einzelne grafische Anwendungen zu starten. Wer einen vollständigen Desktop möchte, dem empfehle ich IceWM zu installieren.

apt-get install 

FIXME

Umgebungen wie z. B. XFCE oder Gnome überfordern den kleinen FriendlyARM leider völlig. Wer mir nicht glaubt und genügend Platz auf der Speicherkarte hat, kann es ja gerne selbst testen. ;)

Konfiguration von xorg

Anlehnend an die Konfiguration, die man auf Mikrocontroller.net5) findet, will ich hier meine eigene veröffentlichen.

xorg.conf
# xorg.conf (X.Org X Window System server configuration file)

section "ServerLayout"
        Identifier     "XFree86 Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" 
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Touchpad0" "CorePointer"
        Option         "OffTime" "10"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
        Option      "XkbModel" "pc105"
EndSection
 
Section "InputDevice"
        Identifier  "Touchpad0"
        Driver      "evtouch"
        Option "CorePointer" "true"
        Option "SendCoreEvents" "true"
        Option "Device" "/dev/input/event1"
        Option "DeviceName" "touchscreen"
        Option "Rotate" "CW"
        Option "SwapY" "2" 
        Option "SwapX" "2"
        Option        "MoveLimit" "10"
        Option        "MinX"        "127"
        Option        "MinY"        "78"
        Option        "MaxX"        "830"
        Option        "MaxY"        "945"
#        Option "Calibrate" "1"
        Option "ReportingMode" "Raw"
        Option "Emulate3Buttons"
        Option "Emulate3Timeout" "50"
EndSection
 
Section "InputDevice"
       Identifier  "Mouse0"
       Driver      "mouse"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        ModelName    "Monitor Model"
        DisplaySize 200 120
EndSection

Section "Device"
        #Option "ShadowFB"      "true"
        Identifier  "Card0"
        Driver      "fbdev"
        Option  "fbdev" "/dev/fb0"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
EndSection

FIXME

Den Inhalt kopiert man in die Datei “/etc/xorg/xorg.conf„. Danach sollte sich mittels des Befehls „startx“ von der Kommandozeile aus auf

Häufige Fehler und Tipps

locales Warnmeldungen von perl

Dies lässt sich lt. Anleitung6) leicht beheben:

apt-get install locales
dpkg-reconfigure locales

Backup des Systems

Da unsere gesamtes System auf einer SD-Speicherkarte liegt, ist es sehr einfach es zu klonen bzw. ein Backup davon zu erstellen. Da SD-Speicherkarten eine begrenzte Lebensdauer haben, ist es eine gute Idee eine Sicherung seines Systems in der Hinterhand zu haben. Am einfachsten ist es die Speicherkarte in einen Kartenleser am Rechner zu legen und mit „dd“ ein Abbild zu erstellen. Ich nehme hier an, dass die Speicherkarte als “/dev/sdb„ erkannt wurde. Man kann mittels „fdisk -l“ aber jederzeit nachsehen, als welches Device die Karte am eigenen PC angebunden wurde. Der folgende Befehl ist als Root auszuführen.

dd if=/dev/sdb of=/home/<benutzer>/mini2440-sd-backup.img

Mit einem ähnlichen Befehl kann man eine solche Backupdatei auch wieder zurückschreiben.

:!: Aufpassen muss man nur, dass man als of (output file) auch tatsächlich die Speicherkarte erwischt. DD überschreibt auch gewissenlos die gesamte Platte eures Rechners, auf dem ihr eure wertvolle Pr0nsammlung lagert. ;-)

dd if=/home/<benutzer>/mini2440-sd-backup.img  of=/dev/sdb
 

 
XHTML 1.1 CSS 2 Creative Commons License
Netaddict Version 6.0 - © 1996-2017 by netaddict.de - Kontakt