пятница, 4 ноября 2011 г.

Очистка меню загрузчика GRUB

После нескольких обновлений системы Kubuntu (или Ubuntu) в меню загрузчика GRUB остаются записи, соответствующие старым версиям ядра. Вот как это выглядит:
меню загрузчика GRUB до обновления
В статье я расскажу, как получить более компактный вид меню загрузчика GRUB:
меню загрузчика GRUB после обновления
Как можно увидеть из скиншота, кроме сокращения размера меню GRUB изменился и язык сообщений.

Прежде всего, необходимо определить текущую версию ядра. Её можно узнать из того же меню загрузчика GRUB, либо выполнив в консоли команду uname -r:

$ uname -r
2.6.32-34-generic

Объяснение команды:
команда uname (сокращение от unix name) выводит информацию об операционной системе;
параметр -r (сокращение от kernel release) используется для вывода версии ядра системы
Далее запускаем менеджер пакетов Synaptic (Пуск → Приложения → Система → Менеджер пакетов Synaptic). Если Synaptic не установлен, то его можно установить командой в консоли:

$ sudo apt-get install synaptic
В строчке поиска напишите "linux-image", на вкладке "Состояния" выберите "Установленные":
удаление старых записей из меню загрузчика GRUB

Выделите старые версии ядра. Рекомендуется оставить текущую и предыдущую версии ядра на случай сбоев в текущей версии. Далее нажмите правой кнопкой мыши по выделенным ядрам и выберите "Отметить для удаления":

удаление старых записей из меню загрузчика GRUB

Далее нажмите кнопку "Применить":

удаление старых записей из меню загрузчика GRUB

Начнется процесс удаления. При этом будет освобождено дисковое пространство (в моем случае 395 МиБ).

удаление старых записей из меню загрузчика GRUB

После перезагрузки Вы увидите обновленное меню загрузчика GRUB без старых версий ядра.


Обновление от 19 декабря 2011 г.:

Существует и другой способ очистки меню GRUB без удаления старых версий ядра из системы. Для этого нужно отредактировать конфигурационный файл меню загрузчика GRUB с именем /boot/grub/grub.cfg. Недостаток данного способа заключается в том, что после обновления ядра системы придется заново редактировать этот файл. Предварительно рекомендую сделать резервную копию этого файла, например, так:

sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.orig

Далее открываем файл grub.cfg в текстовом редакторе:

sudo kate /boot/grub/grub.cfg

В файле присутствует раздел с различными версиями ядра операционной сисетмы. В моём случае этот раздел выглядит так:

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, with Linux 2.6.32-36-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,6)'
    search --no-floppy --fs-uuid --set a7d103e1-12f9-48d0-bf2a-e4b405861b1c
    linux    /boot/vmlinuz-2.6.32-36-generic root=UUID=a7d103e1-12f9-48d0-bf2a-e4b405861b1c ro   quiet splash nomodeset acpi_backlight=vendor
    initrd    /boot/initrd.img-2.6.32-36-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-36-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,6)'
    search --no-floppy --fs-uuid --set a7d103e1-12f9-48d0-bf2a-e4b405861b1c
    echo    'Loading Linux 2.6.32-36-generic ...'
    linux    /boot/vmlinuz-2.6.32-36-generic root=UUID=a7d103e1-12f9-48d0-bf2a-e4b405861b1c ro single
    echo    'Loading initial ramdisk ...'
    initrd    /boot/initrd.img-2.6.32-36-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-35-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,6)'
    search --no-floppy --fs-uuid --set a7d103e1-12f9-48d0-bf2a-e4b405861b1c
    linux    /boot/vmlinuz-2.6.32-35-generic root=UUID=a7d103e1-12f9-48d0-bf2a-e4b405861b1c ro   quiet splash nomodeset acpi_backlight=vendor
    initrd    /boot/initrd.img-2.6.32-35-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-35-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,6)'
    search --no-floppy --fs-uuid --set a7d103e1-12f9-48d0-bf2a-e4b405861b1c
    echo    'Loading Linux 2.6.32-35-generic ...'
    linux    /boot/vmlinuz-2.6.32-35-generic root=UUID=a7d103e1-12f9-48d0-bf2a-e4b405861b1c ro single
    echo    'Loading initial ramdisk ...'
    initrd    /boot/initrd.img-2.6.32-35-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-34-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,6)'
    search --no-floppy --fs-uuid --set a7d103e1-12f9-48d0-bf2a-e4b405861b1c
    linux    /boot/vmlinuz-2.6.32-34-generic root=UUID=a7d103e1-12f9-48d0-bf2a-e4b405861b1c ro   quiet splash nomodeset acpi_backlight=vendor
    initrd    /boot/initrd.img-2.6.32-34-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-34-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,6)'
    search --no-floppy --fs-uuid --set a7d103e1-12f9-48d0-bf2a-e4b405861b1c
    echo    'Loading Linux 2.6.32-34-generic ...'
    linux    /boot/vmlinuz-2.6.32-34-generic root=UUID=a7d103e1-12f9-48d0-bf2a-e4b405861b1c ro single
    echo    'Loading initial ramdisk ...'
    initrd    /boot/initrd.img-2.6.32-34-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-33-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,6)'
    search --no-floppy --fs-uuid --set a7d103e1-12f9-48d0-bf2a-e4b405861b1c
    linux    /boot/vmlinuz-2.6.32-33-generic root=UUID=a7d103e1-12f9-48d0-bf2a-e4b405861b1c ro   quiet splash nomodeset acpi_backlight=vendor
    initrd    /boot/initrd.img-2.6.32-33-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-33-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,6)'
    search --no-floppy --fs-uuid --set a7d103e1-12f9-48d0-bf2a-e4b405861b1c
    echo    'Loading Linux 2.6.32-33-generic ...'
    linux    /boot/vmlinuz-2.6.32-33-generic root=UUID=a7d103e1-12f9-48d0-bf2a-e4b405861b1c ro single
    echo    'Loading initial ramdisk ...'
    initrd    /boot/initrd.img-2.6.32-33-generic
}
### END /etc/grub.d/10_linux ###



Строчки, выделенные красным цветом, соответсвуют старым версиям ядра. Их я удалил и сохранил файл. После перезагрузки старые версии ядра исчезли из меню загрузчика GRUB.

2 комментария:

  1. Отличная статья, но... Вводите неискушенных пользователей в заблуждение названием статьи. Вы же описываете метод не просто очистки меню загрузки, но вместе с тем и удаление всех предыдущих версий ядра вместе с физическим удалением их с диска.

    ОтветитьУдалить
  2. Спасибо за замечание. Я добавил дополнение к статье, в котором описал, как выполнить очистку меню GRUB без удаления старых версий ядра операционной системы.

    ОтветитьУдалить