Linux Mint 18システムにアップデートをインストールしようとすると、容量不足エラーが発生します。/bootは100%いっぱいになっています。
削除する必要のある古いカーネルがたくさんあることに気づきました。 byobu
をインストールしてpurge-old-kernels
を発行しましたが、スペース不足エラーが発生し、カーネルが削除されません。
古いカーネルのいずれかを手動でapt-get purge
しようとすると、同じことが起こります。
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up initramfs-tools (0.122ubuntu8.16) ...
update-initramfs: deferring update (trigger activated)
Setting up linux-image-4.4.0-169-generic (4.4.0-169.198) ...
Processing triggers for initramfs-tools (0.122ubuntu8.16) ...
update-initramfs: Generating /boot/initrd.img-4.15.0-70-generic
gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-4.15.0-70-generic with 1.
dpkg: error processing package initramfs-tools (--configure):
subprocess installed post-installation script returned error exit status 1
Processing triggers for linux-image-4.4.0-169-generic (4.4.0-169.198) ...
/etc/kernel/postinst.d/dkms:
* dkms: running auto installation service for kernel 4.4.0-169-generic
Error! echo
Your kernel headers for kernel 4.4.0-169-generic cannot be found at
/lib/modules/4.4.0-169-generic/build or /lib/modules/4.4.0-169-generic/source.
Error! echo
Your kernel headers for kernel 4.4.0-169-generic cannot be found at
/lib/modules/4.4.0-169-generic/build or /lib/modules/4.4.0-169-generic/source.
Error! echo
Your kernel headers for kernel 4.4.0-169-generic cannot be found at
/lib/modules/4.4.0-169-generic/build or /lib/modules/4.4.0-169-generic/source.
Error! echo
Your kernel headers for kernel 4.4.0-169-generic cannot be found at
/lib/modules/4.4.0-169-generic/build or /lib/modules/4.4.0-169-generic/source.
...done.
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.4.0-169-generic
gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-4.4.0-169-generic with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: error processing package linux-image-4.4.0-169-generic (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
initramfs-tools
linux-image-4.4.0-169-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)
システムを破壊せずにrmを使用してブートイメージを削除する安全な方法はありますか?
カーネルヘッダー/画像のリスト: https://Pastebin.com/TYFMv6x7
未使用のカーネルパッケージを削除する最も安全な方法は、Ubuntuの開発者の1人であるDustinKirklandによって作成されたユーティリティpurge-old-kernels
を使用することです。これは、デスクトップおよびサーバーシステム、Ubuntu、したがってLinuxMintで使用できます。
パッケージをインストールして使用するには、次のようにします。
Sudo apt-get install -y bikeshed byobu
Sudo purge-old-kernels
ユーティリティが古いカーネルの検出に失敗した場合、次のメッセージが表示されます。
No kernels are eligible for removal
カーネルが自動的にインストールされた場合、そのようなカーネルは次のコマンドで削除できます。
Sudo apt-get autoremove
Sudo apt-get autoclean
ただし、/boot
が100%いっぱいの場合も、これらのコマンドが失敗する可能性があります。
その場合は、1つまたは2つの古いinitrd.img*
ファイルを手動で削除してください。まず、コマンドuname -a
を使用して、独自のカーネルを削除しようとしていないことを確認します。
apt-get
を正常に実行するためのスペースを取り戻したら、上記の2つのコマンドを実行できます。
開始する前にバックアップに注意してください。
古いカーネルと関連する残骸が保管されている場所は2つか3つあります。これが私が古いがらくたを取り除くために使うステップです。 remove-old-kernels
ががらくたを横に置いたままにするときの手順を使用します。
まず、古いカーネルを特定します。彼らは/boot
でぶらぶらしています:
$ cd /boot/
$ ls -1
config-5.0.0-36-generic
config-5.0.0-37-generic
efi
grub
initrd.img-5.0.0-36-generic
initrd.img-5.0.0-37-generic
memtest86+.bin
memtest86+.elf
memtest86+_multiboot.bin
System.map-5.0.0-36-generic
System.map-5.0.0-37-generic
vmlinuz-5.0.0-36-generic
vmlinuz-5.0.0-37-generic
次に、apt-get remove
とapt-get purge
を実行して、パッケージファイルとパッケージをディスクから削除します。
Sudo apt get -y remove '*5.0.0-36*
...
Sudo apt-get -y purge
...
DKMSは、/lib/modules
に多少の問題がある可能性があります。 NvidiaとVirtualBoxが原因で、私はしばしば、取り外されていないがらくたを持っています。 4.15.0-nn
カーネルギアが再インストールされ続ける理由がわかりません。私はそれを取り除き続けます、それは戻ってき続けます。
第三に、DKMSの残骸が残っているかどうかを確認します。
# dkms status
nvidia, 430.50, 4.15.0-72-generic, x86_64: installed
nvidia, 430.50, 5.0.0-36-generic, x86_64: installed
nvidia, 430.50, 5.0.0-37-generic, x86_64: installed
virtualbox, 5.2.34, 4.15.0-72-generic, x86_64: installed
virtualbox, 5.2.34, 5.0.0-36-generic, x86_64: installed
virtualbox, 5.2.34, 5.0.0-37-generic, x86_64: installed
第四に、次の方法で残骸を取り除きます。
# dkms remove nvidia/430.50 -k 4.15.0-72-generic
# dkms remove nvidia/430.50 -k 5.0.0-36-generic
# dkms remove virtualbox/5.2.34 -k 4.15.0-72-generic
# dkms remove virtualbox/5.2.34 -k 5.0.0-36-generic
その後:
# find /var/lib -name '*4.15.0-72*'
/var/lib/dpkg/info/linux-headers-4.15.0-72.md5sums
/var/lib/dpkg/info/linux-headers-4.15.0-72.list
/var/lib/dpkg/info/linux-headers-4.15.0-72-generic.list
/var/lib/dpkg/info/linux-headers-4.15.0-72-generic.md5sums
/var/lib/dpkg/info/linux-headers-4.15.0-72-generic.postinst
/var/lib/dkms/nvidia/kernel-4.15.0-72-generic-x86_64
/var/lib/dkms/nvidia/430.26/4.15.0-72-generic
/var/lib/dkms/virtualbox/kernel-4.15.0-72-generic-x86_64
/var/lib/dkms/virtualbox/5.2.34/4.15.0-72-generic
第5に、古いアーティファクトを手動で削除します。
# find /var/lib -name '*4.15.0-72*' -exec rm -rf {} \;
第6に、/lib/modules
に問題がないことを確認します。
$ ls /lib/modules/
4.15.0-72-generic 5.0.0-36-generic 5.0.0-37-generic
そして、古い残骸を取り除きます:
$ Sudo rm -rf /lib/modules/4.15.0-72-generic/
$ Sudo rm -rf /lib/modules/5.0.0-36-generic/
第7に、initramfsを更新し、grubメニューを再生成します。
# /sbin/depmod -a
# /usr/sbin/update-initramfs -u
# /usr/sbin/update-grub2
そして最後に、古いカーネルが実際になくなっていることを確認します。
$ ls -1 /boot/
config-5.0.0-37-generic
efi
grub
initrd.img-5.0.0-37-generic
memtest86+.bin
memtest86+.elf
memtest86+_multiboot.bin
System.map-5.0.0-37-generic
vmlinuz-5.0.0-37-generic