Обновление grub на Debian 11 не удается.

Вопрос или проблема

Я пытаюсь обновить конфигурацию GRUB на виртуальной машине с Debian 11. Я использовал команду update-grub, но она больше не работает. Также я попробовал команду grub-mkconfig > /boot/grub/grub.cfg, которая также завершилась неудачей.

Обе команды завершаются ошибкой:

/usr/sbin/grub-mkconfig: 38: /etc/default/grub.d/grub.cfg: function: not found

Файл grub.cfg находится в /boot/grub/grub.cfg.

Когда я просматриваю grub-mkconfig на строке 38, она показывает следующие строки:

grub_mkconfig_dir="${sysconfdir}"/grub.d

Директорией sysconf является /etc/.

Я проверил страницы man, которые указывают, что grub-mkconfig должен работать.

В чем проблема?

В моей директории /etc/default/grub.d/ есть только файл-заглушка init-select.cfg, содержащий несколько комментариев, и все (Debian 11).

В этой директории не должно быть файла grub.cfg. Возможно, вы по ошибке запустили grub-mkconfig -o /etc/default/grub.d/grub.cfg?

Если вы удалите этот файл, команда sudo update-grub должна снова заработать.

Простой способ решить эту проблему — переустановить grub.

Подключите iso-файл Debian к вашей виртуальной машине, затем загрузитесь. После этого войдите в поврежденную систему через chroot и переустановите grub.

Вот как изменить корневой каталог и переустановить grub:
(Замените sdaXY на ваш корневой раздел.)

mkdir -p /tmp/mychroot
mount -t ext4 /dev/sdaXY /tmp/mychroot
mount --bind /proc /tmp/mychroot/proc
mount --bind /dev /tmp/mychroot/dev
mount --bind /sys /tmp/mychroot/sys
update-grub
grub-install /dev/sdX
exit

Отмонтируйте смонтированные разделы, затем перезагрузитесь.

Ваш файл /boot/grub/grub.cfg поврежден. В строке 38 этого файла должно быть что-то вроде:

38  function savedefault {
40    if [ -z "${boot_once}" ]; then
41      saved_entry="${chosen}"
42      save_env saved_entry
43    fi
44  }

Из этого ответа на форуме Ubuntu, я понимаю, что ошибка

/usr/sbin/grub-mkconfig: 38: /etc/default/grub.d/grub.cfg: function: not found

сообщает вам, что grub-mkconfig не нашел функцию в строке 38 файла /etc/default/grub.d/grub.cfg

Я создал виртуальную машину с Debian 11×64 и скопировал /etc/default/grub.d/grub.cfg. Вы можете сравнить ваш существующий файл с этой копией.

Ответ или решение

Проблема с ошибкой update-grub на Debian 11 может быть связана с неправильным файлом конфигурации в директории /etc/default/grub.d/. Ошибка /usr/sbin/grub-mkconfig: 38: /etc/default/grub.d/grub.cfg: function: not found указывает, что grub-mkconfig не смог найти функцию на линии 38 в файле /etc/default/grub.d/grub.cfg.

Анализ проблемы

  1. Проверка установленных файлов конфигурации: В системе Debian 11 файл grub.cfg не должен находиться в /etc/default/grub.d/. Этот файл мог быть ошибочно создан с помощью команды grub-mkconfig -o /etc/default/grub.d/grub.cfg, что недопустимо.

  2. Отсутствие необходимых настроек: Убедитесь, что файл в /boot/grub/grub.cfg содержит корректные настройки.

Решение проблемы

Удаление ошибочного файла конфигурации

  1. Удалите ошибочный файл grub.cfg из /etc/default/grub.d/:

    sudo rm /etc/default/grub.d/grub.cfg
  2. После удаления файла, повторно выполните команду:

    sudo update-grub

Это должно устранить ошибку, так как update-grub будет снова работать корректно без мешающего файла.

Переустановка GRUB

Если проблема не решена удалением файла:

  1. Подготовка к chroot:

    • Прикрепите ISO-образ Debian к вашей виртуальной машине.
    • Загрузитесь с этого образа и выполните следующие команды:
  2. Переход в chroot и восстановление GRUB:

    mkdir -p /tmp/mychroot
    mount -t ext4 /dev/sdaXY /tmp/mychroot
    mount --bind /proc /tmp/mychroot/proc
    mount --bind /dev /tmp/mychroot/dev
    mount --bind /sys /tmp/mychroot/sys
    chroot /tmp/mychroot
    grub-install /dev/sdX
    update-grub
    exit
  3. Завершение и перезагрузка:

    • Размонтируйте все примонтированные каталоги и перезагрузите систему.

Заключение

Эти действия должны помочь устранить проблему с обновлением GRUB на Debian 11. Убедитесь, что вы правильно указали устройства и разделы, чтобы избежать дополнительных проблем. В случаях, когда исходная проблема связана с ошибками в файлах конфигурации, удаление лишних файлов и переустановка GRUB должны вернуть систему в работоспособное состояние.

Оцените материал
Добавить комментарий

Капча загружается...