Удаление старых записей ядра в Grub [duplicate]

18

Я регулярно удаляю старые ядра, оставляя только последние две записи, используя Synaptic.

Я использую Precise. Однако в моем меню «предыдущая версия Linux» Grub имеется немало записей, помеченных как 2.6.8. Я не могу найти эти linux-изображения в 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 удалить 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-generic          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  vmlinuz-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
дает:
total 56
-rwxr-xr-x 1 root root 6715 Apr 17 20:16 00_header
-rwxr-xr-x 1 root root 5522 Oct  1  2011 05_debian_theme
-rwxr-xr-x 1 root root 7407 May 17 09:22 10_linux
-rwxr-xr-x 1 root root 6335 Apr 17 20:16 20_linux_xen
-rwxr-xr-x 1 root root 1588 May  3  2011 20_memtest86+
-rwxr-xr-x 1 root root 7603 Apr 17 20:16 30_os-prober
-rwxr-xr-x 1 root root  214 Oct  1  2011 40_custom
-rwxr-xr-x 1 root root   95 Oct  1  2011 41_custom
-rw-r--r-- 1 root root  483 Oct  1  2011 README
gdisk -l /dev/sda

дает:

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format.
***************************************************************

Disk /dev/sda: 312581808 sectors, 149.1 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): F832A498-05E1-4615-B5B1-757ACB4A757A
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 312581774
Partitions will be aligned on 2048-sector boundaries
Total free space is 4183661 sectors (2.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        61442047   29.3 GiB    0700  Microsoft basic data
   3       163842048       169986047   2.9 GiB     8200  Linux swap
   4       169986048       312578047   68.0 GiB    0700  Microsoft basic data
   5        61444096       159666175   46.8 GiB    8300  Linux filesystem

Помогите с удалением старых и несуществующих ядер из Grub.

    
задан To Do 15.08.2012 в 22:54
источник

7 ответов

8

Я нашел, что это проблема.

Проблема заключалась в том, что когда я обновил Ubuntu, установив через liveUSB вместо обычного обновления, он оставил старые файлы ядра в папке / boot.

Теперь, когда я обновил то же самое с 12.10 до 13.04, я столкнулся с такой же ситуацией.

Решение состоит в том, чтобы вручную удалить все файлы, связанные со старыми ядрами в папке / boot, и запустить sudo update-grub . Дополнительные записи исчезли.

    
ответ дан To Do 18.05.2013 в 12:56
источник
34
  • Откройте терминал ( 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") )
    
ответ дан green 04.10.2012 в 16:17
5

Попробуйте эту команду. Это усовершенствованная версия той же команды apt-get remove

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

Заменив удалить на autoremove , процесс удаления автоматически находит и удаляет другие зависимости, оставшиеся, поэтому вы получите чистую деинсталляцию, вместо того, чтобы идти сюда и там, и удалите остатки.

Повторите этот процесс и для других старых ядер.

После этого запустите

sudo update-grub

После этого вы увидите только последнее ядро.

    
ответ дан Omal Lasitha 04.10.2012 в 16:01
3

Обычно я просто запускаю Synaptic (который должен быть установлен отдельно в эти дни), ищите «linux» в категории Installed и отметьте все старые версии ядра и linux-заголовки (то есть все, кроме текущего), чтобы удален. При удалении они удаляются из меню GRUB.

Для этого должна быть отличная однострочная команда, но для нее безопаснее просто делать это вручную

    
ответ дан Sergey 15.08.2012 в 23:08
3

Самое slickest решение будет использовать ubuntu-tweak . После установки запустите его, перейдите на Janitor , выберите Old Kernel , выберите старые ядра, которые вы намерены удалить, и Clean . Это оно! (Обратите внимание, что в janitor отображаются только старые )

    
ответ дан SeMeKh 16.08.2012 в 17:40
3

Я предлагаю вам ввести это в сеансе терминала ( Alt - Ctrl - T ):

sudo update-grub

Эта команда заставляет grub использовать os-prober и обновлять меню.

Если у вас есть разделы со старыми выпусками Ubuntu на них, которые использовали grub (кажется, у OP был какой-то natty-релиз, возможно, больше), необходимо также очистить их перед запуском update-grub в текущей системе. os-prober находит Windows и другие разделы Linux. Для других разделов Linux он копирует элементы из меню grub, если таковые имеются, вместо того, чтобы смотреть на их файлы ядра.

Если у вас действительно испорченная конфигурация, лучшим решением может быть загрузка вашей системы Ubuntu и повторная установка grub с помощью:

sudo apt-get --reinstall install grub2

При переустановке grub он будет восстанавливать файлы /etc/default/grub и /boot/grub/menu.cfg на основе установленных ядер в этом разделе и на ядрах, установленных в конфигурациях grub других (предположительно старше) разделов Ubuntu (не выглядит быть любым для OP).

    
ответ дан John S Gruber 16.08.2012 в 01:09
1

Для Ubuntu 12.04 LTS (точный) 64-битный (на 32-битном без PAE)

Проверьте, какие версии присутствуют:

sudo update-grub

Сначала удалите старшую, а не удалите текущую / последнюю версию:

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

Повторно проверьте, какая версия теперь присутствует. (Необязательно)

Примечание: Этот шаг требуется , если вы удалите все, кроме последней (или оставите только одну) версию.

sudo update-grub

Для Ubuntu 12.04 LTS (точный) 32bit (PAE)

Проверьте, какие версии присутствуют:

sudo update-grub

Сначала удалите старшую, а не удалите текущую / последнюю версию:

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

Повторно проверьте, какая версия теперь присутствует. (Необязательно)

Примечание: Этот шаг требуется , если вы удалите все, кроме последней (или оставите только одну) версию.

sudo update-grub
    
ответ дан david6 16.08.2012 в 08:32