/boot
パーティションに200 MBが割り当てられています。カーネルを更新しようとすると、基本的に/boot
がいっぱいであることを示すエラーメッセージが表示されます。
/boot
をクリーンアップし、古いカーネルを削除/バックアップするにはどうすればよいですか?
まず、カーネルのバージョンを確認します。使用中のカーネルイメージを削除せずに実行します。
uname -r
ここで、インストールされているカーネルのリストについて次のコマンドを実行します。
dpkg --list 'linux-image*' | grep ^ii
そして、これを実行して、不要/不要になったカーネルを削除します。
Sudo apt-get remove linux-image-VERSION
VERSIONを、削除するカーネルのバージョンに置き換えます。
古いカーネルの削除が完了したら、これを実行して不要になったパッケージをすべて削除できます。
Sudo apt-get autoremove
最後に、これを実行してgrubカーネルリストを更新できます。
Sudo update-grub
注:これは、100%の/ bootが原因で、クリーンアップにaptを使用できない場合のみです
/ bootが100%であるためにapt-getが機能しない場合は、最初に/ bootを消去する必要があります。これはおそらく、部分インストールでカーネルのアップグレードをキャッチしたため、aptが完全にフリーズし、コマンドが失敗し続けてもapt-get -f install
を実行するように指示し続けます。
カーネルイメージのリストを取得し、なしでできることを判断します。このコマンドは、現在実行中のカーネルを除く、インストールされているカーネルを表示しますSudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`
。リスト内の2つの最新バージョンに注意してください。ここにリストされていないので、実行中のものを心配する必要はありません。 uname -r
で確認できます。
健全性を保つためにブレース拡張を使用して、関係のないカーネルの/ boot内のすべてのファイルを削除するコマンドを作成します。現在のカーネルイメージと最新の2つのカーネルイメージを除外することを忘れないでください。例:Sudo rm -rf /boot/*-3.2.0-{23,45,49,51,52,53,54,55}-*
。構文{80..84}で範囲を使用することもできます。
Sudo apt-get -f install
を使用して、部分的なインストールについて不機嫌になっているものをクリーンアップします。
「内部エラー:イメージが見つかりません(/boot/vmlinuz-3.2.0-56-generic)」などの行を含むエラーが発生した場合は、コマンドSudo apt-get purge linux-image-3.2.0-56-generic
(適切なバージョンで)を実行します。
最後に、Sudo apt-get autoremove
を使用して、手動ブートクリーンによって孤立した古いカーネルイメージパッケージを消去します。
提案、Sudo apt-get update
およびSudo apt-get upgrade
を実行して、完全な/ bootパーティションの検出を待っている間にバックアップされた可能性のあるアップグレードを処理します。
提案2、確認 https://help.ubuntu.com/community/AutomaticSecurityUpdates および/etc/apt/apt.conf.d/でUnattended-Upgrade :: Remove-Unused-Dependenciesをtrueに設定することを検討してください50無人アップグレード。これは、各セキュリティ更新プログラムの後にautoremoveを実行して未使用のカーネルを確実に削除することと同じですが、未使用と思われる他のものも削除し、将来この問題からあなたを救います。
これについてのドキュメントは https://help.ubuntu.com/community/RemoveOldKernels にあります。
要約:使用
Sudo apt-get autoremove --purge
# and/or:
Sudo purge-old-kernels
purge-old-kernels
ツールは、Sudo apt install byobu
を介してインストールできます。マンページの説明は次のとおりです。
このプログラムは、システムから古いカーネルとヘッダーパッケージを削除し、ディスク容量を解放します。現在実行中のカーネルは削除されません。デフォルトでは、少なくとも最新の2つのカーネルを保持しますが、ユーザーは
--keep
パラメーターを使用してその値をオーバーライドできます。
コピーアンドペーストソリューションが必要な場合、ReSearchIT Engは以下を提案しました。
Sudo apt install -y byobu
Sudo purge-old-kernels -y --keep 1
Sudo apt-get -y autoremove --purge
小さなパーティションを放棄して/boot
をルートに移動する方がはるかに簡単であることがわかりました。これにより、将来のスペース不足の問題も防止されます。
まず、ブートパーティションからルートにデータを移動します(Sudo -s
として実行):
cp -a /boot /boot2
umount /boot
rmdir /boot
mv /boot2 /boot
/boot
の/etc/fstab
エントリを削除(またはコメント)します:
vim /etc/fstab
GRUBを更新し、すべてが正しいことを確認します。
update-grub
apt
は問題なくアップグレードできるはずです。
これにより、未使用の200mbパーティションが残ります(トラブルに見合う場合は、他のパーティションに使用できます)。
古いカーネルの削除(/ bootのスペースを空けるため): http://askubuntu.com/questions/89710/how-do-i-free-up-more-space-in-boot
Sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")
次に実行する
Sudo apt-get update
Sudo apt-get autoremove
これにより、最後の2つを除くすべてのカーネルが削除されます。 /boot
の容量が100%で、apt-get upgrade
が最後のカーネルアップグレードに失敗したときにUbuntu 16.04 LTSでテストしました。カーネルの自動削除は反復的であるため、複数のカーネルがある場合、それらは一度に1つずつ削除されます。我慢してください。
ツールでできるのに、なぜ手作業でやるのですか?最近、新しいカーネル更新をプッシュするのに30秒かかるため、30秒後に再び必要になることがわかっています= P
このツールを使用することをお勧めします bootnukem
git clone https://github.com/erichs/bootnukem.git
cd bootnukem
Sudo ./install.sh
それから
Sudo bootnukem --dry-run
安全に見えることを確認したら、--dry-run
を削除します