{"id":112,"date":"2016-08-04T22:42:44","date_gmt":"2016-08-04T22:42:44","guid":{"rendered":"http:\/\/devblog.cssec.de\/?p=112"},"modified":"2019-02-08T23:29:45","modified_gmt":"2019-02-08T23:29:45","slug":"yocto-im-docker-image-auf-manjaro","status":"publish","type":"post","link":"https:\/\/www.cssec.de\/blog\/2016\/08\/04\/yocto-im-docker-image-auf-manjaro\/","title":{"rendered":"Yocto im Docker-Image auf Manjaro"},"content":{"rendered":"<p>Wie bereits im vorigen Thread (Makulu Linux Tutorial) angek\u00fcndigt, werde ich heute ein kleines Tutorial schreiben, wie man Yocto in einem Docker-Image unter Manjaro Linux zum laufen bekommt.<\/p>\n<h2>Grundsystem aktualisieren und Docker installieren<\/h2>\n<p>Als Basis nehme ich ein Manjaro Linux, das ich erst einmal mit:<\/p>\n<pre>sudo\u00a0pacman\u00a0-Sy<\/pre>\n<p>und<\/p>\n<pre>sudo\u00a0pacman\u00a0-Su<\/pre>\n<p>auf aktuellen Stand bringe.<\/p>\n<p>Anschlie\u00dfend installiere ich docker mit:<\/p>\n<pre>sudo\u00a0pacman\u00a0-S\u00a0docker<\/pre>\n<p>Dabei wird der eigentliche docker installiert d.h. client und server.<\/p>\n<h4>Update 04.09.2016<\/h4>\n<p>Da ich auf meinem neuen Notebook kein Manjaro zum laufen bekomme, hier noch kurz eine Anleitung,<br \/>\nwie man docker in Ubuntu 16.04 LTS installiert:<\/p>\n<p>Erst einmal wird das Ubuntu aktualisiert:<\/p>\n<pre>sudo\u00a0apt-get\u00a0update\r\nsudo\u00a0apt-get\u00a0upgrade\r\nsudo\u00a0apt-get\u00a0dist-upgrade<\/pre>\n<p>sollte dabei ein neuer Kernel installiert werden, macht am besten ein Reboot des Systems um den neuen Kernel zu aktivieren.<\/p>\n<p>Anschlie\u00dfend k\u00f6nnen wir docker mit:<\/p>\n<pre>sudo\u00a0apt-get\u00a0install\u00a0docker.io<\/pre>\n<p>installieren. Hier auf docker.io achten, da es auch das Paket docker gibt.<\/p>\n<h4>Weiter gehts, egal, ob Manjaro oder Ubuntu<\/h4>\n<p>Nach der Installation wird erst einmal der docker-D\u00e4mon aktiviert und gestartet:<\/p>\n<pre>sudo\u00a0systemctl\u00a0enable\u00a0docker<\/pre>\n<p>und<\/p>\n<pre>sudo\u00a0systemctl\u00a0start\u00a0docker<\/pre>\n<p>Damit docker unter Eurem Nutzer l\u00e4uft, m\u00fcsst ihr mit:<\/p>\n<pre>usermod\u00a0-a\u00a0-G\u00a0docker\u00a0&lt;nutzername&gt;<\/pre>\n<p>euch der Gruppe docker zuordnen. Solltet ihr das nicht machen, bekommt ihr bei Start von Docker immer folgende Meldung:<\/p>\n<p><em>Cannot connect to the Docker daemon. Is the docker daemon running on this host?<\/em><\/p>\n<p>Nach Zuordnung der Gruppe loggt ihr Euch entweder aus und neu ein, macht ein reboot oder k\u00f6nnt viel einfacher noch Euch die Gruppe quasi neu zuordnen:<\/p>\n<pre>newgrp\u00a0docker<\/pre>\n<h2>Docker ausprobieren<\/h2>\n<p>Nun k\u00f6nnt ihr den ersten docker-Befehl ausprobieren:<\/p>\n<pre>docker\u00a0run\u00a0hello-world<\/pre>\n<p>und wenn alles gut gelaufen ist, meldet sich Docker mit einer Willkommens-Nachricht.<\/p>\n<p>Soviel erst mal zur grunds\u00e4tzlichen Einrichtung. Nun geht es ans eingemachte &#8211; der Installation einer virtuellen Ubuntu-Umgebung unter Docker.<\/p>\n<h2>Grundsystem im Docker aufsetzen<\/h2>\n<p>Als basis f\u00fcr den Build nehme ich ubuntu 14.04. Im Github kann man sehen, dass ein \u201cnormales\u201d Ubuntu-Image unter : ubuntu:14.04 abrufbar ist. Das wird dann gleich gepullt.<\/p>\n<pre>docker\u00a0pull\u00a0ubuntu:14.04<\/pre>\n<p>Nun kann mit:<\/p>\n<pre>docker\u00a0run\u00a0-it\u00a0ubuntu:14.04\u00a0\/bin\/bash<\/pre>\n<p>eine bash im ubuntu-System ge\u00f6ffnet werden. In der Bash des Docker-Containers wird erst mal eine Aktualisierung von apt vorgenommen und die f\u00fcr den Build notwendigen Komponenten installiert:<\/p>\n<pre>\u00a0apt-get\u00a0update\r\n\u00a0apt-get\u00a0upgrade\r\n\u00a0apt-get\u00a0install\u00a0wget\u00a0unzip\u00a0make\u00a0\r\n\u00a0\u00a0g++\u00a0python\u00a0git\u00a0diffstat\u00a0\r\n\u00a0\u00a0texinfo\u00a0gawk\u00a0chrpath\u00a0libsdl1.2-dev\r\n<\/pre>\n<p>Jetzt legen wir einen Nutzer an:<\/p>\n<pre>useradd\u00a0-m\u00a0-s\u00a0\/bin\/bash\u00a0-U\u00a0smx6Dev\u00a0-p\u00a0test<\/pre>\n<p>und die verschiedenen Verzeichnisse f\u00fcr den Nutzer:<\/p>\n<pre>\u00a0mkdir\u00a0\/home\/smx6Dev\/Downloads\r\n\u00a0mkdir\u00a0\/home\/smx6Dev\/build\r\n<\/pre>\n<p>Nach Anlegen der Verzeichnisse wird das Yocto-Image vom Kugelmann-Server geholt:<\/p>\n<pre>wget\u00a0-O\u00a0\/home\/smx6Dev\/Downloads\/Yocto_Linux_BSP_SMARC-sAMX6i_R02.10.zip\u00a0http:\/\/public.kugelmann.com\/yocto\/Yocto_Linux_BSP_SMARC-sAMX6i_R02.10.zip<\/pre>\n<p>und entpackt:<\/p>\n<pre>unzip\u00a0\/home\/smx6Dev\/Downloads\/Yocto_Linux_BSP_SMARC-sAMX6i_R02.10.zip\u00a0-d\u00a0\/home\/smx6Dev\/Downloads<\/pre>\n<p>mit den beiden Befehlen:<\/p>\n<pre>tar\u00a0-C\u00a0\/home\/smx6Dev\/build\u00a0-xzf\u00a0\/home\/smx6Dev\/Downloads\/sources-base.tar.gz\u00a0\r\n\u00a0tar\u00a0-C\u00a0\/home\/smx6Dev\/build\u00a0-xzf\u00a0\/home\/smx6Dev\/Downloads\/sources-meta-smx6.tar.gz\r\n<\/pre>\n<p>werden die Yocto-Sourcen entpackt. Bevor wir uns anmelden und die eigentlichen Yocto-Sachen machen, wird noch der owner umgestellt:<\/p>\n<pre>chown\u00a0smx6Dev:smx6Dev\u00a0-R\u00a0\/home\/smx6Dev\/build\r\n\u00a0chown\u00a0smx6Dev:smx6Dev\u00a0\/home\/smx6Dev\/Downloads<\/pre>\n<p>Wenn das getan ist, kann man sich als smx6Dev einloggen:<\/p>\n<pre>su\u00a0-\u00a0smx6Dev<\/pre>\n<p>Nun wechselt man ins build-Verzeichnis und ruft das setup-environment auf:<\/p>\n<pre>cd\u00a0build\r\n\u00a0source\u00a0.\/sources\/meta-smx6\/setup-environment\u00a0.\/build<\/pre>\n<p>auf. Last but not least kann dann mit:<\/p>\n<pre>bitbake\u00a0smx6-image<\/pre>\n<p>das Bauen des Images angesto\u00dfen werden.<\/p>\n<p>Um das ganze noch zu vereinfachen, habe ich ein Image gebaut. Die Einzelnen Schritte sind in dem folgenden <a href=\"http:\/\/blog.cssec.de\/fp-content\/attachs\/dockerfile.txt\">Docker-File<\/a> beschrieben. Falls ihr das benutzen wollt, benennt bitte die Datei in Dockerfile um (ohne txt!).<\/p>\n<p>Wenn man den Docker-Container verl\u00e4sst, kann man mit:<\/p>\n<pre>docker\u00a0build\u00a0-t\u00a0yocto-build\u00a0.<\/pre>\n<p>ausgef\u00fchrt im Verzeichnis, wo das Dockerfile liegt, ein eigenes Image bauen. Das habe ich jedoch bereits gemacht und es in mein Dockhub-Repository hochgeladen.<\/p>\n<p>Um es abzurufen, muss man sich erst einloggen (als crypti76):<\/p>\n<pre>docker\u00a0login\u00a0--username=crypti76<\/pre>\n<p>und kann dann mit:<\/p>\n<pre>docker\u00a0run\u00a0-it\u00a0crypti76\/smx6image:latest\u00a0\/bin\/bash<\/pre>\n<p>das fertig vorbereitete image starten und die letzten Schritte (ab anmelden als smx6Dev) durchf\u00fchren.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie bereits im vorigen Thread (Makulu Linux Tutorial) angek\u00fcndigt, 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\u00a0pacman\u00a0-Sy und sudo\u00a0pacman\u00a0-Su auf aktuellen Stand bringe. Anschlie\u00dfend installiere ich [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":271,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[],"_links":{"self":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts\/112"}],"collection":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/comments?post=112"}],"version-history":[{"count":1,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts\/112\/revisions"}],"predecessor-version":[{"id":113,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts\/112\/revisions\/113"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/media\/271"}],"wp:attachment":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/media?parent=112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/categories?post=112"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/tags?post=112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}