EinfĂŒhrung in das Yocto-Projekt
Yocto Project ist ein kollaboratives Open Source-Projekt zur Vereinfachung der Entwicklung von Distributionen fĂŒr eingebettete Systeme. Yocto enthĂ€lt eine groĂe Anzahl von Vorlagen, Metadaten und Build-Tools. In Yocto Project können Sie eine groĂe Anzahl von BSP-Schichten (Platform Support Package) fĂŒr alle Arten von Hardwareplattformen verbinden.
Der Hauptzweck des Artikels ist der Versuch, die Zusammenstellung eines typischen Distributionspakets im Yocto-Projekt am Beispiel des bekannten Multimedia-Centers Kodi, Version 17.6, fĂŒr einen Raspberry Pi 3B-Computer mit einer Karte zu zeigen.
Wenn Sie sich irgendwo tief in Ihrer Seele als Sammler fĂŒhlen, sich aber noch nicht entschieden haben, was Sie sammeln möchten, dann ist dieser Artikel fĂŒr Sie. Wenn Sie das Yocto-Projekt bereits in Ihrer tĂ€glichen Arbeit verwenden, können Sie durch diesen Artikel scrollen. Gehen Sie direkt zum letzten Kapitel und machen Sie sich bereit.
Der Artikel ist rein praktisch und zeigt die Möglichkeit, die Erfolge des Yocto-Projekts und von OpenEmbedded fĂŒr den Aufbau des Multimedia-Centers "Kodi" zu nutzen. Yocto-Ebenen werden mit dem Repo-Dienstprogramm von Google verwaltet. Ein Artikel im Dokument dieser Reihe.
Also: lass uns gehen.
Inhalt:
Installieren Sie Yocto Project unter Ubuntu
Distributions-Build-
Engine in Yocto Project
Verwenden von OpenEmbedded mit dem Yocto-Projekt
Platform Support
Package (BSP)
Verwalten Sie Yocto-Ebenen mit Repo
Installieren Sie Repo
Verteilungserstellungsmanifest
Manifestierter
InhaltManifest
BeschreibungBs-Manifest-
StrukturPoky-Variablen
initialisierenRepo-
InitialisierungRepo
SyncErstellen einer Yocto-Projektkonfiguration
Konfigurationsdatei build / conf / local.conf
Konfigurationsdatei build / conf / bblayers.conf
Ebene zum Zusammenbau eines Multimedia-Centers
Schichtstruktur
Ebenenkonfiguration
Zusammensetzung der Rezepte-Berserker
Zusammensetzung des Rezeptkerns
Zusammensetzung des Rezeptkerns
Kompositionsrezepte -Medienzentrum
Zusammensetzung der Rezepte-Multimedia
Kodi Build
Rezept ErgĂ€nzungHinzufĂŒgen eines neuen Elements zum Kodi-EinstellungsmenĂŒ
Maximale Puffereinstellungen fĂŒr Video
Fernsehen ĂŒber IPTV
Youtube mit dem Kodi Plugin ansehen
Konsolen- Shell-Netzwerkkonfigurationserweiterung
Verteilungserstellungsrezept
Eine kurze Anleitung zum Erstellen eines Verteilungsimages
NachtragInstallieren Sie Yocto Project unter Ubuntu
Um die Distribution mit dem Yocto Project unter Ubuntu zu erstellen, mĂŒssen Sie die folgenden Pakete installieren:
sudo apt-get install -y --no-install-suggests --no-install-recommends \ gawk wget git-core diffstat unzip texinfo gcc-multilib \ build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \ xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \ xterm
Pakete werden mit dem Befehl
apt-get install und dem
Befehl skalo zur Eskalation von Berechtigungen
installiert . Im Ubuntu-System ist dies eine weit verbreitete Praxis, wenn der Befehl sudo zum AusfĂŒhren von Verwaltungsaktionen verwendet wird (beim Erstellen des Hauptbenutzers des Systems wird er automatisch in der sudo-Gruppe registriert).
Detaillierte Installationsanweisungen finden Sie
hier:Distributions-Build-Engine in Yocto Project
Im Yocto-Projekt wird jede Programmeinheit anhand eines Montagerezeptes beschrieben. Die Rezeptbeschreibungssprache Ă€hnelt "bash" mit der Möglichkeit, Codeteile in die Python-Sprache einzufĂŒgen. Grundlegende
Syntaxinformationen finden Sie im Yocto Project-Handbuch . Je nach Verwendungszweck kann eine Reihe von Baugruppenrezepten zu separaten Montageschichten kombiniert werden.
Die Ebenen sind in hardwareabhÀngige Ebenen unterteilt: BSP-Ebenen, UI-Ebenen (BenutzeroberflÀche), bestimmte Yocto-Ebenen sowie Ebenen, die bestimmte Funktionen implementieren:
B. Ebenen von OpenEmbedded => Multimedia, Python, Perl, Ruby, Networking, Systemd, Webserver usw.
Verwenden von OpenEmbedded mit dem Yocto-Projekt
Wenn Sie jedoch das Yocto-Projekt verwenden, benötigen Sie mit Sicherheit Ebenen mit zusĂ€tzlichen Funktionen, d. H. Eine groĂe Auswahl an Rezepten fĂŒr alle Gelegenheiten. Und es gibt so ein Set - das sind Rezepte von OpenEmbedded. OpenEmbedded ist eine Infrastruktur zum Erstellen von Paketen fĂŒr Embedded Linux.
OpenEmbedded ist vollstĂ€ndig kompatibel mit dem Yocto-Projekt, da dieses Projekt als Grundlage fĂŒr das Yocto-Projekt verwendet wurde. Vielleicht hat das Yocto-Projekt deshalb etwas bessere StabilitĂ€t, bessere Dokumentation und etwas besseren Support (aber im Grunde ist es immer noch dasselbe OpenEmbedded).
Platform Support Package (BSP)
Das Board Support Package ist eine separate, spezialisierte Schicht (en) fĂŒr eine bestimmte Karte, die die Hardwarefunktionen der Plattform definiert, d. H. implementiert die spezifischen Dinge, die eine Karte von einer anderen unterscheiden: Prozessorfunktionen, Interrupts, Adressierung, Bootloaderfunktionen, Videoadapterfunktionen (GPU) usw.
Dieser Artikel verwendet die BSP-Schicht -
meta-raspberrypiDas Layer-Repository befindet sich unter:
git.yoctoproject.org/git/meta-raspberrypiVerwalten Sie Yocto-Ebenen mit Repo
Yocto Project kann eine groĂe Anzahl von Ebenen von verschiedenen Lieferanten - GerĂ€teentwicklern - verwenden, und all dies muss irgendwie verwaltet werden. Stellen Sie sich vor, Sie haben ein Dutzend verschiedene Boards und jedes Board verfĂŒgt ĂŒber ein separates BSP-Git-Repository. Dies berĂŒcksichtigt nicht die Infrastruktur des Yocto-Projekts selbst sowie mögliche zusĂ€tzliche Funktionen von OpenEmbedded.
In einer solchen Situation kommen Sie nicht mit einem separaten einfachen Installationsskript davon. Willy-nilly, muss nach Werkzeugen suchen, die es gut können. Noch mehr als gut. Eines der besten Tools dieser Art ist das Google-Dienstprogramm Repo.
Repo ist das Hauptwerkzeug zum Verwalten von GIT-Repositorys beim Erstellen des Android-Betriebssystems mit seiner groĂen Codebasis. Mit Repo können Sie ein Dutzend, wenn nicht hundert separate Git-Repositorys in einem Projekt verwalten, deren Versionen Sie sorgfĂ€ltig in einer XML-Datei des
Manifests angeben können
und fĂŒr die korrekte Synchronisation aller Versionen aller Repositorys mĂŒssen Sie nur einen Befehl ausfĂŒhren
Repo-SynchronisierungInstallieren Sie Repo
Mit den folgenden Befehlen können Sie Repo in Ihrem
~ / bin -Ausgangsverzeichnis installieren
(Der Befehl curl kann separat installiert werden: sudo apt-get install curl)
PATH=${PATH}:~/bin mkdir ~/bin curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
und in Zukunft mĂŒssen Sie nur noch den Befehl in der Konsole verwenden:
repooder so
Wenn das Verzeichnis HOME / bin nicht automatisch mit dem Standardstartpfad hinzugefĂŒgt wird
siehe Datei HOME / .profile
$
$ PATH = $ {PATH}: ~ / bin
$ repo
$
Verteilungserstellungsmanifest
Die im Rahmen des Artikels gesammelte Distribution muss ich so nennen. Lass es der Name
Torvin sein . Mit dem Codenamen Torvin wird es eine minimalistische Linux-Distribution mit einem einzigen Programm enthalten. Dies bezieht sich auf ein Anwendungsbenutzerprogramm - Kodi und nichts weiter (alles andere ist eine Systemebene). FĂŒr ein Multimedia-Center ist dies meiner Meinung nach völlig ausreichend.
Manifestierter Inhalt
Die Datei
torvin-0.2.5.xml wird zum Verwalten von Verteilungsebenen verwendet
. <?xml version="1.0" encoding="UTF-8"?> <manifest> <default sync-j="4" revision="rocko"/> <remote fetch="https://git.yoctoproject.org/git" name="yocto"/> <remote fetch="https://github.com/openembedded" name="oe"/> <remote fetch="https://github.com/berserktv" name="bs"/> <project remote="bs" revision="master" name="bs-manifest" path="sources/bs-manifest"> <linkfile dest="setup-environment" src="setup-environment"/> <linkfile dest="shell.sh" src="raspberry/shell.sh"/> <linkfile dest="sources/base" src="raspberry/rocko"/> </project> <project remote="yocto" revision="rocko" name="poky" path="sources/poky"/> <project remote="oe" revision="rocko" name="meta-openembedded" \ path="sources/meta-openembedded"/> <project remote="yocto" revision="rocko" name="meta-raspberrypi" \ path="sources/meta-raspberrypi"/> <project remote="bs" revision="rocko" name="berserk" path="sources/berserk"/> </manifest>
Manifest Beschreibung
Zu Beginn des Manifests bezeichnen
Remote- Tags zwei Haupt-GIT-Repositorys und ein Hilfs-Repository:
https: ââgit.yoctoproject.org / git - Yocto-Repository mit dem Namen
yoctohttps: ââgithub.com / openembedded - OpenEmbedded-Repository mit dem Namen
oehttps: ââgithub.com / berserktv - Hilfs-GIT-Repository mit dem Namen
bsIm nĂ€chsten Teil des Manifests arbeiten wir mit abgekĂŒrzter Benennung mit Projekten, die sich in diesen Repositorys befinden. Das
Projekt- Tag enthÀlt die folgenden Attribute:
remote - Der Name des Remote-Repositorys
Revision - Der Name des Zweigs oder der Hash-Version
name - Name des Projekts im angegebenen Repository
Pfad - Der lokale Projektpfad in Ihrem Dateisystem
<project remote="bs" revision="master" name="bs-manifest" path="sources/bs-manifest"> </project> xml : git clone https://github.com/berserktv/bs-manifest -b master sources/bs-manifest
Im Hauptteil des
Projekt- Tags habe ich Befehle zum Erstellen symbolischer Links zur Infrastruktur von Hilfsskripten fĂŒr die Erstinitialisierung und den regelmĂ€Ăigen Start des von mir
benötigten Poky- Build-Systems angegeben
linkfile <project remote="bs" revision="master" name="bs-manifest" path="sources/bs-manifest"> <linkfile dest="setup-environment" src="setup-environment"> <linkfile dest="shell.sh" src="raspberry/shell.sh"> <linkfile dest="sources/base" src="raspberry/rocko"> </project> : ln -s src dest .. # ln -s sources/bs-manifest/setup-environment setup-environment ln -s sources/bs-manifest/raspberry/shell.sh shell.sh # , # cd sources ln -s bs-manifest/raspberry/rocko base
Bs-Manifest-Struktur
âââ COPYING.MIT
âââ Himbeere
â â rocko
â â âââ conf
Bl â â â bblayers.conf
â â â â local.conf
Vin â â torvin-0.2.5.xml
â â shell.sh
âââ README.md
âââ Setup-Umgebung
Das
bs-manifest- Projekt wird fĂŒr ein flexibles Konfigurationsmanagement verwendet, wobei die Assemblys verschiedener Versionen der Distribution berĂŒcksichtigt werden. Ich habe diese Version - 0.2.5
Poky-Variablen initialisieren
Die
Setup-Umgebung fĂŒr das Initialisierungsskript wurde aus dem Freescale Community-Projekt ĂŒbernommen (in der Yocto-Umgebung ist dies eine gĂ€ngige Lösung). Das Skript ist fĂŒr die Initialisierung der Variablen des Poky-Build-Systems verantwortlich. Das Skript erstellt eine Verzeichnisstruktur, in die es sehr gut unterteilt ist:
- build - Build- Verzeichnis
- Quellcode fĂŒr Assembly-Assembly-Rezepte
- download - Verzeichnis zum Herunterladen von Programmcode (Git-Datenbanken, tar.gz-Archive)
Der Inhalt des Setup-Umgebungsskripts kann hier angezeigt
werden:Inhalt des Shell.sh-Skripts Dieses Root-Skript dient zum Initialisieren der Konfigurationsvariablen der Build-Umgebung und wird normalerweise zu Beginn einer Sitzung aufgerufen.
Repo-Initialisierung
Um Repo zu initialisieren, mĂŒssen Sie den folgenden Befehl ausfĂŒhren:
mkdir torvin cd torvin repo init -u https:ââgithub.com/berserktv/bs-manifest -m raspberry/rocko/torvin-0.2.5.xml
Dabei teilt
-u https: ââgithub.com / berserktv / bs-manifest GIT den Pfad zum Manifestprojekt mit
Hinweis: Sie können auch
-b Baumname angeben
(Wenn Sie den Schalter -b nicht angeben, wird der Hauptzweig angenommen (standardmĂ€Ăig))
Dabei gibt der Pfad
-m Himbeere / Rocko / Torvin-0.2.5.xml zur Konfigurationsdatei Folgendes an:
- Der Name der Hardwareplattform, fĂŒr die die Montage ausgefĂŒhrt wird - Himbeere
- Der Name des Hauptarbeitszweigs von Yocto / OpenEmbedded lautet rocko
- Der Codename der Version lautet torvin (alle Versionen der 0.2.x-Serie)
- Die digitale Versionsnummer, die zusammengebaut wird, ist 0.2.5
Repo Sync
FĂŒhren Sie zum Booten oder anschlieĂende Synchronisieren einfach den folgenden Befehl aus:
repo sync
Wenn Sie im Revisionsattribut einen Hash-Commit- oder Tag-Namen haben, Ă€ndert sich die Version fĂŒr dieses Git-Repository nicht. Dabei werden alle neuesten Versionen von GIT-Projekten abgerufen, die in der Manifestdatei angegeben sind (Zweige werden normalerweise angegeben). Der Tag-Name kann wie folgt angegeben werden: revision = "refs / tags / v0.2.5"
Erstellen einer Yocto-Projektkonfiguration
Nachdem der Befehl repo sync ausgefĂŒhrt wurde, können Sie mit der Erstellung der Hauptkonfiguration des Yocto-Projekts beginnen:
./shell.sh
Nach Abschluss des Skripts wird das Verzeichnis
build / conf erstellt:
mit zwei Hauptdateien:
- local.conf - Assembly- Steuervariablen :
Plattformname, Art der Verteilung und Build-Pakete usw. - bblayers.conf - Konfiguration der verbundenen Ebenen des Yocto-Projekts
StandardmĂ€Ăig sucht das Setup-Umgebungsskript nach
source / base / confErstkonfiguration und wenn
local.conf und
bblayers.conf Dateienexistieren, werden sie nach
build / conf kopiert
(Siehe die Variable TEMPLATES in der Setup-Umgebung.)
d.h. Dateien stammen aus den Quellen / bs-manifest / raspberry / rocko / conf
Siehe Erstellen eines Symlinks zur Basis
Konfigurationsdatei build / conf / local.conf
Ein- / Ausblenden MACHINE ??= 'raspberrypi3' DISTRO ?= 'poky' PACKAGE_CLASSES ?= "package_deb" EXTRA_IMAGE_FEATURES ?= "debug-tweaks" USER_CLASSES ?= "buildstats image-mklibs image-prelink" PATCHRESOLVE = "noop" BB_DISKMON_DIRS = "\ STOPTASKS,${TMPDIR},1G,100K \ STOPTASKS,${DL_DIR},1G,100K \ STOPTASKS,${SSTATE_DIR},1G,100K \ STOPTASKS,/tmp,100M,100K \ ABORT,${TMPDIR},100M,1K \ ABORT,${DL_DIR},100M,1K \ ABORT,${SSTATE_DIR},100M,1K \ ABORT,/tmp,10M,1K" PACKAGECONFIG_append_pn-qemu-native = " sdl" PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl" CONF_VERSION = "1" DL_DIR ?= "${BSPDIR}/downloads/"
Konfigurationsdatei build / conf / bblayers.conf
Die Hauptvariablen der Datei local.conf, auf die Sie achten mĂŒssen:
- MASCHINE - der Name der Plattform, unter der die Montage durchgefĂŒhrt wird
- DISTRO - Name der Verteilungskategorie
- PACKAGE_CLASSES - Paketformat fĂŒr die Installation von Software
- LICENSE_FLAGS_WHITELIST - Verwendung zusÀtzlicher Lizenzen
Spezifische Einstellungen fĂŒr die Raspberry Pi-Board-Familie
- GPU_MEM = "128" - Die GröĂe des Videospeichers fĂŒr den GPU-Videoadapter (aus dem RAM zugewiesen)
- GPU_MEM_256 = "112" - das gleiche gilt nur fĂŒr Karten mit einer Gesamt-RAM-GröĂe von 256 MB
- GPU_MEM_512 = "160" - das gleiche gilt nur fĂŒr Karten mit einer GesamtspeichergröĂe von 512 MB
- GPU_MEM_1024 = "320" - Gleiches gilt nur fĂŒr Karten mit einer Gesamt-RAM-GröĂe von 1024 MB
Hinweis:
Wenn Sie beispielsweise nur die Variable GPU_MEM = "128" belassen,
dann fĂŒr alle RPI-, RPI2-, RPI3-Karten
unabhÀngig von der Menge des realen RAM
auf der Karte wird immer fĂŒr die GPU zugewiesen - 128Mb
(und die gesamte RAM-GröĂe nimmt um diesen Wert ab)
Wenn alle Variablen angegeben sind, haben die Anweisungen GPU_MEM_256, GPU_MEM_512, GPU_MEM_1024 höhere PrioritÀt.
Informationen zum Zusammenstellen des Multimedia-Centers finden Sie zusÀtzlich zu den regulÀren Yocto-Ebenen in der Datei bblayers.conf
${BSPDIR}/sources/poky/meta \ ${BSPDIR}/sources/poky/meta-poky \ ${BSPDIR}/sources/poky/meta-yocto-bsp \
Ich habe vier Ebenen mit zusÀtzlichen Funktionen von OpenEmbedded verbunden.
Kodi Multimedia Center - ist ein komplexes Programm, das eine groĂe Anzahl externer Bibliotheken verwendet. Sie mĂŒssen jede Bibliothek mit einem Build-Rezept erstellen. Wenn möglich, verwende ich daher alle Rezepte von OpenEmbedded in der Kategorie
MultimediaIch habe also eine Multimedia-Ebene angeschlossen und die Ebenen, von denen es abhÀngt
${BSPDIR}/sources/meta-openembedded/meta-oe \ ${BSPDIR}/sources/meta-openembedded/meta-python \ ${BSPDIR}/sources/meta-openembedded/meta-networking \ ${BSPDIR}/sources/meta-openembedded/meta-multimedia \
Dann wird eine weitere OpenEmbedded-Ebene verbunden, um mit Dateisystemen zu arbeiten
${BSPDIR}/sources/meta-openembedded/meta-filesystems \
AuĂerdem wurde die BSP-Hauptschicht fĂŒr die Raspberry Pi-Plattform verbunden
${BSPDIR}/sources/meta-raspberrypi \
Nun, ganz am Ende ist eine zusĂ€tzliche Ebene verbunden, die fĂŒr die Zusammenstellung des Verteilungsbildes mit der FunktionalitĂ€t des "Multimedia Centers" verantwortlich ist.
${BSPDIR}/sources/berserk/meta-berserk \
Ebene zum Zusammenbau eines Multimedia-Centers
Meiner Meinung nach ist das Yocto-Projekt ein industrieller MĂ€hdrescher zur Erstellung eingebetteter Distributionen. Wenn Sie jedoch jemals mit dem Buildroot-Build-System gearbeitet haben, erscheint Ihnen Yocto möglicherweise umstĂ€ndlich. Es verwendet eine groĂe Menge an freiem Festplattenspeicher. FĂŒr den normalen Betrieb benötigt Yocto etwa 80 bis 100 GB freien Speicherplatz. Dabei wird normalerweise die Baugruppe nur fĂŒr eine Plattform berĂŒcksichtigt.
Yocto erfĂŒllt seinen Hauptzweck - die UnterstĂŒtzung möglichst vieler verschiedener Hardwareplattformen. Dies erfordert den flexibelsten Mechanismus zum Wechseln von Baugruppen. Und dieser Mechanismus braucht Zeit und Ort. Das Erstellen einer Distribution in Yocto ist kein schneller Prozess.
Alle Funktionen zum Zusammenstellen des "Multimedia Centers" habe ich mit einer separaten Ebene:
https://github/berserktv/berserk
(Titel aus meinem Lieblingsbuch, Der Hammer und das Kreuz, von Harry Harrison.)
(Torvin ist auch eine Figur in diesem Buch.)
Um die FunktionalitĂ€t zu erhalten, die ich benötige, verwende ich die sogenannten Add-Ons fĂŒr Rezepte, die sich in Dateien mit der Erweiterung .bbappend befinden
In der .bbappend-Datei können Sie Ihre eigenen Befehlsaufrufe fĂŒr die regulĂ€re Build-Rezept-Methode hinzufĂŒgen, z. B. fĂŒr die Methode do_configure, do_compile, do_install usw.
Schichtstruktur
âââ COPYING.MIT
âââ Meta-Berserker
â â conf
â â âââ layer.conf
â â Rezepte-Berserker
â â â bs-net
â â â erste Runde
â â â Bilder
â â âââ tv
â â Rezepte-Kern
â â â init-ifupdown
â â â psplash
â â Rezepte-Kernel
â â â Linux
â â Rezepte-Medienzentrum
â â â kodi
â â â Kodi-Plugins
â â Rezepte-Multimedia
â â ffmpeg
âââ README.md
âââ changelog.txt
Schichtzusammensetzung:
- Konfiguration der Konf - Schicht
- Rezepts -Berserker - Rezepte fĂŒr die Erstellung von Distributionen, Fernsehern, Netzwerken und Erststarts
- Rezept -Kern - Grundrezepte, insbesondere eine Ănderung des Startrezepts
- Rezepte-Kernel - Linux-Kernel-Build-Rezepte
- Rezepte-Medienzentrum - Rezepte zum Erstellen von Kodi und seinen Plugins
- rezepte-multimedia - multimedia rezepte, ffmpeg montage
Schichtkonfiguration
EnthÀlt die Datei layer.conf Die Datei enthÀlt einen Hinweis auf die Version der ffmpeg-Bibliothek, die Versionsnummer des Linux-Kernels sowie die Anzahl der virtuellen Konsolen (tty) und enthÀlt die Funktionen des Distributionskits - wifi x11
DISTRO_FEATURES_append + = "wifi x11"
PREFERRED_VERSION_ffmpeg = "3.1.11"
SYSVINIT_ENABLED_GETTYS = "1"
PREFERRED_VERSION_linux-raspberrypi? = "4,9%"
Zusammensetzung der Rezepte-Berserker
âââ bs-net
â âââ bs-net_0.1.3.bb
âââ Erster Lauf
â â Dateien
â â âââ first-run.sh
â â first-run.bb
âââ Bilder
â â berserk-image.bb
âââ Fernsehen
âââ Dateien
â â berserk.m3u8
âââ tv-config.bb
âââ tv-dir.inc
wo:
- bs-net_0.1.3.bb - Rezept zum Erstellen von Shell-Erweiterungen fĂŒr WLAN / Ethernet-Schnittstellen
- first-run.bb - Rezept fĂŒr den ersten Lauf, zusĂ€tzliche Festplattenpartitionierung
- first-run.sh - Shell-Skript des ersten Laufs (auf Laufstufe S ausfĂŒhren)
- berserk-image.bb - Rezept zum Erstellen des Distributionsimages
- tv-config.bb - Rezept zum Konfigurieren von TV-KanÀlen mit IPTV
- berserk.m3u8 - Konfiguration öffentlicher FernsehkanÀle (m3u8-Format)
Rezept-Kernkomposition
âââ init-ifupdown
â â Dateien
â â â Schnittstellen
â â init-ifupdown_1.0.bbappend
âââ psplash
âââ Dateien
â â psplash-berserk-img.h
âââ psplash_git.bbappend
wo:
- Schnittstellen - Datei mit der aktuellen Netzwerkeinstellung
- init-ifupdown_1.0.bbappend - Erweiterung fĂŒr das Netzwerkkonfigurationsrezept
- psplash-berserk-img.h - Bild des Startbildschirmschoners
Header-Datei, die mit dem Dienstprogramm gdk-pixbuf-csource abgerufen wurde - psplash_git.bbappend - Erweiterung des Rezepts zum Starten des Startbildschirmschoners
Die Netzwerkkonfiguration auf dem ZielgerÀt befindet sich in der Datei:
/etc/network/interfaces
Nachdem ich die Erweiterung des Rezepts init-ifupdown hinzugefĂŒgt habe, ersetze ich die regulĂ€re Konfigurationsdatei durch meine eigene und Ă€ndere die Reihenfolge (PrioritĂ€t) des Skriptlaufs fĂŒr die AusfĂŒhrungsebenen
INITSCRIPT_PARAMS = "start 98 2 3 4 5 . stop 10 0 6 1 ."
Derzeit enthalten fast alle modernen Linux-Distributionen einen Startbildschirm. In der Regel zeigt der Start-Bildschirmschoner den aktuellen Ladezustand an Anzeige der seit dem Systemstart verstrichenen Zeit. In dieser Hinsicht ist Yocto keine Ausnahme und Sie können das Bild des Standard-Start-Bildschirmschoners in ein beliebiges Bild Àndern.
Dazu mĂŒssen Sie:
- FILESEXTRAPATHS_prepend - Verzeichnis fĂŒr Ressourcen hinzufĂŒgen
- SRC_URI - FĂŒgt eine Header-Datei mit einem beliebigen Bild hinzu
- SPLASH_IMAGES - Paketsteuervariable Àndern
und weiter im Bildrezept "berserk-image.bb" ist es notwendig, das Splash-Startbild als die Merkmale des Bildes hinzuzufĂŒgen
IMAGE_FEATURES += "splash"
Zusammensetzung der Rezepte-Kernel
âââ Linux
âââ Dateien
â â db.txt.patch
â â rbpi.cfg
âââ linux-raspberrypi_4.9.bbappend
wo:
- db.txt.patch - Patch mit der Regulatory Domain-Basis (fĂŒr WiFi verwendet)
- rbpi.cfg - Konfigurationsfragment des Linux-Kernels
- linux-raspberrypi_4.9.bbappend - Erweiterung des 4.9-Kernel-Build-Rezepts fĂŒr Raspberry Pi
Wi-Fi-GerĂ€te arbeiten mit bestimmten Frequenzen und fĂŒr sie gibt es so etwas wie eine RegulierungsdomĂ€ne - dies ist der Parameter, der das Land angibt, in dem dieses GerĂ€t arbeiten soll.
Der Linux-Kernel verfĂŒgt ĂŒber eine Begleitdatenbank, in der die zulĂ€ssigen Frequenzen und die fĂŒr sie zulĂ€ssige Leistung fĂŒr jedes Land registriert sind.
Im einfachsten Fall kann diese Datenbank durch Angabe eines Parameters statisch direkt in den Kernel aufgenommen werden:
CONFIG_CFG80211_INTERNAL_REGDB = yGenau das habe ich getan, indem ich einen Patch mit dieser Datenbank
db.txt.patch verbunden habeUnd noch etwas: In Yocto gibt es Fragmente von Kernelkonfigurationen. Normalerweise enthĂ€lt ein Konfigurationsfragment, eine Datei mit der Erweiterung cfg, nur die Kernelparameter, die Sie fĂŒr bestimmte Zwecke eindeutig benötigen. Diese Konfiguration wird zu den Standardparametern hinzugefĂŒgt, die bereits beim Erstellen des Kernels im Rezept vorhanden sind.
ZusĂ€tzlich zum Rezept bbappend können Sie auch die Parameter Ă€ndern, die beim Start an den Kernel ĂŒbergeben werden:
d.h. Variable ĂŒberschreiben
CMDLINE siehe Datei linux-raspberrypi_4.9.bbappend
rbpi.cfg Inhalt # use statically compiled regulatory rules database CONFIG_CFG80211_INTERNAL_REGDB=y # Wifi Asus USB-N53 chipset Ralink RT3572 CONFIG_RT2800USB=m # wifi Atheros D-Link DWA-126 802.11n (AR9271), # NetGear WNDA3200, NetGear WNA1100, TP-Link TL-WN722N (AR9271), # TL-WN322G v3, TL-WN422G .. . cateee.net CONFIG_ATH9K_HW=m CONFIG_ATH9K_HTC=m # Wifi wpa_supplicant CONFIG_WIRELESS=y CONFIG_WEXT_CORE=y CONFIG_WEXT_PROC=y CONFIG_CRYPTO_AES=y # IPSec, Wifi # wpa_supplicant CONFIG_CRYPTO_CCM=m CONFIG_CRYPTO_CTR=m CONFIG_CRYPTO_ARC4=m ######################### # CONFIG_HAVE_PERF_EVENTS=y CONFIG_PERF_EVENTS=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y CONFIG_LATENCYTOP=y # This option adds support for ASIX AX88xxx # based USB 2.0 10/100 Ethernet adapters. CONFIG_USB_NET_AX8817X=m
linux-raspberrypi_4.9.bbappend recipes-mediacentre
âââ kodi â âââ kodi â âââ kodi_17.bbappend â âââ kodi-dir.inc â âââ kodi-runner.bb â âââ kodi-settings.bb â âââ kodi-version.inc âââ kodi-plugins âââ files âââ kodi-language-ru_3.0.10.bb âââ kodi-pvr-iptvsimple.bb âââ plugin-video-youtube_5.5.1.bb âââ screensaver-kodi-universe_0.1.2.bb âââ script-berserk-network_0.2.5.bb âââ script-module-requests_2.12.4.bb
wo:
- kodi/
- kodi â icon,run,settings
- kodi_17.bbappend â Kodi
- kodi-dir.inc â Kodi
- kodi-runner.bb â Kodi
- kodi-settings.bb â Kodi
- kodi-version.inc â Kodi
- kodi-plugins/
- files â tar.gz
- kodi-language-ru_3.0.10.bb â ( Kodi)
- kodi-pvr-iptvsimple.bb â Kodi pvr-iptvsimple
- plugin-video-youtube_5.5.1.bb â Kodi «Youtube»
- screensaver-kodi-universe_0.1.2.bb â screensaver-kodi-universe
- script-berserk-network_0.2.5.bb â
- script-module-requests_2.12.4.bb â Youtube
recipes-multimedia
âââ ffmpeg
âââ ffmpeg
â âââ 0001-ffmpeg-Call-get_format-to-fix-an-issue-with-MMAL-ren.patch
â âââ h264_parser.patch
â âââ pfcd_hevc_optimisations.patch
âââ ffmpeg_3.1.11.bb
wo:
- 0001-ffmpeg-Call-get_format-to-fix-an-issue-with-MMAL-ren.patch â ffmpeg
- h264_parser.patch â h264
- pfcd_hevc_optimisations.patch â Raspberry Pi
- ffmpeg_3.1.11.bb â ffmpeg (, )
FFmpeg - OpenSource-Bibliothek zum Codieren / Decodieren einer Vielzahl von Video- und Audioformaten. FFmpeg unterstĂŒtzt fast 400 Codecs (ffmpeg-Codecs)und ĂŒber 300 Formate (ffmpeg-Formate).Kodi Build Rezeptzusatz
Die OpenEmbedded-Ebene enthĂ€lt ein regulĂ€res Rezept zum Erstellen von Kodi, ist jedoch recht allgemein gehalten, und ich möchte eine etwas stabilere und getestete Version fĂŒr die Raspberry Pi-Plattform erhalten.Softwareentwickler haben so etwas wie einen Reverse-Port-Patch. Die Software wird stĂ€ndig aktualisiert und jede neue Version enthĂ€lt sowohl neue Funktionen als auch die Korrektur bekannter Fehler. Mit dem Patch fĂŒr die umgekehrte Portierung können Sie einige der Ănderungen in der neuen Version des Programms auf eine Ă€ltere Version ĂŒbertragen, wodurch es stabiler wird. Dies ist jedoch eine sehr harte und sorgfĂ€ltige Arbeit, die immer von einer groĂen Anzahl von Entwicklern ausgefĂŒhrt wird.In der Welt der OpenSource-Community gibt es mehrere bekannte Projekte mit Kodi, von denen das beste (meiner Meinung nach) LibreElec (OpenElec) ist. LibreElec hat einen guten Build fĂŒr die Raspberry Pi-Plattform. Hier haben sie es und es ist am besten, den Reverse-Port-Patch fĂŒr Kodi zu nehmen. So können Sie eine Vielzahl von Problemen loswerden, ohne etwas darĂŒber zu lernen.Das Kodi Multimedia Center konzentriert sich auf die Wiedergabe des "Medien" -Kontexts, und meiner Meinung nach ist die Kombination von Kodi und FFmpeg, d. H. Durch die Interaktion bestimmter Versionen dieser Programme können andere Bibliotheken aus den Ebenen Yocto und OpenEmbedded belassen werden.FĂŒr die Montage habe ich die stabile Version von Kodi 17.6 und die Version FFmpeg 3.1.11 verwendetHinweis: , , systemD. ( ( )). , LibreElec :
Die mitgelieferte Versionsbeschreibungsdatei lautet kodi-version.inc FILESEXTRAPATHS_prepend := "${THISDIR}/kodi:"
Der von mir in Betracht gezogene Zweig Yocto und OpenEmbedded - rocko - enthĂ€lt Kodi Version 17.3. Um ein Upgrade auf Version 17.6 durchzufĂŒhren, fĂŒgen Sie dem Rezept einfach eine kleine ErgĂ€nzung hinzu - kodi_17.bbappend require kodi-version.inc
Mit der Build-Option "--enable-optisches Laufwerk" können Sie den praktischen Benachrichtigungsmechanismus verbinden, den Kodi beim AnschlieĂen einer optischen Festplatte verwendet. In diesem Fall ĂŒberwacht das MediaManager-Modul (a) (xbmc / storage / MediaManager.cpp) das Verbinden / Trennen neuer Festplattenpartitionen und zeigt eine Popup-Meldung dazu an.Beispiel fĂŒr das AnschlieĂen / Trennen von Laufwerken: ACTION=="add" SUBSYSTEM=="block" ENV{ID_FS_TYPE}=="vfat" \ KERNEL=="sd[az][0-9]" \ RUN+="/bin/mkdir -p /media/%k", \ RUN+="/bin/mount -o iocharset=utf8,noatime /dev/%k /media/%k" ACTION=="add" SUBSYSTEM=="block" ENV{ID_FS_TYPE}=="ntfs" \ KERNEL=="sd[az][0-9]" \ RUN+="/bin/mkdir -p /media/%k", \ RUN+="/usr/bin/ntfs-3g -o \ iocharset=utf8,noatime,windows_names /dev/%k /media/%k" ACTION=="add" SUBSYSTEM=="block" ENV{ID_FS_TYPE}=="ext2|ext3|ext4" \ KERNEL=="sd[az][0-9]" \ RUN+="/bin/mkdir -p /media/%k", \ RUN+="/bin/mount -o noatime /dev/%k /media/%k" ACTION=="remove" SUBSYSTEM=="block" KERNEL=="sd[az][0-9]" \ RUN+="/bin/umount /media/%k", RUN+="/bin/rmdir /media/%k"
: rmdir , ( Linux - ) .
HinzufĂŒgen eines neuen Elements zum Kodi-EinstellungsmenĂŒ
In Kodi 17.6 sind XML-Konfigurationsdateien fĂŒr die Anzeige von MenĂŒelementen verantwortlich. Um ein weiteres Element im MenĂŒ "Einstellungen" hinzuzufĂŒgen, passen Sie einfach die Datei an:kodi / addons / skin.estuary / xml / Settings.xmlwobei skin.estuary das Standarddesign fĂŒr das MenĂŒdesign ist. Die Elementbeschreibungsieht folgendermaĂen aus:<item>
<label> $ LOCALIZE [13279] </ label>
<onclick> RunAddon (script.berserk.network, butnetwork) </ click>
<icon> icons / settings / bs-network.png </ icon>
</ item>
wo:
label - Name desMenĂŒelements onclick - Behandlung des Ereignisses des DrĂŒckens der MenĂŒschaltflĂ€che(Starten des Plugins, wobei das erste Argument die Zeichenfolge "butnetwork" ĂŒbergibt)Symbol - Symbol des MenĂŒelements (Pfad zum PNG-Bild)Die oben genannte FunktionalitĂ€t sowie das Verbinden mehrerer zusĂ€tzlicher Kodi-Plugins sind in integriert Verwenden der Datei bs-menu.patchEin- / Ausblenden diff -Naur a/addons/skin.estuary/xml/Settings.xml b/addons/skin.estuary/xml/Settings.xml --- a/addons/skin.estuary/xml/Settings.xml 2018-02-01 18:17:45.000000000 +0300 +++ b/addons/skin.estuary/xml/Settings.xml 2018-03-08 12:06:50.000000000 +0300 @@ -134,6 +134,11 @@ <icon>icons/settings/interface.png</icon> </item> <item> + <label>$LOCALIZE[13279]</label> + <onclick>RunAddon(script.berserk.network,butnetwork)</onclick> + <icon>icons/settings/bs-network.png</icon> + </item> + <item> <label>$LOCALIZE[20077]</label> <onclick>ActivateWindow(SkinSettings)</onclick> <icon>icons/settings/skin.png</icon> diff -Naur a/system/addon-manifest.xml b/system/addon-manifest.xml --- a/system/addon-manifest.xml 2018-03-07 15:58:24.000000000 +0300 +++ b/system/addon-manifest.xml 2018-05-14 14:06:58.000000000 +0300 @@ -27,6 +27,7 @@ <addon>resource.uisounds.kodi</addon> <addon>screensaver.xbmc.builtin.black</addon> <addon>screensaver.xbmc.builtin.dim</addon> + <addon>screensaver.kodi.universe</addon> <addon>script.module.pil</addon> <addon>service.xbmc.versioncheck</addon> <addon>skin.estuary</addon> @@ -43,4 +44,8 @@ <addon>xbmc.python</addon> <addon>xbmc.webinterface</addon> <addon optional="true">peripheral.joystick</addon> + <addon>script.berserk.network</addon> + <addon>resource.language.ru_ru</addon> + <addon>script.module.requests</addon> + <addon>plugin.video.youtube</addon> </addons>
Maximale Puffereinstellungen fĂŒr Video
Um die Leistung zu maximieren, können Sie im Kodi Multimedia Center die maximalen Puffereinstellungen festlegen: <advancedsettings> <cache> <buffermode>1</buffermode> <memorysize>139460608</memorysize> <readfactor>20</readfactor> </cache> </advancedsettings>
buffermode = 1- Pufferanforderungen fĂŒr alle Dateisysteme (einschlieĂlich lokaler)Lesefaktoren- Passt die Download-Geschwindigkeit basierend auf der durchschnittlichen Video-Bitrate an. Wenn Sie beispielsweise ein Video mit einer durchschnittlichen DatenĂŒbertragungsrate von 5 Mbit / sabspielen und das PufferleseverhĂ€ltnis auf 2,0 einstellen, wird die Download-Geschwindigkeit (und damit die Cache-FĂŒllrate) auf etwa 10 Mbit / s begrenzt, also: readfactor = 20hebt die EinschrĂ€nkung der Download-Geschwindigkeit auf.Memorysize = 139460608- die PuffergröĂe betrĂ€gt 133 MB, wĂ€hrend 133 * 3 RAM verwendet wird, d.h. ca. 400 MB RAMFernsehen ĂŒber IPTV
Kodi Media Center ist ein sehr leistungsfĂ€higes Tool zum Anzeigen digitaler Inhalte.Die Hauptfunktion, fĂŒr die ich "Media Center" gesammelt habe, ist die Funktion des digitalen Fernsehens mit IPTV (Internet Protocol Television), d. H. Fernsehen ĂŒber das Internetprotokoll. Mit dieser Funktion können Sie von Ihrem Internetanbieter aus digitales Fernsehen schauen.Dies ist die modernste und optimalste Option sowohl hinsichtlich der BildqualitĂ€t als auch hinsichtlich zusĂ€tzlicher Merkmale, d.h. erbrachte Dienstleistungen. Beispielsweise können FernsehkanĂ€le im Archiv bereitgestellt werden, in denen die gewĂŒnschte Videoaufzeichnung einige Zeit nach der Ausstrahlung verfĂŒgbar ist.Um IPTV in Kodi zu unterstĂŒtzen, gibt es mehrere Plugin-Optionen, von denen ich mich fĂŒr das Plugin entschieden habepvr.iptvsimpleVerwenden Sie das Rezept, um das Plugin zu erstellen: âââ Kodi-Plugins
âââ kodi-pvr-iptvsimple.bb
Das Plug-In ist verbunden ĂŒber:Kodi-HauptmenĂŒ => "Add-Ons" => "Meine Add-Ons" => "PVR-Clients" => "PVR IPTV Simple Client"Um den Betrieb des IPTV-Fernsehens als Teil von Kodi zu ĂŒberprĂŒfen, habe ich mehrere öffentliche Nachrichtensender verwendet und fĂŒgte sie der Liste im m3u8-Format hinzu und aktivierte auch den automatischen Start des Plugins âpvr.iptvsimpleâ zu Beginn des Media Centers.Youtube mit dem Kodi Plugin ansehen
Die Programmierer, die Kodi entwickelten, boten die FlexibilitĂ€t, seine Funktionen zu erweitern. Dies geschieht, damit jeder Enthusiast auf Wunsch Kodi hinzufĂŒgen kann, was er wirklich braucht. Und diese Plugins fĂŒr Kodi sind Dunkelheit. Nun, du verstehst, worum es geht.
Es gibt so viele von ihnen, dass es eine Beschreibung in einem separaten Artikel verdient.Plugins werden sehr einfach installiert. Verbinden Sie Kodi einfach mit dem Internet und drĂŒcken Sie einige Tasten im MenĂŒ. Sie können darĂŒber in allen Foren lesen, die Kodi gewidmet sind. Aber die Assembly, da ist die Assembly, und ich werde ein weiteres Plugin als Beispiel in das Distributionskit aufnehmen.Das meiner Meinung nach interessanteste und am weitesten verbreitete Plugin (Ohm) fĂŒr Kodi ist das Youtube View Plugin. Kodi ist ein Multimedia-Center, und Youtube ist das gröĂte Repository fĂŒr diese Multimedia-Inhalte. Daher ist das Youtube-Plug-In fĂŒr Kodi fast obligatorisch.Das Plugin ist in Python geschrieben. Dies ist ein regulĂ€rer Plug-In-Mechanismus. Sie mĂŒssen nichts kompilieren. Kopieren Sie einfach das fertige Plug-In mit den Plug-Ins in das Stammverzeichnis und geben Sie den Namen des Plug-Ins in der XML-Manifestdatei an:"System / addon-manifest.xml"Das Plugin stammt aus dem offiziellen Repository und sein Quellcode ist im Archiv enthalten:Rezepte-Medienzentrum / Kodi-Plugins / Dateien / Plugin.video.youtube.tar.gz DiePosition des Plugin-Build-Rezepts finden Sie oben Kapitel "Rezept-Medienzentrum Komposition"Konsolen-Shell-Netzwerkkonfigurationserweiterung
Da es sich bei dem im Rahmen dieses Artikels zusammengestellten Distributionskit um eine Demo handelt, sind die Anforderungen fĂŒr die Einrichtung von âNetzwerkschnittstellenâ minimal. Ich wollte dafĂŒr keinen schweren Netzwerkmanager ziehen, was fĂŒr mich sehr unverstĂ€ndlich und sehr umstĂ€ndlich war, und deshalb habe ich zwei Shell-Skripte geschrieben, die die Konfiguration des regulĂ€ren Konfigurationsmechanismus ergĂ€nzen:
Um Ethernet / WLAN-Netzwerkschnittstellen bequem ĂŒber die GUI zu konfigurieren, verwende ich ein weiteres kleines Kodi-Plugin âscript.berserk.networkâ. Dies ist fast das einzige Kodi-Plugin, das ich herausgefunden habe, aber dafĂŒr musste ich es schreiben. Es ist extrem kompakt und minimalistisch und in der Python-Sprache geschrieben.Beide Komponenten werden nach Rezepten gesammelt:- Rezepte-Berserker / bs-net / bs-net_0.1.3.bb
- Rezepte-Medienzentrum / Kodi-Plugins / script-berserk-network_0.2.5.bb
An dieser Stelle möchte ich auf die Details eingehen. Die ganze FlexibilitĂ€t bei der Verwendung von Yocto liegt also in verschiedenen Rezepten, d.h. Verbunden Sie einen Satz von Rezepten - der einfachste Netzwerkmanager wurde zum Verteilungskit hinzugefĂŒgt, ein anderer Satz verbunden - fĂŒgte Ihren bevorzugten Netzwerkmanager hinzu, indem Sie beispielsweise systemD usw.Um beim Systemstart automatisch eine Verbindung zu einem WiFi-Zugangspunkt herzustellen, verwende ich die udev-Regel: /etc/udev/rules.d/80-wifi-start.rules SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNEL=="wlan*", \ RUN+="/etc/network/wlan-runner $env{INTERFACE} up" SUBSYSTEM=="net", ACTION=="remove", DRIVERS=="?*", KERNEL=="wlan*", \ RUN+="/etc/network/wlan-runner $env{INTERFACE} down"
Das WLAN-Runner-Skript fĂŒhrt einfach die folgenden Befehle aus:/ etc / network / wlan $ IFACE upoder
/ etc / network / wlan $ IFACE downVerteilungserstellungsrezept
Das Yocto-Projekt verfĂŒgt ĂŒber einen Wiederverwendungsmechanismus. Es gibt Klassen, von denen Sie erben können (Direktive "erben"), und es gibt grundlegende Rezepte, die Sie verbinden können (Direktive "include").Ich werde die Vererbung anhand des Klassenbeispiels zeigen:poky / meta / clasess / core-image.bbclassDie Klasse ist dafĂŒr verantwortlich, die Gruppen von Paketen zu beschreiben, die Sie in ein bestimmtes Rezept aufnehmen können. Zu diesem Zweck reicht es aus, die Konstruktion am Anfang des Rezepts anzugeben:Kernbild erbenSelbst im Text dieser Klasse können Sie die Merkmale des Bildes sehen. Jedes Merkmal ist fĂŒr eine Gruppe von Funktionen verantwortlich, die im Bild enthalten sind, und jede Gruppe beschreibt letztendlich eine Reihe installierter Programme oder Bibliotheken.Merkmale des Bildes werden wie folgt angezeigt: IMAGE_FEATURES += "ssh-server-dropbear splash"
Es gibt auch DISTRO_FEATURES - Verteilungsfunktionen, die in der Layer-Konfigurationsdatei angegeben werden können. Dies sind Funktionen auf Verteilungsebene. Wenn Sie beispielsweise eine Funktion Ă€ndern (z. B. x11), werden in der nachfolgenden Assembly alle Pakete wieder zusammengesetzt, die von dieser Option abhĂ€ngen (dies kann ziemlich lange dauern).Das grundlegende Grundrezept, das ich verwende, ist:poky / meta / prescription-core / images / core-image-minimal.bbIch möchte klarstellen, dass das Kernel-Modul- Paket beispielsweisealle in der defconfig-Datei angegebenen Kernel-Module in das Distributions-Image installiert .Wenn Sie jedoch etwas stark anpassen, benötigen Sie möglicherweise nicht einmal alle Kernelmodule. In diesem Fall ist es praktisch, jedes Modul nach Namen hinzuzufĂŒgen, wie in der Variablen BS_WLAN angegeben . Es ist wie ein Spickzettel. Geben Sie nur das an, was Sie benötigen, und ĂŒberprĂŒfen Sie nach ĂberprĂŒfung des Pakets "Kernel-Module" entfernen, prĂŒfen usw.Eine kurze Anleitung zum Erstellen eines Verteilungsimages
1) Installieren Sie die Yocto Project-AbhÀngigkeiten in Ubuntu: sudo apt-get install -y --no-install-suggests --no-install-recommends \ gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential \ chrpath socat cpio python python3 python3-pip python3-pexpect \ xz-utils debianutils iputils-ping python3-git python3-jinja2 \ libegl1-mesa libsdl1.2-dev xterm
2) Laden Sie Repo herunter und installieren Sie es: mkdir ~/bin curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
3) Laden Sie das Projekt von github herunter: PATH=${PATH}:~/bin mkdir torvin cd torvin repo init -u https://github.com/berserktv/bs-manifest \ -m raspberry/rocko/torvin-0.2.5.xml repo sync
4) Erstellen Sie das Projekt: ./shell.sh bitbake berserk-image
5) Schreiben Sie das Verteilungsbild auf die Speicherkarte:
torvin/build/tmp/deploy/images/raspberrypi3
:
berserk-image-raspberrypi3.rpi-sdimg
c
c UTC
dd
:
«microSDHC»
.
$ sudo bash
$ cd torvin/build/tmp/deploy/images/raspberrypi3
$ dd if=berserk-image-raspberrypi3.rpi-sdimg of=/dev/sdX bs=1M
$ sync
/dev/sdX:
X a,b,c ..
:
Windows,
Win32 Disk Imager :
:
Hinweis: N , "" , git (.. "") : - Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz - 8 - USB-3.0 1T - 4 05 - 1 - 274.8 M torvin/build (cache , , , , , ..) - 42 torvin/downloads - 9.1 (git tar.gz ) rootfs - 550 /lib/firmware - 212 /lib/modules - 53 : firmware ( ) , 200
Nachtrag
Die FĂ€higkeiten von OpenSource in den letzten Jahren nehmen nur noch zu.Aber diese Möglichkeiten sind nicht gering, zum Beispiel mĂŒssen Sie nicht einmal weit gehen. Es ist unwahrscheinlich, dass dasselbe "Microsoft" erwartet, dass die OpenSource-Technologie es vom Markt fĂŒr mobile Betriebssysteme verdrĂ€ngt. Ich meine das Betriebssystem von Google - "Android", das ĂŒber Nacht den "Pionier" mobiler Systeme an den Rand gedrĂ€ngt hat. Und es ist nicht klar, ob Microsoft wieder darauf zurĂŒckgreifen kann.NatĂŒrlich "Google", ein riesiges Unternehmen mit nahezu unbegrenzten Finanzen und exzellenten Entwicklern, aber dennoch, wie sie sagen "ohne den Kern und nicht hier und da".Die besten OpenSource-Projekte werden im Laufe der Zeit zu einem Kunstwerk (z. B. Kodi, Openelec / libre usw.)Und heute kann jeder sozusagen an den Best Practices in OpenSource teilnehmen, ohne aus Github (a) herauszukriechen. Dieser Artikel handelt davon.Haben Sie viele gute und unterschiedliche Baugruppen fĂŒr sich und denken Sie daran, dass "die Welt des Internets der Dinge kommt".