[NXP-i.MX Docker]使用Docker在隔離環環境下中建置i.MX Linux Yocto BSP

因手上用來編譯Yocto BSP環境作業系統為Ubuntu 18.04 的版本,而新版本的i.MX Linux 6.1.XX YoctoBSP 建議使用Ubuntu 20.04以上的版本。為不影響原本編譯過的i.MX Yocto BSP project 及Android BSP, 因而使用了NXP GitHub上的imx-docker 的方法建置一個隔離環境, 及i.MX平台的新版本的 Yotco Linux Images 。本文以建立Ubuntu 22.04 的Docker 並產生i.MX93EVK Linux 6.1.36-2.1.0 Yocto BSP 的映像檔為例。

先決條件:

  1. 使用git clone 下載imx-docker 的 軟體包。

   git clone https://github.com/nxp-imx/imx-docker.git
   
   在目錄下會生成一個imx-docker 資料夾。


b. 安裝Docker 工具:

             使用Bash script 腳本,該腳本會自動判斷作業系統,並依照作業系統不同進安裝。

             $ curl -fsSL https://get.docker.com -o get-docker.sh

             $ sudo sh get-docker.sh


         c. 安裝完成後,可以使用以下的命令,讓後續使用docker 命令不需使用sudo,需要重新登入 Linux 後才生效。

              $ sudo usermod -aG docker $USER

             以及可以使用各種docker 的命令。例如:

              $ docker version

              $ docker ps -a

              $ docker image

 
        d. 設置Docker client代理。

            建立一個 docker 設定檔~/.docker/config.json並輸入以下內容,注意:將“範例”代替換為您的代理資訊。:

{

"proxies":

       {

                      "default":

                      {

                           "httpProxy":"http://proxy.example.com:80"

                       }

               }

         }
 
        e. 建立docker 服務。命令如下:

            $ sudo mkdir -p /etc/systemd/system/docker.service.d

            $ sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

             添加以下內容:

              [Service]


               Environment="HTTP_PROXY=http://proxy.example.com:80/"

               Environment="NO_PROXY=localhost,someservices.somecompany.com"  

       f. 重啟Docker。命令如下:

          $ sudo systemctl daemon-reload

          $ sudo systemctl restart docker


使用 docker 建置MX Yocto Linux BSP映像檔: 

    a. 因為要建置Ubuntu 22.04的Docker 環境及Yocto BSP 6.1.36-2.1.0 版本的映像檔,請先確認下載的imx-docker 原代碼包含如下的所需要的建置檔案及目錄。

    
   
  b.設定變數:

    修改imx-6.1.36-2.1.0 目錄中的env.sh,為您的建置設定相關的變數。確保您已在分割區上建立了目前使用者擁有的工作目錄。以編譯i.MX93 EVK Linux Yocto multimedia image為例,修改腳本中的YOCTO_DIR,  MACHINE,IMAGES如下範例:

    
 
 c. 建立Yocto docker 映像

     本文使用Ubuntu 版本 22.04 的 Dockerfile參數運行docker-build.sh, 輸入如下的命令。

       $ ./docker-build.sh Dockerfile-Ubuntu-22.04


 d. 在docker 容器中建置yocto imx image

      使用如下的命令建置yocto imx image。

      $ ./docker-run.sh imx-6.1.36-2.1.0/yocto-build.sh

 補充說明:

  • 如建置yocto imx image 過程有誤,可以直接使用 ./docke-run.sh 轉到docker 容器內, 可直接運行建置imx yocto BSP 建置image 的命令。

          詳細說明可參考大大通NXP i.MX93 EVK Linux (Yocto)機器學習環境建置

  • 在建置Docker Ubuntu 22.04 的環境時,因python 版本問題造成建置失敗,可將Dockerfile-Ubuntu-22.04修改成如下內容。
       
   

  • 在Ubuntu 22.04 Docker 環境下建置Yocto imx images,出現gdk-pixbuf-native-2.42.10-r0 do_compile: ExecutionError 的問題,可在docker-run.sh 腳本中添加--security-opt seccomp=unconfined後可以解決此問題。

        

 

參考資料:

 網站: https://github.com/nxp-imx/imx-docker#readme

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論