/boot
パーティションに200 MBが割り当てられています。カーネルを更新しようとするたびに、基本的に/boot
満杯であるというエラーメッセージが表示されます。
/boot
古いカーネルをクリーンアップして削除/バックアップするにはどうすればよいですか?
/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
sudo dpkg --list 'linux-image*' | grep ^ii
インストールされたカーネルだけを少し見やすくします。また、これupdate-grub
は無害ではあるが厳密には必要ではなく、カーネルをアンインストールすると自動的に実行されると思います。
sudo dpkg --list 'linux-image*' | grep ^ii | awk '{print $2}' | sort | egrep "[0-9]-generic" | head -n -3 | tr '\n' ' '; echo ""
するパッケージ名のリストを取得するために使用しsudo apt-get remove
ます。head -n -3
システムに最新の3つのカーネルを残すために使用されます。
apt-get remove `dpkg --list 'linux-image*' |grep ^ii | awk '{print $2}'\ | grep -v \`uname -r\``
sudo apt-get autoremove
十分なはずです(通常、最後の3つのカーネルが残っています)
/boot
は完全であるため、apt-get
エラーコードなどで失敗します。答えは以下のビット「hackier」(私はそれを発行する鋼自分自身に持っていたと告白しなければならないですrm -rf
中/boot
)が、このような状況で作業する可能性があるだけ。
注:これは、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
手動ブートクリーンによって孤立した古いカーネルイメージパッケージを消去します。
完全な/ bootパーティションを検出するのを待っている間に、バックアップが実行された可能性がある場合は、提案、実行sudo apt-get update
、およびsudo apt-get upgrade
アップグレードの世話をします。
提案2、https: //help.ubuntu.com/community/AutomaticSecurityUpdatesを確認し、/ etc / apt / apt.conf.d / 50unattended-upgradesでUnattended-Upgrade :: Remove-Unused-Dependenciesをtrueに設定することを検討してください。これは、各セキュリティ更新プログラムの後にautoremoveを実行して未使用のカーネルを確実にクリーンアップすることと同じですが、未使用と思われる他のものも削除し、将来この問題からあなたを救います。
dpkg --purge
$ sudo dpkg --purge linux-image-3.13.0-65-generic dpkg: dependency problems prevent removal of linux-image-3.13.0-65-generic: linux-image-extra-3.13.0-65-generic depends on linux-image-3.13.0-65-generic. dpkg: error processing package linux-image-3.13.0-65-generic (--purge): dependency problems - not removing Errors were encountered while processing: linux-image-3.13.0-65-generic
df -i
して/
、古いカーネルのソースコード用の膨大な量のファイルのために、iノードが不足していることを発見しました/usr/src
これに関するドキュメントは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
apt-get 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つを除くすべてのカーネルが削除されます。Ubuntu 16.04 LTS /boot
で100%の容量でテストされ、apt-get upgrade
最後のカーネルアップグレードに失敗しました。カーネルの自動削除は繰り返し実行されるため、複数のカーネルがある場合、それらは一度に1つずつ削除されます。我慢してください。