GRUB_DEFAULT = _ работает неправильно

GRUB_DEFAULT = _ работает неправильно

Я сделал эту настройку из-за ошибки обновления ядра:

GRUB_DEFAULT = 4

в/etc/default/grub

Чем я казнил

sudo setup-grub

Однако, это не сработало. Моя желаемая версия — 4.2.0-16-generic, потому что 4.2.0-18 и 4.2.0-17 (которой на самом деле нет в списке) не работают. В списке 4.2.0-16 — 4-я.

Когда это не сработало, я попробовал это:

GRUB_DEFAULT = "Advanced options for Ubuntu>Ubuntu, with Linux 4.2.0-16-generic"

и

sudo setup-grub

Однако, это все еще не сработало и открыло нерабочую версию ядра. В настоящее время я могу получить доступ к 4.2.0-16 только вручную через Дополнительные параметры для Ubuntu, но я хочу, чтобы она загружалась автоматически. Какое решение вы мне порекомендуете?

Выходы dpkg --list | grep linux-image:

ii  linux-image-extra-4.2.0-16-generic                          4.2.0-16.19                                amd64        Linux kernel extra modules for version 4.2.0 on 64 bit x86 SMP
ii  linux-image-extra-4.2.0-17-generic                          4.2.0-17.21                                amd64        Linux kernel extra modules for version 4.2.0 on 64 bit x86 SMP
ii  linux-image-extra-4.2.0-18-generic                          4.2.0-18.22                                amd64        Linux kernel extra modules for version 4.2.0 on 64 bit x86 SMP
ii  linux-image-generic                                         4.2.0.18.20                                amd64        Generic Linux kernel image

как последние 4 вывода (только для Ubuntu 15.10, которая содержит ядро ​​4.2.0).

решение1

Вам необходимо использовать идентификаторы соответствующих строк submenuи menuentry.

Примечание "Расширенные возможности Ubuntu" — это submenu, вам нужно использовать его идентификатор.

Бегатьgrep -E "^\\s*(menuentry|submenu) " /boot/grub/grub.cfg

Например, если вывод:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
        menuentry 'Ubuntu, with Linux 4.4.0-140-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-140-generic-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
        menuentry 'Ubuntu, with Linux 4.4.0-140-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-140-generic-init-upstart-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
        menuentry 'Ubuntu, with Linux 4.4.0-140-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-140-generic-recovery-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
        menuentry 'Ubuntu, with Linux 4.4.0-101-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-101-generic-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
        menuentry 'Ubuntu, with Linux 4.4.0-101-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-101-generic-init-upstart-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
        menuentry 'Ubuntu, with Linux 4.4.0-101-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-101-generic-recovery-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
menuentry 'Memory test (memtest86+)' {
menuentry 'Memory test (memtest86+, serial console 115200)' {

Правильная настройка будет такой:

GRUB_DEFAULT="gnulinux-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76>gnulinux-4.4.0-101-generic-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76"

Обратите внимание, что вы также можете использовать нумерацию, начинающуюся с 0, но при этом следует учитывать пункты подменю:

GRUB_DEFAULT="1>3"

Не забудьте пробежаться update-grubв конце.

решение2

  1. Сделайте резервную копию вашего текущего grub.

    sudo cp /etc/default/grub /etc/default/grub.bak

  2. Теперь откройте файл.

    sudo gedit /etc/default/grub

  3. Откройте другой терминал и введите:

    cat /boot/grub/grub.cfg | grep 4.2.0-16

    Вы увидите такую ​​строку:

    menuentry 'Ubuntu, с Linux 4.2.0-16-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.2.0-18-generic-advanced-esx5367c-b4ug-19sd-v6j8-ty2hj01ui3kj' {..........

  4. Скопируйте эту строку и вставьте ее:

ОТРЕДАКТИРОВАНО ОТ:

GRUB_DEFAULT ="gnulinux-4.2.0-16-generic-advanced-2e2221b2-b6c7-4553-815f-67afdc924a98"

РЕДАКТИРОВАНО:

GRUB_DEFAULT ="gnulinux-advanced-2e2221b2-b6c7-4553-815f-67afdc924a98>gnulinux-4.2.0-16-generic-advanced-2e2221b2-b6c7-4553-815f-67afdc924a98"

  1. Сохраните файл.

  2. Теперь введите команду:

    sudo update-grub

решение3

ОК! Я нашел решение. Мне пришлось связать PPA с grub-customizer.

sudo add-apt-repository ppa:danielrichter2007/grub-customizer

Чем я и занимался:

sudo apt-get update

Следующий шаг —

sudo apt-get install grub-customizer

После этого я открываю grub-customizer через unity dash и выбираю там нужное ядро ​​и та-дам!:)

решение4

Небольшая функция bash для вывода списка всех ядер Ubuntu, подходящих для вставки GRUB_DEFAULTв/etc/default/grub

 MENUID=$( grep -E "^\\s*(submenu) " /boot/grub/grub.cfg  | grep -oP "gnuli.*(?=')"    )
grep '(?<=menuentry_id_option ).gnuli\S+' /boot/grub/grub.cfg  -Po | \
    sed "s@'@@g" |grep -vE 'recovery|simple|gnulinux-advanced' | sed "s@^@GRUB_DEFAULT=\"${MENUID}>@; s@\$@\"@"

Выход:

GRUB_DEFAULT="gnulinux-advanced-20dfee37-ad84-49b2-8c69-a54699da855d>gnulinux-6.6.10-usb2-advanced-20dfee37-ad84-49b2-8c69-a54699da855d"
GRUB_DEFAULT="gnulinux-advanced-20dfee37-ad84-49b2-8c69-a54699da855d>gnulinux-5.15.0-35-generic-advanced-20dfee37-ad84-49b2-8c69-a54699da855d"

Затем просто выберите один из них, вставьте в строку /etc/default/grub, запустите update-grubи перезагрузите компьютер.

Связанный контент