{"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":"\t\t<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\" data-e-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\" data-e-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-e-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\">Introduction<\/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-e-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 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.<\/p>\n<p>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 we are using Docker for many tasks from CI pipelines up to scalable IoT devices that need to provide a generic interface for integration of third-party applications. As an IDE we will be using Visual Studio Code, due to its excellent remote development capabilities. Visual Studio Code is an excellent IDE when it comes to development inside Docker Containers.<\/p>\n<p>One advantage of doing Embedded Linux development inside Docker containers is the platform independence of the development environment. All dependencies of the build system are packaged inside the docker containers. Developers only&nbsp;<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);\">need<\/span><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);\">&nbsp;<\/span><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);\">&nbsp;to have docker installed, such setups are ideal for corporate environments where for e.g. Windows is the de-facto platform for development machines.<\/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-a1015b3 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"a1015b3\" data-element_type=\"section\" data-e-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\" data-e-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-e-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-e-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\">Host Environment Setup<\/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-e-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><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);\">As a first step in setting up our development environment, we will need to install Docker on our machine. In this article, we will be using a Windows 10 machine with Docker version 19.03.13 installed. You can find the steps to install docker at the following link:\u00a0<\/span><a style=\"background-color: var(--nv-site-bg); font-size: var(--bodyFontSize); font-weight: var(--bodyFontWeight); letter-spacing: var(--bodyLetterSpacing); text-transform: var(--bodyTextTransform);\" href=\"https:\/\/docs.docker.com\/desktop\/windows\/install\/\">https:\/\/docs.docker.com\/desktop\/windows\/install\/<\/a><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);\">. <\/span><mark style=\"font-size: var(--bodyFontSize); font-weight: var(--bodyFontWeight); letter-spacing: var(--bodyLetterSpacing); text-transform: var(--bodyTextTransform);\">Once Docker is installed, we will proceed to implement our docker-compose files.<\/mark> <mark style=\"font-size: var(--bodyFontSize); font-weight: var(--bodyFontWeight); letter-spacing: var(--bodyLetterSpacing); text-transform: var(--bodyTextTransform);\">The files will describe our development environment and the tools that we need to install on it. <\/mark><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);\"> The packages that we need to install are specified in the Yocto user manual\u00a0<\/span><a style=\"background-color: var(--nv-site-bg); font-size: var(--bodyFontSize); font-weight: var(--bodyFontWeight); letter-spacing: var(--bodyLetterSpacing); text-transform: var(--bodyTextTransform);\" 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);\">The steps for setting up the environment and installing the required dependencies for Yocto will be done in our Dockerfile that defines the base image that we will be using.<\/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\" data-e-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\" data-e-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-e-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-e-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 script<\/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-e-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>The following docker-compose file implements our development platform, it describes the following:<\/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\" data-e-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\" data-e-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-e-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>OS that we will be emulating inside the docker container, in this case, Ubuntu 18.04;<\/li><li>The various volumes that we will be using to map the project files from the host PC into the docker container;<\/li><li>Network interfaces that we will share with the host. In this particular case, we will run in bridged mode so the container has access directly to the network interfaces of the host machine.<\/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\" data-e-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-e-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\" data-e-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\" data-e-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-e-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\" data-e-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\" data-e-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-e-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-e-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\">Development Environment Image<\/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-e-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>The docker image that we will be using for the development docker container is based on Ubuntu 18.04. Inside the docker file, we can specify all the packages that we need to install. That way, all packages required by Yocto are installed while the container is built.<\/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\" data-e-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\" data-e-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-e-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\" data-e-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\" data-e-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-e-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>Once all required packages are installed we can proceed to configure the locales and permissions for the various directories on the container filesys such that the build directories and artifacts can be shared with the host pc and with the board bootloader which boots the Linux image via Ethernet.<\/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\" data-e-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\" data-e-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-e-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\" data-e-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\" data-e-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-e-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>An additional step is the configuration of a non-root user, by default the container has only the root user but bitbake cannot run under the root user. We need to create a user and add it to the sudoers group such it can run commands as root.<\/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\" data-e-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\" data-e-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-e-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\" data-e-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\" data-e-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-e-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>One handy configuration is to switch to the non-root user at the end of the Dockerfile since anyways all commands that we will execute inside the docker container are required to run under a non-root user.<\/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\" data-e-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\" data-e-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-e-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\" data-e-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\" data-e-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-e-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>We can run the script when is ready using the Visual Studio remote containers extension. This will trigger the docker daemon to build our image and open the Yocto workspace inside the newly created container.<\/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-e-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\" data-e-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\" data-e-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-e-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>From now on we can proceed with setting up the bitbake environment for building our images. In this particular example, we will build a custom image for the sama5d2 xplained board.<\/p>\n<p>In order to automate the initialization of the built environment for bitbake, we will use a small shell script. It performs the following actions.<\/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);\">Clones all required layers for the build:<\/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>Sources the bitbake init script which will set up our build environment. Inside it, we can run various bitbake commands for layer, recipe creation, machine configuration, etc.<\/p>\n<p>Adds the required layers to the build configuration using the bitbake-layers add-layer command.<\/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\" data-e-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\" data-e-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-e-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\" data-e-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\" data-e-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-e-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>Once this is done the directory will be changed to the bitbake directory. Here we can start the build of an imag. For example, micro-chip-graphics-image, which includes support for the graphics interfaces on the board.<\/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-e-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\" data-e-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\" data-e-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-e-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-e-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\">Conclusion<\/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-e-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 conclusion, using a fully dockerized development environment for embedded Linux development is an efficient way to ensure reproducible builds and setups across an entire team. At the same time, it allows us to work in parallel on multiple projects with various setup requirements on the same machine. A dockerized development environment also enables us to keep a clean development machine that is not polluted with project-specific packages.<\/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\" data-e-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\" data-e-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-e-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-e-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-e-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\">See other articles:<\/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-e-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\tCapacitance Preservation: Strategies for DC Bias 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>Is the capacitance of the capacitor always same? Multilayer ceramic capacitors (MLCCs) offer several advantages that make them a popular choice for various electronic<\/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>\n\t\t","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_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"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 v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\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\\\/wp-content\\\/litespeed\\\/avatar\\\/46f85298923a63b5939c9a06d38c2790.jpg?ver=1788949926c4177d0df5f612588c988bb8cfef7b68\",\"url\":\"https:\\\/\\\/digitalgateamg.com\\\/wp-content\\\/litespeed\\\/avatar\\\/46f85298923a63b5939c9a06d38c2790.jpg?ver=1788949926\",\"contentUrl\":\"https:\\\/\\\/digitalgateamg.com\\\/wp-content\\\/litespeed\\\/avatar\\\/46f85298923a63b5939c9a06d38c2790.jpg?ver=1788949926\",\"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\/wp-content\/litespeed\/avatar\/46f85298923a63b5939c9a06d38c2790.jpg?ver=1788949926c4177d0df5f612588c988bb8cfef7b68","url":"https:\/\/digitalgateamg.com\/wp-content\/litespeed\/avatar\/46f85298923a63b5939c9a06d38c2790.jpg?ver=1788949926","contentUrl":"https:\/\/digitalgateamg.com\/wp-content\/litespeed\/avatar\/46f85298923a63b5939c9a06d38c2790.jpg?ver=1788949926","caption":"Digital Gate"}}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/digitalgateamg.com\/wp-content\/uploads\/2021\/11\/Yoctodocker.png","_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":14,"href":"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/posts\/2744\/revisions"}],"predecessor-version":[{"id":13116,"href":"https:\/\/digitalgateamg.com\/de\/wp-json\/wp\/v2\/posts\/2744\/revisions\/13116"}],"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}]}}