Neutrino-HD Entwicklungsumgebung:OPKG-SystemInstall
Inhaltsverzeichnis
Allgemein
OPKG ist ein einfaches Paketmanagment was seinen Ursprung in IPKG hat. Damit ist es möglich Softwarepakete zu installieren, wieder zu entfernen oder auch zu erneuern.
Damit man dieses System benutzen kann benötigt man ein eingerichtetes Buildsystem von seife Neutrino Buildsystem von seife. Ebenso benötigt man einen USB Stick mit mindestens 512MB sowie angepasste Bootargumente im UBoot damit die CST Box vom USB Stick bootet.
Voraussetzungen
Erstellen eines USB Sticks
Für das Präparieren eines USB Sticks kann man das fertige Script unter scripts/mkusbimage.sh benutzten.
Erstellen von OPKG Paketen
Für alle Targets im Buildsystem mit denen die Librarys, Tools und Binarys erstellt werden gilt das auch automatisch die entsprechenden OPKG Pakete gebaut werden. Nur wenn man eigene Pakete erstellt muss man sich um das erstellen der OPKG Pakete selbst kümmern.
Bereitstellen von OPKG Paketen
Installation von OPKG Paketen
Updaten von OPKG Paketen
Beispiel: von einem minimalen System zu einem lauffähigem Neutrino
Hinweis: Das Buildsystem muss die Targets preqs
crosstool
und bootstrap
erfolgreich durchlaufen haben! Siehe auch doc/README.first!
1.1 Erstellen eines minimalen Root Filesystems
Dazu dient der Aufruf des Targets minimal-systems-pkg
. Dabei wird ein einfaches Basis Filesystem erstellt was auf einen USB Stick kopiert werden kann.
$ make minimal-system-pkgs ... # lauter Build Ausgaben tar -czf /home/user/gitprojects/buildsystem-cs/build_tmp/min-root-coolstream.tar.gz \ --owner=0 --group=0 -C /home/user/gitprojects/buildsystem-cs/build_tmp/install . ===================================================================== A minimal system has been installed in build_tmp/install. A tarball of this installation was created as build_tmp/min-root-coolstream.tar.gz Unpack this onto an empty root fs, which will enable you to install further packages via 'opkg-cl' after configuring in /etc/opkg/. List of installed packages: aaa_base 1-6 busybox 1.18.4-2 glibc-debug 2.8-1 libncurses 5.6-1 opkg 0.1.8-1 procps 3.2.8-1 Have a lot of fun...
Die Ausgabe erfolgt nach build_tmp/install
, dort befindet sich nun das einfache Filesystem.
1.2 Erstellen eines Filesystems mit Neutrino
Alternativ gibt es ein Target mit dem die obigen System Pakete gebaut werden und zusätzlich auch noch Neutrino. Hierfür ist es sinnvoll natürlich vor einem Build die Neutrinosourcen neu abzugleichen, sofern nicht schon zuvor geschehen.
$ make update-neutrino update-svn update-svn-target $ make system-pkgs ... Configuring libz. Configuring libvorbisidec. Configuring libcurl. Configuring libOpenThreads. Configuring libpng. Configuring ffmpeg. Configuring cs-drivers. Configuring cs-libs. Configuring libfreetype. Configuring libid3tag. Configuring libjpeg-turbo. Configuring libmad. Configuring libungif. Configuring neutrino-hd.
1.3 Erstellen aller möglichen Systemtools
Will man ein Filesystem erstellen in dem die meisten Systemtools vorhanden sind bzw. zusätzlich als OPKG Paket gebaut werden dann benutzt man wiederum ein separates Target system-tools-all
dafür. Dieses ist zusätzlich zum Target system-pkgs
auszuführen.
$ make system-tools-all $ make system-pkg
2.1 Vorbereiten eines USB Sticks, der einfache Weg
Nachdem das Filesystem erfolgreich zusammen gestellt worden ist kann man ein Script nutzen welches im Buildsystem von seife enthalten ist um alle nötigen Daten auf einen USB Stick schreiben zu können. Achtung! Das Script erstellt nur ein Image welches dann mit zusätzlichen Tools auf einen USB Stick geschrieben werden muss!
Um also ein USB Image zu erstellen ruft Ihr das Script scripts/mkusbimage.sh
auf.
$ ./scripts/mkusbimage.sh # der Punkt am Anfang ist wichtig und richtig! 1+0 Datensätze ein 1+0 Datensätze aus ein Byte kopiert, 2,158e-05 s, 46,3 kB/s WARNING: You are not superuser. Watch out for permissions. WARNING: You are not superuser. Watch out for permissions. WARNING: You are not superuser. Watch out for permissions. add map loop0-usbstick-1 (252:0): 0 29296 linear /dev/loop0 1 add map loop0-usbstick-2 (252:1): 0 947265 linear /dev/loop0 29297 mkdosfs 3.0.9 (31 Jan 2010) unable to get drive geometry, using default 255/63 mke2fs 1.41.12 (17-May-2010) Dateisystem-Label=root-fs OS-Typ: Linux Blockgröße=1024 (log=0) Fragmentgröße=1024 (log=0) Stride=0 Blöcke, Stripebreite=0 Blöcke 118784 Inodes, 473632 Blöcke 23681 Blöcke (5.00%) reserviert für den Superuser Erster Datenblock=1 Maximale Dateisystem-Blöcke=67633152 58 Blockgruppen 8192 Blöcke pro Gruppe, 8192 Fragmente pro Gruppe 2048 Inodes pro Gruppe Superblock-Sicherungskopien gespeichert in den Blöcken: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 Schreibe Inode-Tabellen: erledigt Erstelle Journal (8192 Blöcke): erledigt Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt Das Dateisystem wird automatisch nach jeweils 20 Einhäng-Vorgängen bzw. alle 180 Tage überprüft, je nachdem, was zuerst eintritt. Dies kann durch tune2fs -c oder -i geändert werden. del devmap : loop0-usbstick-2 del devmap : loop0-usbstick-1 loop deleted : /dev/loop0 the usb boot image is now in build_tmp/usb.img -rw-r--r-- 1 user user 500000000 1. Jun 21:19 build_tmp/usb.img
Das fertige Image findet Ihr unter build_tmp/usb.img
wie aus der letzten Zeile der Ausgaben zu erkennen.
2.2 Vorbereiten eines USB Sticks, der händische Weg
Um diese Ausgabe auf den USB Stick kopieren zu können muss dieser vorbereitet sein. Der Stick muss zwei Partitionen besitzen. Die erste Partition muss mit FAT16 formatiert sein, die zweite Partition mit ext3. Den Inhalt des oben genannten Ordners kopiert man auf die zweite Partition (ext3) vom USB Stick.
Diese Vorgehensweise ist immer dann etwas praktischer wenn man selektiv neue Dateien auf den Stick kopieren will und schon einmal den Schritt 2.1 durchlaufen hat.
3. Nachinstallation von Software per OPKG
Die oben genannten Schritte bauen alle OPKG Pakete die möglich sind. Nicht alle Tools und AddOns werden auch im Filesystem abgelegt sondern müssen dann per OPKG nachinstalliert werden. Um diese OPKG Pakete selbst nachinstallieren zu können benötigt Ihr einen Webserver im Netz und eine entsprechende Konfiguration auf der STB.
3.1 Konfiguration OPKG Client auf der STB
Die Konfigurationsdatei für das OPKG Tools muss in /etc/opkg/ erstellt werden. Als Vorlage gibt es die Datei opkg.conf.example
. Diese copiert Ihr einfach in opkg.conf
.
cp /etc/opkg/opkg.conf.example /etc/opkg/opkg.conf
Nun diese Datei entsprechend Euren Gegebenheiten anpassen. Der Aufbau sollte selbsterklärend sein.
3.2 Konfiguration Webserver für OPKG
Eine spezielle Konfiguration des Webservers für OPKG ist nicht nötig, es reicht ein Verzeichnis innerhalb des Webcontents in dem die Pakete abgelegt werden können. Beachtet die nötigen Berechtigungen damit der http Server die Dateien lesen kann!