/boot
の容量不足でエラー発生
Raspberry Pi 4で稼働しているRocky Linuxで、dnf upgrade
を実行していたところ次のようなメッセージが表示されてエラーになってしまいました。
scriptletの実行中: kernel-core-5.14.0-284.30.1.el9_2.aarch64 149/149
cp: error writing '/boot/initramfs-0-rescue-0323a9564f384fa0b31af53f9ea7ec4f.img': No space left on device
dracut: dracut: creation of /boot/initramfs-0-rescue-0323a9564f384fa0b31af53f9ea7ec4f.img failed
cp: cannot stat '/lib/modules/5.14.0-284.30.1.el9_2.aarch64/bls.conf': No such file or directory
sed: can't read /boot/loader/entries/0323a9564f384fa0b31af53f9ea7ec4f-0-rescue.conf: No such file or directory
警告: %posttrans(kernel-core-5.14.0-284.30.1.el9_2.aarch64) スクリプトの実行に失敗しました。終了ステータス 3
Error in POSTTRANS scriptlet in rpm package kernel-core
/boot
でNo space left on device
ということですからdf
コマンドで様子を見てみます。
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 57G 7.2G 50G 13% /
devtmpfs 3.6G 0 3.6G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 1.6G 9.5M 1.6G 1% /run
/dev/mmcblk0p1 286M 247M 39M 87% /boot
tmpfs 782M 52K 782M 1% /run/user/42
tmpfs 782M 36K 782M 1% /run/user/1000
/boot
の残り容量が39MB
になってしまっています。
これは公開されているRaspberry Pi用のRocky LinuxのイメージをmSDにコピーしてGNOME デスクトップ化しているもので、何度かdnf upgrade
を実行している最中に発生してしまったものです。
そこで、このエラーを解消して行きたいと思います。
インストール済のKernel
現在、インストールされているカーネルを調べてみます。
$ dnf list --installed | grep kernel
kernel-core.aarch64 5.14.0-284.25.1.el9_2 @baseos
kernel-core.aarch64 5.14.0-284.30.1.el9_2 @baseos
kernel-modules.aarch64 5.14.0-284.25.1.el9_2 @baseos
kernel-modules.aarch64 5.14.0-284.30.1.el9_2 @baseos
kernel-modules-core.aarch64 5.14.0-284.25.1.el9_2 @baseos
kernel-modules-core.aarch64 5.14.0-284.30.1.el9_2 @baseos
kernel-tools.aarch64 5.14.0-284.30.1.el9_2 @baseos
kernel-tools-libs.aarch64 5.14.0-284.30.1.el9_2 @baseos
raspberrypi2-kernel4.aarch64 6.1.23-v8.1.el9.altarch @rockyrpi
raspberrypi2-kernel4.aarch64 6.1.31-v8.1.el9.altarch @altarch-rockyrpi
インストールされているバージョンが、5.14
と6.1
になっていますが、それぞれ2バージョンずつインストールされています。通常は、このように直近のバージョンを残しておくのが良いかも知れませんが、ここでは古いほうのバージョンを削除してしまおうと思います。
古いKernelの削除
そこで、古いKernelとして5.14.0-284.25.1
と6.1.23
を削除しようと思います。
$ sudo dnf remove -y kernel-core-5.14.0-284.25.1.el9_2
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン Repo サイズ
================================================================================
削除中:
kernel-core aarch64 5.14.0-284.25.1.el9_2 @baseos 70 M
依存関係パッケージの削除:
kernel-modules aarch64 5.14.0-284.25.1.el9_2 @baseos 13 M
kernel-modules-core aarch64 5.14.0-284.25.1.el9_2 @baseos 27 M
トランザクションの概要
================================================================================
削除 3 パッケージ
(以下略)
ここで、dnf remove
を実行する際にアーキテクチャーであるaarch64
を省略している点に注意して下さい。依存関係によって3つのパッケージが削除されました。
続けて、6.1.23
を削除します。
$ sudo dnf remove -y raspberrypi2-kernel4-6.1.23
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン Repo サイズ
================================================================================
削除中:
raspberrypi2-kernel4 aarch64 6.1.23-v8.1.el9.altarch @rockyrpi 43 M
トランザクションの概要
================================================================================
削除 1 パッケージ
(以下略)
ここでもdnf remove
コマンドの実行時に、アーキテクチャーであるaarch64
を省略して実行しています。
削除後のディスク容量を見てみます。
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 57G 7.1G 50G 13% /
devtmpfs 3.6G 0 3.6G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 1.6G 9.5M 1.6G 1% /run
/dev/mmcblk0p1 286M 153M 133M 54% /boot
tmpfs 782M 52K 782M 1% /run/user/42
tmpfs 782M 36K 782M 1% /run/user/1000
/boot
の残り容量が、133MB
までになりました。これで、しばらくの間はdnf upgrade
で/boot
の容量不足になることも無いでしょう。