{"id":2744,"date":"2021-11-14T10:53:28","date_gmt":"2021-11-14T10:53:28","guid":{"rendered":"https:\/\/digitalgateamg.com\/?p=2744"},"modified":"2022-12-08T12:14:29","modified_gmt":"2022-12-08T12:14:29","slug":"yocto-development-environment-with-docker","status":"publish","type":"post","link":"https:\/\/digitalgateamg.com\/de\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/","title":{"rendered":"Yocto-Entwicklungsumgebung mit Docker"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"2744\" class=\"elementor elementor-2744\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-518684b elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"518684b\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-133c623\" data-id=\"133c623\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e7a4474 elementor-widget elementor-widget-heading\" data-id=\"e7a4474\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Einf\u00fchrung<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a4ee00a elementor-widget elementor-widget-text-editor\" data-id=\"a4ee00a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In diesem Blog-Beitrag stellen wir die Verwendung von Docker-Containern als Entwicklungsumgebung f\u00fcr ein Embedded Linux BSP-Entwicklungsprojekt auf Basis von Yocto und OpenEmbedded vor.<\/p>\n<p>Heutzutage sind Docker und Container im Allgemeinen aufgrund ihrer Vielseitigkeit bei der L\u00f6sung von Anwendungsabh\u00e4ngigkeiten und Paketierungsproblemen praktisch \u00fcberall zu finden. Bei DigitalGate nutzen wir Docker f\u00fcr viele Aufgaben, von CI-Pipelines bis hin zu skalierbaren IoT-Ger\u00e4ten, die \u00fcber eine generische Schnittstelle f\u00fcr die Integration von Drittanbieteranwendungen verf\u00fcgen m\u00fcssen. Als IDE werden wir Visual Studio Code verwenden, da es \u00fcber hervorragende Remote-Entwicklungsfunktionen verf\u00fcgt. Visual Studio Code ist eine hervorragende IDE, wenn es um die Entwicklung innerhalb von Docker-Containern geht.<\/p>\n<p class=\"translation-block\">Ein Vorteil der Entwicklung von Embedded Linux in Docker-Containern ist die Plattformunabh\u00e4ngigkeit der Entwicklungsumgebung. Alle Abh\u00e4ngigkeiten des Build-Systems sind in den Docker-Containern verpackt. Entwickler m\u00fcssen  nur Docker installiert haben. Solche Setups sind ideal f\u00fcr Unternehmensumgebungen, in denen z. B. Windows tats\u00e4chlich die Plattform f\u00fcr Entwicklungsmaschinen ist.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-a1015b3 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"a1015b3\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-35d6697\" data-id=\"35d6697\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-94f971e elementor-widget elementor-widget-spacer\" data-id=\"94f971e\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5e54ed9 elementor-widget elementor-widget-heading\" data-id=\"5e54ed9\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Einrichtung der Host-Umgebung<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4429ea5 elementor-widget elementor-widget-text-editor\" data-id=\"4429ea5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p class=\"translation-block\">Als ersten Schritt beim Einrichten unserer Entwicklungsumgebung m\u00fcssen wir Docker auf unserem Rechner installieren. In diesem Artikel verwenden wir einen Windows 10-Rechner mit installierter Docker-Version 19.03.13. Die Schritte zur Installation von Docker finden Sie unter folgendem Link: <a href=\"https:\/\/docs.docker.com\/desktop\/windows\/install\/\">https:\/\/docs.docker.com\/desktop\/windows\/install\/<\/a>. Sobald Docker installiert ist, werden wir mit der Implementierung unserer Docker-Compose-Dateien fortfahren. Die Dateien beschreiben unsere Entwicklungsumgebung und die Werkzeuge, die wir auf ihr installieren m\u00fcssen.  Die zu installierenden Pakete sind in der Yocto-Benutzeranleitung angegeben <a href=\"https:\/\/www.yoctoproject.org\/docs\/1.8\/yocto-project-qs\/yocto-project-qs.html\">https:\/\/www.yoctoproject.org\/docs\/1.8\/yocto-project-qs\/yocto-project-qs.html<\/a><\/p><p><span style=\"background-color: var(--nv-site-bg); color: var( --e-global-color-secondary ); font-size: var(--bodyFontSize); font-weight: var(--bodyFontWeight); letter-spacing: var(--bodyLetterSpacing); text-transform: var(--bodyTextTransform);\">Die Schritte zum Einrichten der Umgebung und zur Installation der erforderlichen Abh\u00e4ngigkeiten f\u00fcr Yocto werden in unserer Dockerdatei durchgef\u00fchrt, das das Basis-Image definiert, das wir verwenden werden.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1a7cb72 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"1a7cb72\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-db5ce4e\" data-id=\"db5ce4e\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-954a33f elementor-widget elementor-widget-spacer\" data-id=\"954a33f\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-18c6c5b elementor-widget elementor-widget-heading\" data-id=\"18c6c5b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Docker-Compose-Skript<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3c6b8f0 elementor-widget elementor-widget-text-editor\" data-id=\"3c6b8f0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Die folgende Docker-Compose-Datei implementiert unsere Entwicklungsplattform und beschreibt die folgenden Punkte:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-8481491 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8481491\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-9c0c421\" data-id=\"9c0c421\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1006bfa elementor-widget elementor-widget-text-editor\" data-id=\"1006bfa\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li>Betriebssystem, das wir innerhalb des Docker-Containers emulieren werden, in diesem Fall Ubuntu 18.04;<\/li><li>die verschiedenen Volumes, die wir verwenden werden, um die Projektdateien vom Host-PC im Docker-Container abzubilden;<\/li><li>Netzwerkschnittstellen, die wir mit dem Host teilen werden. In diesem speziellen Fall werden wir im Bridged-Modus arbeiten, damit der Container direkten Zugriff auf die Netzwerkschnittstellen des Host-Rechners hat.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-5f2e008\" data-id=\"5f2e008\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ebe99d8 elementor-widget elementor-widget-image\" data-id=\"ebe99d8\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"600\" height=\"600\" src=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Frame-13-1.png\" class=\"attachment-large size-large wp-image-9216\" alt=\"\" srcset=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Frame-13-1.png 600w, https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Frame-13-1-300x300.png 300w, https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Frame-13-1-150x150.png 150w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ab238e6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ab238e6\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b628364\" data-id=\"b628364\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-14ed221 elementor-widget elementor-widget-code-highlight\" data-id=\"14ed221\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>version: \"2\"\r\nservices:\r\n  yocoto-dev-enviroment:\r\n    build: .\r\n    networ_mode: bridge\r\n    volumes:\r\n      - ..\/:\/yocoto-dev-enviroment\/\r\n    working_dir: \/yocoto-dev-enviroment\r\n    command: sleep infinity\r\n    environment:\r\n      - DEBIAN_FRONTEND=noninteractive\r\n\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f43b723 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"f43b723\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e1edfcb\" data-id=\"e1edfcb\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-303cd48 elementor-widget elementor-widget-spacer\" data-id=\"303cd48\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5a6ec09 elementor-widget elementor-widget-heading\" data-id=\"5a6ec09\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Bild der Entwicklungsumgebung<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-79c2778 elementor-widget elementor-widget-text-editor\" data-id=\"79c2778\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Das Docker-Image, das wir f\u00fcr den Entwicklungs-Docker-Container verwenden werden, basiert auf Ubuntu 18.04. In der Docker-Datei k\u00f6nnen wir alle Pakete angeben, die wir installieren m\u00fcssen. Auf diese Weise werden alle von Yocto ben\u00f6tigten Pakete installiert, w\u00e4hrend der Container gebaut wird.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e3ce526 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e3ce526\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-da8551f\" data-id=\"da8551f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5e10d2c elementor-widget elementor-widget-code-highlight\" data-id=\"5e10d2c\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>RUN apt-get install -y \\\r\n    bc \\\r\n    build-essential \\\r\n    chrpath \\\r\n    cpio \\\r\n    debianutils \\\r\n    diffstat \\\r\n    dos2unix \\\r\n    fop \\\r\n    g++-multilib \\\r\n    gawk \\\r\n    gcc-multilib \\\r\n    git-core \\\r\n    git-lfs \\\r\n    iputils-ping \\\r\n    libegl1-mesa \\\r\n    libncurses5-dev \\\r\n    libsdl1.2-dev \\\r\n    pylint3 \\\r\n    python3 \\\r\n    python3-dev \\\r\n    python3-git \\\r\n    python3-jinja2 \\\r\n    python3-pexpect \\\r\n    python3-pip \\\r\n    socat \\\r\n    texinfo \\\r\n    tmux \\\r\n    unzip \\\r\n    vim \\\r\n    wget \\\r\n    xsltproc \\\r\n    xterm \\\r\n    openssl \\\r\n    tree \\\r\n    xz-utils\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-50c2779 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"50c2779\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a107e87\" data-id=\"a107e87\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-abcb51a elementor-widget elementor-widget-text-editor\" data-id=\"abcb51a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Sobald alle erforderlichen Pakete installiert sind, k\u00f6nnen wir die Locales und Berechtigungen f\u00fcr die verschiedenen Verzeichnisse auf dem Container-Dateisystem so konfigurieren, dass die Build-Verzeichnisse und Artefakte mit dem Host-PC und dem Board-Bootloader, der das Linux-Image \u00fcber Ethernet bootet, gemeinsam genutzt werden k\u00f6nnen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3001355 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3001355\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0fbe6b6\" data-id=\"0fbe6b6\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d84165c elementor-widget elementor-widget-code-highlight\" data-id=\"d84165c\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>RUN apt-get update && apt-get install -y \\\r\n    apt-utils locales sudo && \\\r\n    dpkg-reconfigure locales && \\\r\n    locale-gen en_US.UTF-8 && \\\r\n    update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \\\r\n    apt-get clean && \\\r\n    rm -rf \/var\/lib\/apt\/lists\/*\r\nENV LANG en_US.utf8\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-bc7d287 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"bc7d287\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-450b064\" data-id=\"450b064\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-83cbc8f elementor-widget elementor-widget-text-editor\" data-id=\"83cbc8f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ein zus\u00e4tzlicher Schritt ist die Konfiguration eines Nicht-Root-Benutzers. Standardm\u00e4\u00dfig hat der Container nur den Root-Benutzer, aber Bitbake kann nicht unter dem Root-Benutzer laufen. Wir m\u00fcssen einen Benutzer erstellen und ihn der Sudoers-Gruppe hinzuf\u00fcgen, damit er Befehle als root ausf\u00fchren kann.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-29a978c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"29a978c\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d44783c\" data-id=\"d44783c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-24f44db elementor-widget elementor-widget-code-highlight\" data-id=\"24f44db\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>ARG host_uid=1001\r\nARG host_gid=1001\r\nRUN groupadd -g $host_gid $USER_NAME && \\\r\n    useradd -g $host_gid -m -s \/bin\/bash -p $(openssl passwd -crypt $PASS) -u       $host_uid $USER_NAME && \\\r\n    echo \"build ALL=(ALL) NOPASSWD: ALL\" >> \/etc\/sudoers\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0f21fed elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"0f21fed\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a7c5c57\" data-id=\"a7c5c57\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-da8766e elementor-widget elementor-widget-text-editor\" data-id=\"da8766e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Eine praktische Konfiguration ist der Wechsel zum Nicht-Root-Benutzer am Ende der Dockerdatei, da alle Befehle, die wir innerhalb des Docker-Containers ausf\u00fchren, unter einem Nicht-Root-Benutzer laufen m\u00fcssen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-af75e3e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"af75e3e\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f13c63b\" data-id=\"f13c63b\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ea3dcf6 elementor-widget elementor-widget-code-highlight\" data-id=\"ea3dcf6\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-c line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-c\">\n\t\t\t\t\t<xmp>USER $USER_NAME<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d3a9cd4 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"d3a9cd4\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-dbd033d\" data-id=\"dbd033d\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5a62a0a elementor-widget elementor-widget-text-editor\" data-id=\"5a62a0a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Wenn das Skript fertig ist, k\u00f6nnen wir es mit der Visual Studio-Erweiterung f\u00fcr Remote-Container ausf\u00fchren. Dies wird den Docker-Daemon veranlassen, unser Image zu erstellen und den Yocto-Arbeitsbereich innerhalb des neu erstellten Containers zu \u00f6ffnen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5338518 elementor-widget elementor-widget-image\" data-id=\"5338518\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"2554\" height=\"1393\" src=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/vscode.png\" class=\"attachment-full size-full wp-image-7754\" alt=\"\" srcset=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/vscode.png 2554w, https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/vscode-1536x838.png 1536w, https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/vscode-2048x1117.png 2048w\" sizes=\"(max-width: 2554px) 100vw, 2554px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5d5785f elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"5d5785f\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ca3f36e\" data-id=\"ca3f36e\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9b2afe1 elementor-widget elementor-widget-text-editor\" data-id=\"9b2afe1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Von nun an k\u00f6nnen wir mit der Einrichtung der Bitbake-Umgebung f\u00fcr die Erstellung unserer Images fortfahren. In diesem speziellen Beispiel werden wir ein benutzerdefiniertes Image f\u00fcr das sama5d2 xplained Board erstellen.<\/p>\n<p>Um die Initialisierung der Build-Umgebung f\u00fcr bitbake zu automatisieren, werden wir ein kleines Shell-Skript verwenden. Es f\u00fchrt folgende Aktionen durch.<\/p>\n<h5><strong><span style=\"color: var( --e-global-color-secondary ); background-color: var(--nv-site-bg); font-size: var(--bodyFontSize); letter-spacing: var(--bodyLetterSpacing); text-transform: var(--bodyTextTransform);\">Es klont alle f\u00fcr den Build erforderlichen Ebenen:<\/span><\/strong><\/h5>\n<ul>\n<li><span style=\"color: var( --e-global-color-secondary ); background-color: var(--nv-site-bg); font-size: var(--bodyFontSize); font-weight: var(--bodyFontWeight); letter-spacing: var(--bodyLetterSpacing); text-transform: var(--bodyTextTransform);\">Poky;<\/span><\/li>\n<li>Openembedded;<\/li>\n<li>meta-atmel;<\/li>\n<li>meta-aws;<\/li>\n<li>meta-qt.<\/li>\n<\/ul>\n<p>Quelltext des Bitbake-Init-Skripts, das unsere Build-Umgebung einrichtet. Darin k\u00f6nnen wir verschiedene Bitbake-Befehle f\u00fcr Layer, Rezepterstellung, Maschinenkonfiguration usw. ausf\u00fchren.<\/p>\n<p>F\u00fcgt der Build-Konfiguration mit dem Befehl bitbake-layers add-layer die erforderlichen Schichten hinzu.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8f1914a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8f1914a\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1512e7b\" data-id=\"1512e7b\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b25eb65 elementor-widget elementor-widget-code-highlight\" data-id=\"b25eb65\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>#!\/bin\/bash -xe\r\n\r\n#layers on which our image depends\r\nPOKY_REPO=git:\/\/git.yoctoproject.org\/poky.git\r\nOPENEMBEDDED_REPO=git:\/\/git.openembedded.org\/meta-openembedded.git\r\n\r\n# Setup all source directories\r\nif [ ! -d \/opt\/build ] ; then\r\n   git clone \"$POKY_REPO\" -b dunfell  \/opt\/build\/poky\r\n   git clone \"$OPENEMBEDDED_REPO\" -b dunfell \/opt\/build\/meta-openembedded\r\nfi\r\n\r\n# initialize build directory\r\nsource \/opt\/build\/poky\/oe-init-build-env \/opt\/build\r\n\r\n# add all required layers to the build\r\nbitbake-layers add-layer meta-openembedded\/meta*\/\r\nbitbake-layers add-layer \/yocoto-dev-enviroment\/layers\/meta-atmel\/\r\nbitbake-layers add-layer \/yocoto-dev-enviroment\/layers\/meta-aws\/\r\nbitbake-layers add-layer \/yocoto-dev-enviroment\/layers\/meta-custom-app\/\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d29903b elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"d29903b\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f9ea0e5\" data-id=\"f9ea0e5\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-feea95a elementor-widget elementor-widget-text-editor\" data-id=\"feea95a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Sobald dies geschehen ist, wird das Verzeichnis in das bitbake-Verzeichnis ge\u00e4ndert. Hier k\u00f6nnen wir mit der Erstellung eines Image beginnen. Zum Beispiel ein Micro-Chip-Graphics-Image, das Unterst\u00fctzung f\u00fcr die Grafikschnittstellen auf der Karte bietet.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c1588db elementor-widget elementor-widget-image\" data-id=\"c1588db\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"672\" height=\"422\" src=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/YoctoDev2.png\" class=\"attachment-full size-full wp-image-7674\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-69fbea9 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"69fbea9\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-97cb957\" data-id=\"97cb957\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-18a6294 elementor-widget elementor-widget-spacer\" data-id=\"18a6294\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d5f3b85 elementor-widget elementor-widget-heading\" data-id=\"d5f3b85\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Schlussfolgerung<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-edd8d75 elementor-widget elementor-widget-text-editor\" data-id=\"edd8d75\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Zusammenfassend l\u00e4sst sich sagen, dass die Verwendung einer vollst\u00e4ndigen Docker-Entwicklungsumgebung f\u00fcr die Entwicklung von Embedded Linux ein effizienter Weg ist, um reproduzierbare Builds und Setups f\u00fcr ein ganzes Team zu gew\u00e4hrleisten. Gleichzeitig erm\u00f6glicht es uns, parallel an mehreren Projekten mit unterschiedlichen Anforderungen an die Einrichtung auf derselben Maschine zu arbeiten. Eine Docker-Entwicklungsumgebung erm\u00f6glicht es uns auch, eine saubere Entwicklungsmaschine zu behalten, die nicht mit projektspezifischen Paketen verunreinigt ist.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-fb8438a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"fb8438a\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-narrow\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-dcf17d2\" data-id=\"dcf17d2\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a5269d0 elementor-widget elementor-widget-spacer\" data-id=\"a5269d0\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c1bc437 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"c1bc437\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-315fb2a elementor-widget elementor-widget-heading\" data-id=\"315fb2a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Weitere Artikel anschauen:<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4a1e577 elementor-grid-3 elementor-grid-tablet-2 elementor-grid-mobile-1 elementor-posts--thumbnail-top elementor-widget elementor-widget-posts\" data-id=\"4a1e577\" data-element_type=\"widget\" data-settings=\"{&quot;classic_row_gap&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:20,&quot;sizes&quot;:[]},&quot;pagination_type&quot;:&quot;numbers&quot;,&quot;classic_row_gap_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:30,&quot;sizes&quot;:[]},&quot;classic_columns&quot;:&quot;3&quot;,&quot;classic_columns_tablet&quot;:&quot;2&quot;,&quot;classic_columns_mobile&quot;:&quot;1&quot;,&quot;classic_row_gap_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"posts.classic\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-posts-container elementor-posts elementor-posts--skin-classic elementor-grid\" role=\"list\">\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-14657 post type-post status-publish format-standard has-post-thumbnail hentry category-uncategorized tag-accelerator-pedal-simulator tag-acoustic-tuning tag-automotive-industry tag-digitalgate tag-embedded-system-development tag-hardware-development tag-software-development\" role=\"listitem\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/09\/10\/accelerator-pedal-simulator-for-acoustics-tuning\/\" tabindex=\"-1\" >\n\t\t\t<div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"930\" height=\"620\" src=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2024\/09\/Accelerator-Pedal-Simulator-for-Acoustic-Tuning-1-930x620.png\" class=\"attachment-neve-blog size-neve-blog wp-image-14672\" alt=\"\" \/><\/div>\n\t\t<\/a>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/09\/10\/accelerator-pedal-simulator-for-acoustics-tuning\/\" >\n\t\t\t\tAccelerator Pedal Simulator for Acoustics Tuning\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\t\t<div class=\"elementor-post__meta-data\">\n\t\t\t\t\t<span class=\"elementor-post-date\">\n\t\t\tSeptember 10, 2024\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>Have you ever wondered how the perfect roar of an engine, or the smooth hum of a luxury car is crafted? It all comes<\/p>\n\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-post__read-more-wrapper\">\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/09\/10\/accelerator-pedal-simulator-for-acoustics-tuning\/\" aria-label=\"Mehr \u00fcber Accelerator Pedal Simulator for Acoustics Tuning\" tabindex=\"-1\" >\n\t\t\tRead More \u00bb\t\t<\/a>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-14620 post type-post status-publish format-standard has-post-thumbnail hentry category-uncategorized tag-condition-monitoring tag-data-acquisition-system tag-embedded-system-development tag-hardware-development tag-predictive-maintenance tag-software-development\" role=\"listitem\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/08\/28\/industrial-data-acquisition-system\/\" tabindex=\"-1\" >\n\t\t\t<div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"930\" height=\"620\" src=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2024\/08\/IEPE_DAS-930x620.png\" class=\"attachment-neve-blog size-neve-blog wp-image-14649\" alt=\"Data Acquistion PCB board with DigitalGate logo on a gray background\" \/><\/div>\n\t\t<\/a>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/08\/28\/industrial-data-acquisition-system\/\" >\n\t\t\t\tIndustrial Data Acquisition System\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\t\t<div class=\"elementor-post__meta-data\">\n\t\t\t\t\t<span class=\"elementor-post-date\">\n\t\t\tAugust 28, 2024\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>We&#8217;re excited to unveil one of our flagship products: an efficient and secure Data Acquisition System (DAS). Our team has designed this solution to<\/p>\n\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-post__read-more-wrapper\">\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/08\/28\/industrial-data-acquisition-system\/\" aria-label=\"Mehr \u00fcber Industrial Data Acquisition System\" tabindex=\"-1\" >\n\t\t\tRead More \u00bb\t\t<\/a>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-14267 post type-post status-publish format-standard has-post-thumbnail hentry category-uncategorized\" role=\"listitem\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/03\/15\/optimizing-our-custom-motor-controller-for-motion-control\/\" tabindex=\"-1\" >\n\t\t\t<div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"928\" height=\"620\" src=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2024\/03\/background-blog-BMS-928x620.jpeg\" class=\"attachment-neve-blog size-neve-blog wp-image-14268\" alt=\"\" srcset=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2024\/03\/background-blog-BMS-928x620.jpeg 928w, https:\/\/digitalgateamg.com\/wp-content\/uploads\/2024\/03\/background-blog-BMS-18x12.jpeg 18w\" sizes=\"(max-width: 928px) 100vw, 928px\" \/><\/div>\n\t\t<\/a>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/03\/15\/optimizing-our-custom-motor-controller-for-motion-control\/\" >\n\t\t\t\tOptimizing our Custom Motor Controller for Motion Control\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\t\t<div class=\"elementor-post__meta-data\">\n\t\t\t\t\t<span class=\"elementor-post-date\">\n\t\t\tM\u00e4rz 15, 2024\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>Using our carefully designed board, we demonstrate the impressive power and flexibility of integrating modern technologies into motor controllers. In the realm of small<\/p>\n\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-post__read-more-wrapper\">\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/03\/15\/optimizing-our-custom-motor-controller-for-motion-control\/\" aria-label=\"Mehr \u00fcber Optimizing our Custom Motor Controller for Motion Control\" tabindex=\"-1\" >\n\t\t\tRead More \u00bb\t\t<\/a>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-14259 post type-post status-publish format-standard has-post-thumbnail hentry category-uncategorized\" role=\"listitem\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/03\/01\/what-it-means-to-make-an-efficient-battery-management-system\/\" tabindex=\"-1\" >\n\t\t\t<div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"928\" height=\"620\" src=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2024\/03\/Background-1-928x620.jpeg\" class=\"attachment-neve-blog size-neve-blog wp-image-14255\" alt=\"\" srcset=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2024\/03\/Background-1-928x620.jpeg 928w, https:\/\/digitalgateamg.com\/wp-content\/uploads\/2024\/03\/Background-1-18x12.jpeg 18w\" sizes=\"(max-width: 928px) 100vw, 928px\" \/><\/div>\n\t\t<\/a>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/03\/01\/what-it-means-to-make-an-efficient-battery-management-system\/\" >\n\t\t\t\tWhat it means to make an efficient Battery Management System?\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\t\t<div class=\"elementor-post__meta-data\">\n\t\t\t\t\t<span class=\"elementor-post-date\">\n\t\t\tM\u00e4rz 1, 2024\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>Digital Gate is excited to introduce you to one of our flagship products: an efficient and secure Battery Management System (BMS), meticulously designed and<\/p>\n\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-post__read-more-wrapper\">\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/03\/01\/what-it-means-to-make-an-efficient-battery-management-system\/\" aria-label=\"Mehr \u00fcber What it means to make an efficient Battery Management System?\" tabindex=\"-1\" >\n\t\t\tRead More \u00bb\t\t<\/a>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-14236 post type-post status-publish format-standard has-post-thumbnail hentry category-uncategorized\" role=\"listitem\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/02\/21\/embedded-world-2024\/\" tabindex=\"-1\" >\n\t\t\t<div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"928\" height=\"620\" src=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2024\/02\/EW24-Thumbnail-1-928x620.png\" class=\"attachment-neve-blog size-neve-blog wp-image-14239\" alt=\"\" srcset=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2024\/02\/EW24-Thumbnail-1-928x620.png 928w, https:\/\/digitalgateamg.com\/wp-content\/uploads\/2024\/02\/EW24-Thumbnail-1-18x12.png 18w\" sizes=\"(max-width: 928px) 100vw, 928px\" \/><\/div>\n\t\t<\/a>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/02\/21\/embedded-world-2024\/\" >\n\t\t\t\tEmbedded World 2024\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\t\t<div class=\"elementor-post__meta-data\">\n\t\t\t\t\t<span class=\"elementor-post-date\">\n\t\t\tFebruar 21, 2024\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>DigitalGate is excited to announce its forthcoming participation at Embedded World 2024 taking place in Nuremberg from the 9th to the 11th of April.<\/p>\n\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-post__read-more-wrapper\">\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/digitalgateamg.com\/de\/blog\/2024\/02\/21\/embedded-world-2024\/\" aria-label=\"Mehr \u00fcber Embedded World 2024\" tabindex=\"-1\" >\n\t\t\tRead More \u00bb\t\t<\/a>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-13342 post type-post status-publish format-standard has-post-thumbnail hentry category-uncategorized\" role=\"listitem\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/digitalgateamg.com\/de\/blog\/2023\/08\/08\/capacitance-preservation-strategies-for-dc-bias-in-mlccs\/\" tabindex=\"-1\" >\n\t\t\t<div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"930\" height=\"620\" src=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2023\/08\/blog-info-new-e1691567543143-930x620.png\" class=\"attachment-neve-blog size-neve-blog wp-image-13420\" alt=\"\" \/><\/div>\n\t\t<\/a>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<h3 class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/digitalgateamg.com\/de\/blog\/2023\/08\/08\/capacitance-preservation-strategies-for-dc-bias-in-mlccs\/\" >\n\t\t\t\tKapazit\u00e4tserhalt: Strategien f\u00fcr DC-Vorspannung in MLCCs\t\t\t<\/a>\n\t\t<\/h3>\n\t\t\t\t<div class=\"elementor-post__meta-data\">\n\t\t\t\t\t<span class=\"elementor-post-date\">\n\t\t\tAugust 8, 2023\t\t<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>Ist die Kapazit\u00e4t des Kondensators immer gleich? Keramische Vielschichtkondensatoren (Multilayer Ceramic Capacitors, MLCCs) bieten eine Reihe von Vorteilen,<\/p>\n\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-post__read-more-wrapper\">\n\t\t\n\t\t<a class=\"elementor-post__read-more\" href=\"https:\/\/digitalgateamg.com\/de\/blog\/2023\/08\/08\/capacitance-preservation-strategies-for-dc-bias-in-mlccs\/\" aria-label=\"Mehr \u00fcber Capacitance Preservation: Strategies for DC Bias in MLCCs\" tabindex=\"-1\" >\n\t\t\tRead More \u00bb\t\t<\/a>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/article>\n\t\t\t\t<\/div>\n\t\t\n\t\t\t\t<div class=\"e-load-more-anchor\" data-page=\"1\" data-max-page=\"4\" data-next-page=\"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/posts\/2744\/page\/2\/\"><\/div>\n\t\t\t\t<nav class=\"elementor-pagination\" aria-label=\"Seitennummerierung\">\n\t\t\t<span aria-current=\"page\" class=\"page-numbers current\"><span class=\"elementor-screen-only\">Seite<\/span>1<\/span>\n<a class=\"page-numbers\" href=\"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/posts\/2744\/page\/2\/\"><span class=\"elementor-screen-only\">Seite<\/span>2<\/a>\n<a class=\"page-numbers\" href=\"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/posts\/2744\/page\/3\/\"><span class=\"elementor-screen-only\">Seite<\/span>3<\/a>\n<a class=\"page-numbers\" href=\"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/posts\/2744\/page\/4\/\"><span class=\"elementor-screen-only\">Seite<\/span>4<\/a>\t\t<\/nav>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Introduction In this blog post, we will present the usage of docker containers as a development environment for an Embedded Linux BSP development project based on yocto and open embedded. Nowadays Docker and containers, in general, are virtually everywhere, due to their versatility when it comes to solving application dependencies and packaging problems. At DigitalGate&hellip;&nbsp;<a href=\"https:\/\/digitalgateamg.com\/de\/blog\/2023\/08\/08\/capacitance-preservation-strategies-for-dc-bias-in-mlccs\/\" class=\"\" rel=\"bookmark\">Weiterlesen &raquo;<span class=\"screen-reader-text\">Kapazit\u00e4tserhalt: Strategien f\u00fcr DC-Vorspannung in MLCCs<\/span><\/a><\/p>","protected":false},"author":12,"featured_media":12948,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"coauthors":[],"class_list":["post-2744","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.1 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Yocto Development Environment With Docker - DigitalGate Custom Electronics<\/title>\n<meta name=\"description\" content=\"In this blog we present the usage of docker containers as a development environment for an Embedded Linux BSP project based on Yocto.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/digitalgateamg.com\/de\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Yocto Development Environment With Docker\" \/>\n<meta property=\"og:description\" content=\"In this blog we present the usage of docker containers as a development environment for an Embedded Linux BSP project based on Yocto.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/digitalgateamg.com\/de\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/\" \/>\n<meta property=\"og:site_name\" content=\"DigitalGate Custom Electronics\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DigitalGateamg\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-14T10:53:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-08T12:14:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Yoctodocker.png\" \/>\n\t<meta property=\"og:image:width\" content=\"930\" \/>\n\t<meta property=\"og:image:height\" content=\"620\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Digital Gate\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Digital Gate\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Digital Gate\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/\"},\"author\":{\"name\":\"Digital Gate\",\"@id\":\"https:\/\/digitalgateamg.com\/#\/schema\/person\/27511cb01dbba51abd9b489e6adc2fce\"},\"headline\":\"Yocto Development Environment With Docker\",\"datePublished\":\"2021-11-14T10:53:28+00:00\",\"dateModified\":\"2022-12-08T12:14:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/\"},\"wordCount\":827,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/digitalgateamg.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Yoctodocker.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/\",\"url\":\"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/\",\"name\":\"Yocto Development Environment With Docker - DigitalGate Custom Electronics\",\"isPartOf\":{\"@id\":\"https:\/\/digitalgateamg.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Yoctodocker.png\",\"datePublished\":\"2021-11-14T10:53:28+00:00\",\"dateModified\":\"2022-12-08T12:14:29+00:00\",\"description\":\"In this blog we present the usage of docker containers as a development environment for an Embedded Linux BSP project based on Yocto.\",\"breadcrumb\":{\"@id\":\"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#primaryimage\",\"url\":\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Yoctodocker.png\",\"contentUrl\":\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Yoctodocker.png\",\"width\":930,\"height\":620},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/digitalgateamg.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Yocto Development Environment With Docker\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/digitalgateamg.com\/#website\",\"url\":\"https:\/\/digitalgateamg.com\/\",\"name\":\"DigitalGate Custom Electronics\",\"description\":\"Embedded Software and Hardware Solutions\",\"publisher\":{\"@id\":\"https:\/\/digitalgateamg.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/digitalgateamg.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/digitalgateamg.com\/#organization\",\"name\":\"DigitalGate Amg S.A.\",\"url\":\"https:\/\/digitalgateamg.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/digitalgateamg.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/10\/logo-firma.png\",\"contentUrl\":\"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/10\/logo-firma.png\",\"width\":370,\"height\":370,\"caption\":\"DigitalGate Amg S.A.\"},\"image\":{\"@id\":\"https:\/\/digitalgateamg.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/DigitalGateamg\/\",\"https:\/\/www.linkedin.com\/company\/sc-digitalgate-amg-srl\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/digitalgateamg.com\/#\/schema\/person\/27511cb01dbba51abd9b489e6adc2fce\",\"name\":\"Digital Gate\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/digitalgateamg.com\/#\/schema\/person\/image\/cf8ad43aefc829ce3a5afa607f56c6f6\",\"url\":\"https:\/\/digitalgateamg.com\/wp-content\/litespeed\/avatar\/46f85298923a63b5939c9a06d38c2790.jpg?ver=1776247194\",\"contentUrl\":\"https:\/\/digitalgateamg.com\/wp-content\/litespeed\/avatar\/46f85298923a63b5939c9a06d38c2790.jpg?ver=1776247194\",\"caption\":\"Digital Gate\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Yocto Development Environment With Docker - DigitalGate Custom Electronics","description":"In this blog we present the usage of docker containers as a development environment for an Embedded Linux BSP project based on Yocto.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/digitalgateamg.com\/de\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/","og_locale":"de_DE","og_type":"article","og_title":"Yocto Development Environment With Docker","og_description":"In this blog we present the usage of docker containers as a development environment for an Embedded Linux BSP project based on Yocto.","og_url":"https:\/\/digitalgateamg.com\/de\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/","og_site_name":"DigitalGate Custom Electronics","article_publisher":"https:\/\/www.facebook.com\/DigitalGateamg\/","article_published_time":"2021-11-14T10:53:28+00:00","article_modified_time":"2022-12-08T12:14:29+00:00","og_image":[{"width":930,"height":620,"url":"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Yoctodocker.png","type":"image\/png"}],"author":"Digital Gate","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Digital Gate","Gesch\u00e4tzte Lesezeit":"8\u00a0Minuten","Written by":"Digital Gate"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#article","isPartOf":{"@id":"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/"},"author":{"name":"Digital Gate","@id":"https:\/\/digitalgateamg.com\/#\/schema\/person\/27511cb01dbba51abd9b489e6adc2fce"},"headline":"Yocto Development Environment With Docker","datePublished":"2021-11-14T10:53:28+00:00","dateModified":"2022-12-08T12:14:29+00:00","mainEntityOfPage":{"@id":"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/"},"wordCount":827,"commentCount":0,"publisher":{"@id":"https:\/\/digitalgateamg.com\/#organization"},"image":{"@id":"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#primaryimage"},"thumbnailUrl":"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Yoctodocker.png","articleSection":["Uncategorized"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/","url":"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/","name":"Yocto Development Environment With Docker - DigitalGate Custom Electronics","isPartOf":{"@id":"https:\/\/digitalgateamg.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#primaryimage"},"image":{"@id":"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#primaryimage"},"thumbnailUrl":"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Yoctodocker.png","datePublished":"2021-11-14T10:53:28+00:00","dateModified":"2022-12-08T12:14:29+00:00","description":"In this blog we present the usage of docker containers as a development environment for an Embedded Linux BSP project based on Yocto.","breadcrumb":{"@id":"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#primaryimage","url":"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Yoctodocker.png","contentUrl":"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Yoctodocker.png","width":930,"height":620},{"@type":"BreadcrumbList","@id":"https:\/\/digitalgateamg.com\/blog\/2021\/11\/14\/yocto-development-environment-with-docker\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/digitalgateamg.com\/"},{"@type":"ListItem","position":2,"name":"Yocto Development Environment With Docker"}]},{"@type":"WebSite","@id":"https:\/\/digitalgateamg.com\/#website","url":"https:\/\/digitalgateamg.com\/","name":"DigitalGate Custom Electronics","description":"Embedded Software and Hardware Solutions","publisher":{"@id":"https:\/\/digitalgateamg.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/digitalgateamg.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/digitalgateamg.com\/#organization","name":"DigitalGate Amg S.A.","url":"https:\/\/digitalgateamg.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/digitalgateamg.com\/#\/schema\/logo\/image\/","url":"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/10\/logo-firma.png","contentUrl":"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/10\/logo-firma.png","width":370,"height":370,"caption":"DigitalGate Amg S.A."},"image":{"@id":"https:\/\/digitalgateamg.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DigitalGateamg\/","https:\/\/www.linkedin.com\/company\/sc-digitalgate-amg-srl\/"]},{"@type":"Person","@id":"https:\/\/digitalgateamg.com\/#\/schema\/person\/27511cb01dbba51abd9b489e6adc2fce","name":"Digital Gate","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/digitalgateamg.com\/#\/schema\/person\/image\/cf8ad43aefc829ce3a5afa607f56c6f6","url":"https:\/\/digitalgateamg.com\/wp-content\/litespeed\/avatar\/46f85298923a63b5939c9a06d38c2790.jpg?ver=1776247194","contentUrl":"https:\/\/digitalgateamg.com\/wp-content\/litespeed\/avatar\/46f85298923a63b5939c9a06d38c2790.jpg?ver=1776247194","caption":"Digital Gate"}}]}},"jetpack_featured_media_url":"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Yoctodocker.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/posts\/2744","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/comments?post=2744"}],"version-history":[{"count":0,"href":"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/posts\/2744\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/media\/12948"}],"wp:attachment":[{"href":"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/media?parent=2744"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/categories?post=2744"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/tags?post=2744"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/coauthors?post=2744"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}