web-dev-qa-db-ja.com

/ bootパーティションをクリーンアップする最も安全な方法は何ですか?

/bootパーティションに200 MBが割り当てられています。カーネルを更新しようとすると、基本的に/bootがいっぱいであることを示すエラーメッセージが表示されます。

/bootをクリーンアップし、古いカーネルを削除/バックアップするにはどうすればよいですか?

272
koba101

コマンドライン方式:

まず、カーネルのバージョンを確認します。使用中のカーネルイメージを削除せずに実行します。

uname -r

ここで、インストールされているカーネルのリストについて次のコマンドを実行します。

dpkg --list 'linux-image*' | grep ^ii

そして、これを実行して、不要/不要になったカーネルを削除します。

Sudo apt-get remove linux-image-VERSION

VERSIONを、削除するカーネルのバージョンに置き換えます。

古いカーネルの削除が完了したら、これを実行して不要になったパッケージをすべて削除できます。

Sudo apt-get autoremove

最後に、これを実行してgrubカーネルリストを更新できます。

Sudo update-grub
333
PeppeDAlterio

注:これは、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を実行して未使用のカーネルを確実に削除することと同じですが、未使用と思われる他のものも削除し、将来この問題からあなたを救います。

282
flickerfly

これについてのドキュメントは 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
50
peq

小さなパーティションを放棄して/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パーティションが残ります(トラブルに見合う場合は、他のパーティションに使用できます)。

7
laktak

古いカーネルの削除(/ 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
4
Amos Folarin

Sudo apt-get autoremove

これにより、最後の2つを除くすべてのカーネルが削除されます。 /bootの容量が100%で、apt-get upgradeが最後のカーネルアップグレードに失敗したときにUbuntu 16.04 LTSでテストしました。カーネルの自動削除は反復的であるため、複数のカーネルがある場合、それらは一度に1つずつ削除されます。我慢してください。

3
DeepSpace101

ツールでできるのに、なぜ手作業でやるのですか?最近、新しいカーネル更新をプッシュするのに30秒かかるため、30秒後に再び必要になることがわかっています= P

このツールを使用することをお勧めします bootnukem

git clone https://github.com/erichs/bootnukem.git
cd bootnukem
Sudo ./install.sh

それから

Sudo bootnukem --dry-run

安全に見えることを確認したら、--dry-runを削除します

1
Jonathan