因手上用來編譯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 的映像檔為例。
先決條件:
- 使用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
評論