Buildsystem:bbs: Unterschied zwischen den Versionen

Aus TuxBoxWIKI
Zur Navigation springen Zur Suche springen
(Formatierung angepasst)
(Tools ergänzt)
 
(12 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 13: Zeile 13:


<div style="padding:0.5em; margin-bottom:1em; border: 2px solid #a00;">[[Bild:Stop hand.png]]'''ACHTUNG:'''
<div style="padding:0.5em; margin-bottom:1em; border: 2px solid #a00;">[[Bild:Stop hand.png]]'''ACHTUNG:'''
Entstanden und getestet ist bbs auf einer Debian Strech Linux-Distribution.
Entstanden ist bbs anfänglich auf einer Debian Stretch Linux-Distribution.
 
Getestet auf Debian Stretch, Buster, Kubuntu 19.10.


'''Andere Linux-Distributionen können, sie müssen aber nicht funktionieren!'''
'''Andere Linux-Distributionen können, sie müssen aber nicht funktionieren!'''
Zeile 46: Zeile 48:
* liblzo2-dev
* liblzo2-dev
* ncftp
* ncftp
* mtd-utils
* dosfstools
* dosfstools
Für Debian Systeme:
sudo apt-get -y install git subversion make automake cmake gcc g++ bc bzip2 gawk texinfo libtool-bin bison  flex help2man pkg-config gperf lzma libarchive-dev libncurses5-dev libglib2.0-dev liblzo2-dev ncftp mtd-utils dosfstools
Für andere Systeme sollte das gleiche gelten, allerdings wird es teilweise Unterschiede bei den Paketnamen geben und der für die jeweilige Distribution zuständige Installer muss natürlich verwendet werden (z.B. OpenSuse: zypper usw.).
Um visualisiert am Code arbeiten zu können, empfiehlt es sich zusätzlich die grafische Untertützung von Git (z.B. gitk, git gui) und eine [[IDE]] (z.B. Kdevelop, EMacs usw.) zu installieren.


Nun kann ('''als normaler Benutzer''') das Buildsystem heruntergeladen werden.<br />
Nun kann ('''als normaler Benutzer''') das Buildsystem heruntergeladen werden.<br />
Zeile 69: Zeile 79:


Im verzeichnis 'bbs' sollte ein
Im verzeichnis 'bbs' sollte ein
cd bs4cs
  make toolcheck
  make toolcheck
folgendes ausspucken:
folgendes ausspucken:


  All required tools seem to be installed.
  All required tools seem to be installed.
WARNING: /bin/sh is not linked to bash.
This is not an error, just a hint.


Falls dies der Fall ist, sind einmalig die folgenden make Make-Targets auszuführen:
Falls dies der Fall ist, sind einmalig die folgenden make Make-Targets auszuführen:
  make dfolder
  make dfolder
'''Anmerkung:''' Das Make-Target ''make dfolder'' erstellt hierbei ein Verzeichnis 'download' '''im''' Verzeichnis 'bbs'<br />
Hat man im Überverzeichnis bereits ein (gemeinsamen) Ordner 'download' kann auf diesen verlinkt werden mit:
make dlink
Zum Abschluss der Vorbereitung muss nun noch folgendes Make-Target ausgeführt werden:
  make preqs
  make preqs


Zeile 95: Zeile 107:


Nun kann die cross toolchain gebaut werden mit:
Nun kann die cross toolchain gebaut werden mit:
* ''make crosstool''
make crosstool


Danach noch die restlichen Vorbereitungen durchführen mit:
Danach noch die restlichen Vorbereitungen durchführen mit:
* ''make bootstrap''
make bootstrap


Als nächstes muss der entsprechende Kernel gebaut werden.<br />
Als nächstes muss der entsprechende Kernel gebaut werden.<br />


Für die '''HD51 STB''' kann dies direkt mit:
Für die '''HD51 STB''' kann dies direkt mit:
* ''make kernel''
make kernel
durchgeführt werden.<br />
durchgeführt werden.<br />


Für alle '''Coolstream STBs''' müssen zunächst die Kernel-Sourcen lokal geclont werden, der Kernel kompiliert und in ein Kernel-Image umgewandelt werden.<br />
Für alle '''Coolstream STBs''' müssen zunächst die Kernel-Sourcen lokal geclont werden, der Kernel kompiliert und in ein Kernel-Image umgewandelt werden.<br />
Folgende Kommandos sind hierzu erforderlich:
Folgende Kommandos sind hierzu erforderlich:
* ''make kernel-git''
make kernel-git
* ''make kernel''
make kernel
* ''make kernel-image''
make kernel-image


Jetzt können alle weiteren notwendigen Pakete (incl. Neutrino) gebaut werden mit:
Jetzt können alle weiteren notwendigen Pakete (incl. Neutrino) gebaut werden mit:
* ''make system-pkgs''
make system-pkgs


== Flash-Images ==
== Flash-Images ==


Ein Flash-Image wird erzeugt mit:
Ein Flash-Image wird erzeugt mit:
* ''make flashimage''
make flashimage


Danach kann das Flash-Image mit:
Danach kann das Flash-Image mit:
* ''make flashimage-ftp''
make flashimage-ftp
auf die STB übertragen und mit der Neutrino-Update Funktion unter 'Menü Service -> Software-Aktualisierung -> Lokales Update' geflasht werden.
auf die STB übertragen und mit der Neutrino-Update Funktion unter 'Menü Service -> Software-Aktualisierung -> Lokales Update' geflasht werden.


= Updates =
= Updates =
== Quellcode ==
== Quellcode ==
Das Buildsystem bbs selbst kann mit:
make update-self
aktualisiert werden.
Gibt es Änderungen am Neutrino-Quellcode, so kann das lokale Neutrino-Repository mit:
Gibt es Änderungen am Neutrino-Quellcode, so kann das lokale Neutrino-Repository mit:
* ''make update-neutrino''
make update-neutrino
auf den neuesten Stand gebracht werden.
auf den neuesten Stand gebracht werden.


Gibt es Änderungen in den anderen Repositories, so können diese mit:
Gibt es Änderungen in den anderen verwendeten Repositories, so werden diese mit:
* ''make update-git''
make update-git
aktualisiert und mit:
aktualisiert.
* ''make update-git-target''
 
(Nur) Für alle '''Coolstream STBs''' müssen danach zusätzlich noch die aktualisierten Komponenten mit:
make update-git-target
in das Buildsystem eingespielt werden.
in das Buildsystem eingespielt werden.
Das Buildsystem bbs selbst kann mit:
* ''make update-self''
aktualisiert werden.


== Neutrino Updates ==
== Neutrino Updates ==
=== opkg-Pakete ===
=== opkg-Pakete ===
Nachdem der Quellcode aktualisiert wurde kann, ein neues Neutrino opkg-Paket mit:
Nachdem der Quellcode aktualisiert wurde kann, ein neues Neutrino opkg-Paket mit:
* ''make neutrino-pkg''
make neutrino-pkg
erstellt werden.
erstellt werden.
=== Flash-Image ===
=== Flash-Image ===
Um ein neues Flash-Image mit einem aktualisierten Neutrino opkg-Paket zu erzeugen, muss nach:
Um ein neues Flash-Image mit einem aktualisierten Neutrino opkg-Paket zu erzeugen, muss nach:
* ''make neutrino-pkg''
make neutrino-pkg
erneut ein:
erneut ein:
* ''make flashimage''
make flashimage
ausgeführt werden.
ausgeführt werden.


Das dadurch erzeugte neue Flash-Image kann nun wieder mit:
Das dadurch erzeugte neue Flash-Image kann nun wieder mit:
* ''make flashimage-ftp''
make flashimage-ftp
auf die STB übertragen und mit der Neutrino-Update Funktion unter 'Menü Service -> Software-Aktualisierung -> Lokales Update' geflasht werden.
auf die STB übertragen und mit der Neutrino-Update Funktion unter 'Menü Service -> Software-Aktualisierung -> Lokales Update' geflasht werden.


Zeile 159: Zeile 173:
== "Clean-Targets" ==
== "Clean-Targets" ==
Will man Neutrino doch einmal komplett neu von vorne bauen, genügt ein:
Will man Neutrino doch einmal komplett neu von vorne bauen, genügt ein:
* ''make neutrino-bin-clean''
make neutrino-bin-clean''


== Hilfe ==
== Hilfe ==
Eine Liste nützlicher make-Targets (Befehle) erhält man mit:
Eine Liste nützlicher make-Targets (Befehle) erhält man mit:
* ''make help''
make help
Support bzgl. Fragen, Probleme, Anregungen, etc. gibt es im [https://forum.tuxbox-neutrino.org/forum/viewforum.php?f=90 Tuxbox-Board].
Support bzgl. Fragen, Probleme, Anregungen, etc. gibt es im [https://forum.tuxbox-neutrino.org/forum/viewforum.php?f=90 Tuxbox-Board].



Aktuelle Version vom 17. Mai 2020, 12:53 Uhr


bbs

bbs ist der Nachfolger von bs4cs, welches wiederum ein Spin-Off des Buildsystems von Seife speziell für Coolsteam Set-Top-Boxen war.
Mit der Unterstützung der HD51 Set-Top-Box Platform war der Name bs4cs (buildsystem for coolstream) nicht mehr korrekt und wurde in bbs (bellum's buildsystem) geändert.

Grundlegende Änderungen an der Benutzung oder der Features wurden nicht vorgenommen.

Das Buildsystem erstellt eigentlich .opkg-Pakete, es ist damit aber auch die Erstellung von Neutrino Update .bin-Dateien und kompletten Flash-Images möglich.

Stop hand.pngACHTUNG:

Entstanden ist bbs anfänglich auf einer Debian Stretch Linux-Distribution.

Getestet auf Debian Stretch, Buster, Kubuntu 19.10.

Andere Linux-Distributionen können, sie müssen aber nicht funktionieren!

Am besten erstellt man sich dafür eine eigene virtuelle Maschine und verwendet Debian Strech.

Vorbereitung

Folgende Pakete werden bei Debian Stretch zusätzlich zum minimalen Grundsystem (also ohne X-Desktop, etc.) benötigt:

  • git (installiert automatisch gettext-base und patch)
  • subversion
  • make
  • automake (installiert automatisch autoconf)
  • cmake
  • gcc
  • g++
  • bc
  • bzip2
  • gawk
  • texinfo
  • libtool-bin
  • bison
  • flex
  • help2man
  • pkg-config
  • gperf
  • lzma
  • libarchive-dev
  • libncurses5-dev
  • libglib2.0-dev (installiert automatisch python und zlib1g-dev)
  • liblzo2-dev
  • ncftp
  • mtd-utils
  • dosfstools

Für Debian Systeme:

sudo apt-get -y install git subversion make automake cmake gcc g++ bc bzip2 gawk texinfo libtool-bin bison  flex help2man pkg-config gperf lzma libarchive-dev libncurses5-dev libglib2.0-dev liblzo2-dev ncftp mtd-utils dosfstools

Für andere Systeme sollte das gleiche gelten, allerdings wird es teilweise Unterschiede bei den Paketnamen geben und der für die jeweilige Distribution zuständige Installer muss natürlich verwendet werden (z.B. OpenSuse: zypper usw.).

Um visualisiert am Code arbeiten zu können, empfiehlt es sich zusätzlich die grafische Untertützung von Git (z.B. gitk, git gui) und eine IDE (z.B. Kdevelop, EMacs usw.) zu installieren.

Nun kann (als normaler Benutzer) das Buildsystem heruntergeladen werden.
bbs ist Hardware abhängig, daher muss es für die unterschiedlichen Plattformen in ein separates Verzeichnis geclont werden, z.B.:

git clone https://git.code.sf.net/p/bstuff/bbs bbs-nevis

oder

git clone https://git.code.sf.net/p/bstuff/bbs bbs-apollo

oder

git clone https://git.code.sf.net/p/bstuff/bbs bbs-kronos

oder

git clone https://git.code.sf.net/p/bstuff/bbs bbs-hd51

Anmerkung: Zur Vereinfachung wird im weiteren nur noch vom Verzeichnis 'bbs' gesprochen.
Dies bezieht sich dann auf das jeweilige Plattform-Verzeichnis, also 'bbs-nevis', 'bbs-apollo', 'bbs-kronos' oder 'bbs-hd51'.

Im verzeichnis 'bbs' sollte ein

make toolcheck

folgendes ausspucken:

All required tools seem to be installed.

Falls dies der Fall ist, sind einmalig die folgenden make Make-Targets auszuführen:

make dfolder

Anmerkung: Das Make-Target make dfolder erstellt hierbei ein Verzeichnis 'download' im Verzeichnis 'bbs'
Hat man im Überverzeichnis bereits ein (gemeinsamen) Ordner 'download' kann auf diesen verlinkt werden mit:

make dlink

Zum Abschluss der Vorbereitung muss nun noch folgendes Make-Target ausgeführt werden:

make preqs

Konfiguration und Benutzung

bbs wird über eine Config-Datei im Hauptverzeichnis des Buildsystems konfiguriert.
Am besten kopiert man aus dem Verzeichnis 'doc' die Datei 'config.example' ins bbs-Hauptverzeichnis und benennt diese in 'config' um.

Folgende Variablen sollten mindestens an die jeweiligen Gegebenheiten angepasst werden:

  • MAINTAINER = (Nick)-Name
  • BOXMODEL = hd51, tank, trinity, zee2, zee oder neo
  • STB_IP = IP-Adresse der Set-Top-Box

Nun kann die cross toolchain gebaut werden mit:

make crosstool

Danach noch die restlichen Vorbereitungen durchführen mit:

make bootstrap

Als nächstes muss der entsprechende Kernel gebaut werden.

Für die HD51 STB kann dies direkt mit:

make kernel

durchgeführt werden.

Für alle Coolstream STBs müssen zunächst die Kernel-Sourcen lokal geclont werden, der Kernel kompiliert und in ein Kernel-Image umgewandelt werden.
Folgende Kommandos sind hierzu erforderlich:

make kernel-git
make kernel
make kernel-image

Jetzt können alle weiteren notwendigen Pakete (incl. Neutrino) gebaut werden mit:

make system-pkgs

Flash-Images

Ein Flash-Image wird erzeugt mit:

make flashimage

Danach kann das Flash-Image mit:

make flashimage-ftp

auf die STB übertragen und mit der Neutrino-Update Funktion unter 'Menü Service -> Software-Aktualisierung -> Lokales Update' geflasht werden.

Updates

Quellcode

Das Buildsystem bbs selbst kann mit:

make update-self

aktualisiert werden.

Gibt es Änderungen am Neutrino-Quellcode, so kann das lokale Neutrino-Repository mit:

make update-neutrino

auf den neuesten Stand gebracht werden.

Gibt es Änderungen in den anderen verwendeten Repositories, so werden diese mit:

make update-git

aktualisiert.

(Nur) Für alle Coolstream STBs müssen danach zusätzlich noch die aktualisierten Komponenten mit:

make update-git-target

in das Buildsystem eingespielt werden.

Neutrino Updates

opkg-Pakete

Nachdem der Quellcode aktualisiert wurde kann, ein neues Neutrino opkg-Paket mit:

make neutrino-pkg

erstellt werden.

Flash-Image

Um ein neues Flash-Image mit einem aktualisierten Neutrino opkg-Paket zu erzeugen, muss nach:

make neutrino-pkg

erneut ein:

make flashimage

ausgeführt werden.

Das dadurch erzeugte neue Flash-Image kann nun wieder mit:

make flashimage-ftp

auf die STB übertragen und mit der Neutrino-Update Funktion unter 'Menü Service -> Software-Aktualisierung -> Lokales Update' geflasht werden.

Sonstiges

"Clean-Targets"

Will man Neutrino doch einmal komplett neu von vorne bauen, genügt ein:

make neutrino-bin-clean

Hilfe

Eine Liste nützlicher make-Targets (Befehle) erhält man mit:

make help

Support bzgl. Fragen, Probleme, Anregungen, etc. gibt es im Tuxbox-Board.

bbs Source-Code

bbs erreicht man per Web-Frontend über https://sourceforge.net/p/bstuff/bbs/ci/master/tree/ -> 'History'

Have fun!
bellum