概要
apt upgrade や apt install で update-initramfs が実行される時、”No space left on device” エラーが発生する場合があります。
古いバージョンのカーネルイメージを削除する、または、initramfs設定ファイルを編集することで解決することがあります。
背景
Raspberry Piを触っていたところ、APTのインストールで何やらエラーが出ました。
色々出力されていて分かりづらいですが、エラーの原因は次部分のようです。
update-initramfs: Generating /boot/initrd.img-5.15.0-1034-raspi
cpio: write error: No space left on device
やりかた
古いイメージを消す
/boot に空き容量が無いとのことで、ググると真っ先に古いバージョンのイメージを消しなさいと出てきます。これで解決する方はちゃっちゃかやっちゃってください。
# 自分のカーネルバージョンを調べる
kernelver=$(uname -r | sed -r 's/-[a-z]+//')
# 使っていないやつを調べる
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve $kernelver
# apt purgeする
apt purge <表示されたパッケージ名>
私の環境では、次のように現行のパッケージと、アップグレードしようとして入ったパッケージしか出てこなかったので、消せる古いバージョンはありませんでした。
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-======================================-==============-============-================================================>ii linux-image-5.15.0-1034-raspi 5.15.0-1034.37 arm64 Linux kernel image for version 5.15.0 on ARMv8 S>iF linux-image-5.15.0-1043-raspi 5.15.0-1043.46 arm64 Linux kernel image for version 5.15.0 on ARMv8 S>iF linux-image-5.15.0-1044-raspi 5.15.0-1044.47 arm64 Linux kernel image for version 5.15.0 on ARMv8 S>iU linux-image-raspi 5.15.0.1044.42 arm64 Raspberry Pi Linux kernel image
un linux-image-unsigned-5.15.0-1034-raspi <none> <none> (no description available)
un linux-image-unsigned-5.15.0-1043-raspi <none> <none> (no description available)
un linux-image-unsigned-5.15.0-1044-raspi <none> <none> (no description available)
initramfs.confを編集する
結局は update-initramfs 時に作業領域で空き容量が足りなくなっているようで /etc/initramfs-tools/initramfs.conf というファイルを編集することで、イメージ作成時の容量が少なくて済む?イメージサイズが小さくなる?らしいです。
viなどで /etc/initramfs-tools/initramfs.con を開いて MODULES を dep に、COMPRESS を lzma にしてください。
~~~
- MODULES=most
+ MODULES=dep
~~~
- COMPRESS=zstd
+ COMPRESS=lzma
~~~
あとは普通に apt upgrade や apt install を実行してみてください。
再起動は不要でした。
コメント