MIPS Development
Die Software für den GL.Inet selber kompilieren
Download Debian
Dies ist das Betriebssystem, auf dem die cross kompilierung stattfinden wird. Der folgende Link kann sich ändern, sobald eine neue Version erscheint.
Download QEmu
Mit dieser Software wird ein x86 Emuliert. Von Vorteil ist, dass diese Software keine Adminrechte benötigt.
Genauso kann man auch VirtualBox verwenden. VirtualBox kompiliert den Code um einiges schneller.
Ein paar Infos
OpenWrt source repository
Patch für ältere Versionen
Basis Pakete
Ich gehe davon aus, dass nun ein bereits funktionierendes Debian vorhanden ist. Ansonsten können die weiteren Schritte nicht erfolgen.
Pakete zum installieren:
apt-get -y install ssh mc joe
apt-get -y install subversion build-essential git-core libncurses5-dev zlib1g-dev gawk git
apt-get -y install flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip
Benutzerwechsel
Nun nicht mehr als root weiterarbeiten.
Daten vom repository holen:
git clone git://git.openwrt.org/openwrt.git
cd openwrt
scripts/feeds update -a
scripts/feeds install -a
Konfigurieren des Kernels
Das konfigurieren der eigenen Distribution ist viel Arbeit. Vor allem dauert es extrem lange, bis man alle Bugs (Käfer) draussen hat. Es ist einfacher das fertige "config" File hier herunterzuladen und dann das bereits vorhandene
.config
unkonfigurierte zu ersetzen sowie das
.config.old
.
cp /mein/quellpfad/config /mein/zielpfad/.config
cp /mein/quellpfad/config /mein/zielpfad/.config.old
Nun kann man das config File kontrollieren und evtl. noch weitere Korrekturen anbringen.
make menuconfig
Beispielfoto:
Achtung!!! Das kompilieren dauert einige Stunden bei einer umfassenden konfigurierten Distribution!
Normal kompilieren:
make
Multi Thread (empfohlen):
make -j 5
Debugging (falls etwas nicht funktioniert):
make V=s
Nach der kompilierung
Nun hat man das Basissystem erhalten, das man in den FLASH Speicher vom GL.Inet speichern kann.
cd /tmp/
wget http://URL_zum_herunterladen/openwrt-ar71xx-generic-gl-inet-6416A-v1-squashfs-factory.bin
mtd -r write /tmp/openwrt-ar71xx-generic-gl-inet-6416A-v1-squashfs-factory.bin firmware
Das Gerät macht danach einen Reboot.
Ist der Linux Embedded Computer neu gestartet, kann man sich wie folgt einloggen:
Login mit telnet: 192.168.1.1 Port 23
Nun das Passwort setzen:
Damit alle Geräte das gleiche Passwort haben wird folgendes verwendet:
winterthur
Nun ein Update des Systems machen:
cd /tmp/
wget http://URL_zum_herunterladen/openwrt-ar71xx-generic-gl-inet-6416A-v1-squashfs-sysupgrade.bin
sysupgrade -v /tmp/openwrt-ar71xx-generic-gl-inet-6416A-v1-squashfs-sysupgrade.bin
Sehr Wichtig!!!
Die neu kompilierte Distribution
sollte nicht mit anderen Distributionen gemischt werden. Deshalb muss man nun auch seine eigene Distribution im Gerät eintragen, von wo es die Softwarepakete holen soll.
# Version vom: 18. Januar 2015
# ----------------------------
# base
echo "src/gz base http://URL_zum_herunterladen/ar71xx/packages/base/" >>/etc/opkg.conf
# luci
echo "src/gz luci http://URL_zum_herunterladen/ar71xx/packages/luci/" >>/etc/opkg.conf
# packages
echo "src/gz packages http://URL_zum_herunterladen/ar71xx/packages/packages/" >>/etc/opkg.conf
# routing
echo "src/gz routing http://URL_zum_herunterladen/ar71xx/packages/routing/" >>/etc/opkg.conf
# System
echo "dest root /" >>/etc/opkg.conf
echo "dest ram /tmp" >>/etc/opkg.conf
echo "lists_dir ext /var/opkg-lists" >>/etc/opkg.conf
echo "option overlay_root /overlay" >>/etc/opkg.conf
Crosscompile - C Programmieren
Erstellen von einem C File:
// ****************
// HalloWelt.c
//*****************
#include <stdio.h>
int main(void)
{
printf("Hallo Welt\r\n");
return 0;
}
Erstellen von einem Makefile:
# Kompilieren von: "Hallo Welt"
hallowelt: hallowelt.o
$(CC) $(LDFLAGS) hallowelt.o -o hallowelt
hallowelt.o: hallowelt.c
$(CC) $(CFLAGS) -c hallowelt.c
# Aufraeumen
clean:
rm *.o hallowelt
Erstellen von einem Bash Skript (compile.sh) das alle benötigten Umgebungsvariabeln zusammenstellt:
#!/bin/bash
PFAD=/home/user/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2
PATH=/$PFAD/bin/:$PATH
make clean
make CC=mips-openwrt-linux-gcc STAGING_DIR=$PFAD
Sollte PFAD nicht korrekt sein, dann anpassen (wird bei neueren Version vorkommen).
Dann den kompiliervorgang ausführen mit:
bash /home/user/compile.sh
Nun das Programm auf das Gerät kopieren und ausführen.
--
DanielSchwab - 24 May 2015