Yocto Project 環境構築時に遭遇したエラーと対処

CPU RAM and Swap utilization during bitbake

スポンサーリンク

目次

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

SSL CERTIFCATE_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 ERROR CONNETIVITY_CHECK_URIS

問題点

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

No reply from server in 30s

問題点

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以上であればハングすることなくスムーズにビルドができていたと思います。

CPU RAM and Swap utilization during bitbake
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

28年間 外資系と日系の半導体企業で主にデジアナ混載LSI、32bitマイコン、アナログIC、RFIC等の設計をしてきました。
これまで世の中に無かった半導体製品および関連するツールや製造関連機器等を独自に設計・開発し世に送り出してきました。
長年の趣味であるオーディオの分野で自分が欲しい世の中に無い製品を開発し世に広めたいと思い2023年より事業を開始いたしました。
好きな音楽はクラシック音楽です。弦楽器(チェロ)をたまに弾きます。

目次