This shows you the differences between two versions of the page.
mld:entwicklung:rpi_entwicklungsumgebung [2013/08/27 12:12] MarMic [Einzelnes Addon/Plugin bauen:] |
mld:entwicklung:rpi_entwicklungsumgebung [2015/03/24 11:25] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Einführung in den Bau der MLD 3-rpi ====== | + | ====== Einführung in den Bau der MLD für den rpi ====== |
===== Vorwort: ===== | ===== Vorwort: ===== | ||
- | Da wir immer nach neuen Mitstreitern suchen und einige sicher von der MLD angetan sind, aber doch verschreckt von der Entwicklungsumgebung möchte ich hiermit mal ein Step-by-Step Howto build for MLD3.x zusammentippen. Dieser Teil richtet sich nicht nur an potentielle Entwickler, sondern kann von jedem neuen User Schritt für Schritt nachgestellt werden um selbst die bereitgestellten Addons zu bauen. | + | Da wir immer nach neuen Mitstreitern suchen und einige sicher von der MLD angetan sind, aber doch verschreckt von der Entwicklungsumgebung möchte ich hiermit mal ein Step-by-Step Howto build for MLD-rpi zusammentippen. Dieser Teil richtet sich nicht nur an potentielle Entwickler, sondern kann von jedem neuen User Schritt für Schritt nachgestellt werden um selbst die bereitgestellten Addons zu bauen. |
===== Vorbereitung ===== | ===== Vorbereitung ===== | ||
- | Da MLD3.x für Raspberry Pi auf Raspbian basiert ist es sinnvoll auch ein Raspbian zum Entwickeln zu nutzen. Im Folgenden gehe ich auf den neusten Entwicklungszweig ein und deswegen wird ein Raspbian wheezy benötigt. | + | Da MLD für Raspberry Pi auf Raspbian basiert ist es sinnvoll auch ein Raspbian zum Entwickeln zu nutzen. Im Folgenden gehe ich auf den neusten Entwicklungszweig ein und deswegen wird ein Raspbian wheezy benötigt. |
1. Schritt Raspbian installieren | 1. Schritt Raspbian installieren | ||
Dies kann sowohl auf eine SD Karte geschehen, wenn man direkt auf dem RPI arbeiten möchte, oder in einer Virtuellen Maschine (QEMU), wenn man auf einem normalen PC arbeiten möchte. Eine Anleitung zum installieren von Raspbian unter QEMU ist unter | Dies kann sowohl auf eine SD Karte geschehen, wenn man direkt auf dem RPI arbeiten möchte, oder in einer Virtuellen Maschine (QEMU), wenn man auf einem normalen PC arbeiten möchte. Eine Anleitung zum installieren von Raspbian unter QEMU ist unter | ||
http://xecdesign.com/qemu-emulating-raspberry-pi-the-easy-way | http://xecdesign.com/qemu-emulating-raspberry-pi-the-easy-way | ||
zu finden. | zu finden. | ||
- | Da unter QEMU maximal 256 MB Ram zur Verfügung stehen, ist es sinnvoll eine Auslagerungsdatei zu erstellen, die in der Ramdisk liegt. | + | Da unter QEMU maximal 256 MB Ram zur Verfügung stehen, ist es sinnvoll eine Auslagerungsdatei zu erstellen, die in der Ramdisk liegt. Das geht z.B. so: |
+ | swapfile=$(test -x /run/shm && echo /run/shm || echo /dev/shm)/swapfile | ||
+ | if [ ! -e $swapfile ]; then | ||
+ | echo "Create swapfile '$swapfile'" | ||
+ | qemu-img create -f raw $swapfile 256M | ||
+ | mkswap $swapfile | ||
+ | fi | ||
+ | Die Auslagerungsdatei muss dann beim Start von qemu mit angegeben werden. Das geht z. B. mit der Option (hdb ist in diesem Beispiel das zu verwendende Laufwerksdevice) | ||
+ | |||
+ | -hdb $swapfile | ||
+ | Als letztes muss diese Auslagerungsdatei dann noch im ARM System in der /etc/fstab eingetragen werden, und zwar vor dem bereits vorhandenen swap Laufwerks Eintrag: | ||
+ | /dev/sdb none swap sw 0 0 | ||
- | ===== Raspbian vorbereiten ===== | + | Alles weitere ist in den Anleitungen für MLD-3.0.1 bzw. MLD-4.0.0 beschrieben. |
- | Nach der Installation ist es wichtig Raspbian auf den neusten Stand zu bringen. Das ist wichtig, da die Entwicklungsumgebung so auch Zugriff auf die neusten Libraries und Binaries hat. Also in der Shell oder im Terminal folgendes eingeben: | + | Beim Auschecken der MLD-3 Entwicklungsumgebung muss abweichend der "rpi" Branch gewählt werden. |
- | 1. sudo apt-get update | + | Bei der MLD-4 Entwicklungsumgebung muss nach dem Auschecken folgendes ausgeführt werden: |
- | 2. sudo apt-get dist-upgrade | + | * Config Datei erstellen <code bash>make config</code> |
- | Nun noch einige Basis Pakete installieren um an die Entwicklungsumgebung zu kommen: | + | * Branch auswählen <code bash>echo "git_branch = rpi" >> Makefile.config</code> |
- | 3. sudo apt-get install subversion make mercurial git-core python-software-properties cvs squashfs-tools ipsvd | + | * Ziel System auswählen falls dieses vom Entwicklungssystem abweicht: |
+ | * um RPI 1 Pakete zu bauen <code bash>echo "MACH = armv6l" >> Makefile.config</code> | ||
+ | * um RPI 2 Pakete zu bauen <code bash>echo "MACH = armv7l" >> Makefile.config</code> | ||
- | ===== Holen der Entwicklungsumgebung ===== | ||
- | So nun haben wir Raspbian soweit vorbereitet für unsere Sachen und können anfangen uns die Entwicklungsumgebung zu holen. Die folgenden Befehle wieder in einer Shell oder im Terminal ausführen. | ||
- | Als erstes clonen wir die Entwicklungsumgebung. | ||
- | 1. svn co http://minidvblinux.de/svn-3/MLD/branches/rpi MLD | ||
- | Wenn dabei etwas schief geht hat man sicherlich etwas beim Raspbian vorbereiten vergessen | ||
- | \\ | ||
- | Nun Wechseln wir in den Ordner MLD welcher schon die wichtigsten Werkzeuge für uns beinhaltet. Man könnte jetzt ein make starten dieses würde aber sofort abbrechen weil einige benötigte Raspbian Pakete fehlen. Um nun nicht immer wieder weitere fehlende Raspbian Pakete installieren zu müssen rate ich dazu sich erst einmal die ganze Entwicklungsumgebung zu laden und alle Beziehungen (ab sofort deps) aufzulösen. Klingt schlimmer als es ist. | ||
- | 2. cd MLD | ||
- | Nun holen wir erst mal alle Pakete: | ||
- | 3. make checkout_all | ||
- | Als nächstes lassen wir die deps der Pakete auflösen. | ||
- | 4. sudo apt-get install $(make deps) | ||
- | Nachdem das durchgelaufen ist haben wir eine fertig eingerichtete Entwicklungsumgebung. | ||
- | ===== Einzelnes Addon/Plugin bauen: ===== | + | * [[mld:entwicklung:400_entwicklungsumgebung|4.0.0 Entwicklungsumgebung aufsetzen]] |
- | Die meisten wird wohl nur eins interessieren, wie baue ich einzelne Addons. Das ist ziemlich einfach, vor allem gibt es in der Entwicklungsumgebung Plugins/Addons, welche es aus unterschiedlichsten Gründen (z.B. Stabilität nicht auf die Website geschafft haben). Ich zeige nun anhand eines Beispiels das Bauen eines einzelnen Addons (hier nun dvb-usb). | + | * [[mld:entwicklung:301_entwicklungsumgebung|3.0.1 Entwicklungsumgebung aufsetzen]] |
- | 1. cd dvb-usb | + | |
- | 2. make | ||
- | So das war schon die Zauberei. Die Entwicklungsumgebung wird nun automatisch den Kernel laden (braucht die Header usw.) dann dvb bauen, weil da die dvb-usb Treiber drin sind und diese dann in ein schönes Addon schnürren und nach build/MLD/!_addons legen. Dieses muss man nur noch auf den VDR ablegen unter /etc/addons und per OSD aktivieren. Das kann man nun beliebig mit jedem Ordner (der übrigens immer ein Addon/Plugin repräsentiert) machen. | ||
- | \\ | ||
- | Sollten einzelne Addons nicht bei den Quellen beiliegen, findet sich im Artikel [[MLD|3.0 - Addons erstellen]] eine Beschreibung, wie man neue Addons hinzufügt. | ||
- | |||
- | ===== Alles Bauen ===== | ||
- | Natürlich kann man auch mit einem Rutsch alles auf einmal bauen lassen. Je nach Maschine kann das zwischen einigen Stunden und einigen Tagen dauern. Man wechselt erst einmal wieder nach MLD wenn man nicht sowieso schon da ist und nun: | ||
- | 1. make all | ||
- | und schon ist der Rechner eine Weile beschäftigt. Wenn er fertig ist hat man unter build/MLD/!_addons die Images und alle Plugins/Addons liegen, die es bereits für die MLD in die Entwicklungsumgebung geschafft haben. | ||
- | |||
- | ===== Image Bauen ===== | ||
- | So nun möchten wir uns nicht auf unseren Lorbeeren ausruhen, sondern natürlich ein Addon oder Image bauen. Um die vorgefertigten Images die es auch auf der Website gibt zu bauen reicht ein einfaches | ||
- | 1. make | ||
- | Man beachte dabei, dass wir weiterhin im MLD Ordner sind. Wenn man sein Image individuell anpassen möchte, sollte man eine entsprechende Beschreibung in MLD/Makefile.config hinterlegen. Das kann dann so aussehen: | ||
- | addon_lists = "devel = config.rpi locales network ntp-client webserver ssh lib-x xorg" | ||
- | |||
- | |||
- | ===== Auf dem neusten Stand bleiben ===== | ||
- | Da wir immer mal wieder neue Sachen einchecken lohnt es sich immer wieder mal ein update der Entwicklungsumgebung zu machen. Dabei sollte man auf eine Sachen achten. Erst einmal: | ||
- | 1. svn up | ||
- | |||
- | 2. wenn sich hierbei die modules.list geändert hat (wird angezeigt) muss man 3. Machen ansonsten 4. | ||
- | |||
- | 3. make checkout_all | ||
- | Das Folgende braucht man NUR wenn modules.list sich nicht verändert hat. | ||
- | 4. make update_all | ||
- | Wenn sich durch checkout_all oder update_all Plugins/Addons ändern, werden diese automatisch sauber gemacht. Um nun noch sicherzustellen das wir beim nächsten Bauen keine Probleme bekommen sollten wir nochmal die deps auflösen lassen mit | ||
- | 5. sudo apt-get install $(make deps) | ||
- | Das ist zwar nicht nötig, stellt aber sicher, das ein make all ohne weitere Nachfragen durchläuft. Nun kann man wieder wie gewohnt (siehe Oben) bauen. |