NXP i.MX8M Mini Yocto Linux Project環境の構築時に遭遇したエラーと対処
ネットワークオーディオプレーヤーを開発する準備として、Yocto Projectのビルド環境を用いてNXP社のi.MX8M Mini 評価・開発ボードのLinuxイメージをビルドした際に遭遇したエラーと対処方法について紹介します。
評価・開発ボード:8MMINILPD4-EVKB
筆者ホストマシン環境:
・CPU:Intel Core i5 13500 (スレッド総数 20)
・RAM:DDR4 32GB
・Storage:SSD 1TB
・OS:Ubuntu 22.04.4 TLS
SSL: CERTIFICATE_VERIFY_FAILED

問題点
Yocto Project BSPをダウンロードする際、SSL: CERTIFICATE_VERIFY_FAILED エラーが発生しダウンロードができなくなりました。
$ repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-nanbield -m imx-6.6.3-1.0.0.xml
Downloading Repo source from https://gerrit.googlesource.com/git-repo
fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
fatal: error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)
fatal: double check your --repo-rev setting.
fatal: cloning the git-repo repository failed, will remove '.repo/repo'
原因
SSL Certificate Verificationに失敗したため発生したエラーです。
SSL Certificate VerificationはhttpsリクエストのSSL証明書の検証です。証明書を検証できないためSSLエラーが発生しています。
解決策
今回はi.MX BSP リリースのマニフェストをダウンロードしたかっただけなので、~/bin/repo ファイルに下記のコードを追加してSSL/TLS証明書の検証を無効にしました。
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
ERROR: OE-core’s config sanity cecker detected a potential misconfigration

問題点
bitbake imx-image-multimediaを実行すると、
ERROR: OE-core’s config sanity cecker detected a potential misconfigration
というエラーメッセージを出してビルドが途中で停止してしまいます。
$bitbake imx-image-multimedia
ERROR: OE-core's config sanity cecker detected a potential misconfigration
.....
.....
Summary: There was 1 ERROR message, returning a non-zero exit code.
原因
bitbake は、ホスト PC に http、https、git プロトコル接続がある場合にネットワークの健全性チェックを実行します。
CONNECTIVITY_CHECK_URISはネットワーク到達性のチェックのため使用されているURIで、DISTROにpokyを使用している場合、conf/distro/poky.confで https://www.example.com/ を指定しています。
https://www.example.com/に到達できない場合にエラーになるようです。
解決策
local.confファイルに下記のように CONNECTIVITY_CHECK_URIS を空文字指定する行を追加して当該URLへの到達性チェックを無視させます。
CONNECTIVITY_CHECK_URIS=""
No reply from server in 30s
Timeout while waiting for a reply the bitbake server

問題点
bitbakeを実行すると、以下のメッセージが出てbitbakeがハングする。もしくはターミナルごと落ちてしまう。
$bitbake imx-image-multimedia
....
....
....
NOTE: No reply from server in 30s (for command ping at xx:xx:xx.xxxxxx)
Timeout while waiting for a reply the bitbake server (xxs at xx:xx:xx.xxxxxx)
原因
スレッド数が多いCPUではビルド数が多いためRAMとSwapの使用量が膨れ上がり、容量が足りなくなりハングしてしまうようです。
筆者のホストマシンの環境を以下に示します。
・CPU:Intel Core i5 13500 (スレッド総数 20)
・RAM:DDR4 32GB
・Storage:SSD 1TB
・OS:Ubuntu 22.04.4 TLS
当初Swap領域をデフォルトの2GBでbitbakeを行っていたため、bitbakeをハングさせていました。
Ubuntuのシステムモニターで確認するとbitbake中はCPU: 100%、RAM: 100%、Swap: 100%に張付いた後ハングしていました。
解決策
ホストマシンのSwap領域が足りないことは明白なので、Swap領域のサイズを66GBに増やしました。
(RAM容量の倍の64GBを追加しました。)
RAM: 32GB、Swap: 66GB(2GB+64GB)でbitbakeを実行したところ、ハングすることなくビルドに成功しました。
bitbakeの実行中システムモニターで使用率ピークの状況を確認してみると、CPUは20スレッドほぼ100%、RAMは90数%、Swapは30数%程度の使用率でした。この環境ではSwap領域はRAMと同じ32GBで十分だったと思います。
PCのRAM容量が64GB以上であればハングすることなくスムーズにビルドができていたと思います。
