Wie bereits im vorigen Thread (Makulu Linux Tutorial) angekündigt, werde ich heute ein kleines Tutorial schreiben, wie man Yocto in einem Docker-Image unter Manjaro Linux zum laufen bekommt.

Grundsystem aktualisieren und Docker installieren

Als Basis nehme ich ein Manjaro Linux, das ich erst einmal mit:

sudo pacman -Sy

und

sudo pacman -Su

auf aktuellen Stand bringe.

Anschließend installiere ich docker mit:

sudo pacman -S docker

Dabei wird der eigentliche docker installiert d.h. client und server.

Update 04.09.2016

Da ich auf meinem neuen Notebook kein Manjaro zum laufen bekomme, hier noch kurz eine Anleitung,
wie man docker in Ubuntu 16.04 LTS installiert:

Erst einmal wird das Ubuntu aktualisiert:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

sollte dabei ein neuer Kernel installiert werden, macht am besten ein Reboot des Systems um den neuen Kernel zu aktivieren.

Anschließend können wir docker mit:

sudo apt-get install docker.io

installieren. Hier auf docker.io achten, da es auch das Paket docker gibt.

Weiter gehts, egal, ob Manjaro oder Ubuntu

Nach der Installation wird erst einmal der docker-Dämon aktiviert und gestartet:

sudo systemctl enable docker

und

sudo systemctl start docker

Damit docker unter Eurem Nutzer läuft, müsst ihr mit:

usermod -a -G docker <nutzername>

euch der Gruppe docker zuordnen. Solltet ihr das nicht machen, bekommt ihr bei Start von Docker immer folgende Meldung:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Nach Zuordnung der Gruppe loggt ihr Euch entweder aus und neu ein, macht ein reboot oder könnt viel einfacher noch Euch die Gruppe quasi neu zuordnen:

newgrp docker

Docker ausprobieren

Nun könnt ihr den ersten docker-Befehl ausprobieren:

docker run hello-world

und wenn alles gut gelaufen ist, meldet sich Docker mit einer Willkommens-Nachricht.

Soviel erst mal zur grundsätzlichen Einrichtung. Nun geht es ans eingemachte – der Installation einer virtuellen Ubuntu-Umgebung unter Docker.

Grundsystem im Docker aufsetzen

Als basis für den Build nehme ich ubuntu 14.04. Im Github kann man sehen, dass ein “normales” Ubuntu-Image unter : ubuntu:14.04 abrufbar ist. Das wird dann gleich gepullt.

docker pull ubuntu:14.04

Nun kann mit:

docker run -it ubuntu:14.04 /bin/bash

eine bash im ubuntu-System geöffnet werden. In der Bash des Docker-Containers wird erst mal eine Aktualisierung von apt vorgenommen und die für den Build notwendigen Komponenten installiert:

 apt-get update
 apt-get upgrade
 apt-get install wget unzip make 
  g++ python git diffstat 
  texinfo gawk chrpath libsdl1.2-dev

Jetzt legen wir einen Nutzer an:

useradd -m -s /bin/bash -U smx6Dev -p test

und die verschiedenen Verzeichnisse für den Nutzer:

 mkdir /home/smx6Dev/Downloads
 mkdir /home/smx6Dev/build

Nach Anlegen der Verzeichnisse wird das Yocto-Image vom Kugelmann-Server geholt:

wget -O /home/smx6Dev/Downloads/Yocto_Linux_BSP_SMARC-sAMX6i_R02.10.zip http://public.kugelmann.com/yocto/Yocto_Linux_BSP_SMARC-sAMX6i_R02.10.zip

und entpackt:

unzip /home/smx6Dev/Downloads/Yocto_Linux_BSP_SMARC-sAMX6i_R02.10.zip -d /home/smx6Dev/Downloads

mit den beiden Befehlen:

tar -C /home/smx6Dev/build -xzf /home/smx6Dev/Downloads/sources-base.tar.gz 
 tar -C /home/smx6Dev/build -xzf /home/smx6Dev/Downloads/sources-meta-smx6.tar.gz

werden die Yocto-Sourcen entpackt. Bevor wir uns anmelden und die eigentlichen Yocto-Sachen machen, wird noch der owner umgestellt:

chown smx6Dev:smx6Dev -R /home/smx6Dev/build
 chown smx6Dev:smx6Dev /home/smx6Dev/Downloads

Wenn das getan ist, kann man sich als smx6Dev einloggen:

su - smx6Dev

Nun wechselt man ins build-Verzeichnis und ruft das setup-environment auf:

cd build
 source ./sources/meta-smx6/setup-environment ./build

auf. Last but not least kann dann mit:

bitbake smx6-image

das Bauen des Images angestoßen werden.

Um das ganze noch zu vereinfachen, habe ich ein Image gebaut. Die Einzelnen Schritte sind in dem folgenden Docker-File beschrieben. Falls ihr das benutzen wollt, benennt bitte die Datei in Dockerfile um (ohne txt!).

Wenn man den Docker-Container verlässt, kann man mit:

docker build -t yocto-build .

ausgeführt im Verzeichnis, wo das Dockerfile liegt, ein eigenes Image bauen. Das habe ich jedoch bereits gemacht und es in mein Dockhub-Repository hochgeladen.

Um es abzurufen, muss man sich erst einloggen (als crypti76):

docker login --username=crypti76

und kann dann mit:

docker run -it crypti76/smx6image:latest /bin/bash

das fertig vorbereitete image starten und die letzten Schritte (ab anmelden als smx6Dev) durchführen.

Schreibe einen Kommentar

Artikel, die Dir auch gefallen könnten

Remote-Desktop unter Manjaro

Hallo da draußen, Leute die mich etwas besser kennen, wissen, dass ich ein großer Fan von Manjaro Linux bin. Ich nutze das schon seit etlichen

mehr...