web-dev-qa-db-ja.com

Grubの古いカーネルエントリを削除する

Synapticを使用して、最新の2つのエントリのみを残して古いカーネルを定期的に削除します。

Preciseを使用しています。しかし、私のGrubの「以前のLinuxバージョン」メニューには、2.6.8というラベルのかなりの数のエントリがあります。これらのlinux-imagesをSynapticで見つけることができません。

dpkg -l | grep linux-image

与える:

rc  linux-image-3.0.0-17-generic           3.0.0-17.30                         
    Linux kernel image for version 3.0.0 on x86/x86_64
ii  linux-image-3.2.0-27-generic           3.2.0-27.43
Linux kernel image for version 3.2.0 on 32 bit x86 SMP
ii  linux-image-3.2.0-29-generic           3.2.0-29.46
Linux kernel image for version 3.2.0 on 32 bit x86 SMP
ii  linux-image-3.4.0-030400-generic       3.4.0-030400.201205210521
Linux kernel image for version 3.4.0 on 32 bit x86 SMP
ii  linux-image-generic                    3.2.0.29.31
Generic Linux kernel image

Sudo update-grubは以下を提供します。

Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.4.0-030400-generic
Found initrd image: /boot/initrd.img-3.4.0-030400-generic
Found linux image: /boot/vmlinuz-3.2.0-29-generic
Found initrd image: /boot/initrd.img-3.2.0-29-generic
Found linux image: /boot/vmlinuz-3.2.0-27-generic
Found initrd image: /boot/initrd.img-3.2.0-27-generic
Found linux image: /boot/vmlinuz-2.6.38-11-generic
Found initrd image: /boot/initrd.img-2.6.38-11-generic
Found linux image: /boot/vmlinuz-2.6.38-10-generic
Found initrd image: /boot/initrd.img-2.6.38-10-generic
Found linux image: /boot/vmlinuz-2.6.38-8-generic
Found initrd image: /boot/initrd.img-2.6.38-8-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows Vista (loader) on /dev/sda1

Sudo apt-get remove linux-image-2.6.8-8-genericの結果:

E: Unable to locate package linux-image-2.6.8-8-generic
E: Couldn't find any package by regex 'linux-image-2.6.8-8-generic'

ブートフォルダーには次のものが含まれています。

abi-2.6.38-10-generic initrd.img-3.4.0-030400-generic 
 abi-2.6.38-11-generic memtest86 + .bin 
 abi-2.6.38-8-ジェネリックmemtest86 + _multiboot.bin 
 abi-3.2.0-27-generic System.map-2.6.38-10-generic 
 abi-3.2.0-29-generic System.map-2.6 .38-11-generic 
 abi-3.4.0-030400-generic System.map-2.6.38-8-generic 
 config-2.6.38-10-generic System.map-3.2 .0-27-generic 
 config-2.6.38-11-generic System.map-3.2.0-29-generic 
 config-2.6.38-8-generic System.map-3.4 .0-030400-generic 
 config-3.2.0-27-generic vmcoreinfo-2.6.38-10-generic 
 config-3.2.0-29-generic vmcoreinfo-2.6.38-11 -generic 
 config-3.4.0-030400-generic vmcoreinfo-2.6.38-8-generic 
 extlinux vmlinuz-2.6.38-10-generic 
 grub vmlinuz-2.6。 38-11-generic 
 initrd.img-2.6.38-10-generic vmlinuz-2.6.38-8-generic 
 initrd.img-2.6.38-11-generic vmlinu z-3.2.0-27-generic 
 initrd.img-2.6.38-8-generic vmlinuz-3.2.0-29-generic 
 initrd.img-3.2.0-27-generic vmlinuz-3.4.0-030400-generic 
 initrd.img-3.2.0-29-generic

そして

ls -l /etc/grub.d
合計56 
-rwxr-xr-x 1ルートルート6715 4月17 20:16 00_header 
-rwxr-xr-x 1ルートルート5522 2011年10月1日05_debian_theme 
-rwxr- xr-x 1ルートルート7407 5月17 09:22 10_linux 
-rwxr-xr-x 1ルートルート6335 Apr 17 20:16 20_linux_xen 
-rwxr-xr-x 1ルートルート1588 5月3 2011 20_memtest86 + 
-rwxr-xr-x 1ルートルート7603 4月17 20:16 30_os-prober 
-rwxr-xr-x 1ルートルート214 2011年10月1 40_custom 
 -rwxr-xr-x 1ルートルート95 2011年10月1日41_custom 
-rw-r--r-- 1ルートルート483 2011年10月1日README 
gdisk -l /dev/sda

収量:

パーティションテーブルスキャン:
 MBR:MBRのみ
 BSD:存在しない
 APM:存在しない
 GPT:存在しない
 
 
 ************************************************ ****************** 
無効なGPTおよび有効なMBRが見つかりました。 MBRをGPT形式に変換します。
 ****************************************** ************************ 
 
ディスク/ dev/sda:312581808セクター、149.1 GiB 
論理セクターサイズ:512バイト
ディスク識別子(GUID):F832A498-05E1-4615-B5B1-757ACB4A757A 
パーティションテーブルは最大128エントリを保持します
最初の使用可能なセクターは34、最後使用可能なセクターは312581774 
パーティションは2048セクターの境界に配置されます
合計空きスペースは4183661セクター(2.0 GiB)
 
番号開始(セクター)終了(セクター)サイズコード名
 1 2048 61442047 29.3 GiB 0700 Microsoft基本データ
 3 163842048 169986047 2.9 GiB 8200 Linuxスワップ
 4 169986048 312578047 68.0 GiB 0700 Microsoft基本データ
 5 61444096 159666175 46.8 GiB 8300 Linuxファイルシステム

Grubから古いカーネルや存在しないカーネルを削除するのを手伝ってください。

21
To Do

私はこの問題が何であるかを見つけました。

問題は、Ubuntuをアップグレードしたときに、通常のアップグレードではなくliveUSBを使用してインストールすると、/ bootフォルダーに古いカーネルファイルが残ることでした。

12.10から13.04に同じ方法でアップグレードしたので、同じ状況に遭遇しました。

解決策は、/ bootフォルダー内の古いカーネルに関連するすべてのファイルを手動で削除し、Sudo update-grubを実行することです。余分なエントリはなくなりました。

10
To Do
  • ターミナルを開きます(Ctrl+Alt+T)。

  • uname -rと入力します。これにより、現在使用しているカーネルが表示されるため、これを削除する必要はありません。

  • 次のコマンドを実行します:dpkg --list | grep linux-image。これにより、インストールされているすべてのカーネルが表示されます。

  • 削除するすべてのカーネルの名前を書き留めます。

  • カーネルを削除するには、次を実行します:Sudo apt-get purge linux-image-x.x.x.x-xyzカーネル名を適切なものに置き換えます)。

  • GRUBを更新します:Sudo update-grub2

そして、完了です。

ボーナス:これらすべてを自動的に行う小さなワンライナーです:

Sudo apt-get purge $( dpkg --list | grep -P -o "linux-image-\d\S+" | grep -v $(uname -r | grep -P -o ".+\d") )
44
green

このコマンドを試してください。同じapt-get removeコマンドの洗練されたバージョンです

Sudo apt-get autoremove linux-image-3.2.0-23-generic-pae

removeautoremoveに置き換えることにより、削除プロセスは残りの依存関係も自動的に検出して削除するので、あちこちに行く必要がなく、クリーンなアンインストールを取得できます残り物を削除します。

他の古いカーネルに対してもプロセスを繰り返します。

その後、実行します

Sudo update-grub

その後、最新のカーネルのみが表示されます。

6
Omal Lasitha

最も滑らかなソリューションは、ubuntu-Tweakを使用することです。インストール後、起動してJanitorに移動し、Old Kernelを選択して、削除する古いカーネルとCleanを選択します。それでおしまい! (管理者にはoldカーネルのみが表示されることに注意してください)

3
SeMeKh

通常、Synaptic(最近は別途インストールする必要があります)を起動し、インストール済みカテゴリで「linux」を検索し、すべての古いバージョンのカーネルとlinux-headers(つまり、現在のものを除くすべて)を削除対象としてマークします。アンインストールすると、GRUBメニューから削除されます。

それを行うには気の利いた単一行コマンドが必要ですが、手動で行う方が安全だと感じます

3
Sergey

ターミナルセッションでこれを入力することをお勧めします(Alt-Ctrl-T):

Sudo update-grub

このコマンドにより、grubはos-proberを使用し、メニューを更新します。

Grubを使用していた古いUbuntuリリースのパーティションがある場合(OPにはどこかにnattyリリースパーティションがあるようです)、現在のシステムでupdate-grubを実行する前にそれらをクリーンアップする必要があります。 os-proberは、Windowsおよびその他のLinuxパーティションを検出します。他のLinuxパーティションの場合、カーネルファイルを調べるのではなく、grubメニューからアイテムをコピーします(存在する場合)。

本当に混乱した設定がある場合、Ubuntuシステムを起動してgrubを再インストールするのが最良の解決策かもしれません:

Sudo apt-get --reinstall install grub2

Grubの再インストール中に、そのパーティションにインストールされているカーネルと、他の(おそらく古い)Ubuntuパーティションのgrub構成にインストールされているカーネルに基づいて、/etc/default/grubおよび/boot/grub/menu.cfgファイルを再作成しますOPのように思えます)。

3
John S Gruber

buntu 12.04 LTS(Precise)64bit(非PAE 32bitの場合)

存在するバージョンを確認します。

Sudo update-grub

最も古いものを最初に削除し、do n't現在の/最新のバージョンを削除します。

Sudo apt-get remove linux-image-3.2.0-23-generic
Sudo apt-get remove linux-image-3.2.0-24-generic
Sudo apt-get remove linux-image-3.2.0-25-generic

now presentのバージョンを再確認します。 (オプション)

注:この手順は必須です。最新バージョン以外のすべてを削除する場合(または1つだけ残す場合)。

Sudo update-grub

buntu 12.04 LTS(Precise)32bit(PAE)

存在するバージョンを確認します。

Sudo update-grub

最も古いものを最初に削除し、do n't現在の/最新のバージョンを削除します。

Sudo apt-get remove linux-image-3.2.0-23-generic-pae
Sudo apt-get remove linux-image-3.2.0-24-generic-pae
Sudo apt-get remove linux-image-3.2.0-25-generic-pae

now presentのバージョンを再確認します。 (オプション)

注:この手順は必須です。最新バージョン以外のすべてを削除する場合(または1つだけ残す場合)。

Sudo update-grub
1
david6