/ bootの空き容量を増やすにはどうすればよいですか?


563

私の/bootパーティションがほぼ満杯であると私は警告私は私のシステムを再起動するたびに取得します。すでに古いカーネルパッケージ(linux-headers ...)を削除しましたが、実際には、自動アップデートに付属する新しいカーネルバージョンをインストールするためにそれを行いました。

その新しいバージョンをインストールした後、パーティションはほぼ一杯になります。それでは、他に何を削除できますか?古いカーネルイメージに関連付けられている他のファイルはありますか?

/bootパーティションにあるファイルのリストは次のとおりです。

:~$ ls /boot/
abi-2.6.31-21-generic         lost+found
abi-2.6.32-25-generic         memtest86+.bin
abi-2.6.38-10-generic         memtest86+_multiboot.bin
abi-2.6.38-11-generic         System.map-2.6.31-21-generic
abi-2.6.38-12-generic         System.map-2.6.32-25-generic
abi-2.6.38-8-generic          System.map-2.6.38-10-generic
abi-3.0.0-12-generic          System.map-2.6.38-11-generic
abi-3.0.0-13-generic          System.map-2.6.38-12-generic
abi-3.0.0-14-generic          System.map-2.6.38-8-generic
boot                          System.map-3.0.0-12-generic
config-2.6.31-21-generic      System.map-3.0.0-13-generic
config-2.6.32-25-generic      System.map-3.0.0-14-generic
config-2.6.38-10-generic      vmcoreinfo-2.6.31-21-generic
config-2.6.38-11-generic      vmcoreinfo-2.6.32-25-generic
config-2.6.38-12-generic      vmcoreinfo-2.6.38-10-generic
config-2.6.38-8-generic       vmcoreinfo-2.6.38-11-generic
config-3.0.0-12-generic       vmcoreinfo-2.6.38-12-generic
config-3.0.0-13-generic       vmcoreinfo-2.6.38-8-generic
config-3.0.0-14-generic       vmcoreinfo-3.0.0-12-generic
extlinux                      vmcoreinfo-3.0.0-13-generic
grub                          vmcoreinfo-3.0.0-14-generic
initrd.img-2.6.31-21-generic  vmlinuz-2.6.31-21-generic
initrd.img-2.6.32-25-generic  vmlinuz-2.6.32-25-generic
initrd.img-2.6.38-10-generic  vmlinuz-2.6.38-10-generic
initrd.img-2.6.38-11-generic  vmlinuz-2.6.38-11-generic
initrd.img-2.6.38-12-generic  vmlinuz-2.6.38-12-generic
initrd.img-2.6.38-8-generic   vmlinuz-2.6.38-8-generic
initrd.img-3.0.0-12-generic   vmlinuz-3.0.0-12-generic
initrd.img-3.0.0-13-generic   vmlinuz-3.0.0-13-generic
initrd.img-3.0.0-14-generic   vmlinuz-3.0.0-14-generic

現在、私は3.0.0-14-genericカーネルを使用しています。


5
すべてのUbuntuインストールが個別の/ bootパーティションを持つわけではないことに言及する価値があります-多くの場合、すべてが1つの大きなパーティションになります。この回答は、別の/ bootパーティションを持っている人に適用されます。LVMまたは「フルディスク」暗号化を使用する場合は、別の/ bootが必要です。それ以外の場合はオプションです。
thomasrutter

4
他の誰かが私と同じ問題を抱えている場合:/ bootにスペースが残っていない場合、インストールされているカーネルのinitrdファイルを再生成するとき、またはupdate-initramfsスクリプトが/ var / lib / initramfs-toolsの内容。この状況では、fscking / bootパーティションにデバイスの空き領域がないため、apt-getを使用して古いカーネルを削除できません。「dpkg -P」を使用してこれを行うことができ、続いて/ boot(空き領域)および/ var / lib / initramfs-toolsの対応するエントリをクリーンアップします(initrdイメージは生成されません)。
wojci

3
正解のキーポイントは、古いバージョンのカーネルを含むパッケージを削除するように指示することです。この問題に対処する多くのWebページでは、/ bootパーティション内のファイルを直接削除することを推奨しています。それはしばらくは機能するかもしれませんが、最終的にはパッケージを含むカーネルバージョンに不足しているファイルを再作成するパッケージを更新して、スペースを使い果たす可能性があります。
kgrittn

回答:


629

未使用のカーネルがたくさんあります。次を使用して、最後のカーネルを除くすべてを削除します。

sudo apt-get purge linux-image-{3.0.0-12,2.6.3{1-21,2-25,8-{1[012],8}}}

これは以下の略記です:

sudo apt-get purge linux-image-3.0.0-12 linux-image-2.6.31-21 linux-image-2.6.32-25 linux-image-2.6.38-10 linux-image-2.6.38-11 linux-image-2.6.38-12 linux-image-2.6.38-8

linux-image-x.x.x-xパッケージを削除すると、も削除されlinux-image-x.x.x-x-genericます。

ヘッダーは/usr/src、アウトツリーカーネルモジュール(独自のnvidiaドライバーやvirtualboxなど)をインストールするときに使用されます。一致するカーネルパッケージ(linux-image-*)がインストールされていない場合、ほとんどのユーザーはこれらのヘッダーパッケージを削除する必要があります。

インストールされているすべてのカーネルをリストするには、次を実行します。

dpkg -l linux-image-\* | grep ^ii

現在実行中のカーネルを除く、削除可能なすべてのカーネルとヘッダーを表示する1つのコマンド:

kernelver=$(uname -r | sed -r 's/-[a-z]+//')
dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve $kernelver

linux-headers-<some number>またはlinux-image-<some number>で始まるすべてのパッケージを選択し、インストール済みパッケージのパッケージ名を出力し、現在のロード/実行中のカーネル(必ずしも最新のカーネルではない!)を除外します。これは、動作することがわかっている古いカーネルを削除する前に、新しいカーネルをテストすることをお勧めします。

そのため、カーネルをアップグレードして再起動してテストした後、次のコマンドを使用して他のすべてのカーネルを削除できます。

sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")

16
素晴らしい答え。さらに1つの情報が役立ちます。どのカーネルを使用しているのかを(確実に)どうやって知ることができますか?たぶん、あなたはそれが最後のものだと仮定することはできません... 編集:そして、答えはのように見えuname -aます。おそらく、保留中の再インストールから新しいカーネルへの保留が保留されていないことを確認するのが最善です(ただし、私はそうしましたがuname -a、「最新の」カーネルとの不一致に注意しました)。
TJクラウダー

5
@freddyb完了。コマンドは、ロード/ブートされたカーネル以外のカーネルを印刷/削除することに注意してください。
-Lekensteyn

9
依存関係が満たされていないためにapt-getパージが失敗した場合は、askubuntu.com
questions /

11
非常に綿密な答えであり、まだ機能しています...そして2014年にはまだ必要です。
allprog

6
@ byf-ferdyカーネルはOSの重要な部分です。最新バージョンが何らかの形でハードウェアと完全に機能しない場合、別のブートバージョンを選択できます。おそらく、1か月以上前に自動的にインストールされたすべてのカーネルを削除する機能があります(最新の2つを除く)。
-Lekensteyn

217

ブートパーティションがいっぱいです。これはカーネルの更新であるため、これらのファイルはブートパーティションにコピーされるため、削除する必要があります。これは、1つのコマンドで古いカーネルイメージをクリアする方法を示すブログ投稿です。メソッドの基本的な概要を説明します。次のコマンドを使用して、カーネルの現在のバージョンを出力します。

uname -r

次に、このコマンドを使用して、インストールした最新のカーネルではないすべてのカーネルを出力します。

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'

現在のカーネルがそのリストにないことを確認してください。これが最終コマンドの大部分であることに注意してください(下を参照)。これらの古いカーネルをアンインストールして削除するには、これらの引数を次のようにパイプします。

sudo apt-get -y purge

これで、最後の2つのコマンドをこの不浄な混乱に組み合わせることで、必要なすべてを実行できます。

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge

そして、その1つのコマンドがすべてを処理してくれます。これが完全に機能することを確認しますが、インターネット上の誰も信頼しません。:)詳細については、ブログの投稿で、コマンドの各部分が何をするのかを非常によく説明しているので、あなたはそれがやりたいことをしていることに満足しています。


これはlinux-libc-dev:amd64
フレデリックノール14

「linux-libc-dev:amd64」を意図せずに削除するとどうなりますか?
ConfusedStack 14年

@FrederickNord、ありがとうございます。これを修正しました。それは、cプログラムのコンパイルにいくつかの困難を引き起こしたでしょう。
dward

9
コマンドは良いように聞こえますが、実行すると、何かをインストールしたいときと同じエラーが表示され、ブートがいっぱいであるために実行できません:--------------- -----------次のパッケージには満たされていない依存関係があります:linux-image-extra-4.2.0-27-generic:依存:linux-image-4.2.0-27-generic linux-image-extra-4.2.0-30-genericをインストールする:依存:linux-image-4.2.0-30-genericがインストールされない
Alex

109
sudo apt-get autoremove

このコマンドは、ジョブを自動的に実行しています。


7
名前が示すように、apt-get AUTOremoveは自動化された操作であり、システムはユーザーが達成しようとしていることを「最良の推測」を行います。常識的なシステム管理の代替として使用しないでください。このアプローチの問題:この依存関係リストの一部であるパッケージを削除する場合、自動削除機能は依存関係リスト内の他のすべてのパッケージを削除するため、デスクトップが機能せずにシステムが残ります完全に壊れたシステムであっても)。
-Rinzwind

参考:上記のこのコメントのために多くの情報源の1:linuxquestions.org/questions/debian-26/...
Rinzwind

7
linux-image-genericがインストールされていて、新しいカーネルが明示的にインストールされていない場合、古いカーネルが削除されます。常識は、最初にそれらを読むことなくシステムへの変更を受け入れないことです。このコマンドを使用する前に常識が使用されている場合、問題はありません。
mchid

1
@Rinzwind -このコマンドは、古い「Linuxのヘッダ」を除去することによって、私のディスクスペースの250メガバイトを空
Chinmaya B

3
autoremove は、スペース不足状態が発生する前に使用すると機能します。ただし、aptがスペースを使い果たしてアボートすると(そしてユーザーが最終的に問題に気づくと)、autremoveまたは他のaptベースのソリューションを実行するには遅すぎます。その場合は、dpkgベースのソリューションのいずれかを試してください。
user535733

40

Synaptic Package Managerを使用すると、古いカーネルイメージを簡単に選択して削除できます。 Synaptic Package Managerのスクリーンショット

Synapticがまだインストールされていない場合:

sudo apt-get install synaptic

アプリケーションを起動し、表示されたオプションを選択します。

/ bootフォルダー内のファイルに応じて、バージョンが「2.6.x」でxが31〜38のすべての「linux-」パッケージを強調表示できるはずです。

これらの各Linuxパッケージを右クリックし、オプション「完全削除のマーク」を選択します。最後に、適用ボタンをクリックします。これにより、すべてのファイルと関連ファイルが削除されます。あなたの/bootフォルダが少し整然とする必要があります。


私は14.04にいます。私にとっては、私のLinuxイメージをインストール(手動)、インストールされていない(ローカルまたは廃止)の下に位置していた...私は、コマンドラインを経由して、過去にこのような状況を扱っているが、私は今日、この方法を試してみることにした
ライアン

8
大野。スペースがないため、Synapticをインストールできません/boot
ジョンマクゲーヒー

@JohnMcGehee fsckとpartedがその問題を解決するはずです。
FlipMcF

25

あなたの問題の詳細な投稿をありがとう、これは私が正しい方向に進んだ。以前のカーネルファイルを保持しておくと便利です。一度にすべてのカーネルファイルを削除できますが、この投稿を確認してください。
未使用のLinuxカーネルヘッダー、イメージ、およびモジュールをすべて削除する方法

コマンドライン経由で完了。リモートでこれを行っている場合、WINSCPのようなものを使用してターミナルセッションを開き、貼り付けるだけで非常にうまく機能します。

ここでは記事のリンクからコピーされています。記事全体を読むことをお勧めします。

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

23

これは古い質問に対する新しい答えですが、この問題(およびそれ以上)を簡単に削除する方法はUbuntu Tweakをインストールすることです。それをインストールするには

sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak

次に、Ubuntu Tweakを実行し、「janitor」タブに移動します。ここから3回クリックするだけです。

古いカーネル用のUbuntuの調整管理者

ただし、安全のために、最後のカーネル(決して知らない)またはよく知られている動作中のカーネルを残すことをお勧めします。しかし、それは簡単にカスタマイズできます。

同じツールを使用して多くのものをクリーンアップできます。サムネイルキャッシュまたはTBキャッシュをクリーンアップすると、必要に応じてシステムがそれらを再構築する必要があることに注意してください。


Ubuntu tweakをインストールし、リポジトリのWebサイトにもアクセスしようとしました。それは13.10以前のみだという。15.04の更新バージョンはありますか?
JayCouture.com

@ JayCouture.comサイト内のバージョンは14.04向けです(「13.10以前」は古いリリースへのリンクです)。14.10または15.04のバージョンがある場合は無視します。
Rmano

19

を使用dpkgしてパッケージを直接削除することで問題を解決できました。パッケージはにリストされdpkg -lていますが、ファイルはから削除され/boot、スペースが解放されます。

phrogz@planar:/boot$ sudo dpkg --remove linux-image-2.6.32-30-server
(Reading database ... 145199 files and directories currently installed.)
Removing linux-image-2.6.32-30-server ...
Running postrm hook script /usr/sbin/update-grub.
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-35-server
Found linux image: /boot/vmlinuz-2.6.32-34-server
Found initrd image: /boot/initrd.img-2.6.32-34-server
Found linux image: /boot/vmlinuz-2.6.32-33-server
Found initrd image: /boot/initrd.img-2.6.32-33-server
Found linux image: /boot/vmlinuz-2.6.32-32-server
Found initrd image: /boot/initrd.img-2.6.32-32-server
Found linux image: /boot/vmlinuz-2.6.32-31-server
Found initrd image: /boot/initrd.img-2.6.32-31-server
Found memtest86+ image: /memtest86+.bin
done

# Repeat for kernels -31 and -32 and -33, up to (but not including)
# the version listed by `uname -a`

この後apt-get -f install、依存関係の問題を修正し、すべてが順調でした。

しかし、自分の/bootサイズを増やすべきなのか、何か他のことをするべきなのかを知る必要があるので、この答えを受け入れるつもりはありません。


そもそも/ bootパーティションを別に用意しないか、100MBが小さすぎるのでサイズを大きくする必要があります。
psusi

1
おかげで、私は経由で削除しますsudo dpkg --remove linux-headers-3.5.0-28*
。– TiloBunt

2
およびsudo dpkg --remove linux-image-3.5.0-28*画像については、次の方法で確認しましたdf -h
-TiloBunt

おかげで、これも役立った。いくつかの古いカーネル(現在使用しているカーネルではありません)を削除してから削除しましたapt-get -f install。また、後で行うことを忘れないでくださいapt-get autoremove。不要なものを削除する可能性があります。
矢上

15

別の/ bootパーティションの使用を停止すると、そのような限られたスペースはなくなります。これを行うには、パーティションをアンマウントしてから別の場所にマウントし、そこにあるすべてのファイルをルートパーティションの/ bootディレクトリにコピーしてから、/ etc / fstabからエントリを削除してgrubを再インストールします。例(正しいパーティションを使用する必要があります):

sudo -s
umount /boot
mount /dev/sda2 /mnt
cp -a /mnt/* /boot/
umount /mnt
gedit /etc/fstab
grub-install /dev/sda

次に、gpartedを使用して古い/ bootパーティションを削除し、場合によってはルートパーティションを拡張してそのスペースを使用できます。ルートパーティションを拡張するには、livecdから起動する必要があり、空き領域はすぐ右側にある必要があります。/ bootパーティションが現在ルートパーティションの左側にある場合、最初にルートパーティションを左側に移動してから拡張する必要がありますが、これには非常に長い時間がかかる可能性があるため、トラブル。


6
/ boot以外はすべて暗号化されているため、/ bootをメインパーティションに移動することは解決策ではありません。あなたは私の質問からそれを知ることができませんでした、ごめんなさい。
user6722

これは、ブートボリュームにスペースがないために上記のソリューションが機能しない場合、または「スペース不足」の問題が繰り返し発生する場合に適したソリューションです。時々かかわら/ bootパーティションを持つことが必要だ、なぜ最初にお読みください:(help.ubuntu.com/community/DiskSpace
svandragt

@svandragt、最近は/ bootパーティションを必要とする理由は基本的に残っていません。残っているのは、BIOSが壊れてディスク全体が見えない場合、および過去10年間に製造されたマシンにそのような制限がない場合です。raidやLVMの使用など、その他のレガシーケースはgrub2によって適切に処理されるようになりました。
psusi

個別のブートパーティションを用意する理由はいくつかあります。しかし、複雑さを増すだけのメリットがあるかどうかはわかりません。1. OSは、ext2を介した高速ブートの恩恵を受けることができます。2. / bootをROとしてマウントすると、セキュリティを強化できます。(ルートキットなど)、またはOSランタイムでマウント解除されたままです。3. grub(1)にはext4にまだいくつかの問題があります。4. lvm(grubv1)の実行に必要です。ただし、これはデフォルトのubuntuセットアップには適用されません。
デビッドCahill

lsblkどのパーティションが何であるかを判別するために使用できます
パープル氏

9

上記の回答から最善を得るために、私の実証済みのアプローチは次のとおりです。

  • uname -a 実行中のカーネルを見つけます。
  • dpkg -l linux-{headers,image}-\* | grep ^ii現在インストールされているすべてのカーネル関連パッケージをリストします。これには、実行中のカーネルが含まれます。
  • sudo apt-get purge linux-{image,headers}-3.16.0-{xx,yy,zz}古いカーネルを削除します。xx,yy,zz削除するカーネルビルドのリストに置き換えます。これらは、現在実行中のカーネルよりも古い、前のコマンドでリストされたすべてのビルドです。現在実行中のカーネルを削除しないでください。システムが起動できなくなります。カーネルのバージョン3.16.0を、システムにインストールされているものに変更する必要がある場合もあります。
  • 必要に応じて、追加を実行しsudo apt-get autoremoveます。これにより、現在のカーネルで不要になった古いカーネルの残りの依存関係が削除され、さらにスペースが解放されます。

一致するカーネルバージョンがインストールされていないヘッダーファイルがインストールされている場合、またはその逆の場合があります。これらのバージョンをすべてコマンドに含めるだけです。APTは、インストールされていないために削除できないパッケージがあると文句を言いますが、それは害を与えません。

何かが失敗した場合...

  • デバイスエラーでスペースが残っていないためにaptコマンドが失敗する場合は、代わりに対応するdpkgコマンドを使用しますsudo dpkg --purge linux-{image,headers}-3.16.0-{xx,yy,zz}
  • linux-imageパッケージがlinux-headers同じバージョンのパッケージ(アンインストールすることも必要です)に必要なためにdpkgコマンドがまだ機能しない場合、dpkgはそれを解決できなかった可能性があります。dpkg -lコマンドラインでパッケージ名のサフィックスの出力を再確認し、指定します。たとえば、私のシステムの1つで、最終的に機能したコマンドはでしたsudo dpkg --purge linux-{image,headers}-3.16.0-{xx,yy,zz}-generic-pae
  • 他のエラーが発生した場合は、助けを求めてください。思ったよりも別の問題がある可能性があります。

@通常の場合(少なくとも一つの私はに実行し続ける)user535733まだだということですいくつかのスペース/boot別のカーネルパッケージのためだけでは十分ではありません、。これらの場合、上記はうまく機能しました。ただし、対応するdpkgコマンドを自由に追加してください。に関してはpurge、いや、それは一種の「強制削除」ではありません。異なるのはremove、設定ファイルも削除することです。カーネルパッケージが構成ファイルをインストールしない限り、removeおよびpurgeカーネルパッケージについても同じことを行うため。
user149408

対応するdpkgコマンドに4番目の箇条書きを追加しました。
user535733

4

私にとってはapt-get purgedpkg --remove両方とも失敗しました。そのため、/ bootから古いカーネルイメージをいくつか削除する必要がありましたrm -f


4
これはパッケージを削除する良い方法ではありません。この答えは正しい方法でそれらを削除できなかった理由についてはあまり具体的ではありませんが、その情報が提供されていれば(もちろん別の質問で)問題の原因を試してみることができると確信しています。
トーマスラッター14

2
/bootパーティションがいっぱいだったため、失敗したと思います。このコマンドは、最初にカーネルを最近にアップグレードしNo space left on device、生成中にクラッシュしますinitrd.img
vp_arth

1
警告、ファイルを直接削除すると問題が発生する可能性があります。linux-firmwareパッケージの更新により、パッケージ情報に基づいてインストールされていると考えられるすべてのバージョンのinitrd.imgファイルを再作成できるためです。参照:askubuntu.com/questions/865577/…– kgrittn
1

1
ありがとう
ジェフパッケット

4

すべてのカーネルをリストします。

dpkg --list 'linux-image*'

現在のカーネルを表示:

uname -r

すべてのカーネルをリストEXCEPT現在1:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'

現在のカーネルがそのリストにないことを確認してください。

すべてのカーネルを削除EXCEPT現在1:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge

他のものをクリアする:

sudo apt-get autoremove

それでもファイルのインストール/アンインストールに関するブートディスク領域エラーが発生する場合は、/ bootディレクトリからOLDイメージの1つを直接削除します。

ls -lh /boot/*-3.13.0-119*;

rm /boot/*-3.13.0-119*; 

注:イメージを削除する前に、現在のカーネルイメージを再度確認してください。


2

私はすでに古いカーネルパッケージ(linux-headers ...)を削除しました

linux-headers-*カーネルではありません。カーネルパッケージはlinux-image-*です。指定されたものlinux-headers-*は、カーネルモジュールをコンパイルするための開発パッケージです。これらは/ bootディレクトリには存在せず、システムを日常的に使用するために必要ではありません。

/ bootにリストしたファイルに、いくつかの古いカーネルイメージ(vmlinuz*)とコンパイルされたinitrdイメージ(initrd.img*あなたはまだインストールされ、旧カーネルパッケージの多くを持って表示され、それらのカーネルのため)。

インストール済みのカーネルを一覧表示できるはずです

aptitude search ~ilinux-image

(これはおそらくカーネルではないパッケージも返すことに注意してください)。

通常、3つ以上のカーネルをインストールする必要はありません-現在使用中のカーネルとその前のカーネル(フォールバックとして)。したがって、次のように古いものを1つずつ削除することができます。

sudo apt-get autoremove linux-image-3.2.0-23-generic

「3.2.0-23-generic」を、削除する実際のカーネルバージョンに置き換えてください。また、などのパッケージを削除しないでくださいlinux-image-generic。現在実行中のカーネルを削除しないように注意する必要があります。削除しないと起動できません(Ubuntuはこれを行うことについて警告する場合としない場合があります)。

現在実行中のカーネルを見つけるには:

uname -r

1

initrd-img-xxx/ bootからいくつかのファイルを手動で削除したため、この問題が発生しました/boot。また、これらの古いバージョンが生成され、フォルダーがいっぱいになるという問題がありました。それを修正するために、私は次のことを行いました。

  • 生成された古いカーネルバージョンを手動で削除して、スペースを解放しました。
  • テキスト設定ファイルをスーパーユーザーとして編集するので、次を端末に貼り付けます。

    sudo gedit /etc/initramfs-tools/update-initramfs.conf
    
  • update_initramfs=yesを見つけてに変更しupdate_initramfs=noます。ファイルを保存して終了し、次を実行します。

    sudo dpkg --configure -a
    

これで私の問題は解決しました。それはこのブログに基づいていました

うまくいけば、再起動するとすべてが正常になり、後でにno戻るようyesに変更できますupdate-initramfs.conf


1

私はまだ2017年にこの質問に新しいコメントと回答がありますが、ここで非常に役立つと思う答えが1つ欠けていることを示します:

毎日の使用が簡単なデスクトップOSとしてのUbuntuには、個別の\ bootパーティションをインストールする理由はありません。このようなものは、「一般ユーザー」には提供しません。あなたがそのような問題を抱えることは決してないだろう

PS:私の答えを削除するか、受け入れられた答えに追加することができます...(この方法は一部の人に役立つと思います)



0

aptitudeまたはsynapticには、「古いパッケージまたは手動でインストールされたパッケージ」というセクションがあります。古いLinuxパッケージがそこにあるはずです。


0

このプロセスをもう少し使いやすくするために、以下に書いたbashスクリプトがあります。

YMMV-ミント14用に作成されました。まだBASHを学習しているので、おそらく少し不格好です。自己責任で使用してください、しかしそれは私のために働きます!

#!/bin/bash

endCol='\e[0m'
bold_red='\e[1;31m'
bold_green='\e[1;32m'
bold_yellow='\e[1;33m'

title_color='\e[0;30;47m'

function show_kernel_info {
clear
current_kernel=$(uname -r)
echo "Current ACTIVE kernel is:"
echo -e "  "$bold_yellow$current_kernel$endCol
echo "This kernel will be TOTALLY EXCLUDED from all actions in this script."
echo "Also, one fallback non-active kernel will be always left untouched."
echo ""
echo "These are the non-active kernels stored in /boot:"
count_of_old_kernels_in_boot=$(ls -o /boot/initrd* | grep -c -v "$current_kernel")
if [ $count_of_old_kernels_in_boot = 0 ]; then
  echo " * No non-active kernels found! *"
else
  ls -o /boot/initrd* | grep -v "$current_kernel"
fi
echo ""
list_of_old_kernels=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic")
current_old_kernel=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic" | head -n 1)
count_of_old_kernels_installed=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -c -v "linux-image-generic")
echo "Listing of all unused kernels still installed in the system (these may not exist in /boot):"
if [ $count_of_old_kernels_installed = 0 ]; then
  echo " * No unused kernel installs found! *"
else
  dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic"
fi
echo ""
}

function exit_script {
free_space_after=$(df -BM /boot | tail -n 1 | awk -F' ' '{ print $4 }' | tr -d M)
let freed_space=$free_space_after-$free_space_before
echo ""
echo "Results (in MB)"
echo "---------------"
echo "Free space in /boot before script was run: "$free_space_before
echo "Free space now: "$free_space_after
echo ""
echo "Amount of space freed up = "$freed_space
echo ""
echo "Press any key to exit."
read -s -n 1
echo ""
exit
}

# Main code
echo ""
echo -e $title_color" --------------------------- "$endCol
echo -e $title_color" -   Kernel Cleanup v1.0   - "$endCol
echo -e $title_color" --------------------------- "$endCol
echo ""
echo "Maximise this window for readability."
echo "Press any key to continue."
read -s -n 1
echo ""
echo "This script will remove old unused kernels, but it will prompt you before removing each one."
echo "It will never remove the current running kernel, and will also leave one fallback kernel."
echo "It can also remove source files from /usr/src for each kernel removed."
echo "This is normally safe to do and will free up lots more space."
echo ""
echo "Do you want that done as well? (y/n, enter=yes)"
valid_input=0
while [ "$valid_input" = "0" ]; do
  read -s -n 1 YesNo_input
  if [ "$YesNo_input" = "" ]; then
    YesNo_input="y"
  fi
  case $YesNo_input
  in
    y)
    RemoveSource="y"
    valid_input=1
    ;;

    Y)
    RemoveSource="y"
    valid_input=1
    ;;

    n)
    RemoveSource="n"
    valid_input=1
    ;;

    N)
    RemoveSource="N"
    valid_input=1
    ;;
  esac
done

free_space_before=$(df -h /boot | tail -n 1 | awk -F' ' '{ print $4 }' | tr -d M)
show_kernel_info
while [ $count_of_old_kernels_in_boot -gt 1 ]; do
  # failsafe check if somehow the current kernel is about to be removed!
  if [ "$current_old_kernel" = "$current_kernel" ]; then
    echo -e $bold_red"ERROR!"$endCol" Somehow the current kernel has crept into the removal process!"
    echo "I refuse to do that! Aborting script."
    exit_script
  fi
  # failsafe check if somehow a linux-image-generic entry is about to be removed
  if [ "$current_old_kernel" = "linux-image-generic" ]; then
    echo -e $bold_red"ERROR!"$endCol" Somehow one of the linux-image-generic entries has crept into the removal process!"
    echo "I refuse to do that! Aborting script."
    exit_script
  fi
  echo "Command about to be executed is:"
  echo "  $ sudo apt-get purge \"$current_old_kernel\""
  check_in_boot=$(echo $current_old_kernel | sed 's/linux-image/initrd.img/g')
  if [ -e /boot/$check_in_boot ]; then
    echo -e $bold_yellow"Note:"$endCol" This kernel exists in /boot but it NON-active, so it's OK to remove."
  else
    echo -e $bold_green"Totally safe to remove:"$endCol" This kernel does NOT exist in /boot."
  fi
  echo ""
  echo "Are you sure you want to remove this kernel?"
  echo "(*upper case* Y=yes / any other key will exit the script)"
  read -s -n 1 yes_no
  echo ""
  # Only entering a single upper case Y will work!
  if [ "$yes_no" != "Y" ]; then
    echo "Aborting script."
    exit_script
  fi
  echo "Removing kernel "$current_old_kernel"..."
  sleep 1
  sudo apt-get -y purge $current_old_kernel
  if [ "$RemoveSource" = "y" ]; then
    current_old_source=$(echo $current_old_kernel | sed 's/linux-image/linux-headers/g')
    current_old_source=$(echo $current_old_source | sed 's/-generic//g')
    current_old_source=$(echo $current_old_source | sed 's/-pae//g')
    sudo apt-get -y purge $current_old_source
  fi
  show_kernel_info
done

if [ $count_of_old_kernels_in_boot = 0 ]; then
  echo -e $bold_red"There are no NON-active kernels to remove!"$endCol
else
  echo -e $bold_red"There is only one NON-active kernel left in /boot!"$endCol
  echo "This script will not remove the last non-active kernel so that you have at least one backup kernel."
fi
echo "Aborting script."
exit_script

0

[AskUbuntu noobとして、評判が50になるまでコメントできないので、このために投票しないでください。]

私のサーバーもこれを行っていました。文字通り、ここで期待される答えは機能しませんでした。これらを完了するには、/ bootに作業室が必要だからです ブートパーティションがいっぱいの場合、イメージを削除せずに突然終了します。

私のために働いた唯一のことは、現在の画像を確認し、次にsudo rm filename最も古い画像ファイルを手動で確認することでした(それぞれの名前に-3.16.0-30がありました)。それが終わっsudo apt-get autoremoveたら、仕事をするのに必要な小部屋がありました。たとえば、「depmod:FATAL:ロードできませんでした/boot/System.map-3.16.0-30-generic:No such file or directory」など、そのバージョンに関連するいくつかのエラーが強調されていましたが、これは予想されることです。

終了dfすると、/ bootに使用中の42%が返され、再び正常であることを示します。


1
あなたが探しているポストはあるaskubuntu.com/questions/171209/...
muru

@muruええ、はい...オリジナルのポスターにもこのアドバイスが必要であることをお勧めします。/ bootがいっぱいになると、/ bootがいっぱいになるため、修正しようとするこれらのスクリプトバージョンも失敗します。
ジャスティンケース

よく似た2つの問題があります。a)システムはディスクがいっぱいになったと警告しますがapt-get、続行するには十分なスペースがありapt-getます。b)ディスクがいっぱいになったために失敗します。それは別の投稿です。
ムル


0

このスクリプトを名前を付けて保存します/usr/local/bin/remove_kernels.sh(実行権限を付与することを忘れないでくださいsudo chmod 755 /usr/local/bin/remove_kernels.sh):

#!/bin/sh
if test $(id -u) != 0; then
 echo Error: You must be root to run this script!
 exit 1
fi
apt purge $( dpkg --list | grep -P -o "linux-image-\d\S+" | grep -v $(uname -r | grep -P -o ".+\d") )
update-grub

次に、古いカーネルをすべて削除するには、次のように入力します。 sudo remove_kernels.sh


0

/ bootパーティションは少し奇妙になることがあります

カーネルファイルの削除を直接開始しないでください。

従うべき手順

  1. Linuxシステムで使用されている現在インストールされているカーネルを確認します

    uname -r

    これにより、システムに現在インストールされているカーネルイメージの名前がわかります。

  2. システムにインストールされている特定のファイル以外の余分なファイルの削除を開始します

    apt-get remove linux-image-XXXXX

  3. また、ヘッダーファイルも削除します

    apt-get remove linux-headers-XXXXX

  4. またapt、動作を停止した状態があり、その場合は/ bootに切り替えます

    cd /boot

  5. ファイルを手動で削除しinstalled one'sますが、システムからカーネルファイルを削除しないように注意してください。

    rm linux-image-XXXXX

    rm linux-image-extra-XXXXXX

  6. 正しいファイルを削除した後、部分インストールがあればクリーンアップします

    apt-get -f install

  7. ブートファイルが手動でクリーニングされるため、そこにある余分なファイルを削除します

    apt-get autoremove

  8. GRUBを更新する

    update-grub

  9. 最後にシステムパッケージを更新します

    apt-get update


-1

未使用のファイルをこれ以上削除できず、同じデバイスに他のパーティションや空きスペースがある場合、parted / gpartedによって/ bootパーティションのサイズを変更できます。(インストールメディアにも含まれています。)

警告パーティションのサイズ変更は危険な操作です。重要なデータを他のメディアに保存してから実行してください!


小さな個別の/ bootパーティションのほとんどの被害者は、インストール時に「ディスク全体の暗号化」を選択しました。これにはLVMが必要です。この解決策は、それらのユーザーが解決する以上の問題を引き起こすようです。
user535733
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.