eine eigene linux-distribution für den raspberry pi mit yocto · raspberry pi mit yocto...

31
Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto Ubucon 2014 18. Oktober 2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH [email protected] B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development

Upload: others

Post on 27-Oct-2019

23 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Eine eigene Linux-Distribution für denRaspberry Pi mit YoctoUbucon 2014 18. Oktober 2014

Stefan SeyfriedLinux Consultant & Developer

B1 Sytems [email protected]

B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development

Page 2: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Vorstellung B1 Systems

gegründet 2004primär Linux/Open Source-Themennational & international tätigüber 60 Mitarbeiterunabhängig von Soft- und Hardware-HerstellernLeistungsangebot:

Beratung & ConsultingSupportEntwicklungTrainingBetriebLösungen

dezentrale Strukturen

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 2 / 31

Page 3: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

SchwerpunkteVirtualisierung (XEN, KVM & RHEV)Systemmanagement (Spacewalk, Red Hat Satellite, SUSEManager)Konfigurationsmanagement (Puppet & Chef)Monitoring (Nagios & Icinga)IaaS Cloud (OpenStack & SUSE Cloud & RDO)Hochverfügbarkeit (Pacemaker)Shared Storage (GPFS, OCFS2, DRBD & CEPH)Dateiaustausch (ownCloud)Paketierung (Open Build Service)Administratoren oder Entwickler zur Unterstützung des Teamsvor Ort

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 3 / 31

Page 4: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Partner

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 4 / 31

Page 5: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Der Raspberry Pi im Überblick

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 5 / 31

Page 6: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Raspberry Pi Hardware

Broadcom BCM2835ARMv6 mit FPUVideoCore Coprozessor

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 6 / 31

Page 7: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Vorteile des Raspberry Pi

günstiger Preishohe Stückzahlvollständig Open Sourcelange Verfügbarkeit in gleicher Konfiguration (Embedded-Boardssind oft nur wenige Monate lieferbar, dann kommen neue Boardsin anderer Konfiguration)Multimediafähigkeit gut unterstützt

→ starke Verbreitung und gute Softwareunterstützung

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 7 / 31

Page 8: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Nachteile des Raspberry Pi

kein SATA Anschlussfast alle Peripherie (auch das integrierte Fast-Ethernet) wirdüber USB angebunden„gemütliche“ CPU

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 8 / 31

Page 9: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Fertige Linux-Distributionen für den Raspi

Liste von http://www.raspberrypi.org/downloads/

Raspbian (Debian Wheezy)Pidora (Fedora Remix)Openelec (XBMC Media Center)Raspbmc (XBMC Media Center)Arch Linux. . .

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 9 / 31

Page 10: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Vorteile dieser Linux-Distributionen

einfach zu installierengroßes Softwareangebotguter Support

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 10 / 31

Page 11: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Warum selbst bauen?

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 11 / 31

Page 12: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Nachteile einer selbstgebauten Distribution

KomplexitätArbeitsaufwandDauer des BuildvorgangsSupport: Hilf dir selbst...

„Warum selbst machen, die existierenden Distributionen funktionierengut.“

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 12 / 31

Page 13: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Vorteile einer selbstgebauten Distribution

Es macht Spaß :-)individuelle Anpassungen

dadurch sind extrem kleine, abgespeckte Images möglich, die nurdie benötigten Komponenten enthalten

Support: Hilf dir selbst...Crosscompilation

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 13 / 31

Page 14: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Verschiedene Methoden zum Selbstbau

Nativ auf dem Raspi neu bauen, z.B. Linux from scratchToolchain mit Crosstool, dann die Target-Software bauen(automatisch per Skript oder Makefile)

„Been there, done that“ – für andere Embedded-Boards/Boxenkein Spaß, oftmals subtile Fehler im Ergebnis

fertige Buildumgebungen für (Embedded-)DistributionenOpenWRTBuildrootOpenembedded/Yocto. . .

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 14 / 31

Page 15: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Nativ auf dem Zielsystem (Raspi) bauen

Vorteile:keine Crosskompilierproblemefunktioniert

Nachteil:zu langsam

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 15 / 31

Page 16: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Crosstool/Buildscript

Vorteile:relativ leicht Überschaubar (anfangs...)niedrige Einstiegshürde„Quick Hacks“ einfach machbar

Nachteile:fehlerträchtigaufwändig zu wartenAbhängigkeiten

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 16 / 31

Page 17: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Fertige Buildumgebungen

Nachteile:KomplexitätAufwand zur Einarbeitungeigene Anpassungen müssen in das Framework passen

Vorteile:Regeln für Standardsoftware fertig verfügbarwerden meist professionell maintainedPaketverwaltung meist inklusivenur die eigenen Anpassungen müssen selbst gepflegt werden

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 17 / 31

Page 18: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Warum Yocto?

„Openembedded in besser benutzbar“umfangreiche Dokumentation auf http://yoctoproject.orggut maintainedSDK

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 18 / 31

Page 19: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Yocto bauen – jetzt geht’s los!

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 19 / 31

Page 20: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Vorbereitung – Was wird benötigt?

Plattenplatz (50GB+)schneller Rechner (Core2 duo+)Breitbandanschluss (5GB+ Download)SSD schadet nicht...

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 20 / 31

Page 21: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Jetzt aber!

git clone git://git.yoctoproject.org/poky yocto-pokycd yocto-pokygit checkout -b daisy origin/daisy # der aktuelle branchgit clone git://git.yoctoproject.org/meta-raspberrypicd meta-raspberrypigit checkout -b daisy origin/daisycd ... oe-init-build-env# landet im neu erstellten Verzeichnis "build"

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 21 / 31

Page 22: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Konfiguration – Bevor es losgeht

Zwei Dateien unterhalb des build-Verzeichnisses:conf/bblayers.conf

meta-raspberrypi mit eintragenconf/local.conf

MACHINE ?= "raspberrypi"PACKAGE_CLASSES = "package_ipk"EXTRA_IMAGE_FEATURES += "package-management"PRSERV_HOST = "localhost:0"eventuell: INHERIT += "rm_work"

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 22 / 31

Page 23: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Bau des Images

bitbake rpi-basic-imagedauert lange (5h auf Core2 Duo L9400):

1 Herunterladen2 Bauen der Abhängigkeiten für den Buildhost3 Bauen der Crosscompiler/Toolchain4 Bauen der Software für den Zielhost (Raspi)

braucht Platz:mit "rm_work": 8.7Gohne "rm_work": 19G

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 23 / 31

Page 24: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Ergebnis

Das Image landet in tmp/deploy/images/raspberrypi:rpi-basic-image-raspberrypi.rpi-sdimg

rpi-basic-image-raspberrypi.ext3

rpi-basic-image-raspberrypi.tar.bz2

Symlinks auf per Zeitstempel „versionierte“ Dateien.Das .rpi-sdimg kommt auf die SD-Karte (mit dd)Größe des rootfs (ungefähr):

bzcat rpi-basic-image-raspberrypi.tar.bz2 | wc -c65402880

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 24 / 31

Page 25: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Das SDK zum Image bauen 1/2

SDK enthält Archiv mit Crosscompiler, Headerdateien etc. füralle im Image vorhandenen Softwarepaketekann auf anderem Rechner verwendet werden, um unabhängigvon Yocto lauffähige Binaries für den Raspberrypi zu bauenmit dem SDK gebaute Binaries passen genau zu den per Yoctogebauten Libraries

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 25 / 31

Page 26: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Das SDK zum Image bauen 2/2

Bauen: bitbake rpi-basic-image -c populate_sdk

dauert wieder ... ;-)Ergebnis in tmp/deploy/sdk:poky-eglibc-x86_64-my-image-armv6-vfp-toolchain-1.6.1.sh

selbstauspackendes Shellskript, ca. 150 MB groß

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 26 / 31

Page 27: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Das SDK benutzen

1 Auf dem Zielrechner das Skript aufrufen, fragt nachInstallationsverzeichnis

2 In das Installationsverzeichnis wechseln3 source environment-setup-armv6-vfp-poky-linux-gnueabi

Setzt Variablen, z.B. CC, AS, LD, CPPSITE_CONFIG für autoconf basierte Projekte

4 $CC hello.c -o hello5 autoconf basierende Projekte: einfach wie immer bauen

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 27 / 31

Page 28: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Anpassen des Images

Nun haben wir ein Image, aber es ist Standard, ohne Anpassungen.Also packen wir jetzt eigene Pakete mit hinein:

In conf/local.conf mittelsIMAGE_INSTALL_append = " pulseaudio"

geringer AufwandDiese Pakete (plus Abhängigkeiten) sind dann in jedem Image

Eigene Image-Definition in eigenem meta-Layermehr Aufand, komplexerviel flexiblereigene Recipes für benötigte Pakete können da mit hineinBeispiel (eventuell nicht das Beste... ;-)https://github.com/seife/meta-neutrino-mp

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 28 / 31

Page 29: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Eigener meta-Layer zur Image-Anpassung 1/2

Im Top-level Yocto-Verzeichnis (über build):

yocto-layer create mylayer 10 # name prio

Konfiguration in meta-mylayer/conf/layer.conf (nichtändern)

mkdir -p meta-mylayer/recipes-mine/imagescp meta-raspberrypi/recipes-core/images/rpi-hwup-image.bb \meta-mylayer/recipes-mine/images/my-image.bbvi meta-mylayer/recipes-mine/images/my-image.bb

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 29 / 31

Page 30: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Eigener meta-Layer zur Image-Anpassung 2/2

# Base this image on core-image-minimalinclude recipes-core/images/core-image-minimal.bb# from rpi-basic-imageIMAGE_FEATURES += "ssh-server-dropbear splash"# Include modules in rootfsIMAGE_INSTALL += " \

kernel-modules \pulseaudio-misc \pulseaudio-lib-bluez4-util \pulseaudio-module-bluez4-discover \pulseaudio-module-bluez4-device \pulseaudio-module-bluetooth-policy \pulseaudio-module-bluetooth-discover \"

Layer in conf/bblayers.conf eintragen!

B1 Systems GmbHEine eigene Linux-Distribution für den

Raspberry Pi mit Yocto 30 / 31

Page 31: Eine eigene Linux-Distribution für den Raspberry Pi mit Yocto · Raspberry Pi mit Yocto Ubucon201418.Oktober2014 Stefan Seyfried Linux Consultant & Developer B1 Sytems GmbH seife@b1-systems.de

Vielen Dank für Ihre Aufmerksamkeit!Bei weiteren Fragen wenden Sie sich bitte an [email protected]

oder +49 (0)8457 - 931096

B1 Systems GmbH - Linux/Open Source Consulting, Training, Support & Development