Ubuntu Serverに新しいカーネルをインストールしようとしていますが、「gzip:stdout:no space left on device」エラーのため完了できません。以下を実行すると、完全なエラーが生成されますsudo make modules_install install
。
INSTALL /lib/firmware/cpia2/stv0672_vp4.bin
INSTALL /lib/firmware/yam/1200.bin
INSTALL /lib/firmware/yam/9600.bin
DEPMOD 3.16.0
sh ./arch/x86/boot/install.sh 3.16.0 arch/x86/boot/bzImage \
System.map "/boot"
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.16.0 /boot/vmlinuz-3.16.0
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.16.0 /boot/vmlinuz-3.16.0
update-initramfs: Generating /boot/initrd.img-3.16.0
gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-3.16.0 with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
make[1]: *** [install] Error 1
make: *** [install] Error 2
df -hを使用してディスク容量を確認しましたが、結果は次のようになります。
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server--vg-root 103G 33G 66G 34% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 63G 4.0K 63G 1% /dev
tmpfs 13G 1.8M 13G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 63G 148K 63G 1% /run/shm
none 100M 24K 100M 1% /run/user
/dev/sda1 236M 62M 162M 28% /boot
/home/stan/.Private 103G 33G 66G 34% /home/stan
スペースが多すぎて、なぜこのようなエラーが発生するのか理解できません。私はDebianとOpenSUSEで同じプロセスをうまく使いました。
答え1
"make module_install install"は、162MBの空き領域を持つ/ bootパーティションにinitrdイメージを構築しようとしますが、これは不十分です。
Ubuntuでカーネルを直接コンパイルするには、/ bootパーティションに少なくとも1 GBの空き容量を用意する必要があります。
答え2
/boot
これは、パーティションに余分なスペースがない場合に発生します。解決策は、古いカーネルを削除してスペースを解放することです。
現在インストールされているカーネルのリストを入手できます
[I] ~ ❯❯❯ dpkg -l | grep linux-image
rc linux-image-4.19.0-6-amd64 4.19.67-2+deb10u1 amd64 Linux 4.19 for 64-bit PCs (signed)
rc linux-image-5.10.0-2-amd64 5.10.9-1 amd64 Linux 5.10 for 64-bit PCs (signed)
rc linux-image-5.10.0-5-amd64 5.10.24-1 amd64 Linux 5.10 for 64-bit PCs (signed)
rc linux-image-5.10.0-6-amd64 5.10.28-1 amd64 Linux 5.10 for 64-bit PCs (signed)
rc linux-image-5.14.0-1-amd64 5.14.6-3 amd64 Linux 5.14 for 64-bit PCs (signed)
rc linux-image-5.14.0-2-amd64 5.14.9-2 amd64 Linux 5.14 for 64-bit PCs (signed)
rc linux-image-5.14.0-3-amd64 5.14.12-1 amd64 Linux 5.14 for 64-bit PCs (signed)
rc linux-image-5.14.0-4-amd64 5.14.16-1 amd64 Linux 5.14 for 64-bit PCs (signed)
ic linux-image-5.15.0-2-amd64 5.15.5-2 amd64 Linux 5.15 for 64-bit PCs (signed)
rc linux-image-5.15.0-3-amd64 5.15.15-2 amd64 Linux 5.15 for 64-bit PCs (signed)
rc linux-image-5.16.0-3-amd64 5.16.11-1 amd64 Linux 5.16 for 64-bit PCs (signed)
rc linux-image-5.17.0-1-amd64 5.17.3-1 amd64 Linux 5.17 for 64-bit PCs (signed)
ii linux-image-5.18.0-4-amd64 5.18.16-1 amd64 Linux 5.18 for 64-bit PCs (signed)
ii linux-image-5.19.0-2-amd64 5.19.11-1 amd64 Linux 5.19 for 64-bit PCs (signed)
rc linux-image-5.2.0-3-amd64 5.2.17-1 amd64 Linux 5.2 for 64-bit PCs (signed)
rc linux-image-5.3.0-2-amd64 5.3.9-3 amd64 Linux 5.3 for 64-bit PCs (signed)
rc linux-image-5.3.0-3-amd64 5.3.15-1 amd64 Linux 5.3 for 64-bit PCs (signed)
rc linux-image-5.4.0-1-amd64 5.4.6-1 amd64 Linux 5.4 for 64-bit PCs (signed)
rc linux-image-5.4.0-2-amd64 5.4.8-1 amd64 Linux 5.4 for 64-bit PCs (signed)
rc linux-image-5.4.0-3-amd64 5.4.13-1 amd64 Linux 5.4 for 64-bit PCs (signed)
rc linux-image-5.4.0-4-amd64 5.4.19-1 amd64 Linux 5.4 for 64-bit PCs (signed)
rc linux-image-5.5.0-2-amd64 5.5.17-1 amd64 Linux 5.5 for 64-bit PCs (signed)
rc linux-image-5.6.0-1-amd64 5.6.7-1 amd64 Linux 5.6 for 64-bit PCs (signed)
rc linux-image-5.6.0-2-amd64 5.6.14-2 amd64 Linux 5.6 for 64-bit PCs (signed)
rc linux-image-5.8.0-1-amd64 5.8.7-1 amd64 Linux 5.8 for 64-bit PCs (signed)
rc linux-image-5.8.0-2-amd64 5.8.10-1 amd64 Linux 5.8 for 64-bit PCs (signed)
rc linux-image-5.8.0-3-amd64 5.8.14-1 amd64 Linux 5.8 for 64-bit PCs (signed)
rc linux-image-5.9.0-1-amd64 5.9.1-1 amd64 Linux 5.9 for 64-bit PCs (signed)
rc linux-image-5.9.0-2-amd64 5.9.6-1 amd64 Linux 5.9 for 64-bit PCs (signed)
rc linux-image-5.9.0-4-amd64 5.9.11-1 amd64 Linux 5.9 for 64-bit PCs (signed)
ii linux-image-amd64 5.19.11-1 amd64 Linux for 64-bit PCs (meta-package)
次に、現在のカーネルバージョンのバージョンを取得します。
[I] ~ ❯❯❯ uname -r
5.19.0-2-amd64
これで、明確なパッケージ名を使用して古いカーネルをインストールする必要がありますsudo apt purge <package-name>
。削除する必要があるパッケージが多い場合は、bash マジックを使用できます。
sudo apt purge linux-image-5.{2,3,4,5,6,8,9,18}*
このパターンは、実行中の現在のカーネルバージョンと一致しないでください。
古いカーネルを削除した後は、多くのスペースを解放できます/boot
。
十分なスペースが利用可能になったら、アップデートされたカーネルのインストールを進めることができます。