web-dev-qa-db-ja.com

dpkgでカーネルを削除するときにupdate-initramfsエラーが発生するのはなぜですか?

dpkg --purgeによってカーネルを削除すると、次の出力が得られました。

Linux-headers-3.13.0-112-generic(3.13.0-112.159)の削除... 
 linux-image-extra-3.13.0-112-generic(3.13.0-112.159)の削除.. 。
 run-parts:/etc/kernel/postinst.d/apt-auto-removal 3.13.0-112-generic /boot/vmlinuz-3.13.0-112-generic
runの実行-parts:/etc/kernel/postinst.d/initramfs-tools 3.13.0-112-generic /boot/vmlinuz-3.13.0-112-generic
update-initramfs:/ boot/initrdを生成します。 img-3.13.0-112-generic 
 W:TMPDIRはnoexecにマウントされ、実行スクリプトをキャッシュしません。
 
 gzip:stdout:デバイスに空き領域がありません
 E:mkinitramfsエラーcpio 141 gzip 1 
 update-initramfs:1。
 run-parts:/ etc/kernelで/boot/initrd.img-3.13.0-112-genericに失敗しました/postinst.d/initramfs-toolsが戻りコード1 
 dpkgで終了しました:エラー処理パッケージlinux-image-extra-3.13.0-112-generic(--purge):
 subprocess installed post -removalスクリプトがエラー終了ステータス1 
 Removing linux-image-3.13.0-112-generic(3.13.0-112.159 )... 
/etc/kernel/postrm.dを調べます。
 run-parts:/etc/kernel/postrm.d/initramfs-tools 3.13.0-112-generic/bootを実行します/vmlinuz-3.13.0-112-generic
update-initramfs:/boot/initrd.img-3.13.0-112-generic
run-partsの削除:/ etc/kernel/postrmの実行.d/zz-update-grub 3.13.0-112-generic /boot/vmlinuz-3.13.0-112-generic
grub構成ファイルの生成... 
警告:GRUB_TIMEOUTをGRUB_HIDDEN_TIMEOUTが設定されている場合のゼロ以外の値はサポートされなくなりました。
 Linuxイメージの検出:/boot/vmlinuz-4.4.0-71-generic
initrdイメージの検出:/boot/initrd.img- 4.4.0-71-generic 
 Linuxイメージの検出:/boot/vmlinuz-4.4.0-67-generic
initrdイメージの検出:/boot/initrd.img-4.4.0-67-汎用
 Linuxイメージの検出:/boot/vmlinuz-4.4.0-66-generic
initrdイメージの検出:/boot/initrd.img-4.4.0-66-generic
 Linuxイメージが見つかりました:/boot/vmlinuz-4.4.0-64-generic
initrdイメージが見つかりました:/boot/initrd.img-4.4.0-64-generic
Linux iが見つかりましたメイジ:/boot/vmlinuz-3.13.0-115-generic
initrdイメージが見つかりました:/boot/initrd.img-3.13.0-115-generic
linuxイメージが見つかりました:/ boot/vmlinuz -3.13.0-113-generic 
 Found initrdイメージ:/boot/initrd.img-3.13.0-113-generic
Found memtest86 +イメージ:/memtest86+.elf
Found memtest86 +イメージ:/memtest86+.bin
ボリュームグループが見つかりません
 done 
 linux-image-3.13.0-112-generic(3.13.0-112.159)の構成ファイルをパージしています。 .. 
/etc/kernel/postrm.dの検査。
 run-parts:/etc/kernel/postrm.d/initramfs-tools 3.13.0-112-generic/boot/vmlinuzの実行-3.13.0-112-generic 
 run-parts:/etc/kernel/postrm.d/zz-update-grub 3.13.0-112-generic /boot/vmlinuz-3.13.0-112-の実行generic 
処理中にエラーが発生しました:
 linux-image-extra-3.13.0-112-generic

パージしてもスペースがなくなるのはなぜですか?この場合、inodeの問題ではありません。

注:dpkg --configure中またはカーネルのインストール中にエラーが発生する他の質問があります。システムがディスクスペースを使い果たすことはより理解しやすいですが、この場合、dpkgによってカーネル(特定のlinux-image-extraパッケージ)をパージしています。この場合、依存関係の問題はありません。たとえば、 this one の場合、解決策はdpkgによってカーネルパッケージを直接パージすることですが、そうするとこの質問の問題によりエラーが発生します。

7
jarno

Linux-image-extraパッケージをパージすると、インストール後のスクリプトが実行されます。これは、そのカーネルリリースのメインのlinux-imageパッケージがシステムに残ったままになる可能性があるためです。このプロセスの結果、そのサイズは小さくなります。ただし、このプロセス中に古いinitrd.imgファイルは「/ boot」で削除されず、新しいファイルは「/ boot」でその横に作成されるため、スペースが不足するリスクがあります。

修正は、update-initramfsで古いパーティションを置き換える前に、異なるパーティションに新しいinitrg.imgファイルを作成することです。したがって、update-initramfsスクリプトを修正する必要があります。

回避策は、linux-image-extraパッケージに対してdpkg --purgeを実行する前に、それぞれのバージョンの/boot/initrd.imgファイルを削除することです。この場合、Sudo update-initramfs -d -k 3.13.0-112-genericでも実行できます。削除したカーネルが「3.13.0-112-generic」だったためです。

5
jarno