6 年止まっていた AirBox の Ubuntu 20.04 を 20.04.6 に。原因は sources.list の pocket の欠落だった

本記事にはアフィリエイト広告(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 アクセラレータの制約になる。