Вопрос или проблема
У меня есть виртуальная машина Ubuntu 16.04 (локальная, без облака), которая была создана как клон другого компьютера. Каждый раз, когда пакеты GRUB обновляются с помощью apt upgrade
, я получаю следующее сообщение:1
Загрузчик GRUB был ранее установлен на диск, который больше не доступен, или уникальный идентификатор которого изменился по какой-то причине. Важно убедиться, что установленный образ ядра GRUB синхронизирован с модулями GRUB и grub.cfg. Пожалуйста, проверьте еще раз, чтобы убедиться, что GRUB записывается на соответствующие загрузочные устройства.
и затем он просит выбрать устройство для установки.
Я могу успешно закончить обновление GRUB, но сообщение появляется снова во время следующего обновления GRUB, хотя диск не изменяется между обновлениями.
Как я могу “сбросить” конфигурацию GRUB на текущую, чтобы она больше не спрашивала?
Рассмотренные похожие вопросы
Я не пытаюсь подавить сообщения об обновлениях, как предполагают похожие вопросы (https://serverfault.com/questions/662624/how-to-avoid-grub-errors-after-runing-apt-get-upgrade-ubunut, Как выполнить apt-get -y dist-upgrade без запроса конфигурации grub?). Я хочу решить этот конкретный вопрос касательно обновления GRUB.
Команды из самого высоко оцененного ответа на похожий вопрос на ServerFault не могут быть применены в моем случае, у меня нет упомянутых файлов /boot/grub/menu.lst
и update-grub-legacy-ec2
на моем компьютере.
Моя конфигурация
Я пытался выполнить команды предложенные oldfred:
$ sudo debconf-show grub-pc
grub-pc/install_devices_failed_upgrade: true
grub-pc/mixed_legacy_and_grub2: true
grub-pc/install_devices_failed: false
grub-pc/hidden_timeout: false
grub2/update_nvram: true
grub-pc/timeout: 5
grub-pc/install_devices_empty: false
* grub-pc/install_devices_disks_changed: /dev/disk/by-id/ata-VBOX_HARDDISK_VBd7a628c1-923a4727
grub2/kfreebsd_cmdline:
* grub2/linux_cmdline: consoleblank=0
grub2/kfreebsd_cmdline_default: quiet splash
grub-pc/disk_description:
grub-pc/postrm_purge_boot_grub: false
grub-pc/partition_description:
* grub-pc/install_devices: /dev/disk/by-id/ata-VBOX_HARDDISK_VBd7a628c1-923a4727
grub-pc/chainload_from_menu.lst: true
grub2/force_efi_extra_removable: false
grub-pc/kopt_extracted: false
* grub2/linux_cmdline_default:
grub2/device_map_regenerated:
похоже, соответствует
$ sudo lshw -C Disk | grep serial
serial: VBd7a628c1-923a4727
но grub-probe -t device /boot/grub
возвращает имя корневого устройства мастера клона. Я попробовал предложенную команду sudo dpkg-reconfigure grub-pc
, но это не обновило вывод sudo grub-probe -t device /boot/grub
. Как это исправить?
1 Я получаю сообщение в локализованной версии, вставленная английская версия скопирована из https://samrueby.com/2014/09/02/updating-grub-in-ubuntu-amazon-ec2-instance/.
Если бы я был на вашем месте, я бы полностью переустановил grub, проверяя UUID дисков. Но вы должны сделать это ВНЕ вашей Linux-инстанции, т.е. запустив живой дистрибутив с USB-накопителя, а затем смонтировав ваши разделы на живой файловой системе и ЗАТЕМ переустановив GRUB.
Посмотрите здесь: https://help.ubuntu.com/community/Grub2/Installing
Я получил то же сообщение об ошибке на своей системе с Ubuntu 20.04.1. В моем случае /boot/efi находится на отдельном разделе. Следующая процедура решает проблему: Перед apt-get update
размонтируйте /boot/efi.
umount /boot/efi
apt-get upgrade
mount /boot/efi
Ответ или решение
Для решения проблемы с ошибкой GRUB "был ранее установлен на диск, который больше не присутствует" в вашей виртуальной машине Ubuntu 16.04, следует выполнить несколько шагов, которые помогут вам правильно перенастроить GRUB и устранить эту ошибку.
Шаг 1: Проверка UUID и конфигурации дисков
Прежде всего, необходимо убедиться, что UUID вашего диска совпадает с тем, что используется в конфигурации GRUB. Выполните следующие команды в терминале, чтобы просмотреть UUID вашего корневого устройства:
lsblk -o NAME,UUID
Сравните полученный UUID с тем, который указан в конфигурации GRUB. Если они не совпадают, вам нужно будет обновить конфигурацию GRUB.
Шаг 2: Переустановка GRUB
Следующим шагом будет переустановка GRUB. Для этого выполните следующие действия. Это важно делать из системы, работающей на Live USB, чтобы избежать проблем с монтированием текущих разделов.
-
Запустите Live USB с Ubuntu и откройте терминал.
-
Смонтируйте ваш корневой раздел:
sudo mount /dev/sdXn /mnt
Замените
/dev/sdXn
на правильный путь к вашему корневому разделу (например,/dev/sda1
). -
Если у вас есть отдельный раздел для
/boot/efi
, также смонтируйте его:sudo mount /dev/sdXn /mnt/boot/efi
-
Перейдите в среду вашей установленной системы:
sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys
-
Войдите в систему с chroot:
sudo chroot /mnt
-
Теперь переустановите GRUB:
grub-install /dev/sdX update-grub
Замените
/dev/sdX
на ваш жесткий диск, но не указывайте номер раздела (например,/dev/sda
). -
Выйдите из chroot и размонтируйте все:
exit sudo umount /mnt/dev sudo umount /mnt/proc sudo umount /mnt/sys sudo umount /mnt
-
Перезагрузите систему, извлеките Live USB и проверьте, исчезла ли ошибка.
Шаг 3: Проверка конфигурации пакетов GRUB
Если ошибка все еще возникает после переустановки GRUB, выполните следующие команды, чтобы перезагрузить конфигурацию debconf для вашего GRUB-пакета:
sudo dpkg-reconfigure grub-pc
В диалоговом окне убедитесь, что вы выбираете правильный диск для установки GRUB и никаких старых конфигураций не осталось.
Шаг 4: Удаление старых конфигураций
Если проблема не решена, возможно, стоит удалить и заново установить GRUB:
sudo apt-get purge grub-pc
sudo apt-get install grub-pc
После установки выполните предыдущие шаги по установке GRUB и обновлению конфигурации.
Шаг 5: Устранение проблем с виртуальными машинами
В случае использования виртуальных машин, убедитесь, что настройки виртуальной машины (например, параметры SATA или IDE) совпадают с тем, что требуется для вашего установочного диска. Также проверьте, нет ли конфликтов с другими виртуальными дисками.
Заключение
Следуя вышеописанным шагам, вы сможете избавиться от проблемы с ошибкой GRUB "был ранее установлен на диск, который больше не присутствует" и обеспечить корректное функционирование вашего загрузчика. Эти действия гарантируют, что система будет загружаться без проблем при каждом обновлении пакетов.