Installation von Emdebian Grip auf den Karo TX25

Die folgende Anleitung erklärt die Installation von Emdebian Grip (Squeeze) auf den TX25 SOM der Firma Karo.

Voraussetzung

  • PC oder VM mit installiertem Debian oder Ubuntu
  • Karo TX25 mit dem Starter-Kit V oder einem anderen passenden Carrier-Board.
  • PC mit serieller Schnittstelle (oder USB-to-RS232 Converter) und installierter Terminal-Anwendung (z.B. minicom, Cutecom, PuTTY, etc.)

Root File System erstellen

Wir benutzen Multistrap für das Root-Filesystem gemäss Anleitung: Root-Filesystem

  • karotx25.multistrap
    [General]
    arch=armel
    directory=/opt/multistrap/
    cleanup=true
    retainsources=
    noauth=true
    unpack=true
    bootstrap=Grip Updates
    aptsources=Grip Updates Debian
    
    [Grip]
    packages=ntpdate udev lrzsz isc-dhcp-client ifupdown vim procps iputils-ping psmisc module-init-tools openssl openssh-server cron rsyslog nano
    source=http://www.emdebian.org/grip
    keyring=emdebian-archive-keyring
    suite=squeeze
    
    [Updates]
    packages=apt
    source=http://www.emdebian.org/grip
    keyring=emdebian-archive-keyring
    suite=squeeze-proposed-updates
    
    # fallback
    [Debian]
    packages=
    source=http://ftp.uk.debian.org/debian
    keyring=debian-archive-keyring
    suite=squeeze
  • schroot Konfiguration:
    emdebian-grip-armel.conf
    [emdebian-grip-armel]
    description=Emdebian Grip Squeeze (armel)
    aliases=emdebian-armel
    type=directory
    directory=/opt/multistrap
    root-groups=root
    users=$USER
    groups=sbuild
  • Als Qemu-Binary muss qemu-armel-static kopiert werden.
  • Mount-Punkte (fstab):
    fstab
    # /etc/fstab for Karo TX25
    # 2011-04-07 martin.zueger@ntb.ch
    # device		dir		type	options			dump	fsck
    /dev/mtdblock1		/		jffs2	rw,auto			0	0
    #/dev/mtdblock2		/var/log	jffs2	rw,auto			0	0
    /dev/mmcblk0p1		/media/sdcard	auto	rw,noauto		0	0
    /dev/sda1		/media/usbdisk	auto	rw,noauto		0	0
    
    tmpfs			/tmp		tmpfs	defaults,size=16m	0	0
    tmpfs			/var/tmp	tmpfs	defaults,size=4m	0	0
    proc			/proc		proc	defaults		0	0
    sysfs			/sys		sysfs	defaults		0	0
    usbfs			/proc/bus/usb	usbfs	defaults,noauto		0	0
    tmpfs			/dev		tmpfs	defaults,noauto		0	0
  • Konfiguration für serielles Terminal:
    1. getty auf serielle Schnittstelle legen in /opt/multistrap/etc/inittab
      1. Standard TTYs deaktivieren indem die folgenden Zeilen auskommentiert werden:
        #1:2345:respawn:/sbin/getty 38400 tty1
        #2:23:respawn:/sbin/getty 38400 tty2
        #3:23:respawn:/sbin/getty 38400 tty3
        #4:23:respawn:/sbin/getty 38400 tty4
        #5:23:respawn:/sbin/getty 38400 tty5
        #6:23:respawn:/sbin/getty 38400 tty6
      2. Serielles Terminal aktivieren durch Hinzufügen der folgenden Zeile am Ende der Datei:
        s0:23:respawn:/sbin/getty -L ttymxc0 115200 linux
    2. Sicherstellen, dass der Benutzer root sich am seriellen Terminal anmelden kann. Dazu muss in der Datei /opt/multistrap/etc/securetty folgende Zeile zu finden sein:
      ttymxc0
  • Device-Node Tabelle:
    device_table
     name		type	mode	uid	gid	major	minor	start	inc	count
    /dev/console	c	600	0	0	5	1	0	0	-
    /dev/kmsg	c	660	0	0	1	11	0	0	-
    #/dev/log	s	666	0	0	-	-	-	-	-
    /dev/loop	b	640	0	0	7	0	0	1	8
    /dev/mem	c	640	0	15	1	1	0	0	-
    /dev/null	c	666	0	0	1	3	0	0	-
    /dev/pts	d	755	0	0	-	-	-	-	-
    /dev/random	c	666	0	0	1	8	0	0	-
    /dev/tty	c	666	0	0	5	0	0	0	-
    /dev/tty	c	666	0	0	4	0	0	1	6
    /dev/urandom	c	666	0	0	1	9	0	0	-
    /dev/zero	c	666	0	0	1	5	0	0	-
    /dev/mtdblock1	b	666	0	6	31	1	0	0	-
    /dev/mtdblock2	b	666	0	6	31	2	0	0	-
  • Dateisystemabbild erzeugen:
    # mkfs.jffs2 -n -e 0x20000 -p 0x20000 -l -D dev_table -d /opt/multistrap -o emdebian-squeeze-grip-karotx25.jffs2

Dateien für Installation vorbereiten

Für die Installation auf dem TX25 müssen die benötigten Dateien auf einem TFTP-Server bereit gestellt werden. Am NTB kann hierfür der FTP-Server des INF-Instituts verwendet werden: inf004.ntb.ch1) Die im Folgenden genauer beschriebenen drei Dateien müssen auf den FTP-Server kopiert werden.

Linux Kernel

Als Kernel wird der von Karo gelieferte Linux Kernel in Version 2.6.31 verwendet. Das Image ist auf der dem SOM beiliegenden CD zu finden, oder kann hier heruntergeladen werden:

Linux Kernel und Root File System installieren

Auf dem Karo TX25 ist der Bootloader RedBoot installiert. Dieser kann die benötigten Dateien per FTP auf das SOM laden. Dazu sind folgende Schritte notwendig:

RedBoot> load -r -b 0x80100000 -h 146.136.36.50 pub/xyz/zimage-linux-2.6.31-tx25
RedBoot> fis create linux
load -r -b 0x80100000 -h 146.136.36.50 pub/xyz/emdebian-squeeze-grip-karotx25.jffs2
fis create rootfs

Installation testen

RedBoot> fis load linux
exec -w 1 -c "init=/sbin/init console=ttymxc0 root=/dev/mtdblock1 rootfstype=jffs2"

Weitere Informationen

RedBoot Flash Konfiguration auf dem TX25

Für die obige Anleitung wurde folgende Flash Konfiguration verwendet:

Name              FLASH addr  Mem addr    Length      Datalen     Entry point
--------------------------------------------------------------------------------
RedBoot           0x00000000  0x00000000  0x00040000  0x00000000  0x00000000
rootfs            0x00040000  0x80100000  0x00C00000  0x00900000  0x80100000
userfs            0x00C40000  0x80100000  0x07120000  0x00000000  0xFFFFFFFF
linux             0x07D60000  0x80100000  0x00200000  0x001AAA0C  0x80100000
FIS directory     0x07F60000  0x07F60000  0x0001F000  0x00000000  0x00000000
RedBoot config    0x07F7F000  0x07F7F000  0x00001000  0x00000000  0x00000000

Original Flash Konfiguration wiederherstellen

Durch Eingabe der folgenden Befehle in der RedBoot Konsole kann die original Flash Konfiguration von Karo wiederhergestellt werden:

fis init -f
fis create -s 0 -l 0x06000000 -b 0x80100000 rootfs
fis create -s 0 -l 0x01CC0000 -b 0x80100000 varfs
fis create -s 0 -l 0x00260000 -b 0x80108000 -r 0x80108000 -e 0x80108000 linux
1)
Bitte Ordner mit dem eigenen Benutzernamen erstellen. Dateien und Ordner, die ausserhalb dieses Ordners erstellt werden, werden ohne Vorwarnung wieder gelöscht!