最近 iMac を新しく買ったりメモリを増設したり OS をアップデートして最新化したりしたので、そろそろバージョンが 18.04 で止まっている Ubuntu サーバーも最新化しなければと思い気軽にアップデートしたら今回はかなり手こずってしまった。しかも苦労した結果バージョンアップできた先が当初目標としていた 22.04 ではなく 20.04 というわけで、なかなかに不本意な結果となった。まあサーバーが起動不可になってしまったり OS 再インストールといった事態を招かなかっただけマシだということにしよう。ひとまず 18.04 から 20.04 へアップデートできたので経緯をまとめておく。
1) boot 領域の容量不足
do-release-upgrade コマンドで通常通り LTS アップグレードしようとしたところ /boot 領域のサイズが足りないと表示されてしまう。調べると古いカーネルを削除すれば良いという記事が大量にヒットする。ところが最新のカーネル以外はすでにパージ済みであり /boot も 50% 空いているにも関わらずこのメッセージが表示されてしまうのである。他に解決方法もなくこれ以上 /boot の空き容量を増やすこともできないので、やむを得ず正攻法ではなく自己流の手順でアップデートを開始する。
2) ネットワークドライバの認識がされない
手順としてはまず /etc/apt/sources.list を bionic から focal に更新し、次に apt dist-upgrade でパッケージを 20.04 のものにアップデートしていく方針をとった。ところが dist-upgrade 後にシステムを再起動するとネットワークが見つからない。いろいろ調べてみると、そもそも OS からネットワークインターフェースが認識されていないようだ。この時点で apt をオンラインで利用できないので、ネットワークドライバをオフライン経由で持ってくるしかない。ハードウェアは Realtek の RTL8111/8168/8411 というアダプタであり、たまたま同じデバイスを利用している人の記事が見つかったのでこれを元にドライバを調達することにした。
3) Debian からドライバを借用する
他の人の記事を参考に公式サイトからドライバをダウンロードしようと思ったら見つからない。この時点でかなり詰んだ気持ちになっており再インストールも覚悟はしていたが、最後の手段としてパッケージの依存関係を調査した上で Debian sid からドライバを借用することにした。 Debian sid の r8168-dkms 8.050.03-2 とその依存パッケージである dkms 3.0.6-3 と dh-dkms 3.0.6-3 を iMac でダウンロードし USB メモリに入れてサーバー機に搬送する。これらを dpkg -i コマンドでまとめてインストールすることに成功し bionic のカーネルに r8168 モジュールが搭載されてネットワークインターフェースを認識できるようになった。
4) カーネルをアップデートする
こちらの記事にある通り HWE スタックのカーネルをインストールしたら画面の解像度はおかしいわネットワークインターフェースはまた認識されなくなるわで、結局 focal の GA カーネルをインストールすることで Ubuntu 20.04 LTS へのアップグレードが完了した。
これだけ苦労してようやく Ubuntu 20.04 LTS にアップグレードできた。 EOL が 2025 年まで 2 年ほど先延ばしできたこと以外に良くなったことは無い。