本記事にはアフィリエイト広告(Amazon アソシエイト)が含まれます。
実測日: Thu Aug 27 2026 09:00:00 GMT+0900 (Japan Standard Time)
前回までの調査で、カーネルはベンダの 5.4 系列から動かせないと判った。 それでも、Ubuntu 側の遅れは別の話である。 本記事は、6 年分の更新が届いていなかった原因と、カーネルを巻き込まずにそれを解消した手順を記録する。
pocket が 1 行しか無かった
sources.list には focal main universe の 1 行しか無かった。
focal-updates も focal-security も無く、2020 年 4 月の GA のスナップショットのまま 6 年が経っていた。
セキュリティ更新が届かないという問題は、設定の欠落そのものだった。
2 つの pocket を /etc/apt/sources.list.d/ に足すと、424 パッケージが更新対象になった。
deb http://ports.ubuntu.com/ubuntu-ports focal-updates main universedeb http://ports.ubuntu.com/ubuntu-ports focal-security main universeカーネルは dpkg の管理外(FIT の中)なので、linux-image が巻き込まれることはない。
ユーザー空間側として入ったのは linux-libc-dev と linux-tools だけである。
Sophon のスタック(libsophon、sophon-mw、bsp の deb 群)は一つも対象にならなかった。
更新後の版は 20.04.6 LTS である。
/boot を守る
/boot は 118 MiB の FAT で、FIT が 2 本入ると空きが 50 MiB を割る。
initramfs-tools の trigger が意図せず initrd を作ると、この空きを食い潰す。
このボードのカーネルは FIT の中にあり、initrd を /boot に置く経路は使っていないので、update_initramfs=no に変えて trigger を止めた。
Ansible が動かない盤をどう扱うか
20.04 の既定の Python は 3.8.2 で、手元の ansible-core(対象に 3.9 以上を要求する)では ping すら通らない。
apt でも埋められなかった。
python3.9 は focal-updates/universe にしかなく、pocket を足す前の盤には存在しなかったからである。
pocket を足す前にとった解決は、Python を要らない raw モジュールだけで pyenv を入れ、CPython 3.14.6 を盤上でビルドすることだった。
20.04 の gcc 9.3 と OpenSSL 1.1.1 でそのまま通った。
盤の既定の python3 と apt の設定には触れていない。
ベンダの bm 系ツールが 3.8 に依存しているためである。
inventory の host 変数に、ビルドした Python を interpreter として指定しておけば、以後の play は普通に流れる。 古い Ubuntu の小型ボードを足すときにも同じ手順が使える。
注意点
- この play は facts の収集を止め(収集自体に Python が要る)、become も使わない(~/.pyenv を root 所有にしないため)。通常の規約から 2 点外れることを明記しておく。
- 20.04.6 に上げても、カーネルと TPU のスタックはまったく変わらない。次の記事で、そちらを 5.4 系列の中で一世代進める。
この記事で扱った機材
Radxa Fogwise AirBox(SOPHON BM1684X)
BM1684X 搭載の小型 AI ボックス。Ubuntu 20.04 ベースの BSP で、glibc の古さが USB アクセラレータの制約になる。