Загрузка виртуальной машины Linux для восстановления GRUB
Область применения: ✔️ виртуальные машины Linux
Примечание.
CentOS, на который ссылается в этой статье, является дистрибутивом Linux и достигнет конца жизни (EOL). Думайте об использовании и планировании соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.
В этой статье рассматривается несколько условий, которые вызывают проблемы с спасением GRUB и предоставляют рекомендации по устранению неполадок.
Во время загрузки загрузчик пытается найти ядро Linux и передать элемент управления загрузки. Если этот раздаток не удается выполнить, виртуальная машина входит в консоль спасения GRUB. Запрос на спасение GRUB не отображается в журнале последовательной консоли Azure, но его можно просмотреть на снимке экрана загрузки Azure диагностика.
Определение проблемы спасения GRUB
Просмотрите снимок экрана диагностика загрузки виртуальной машины на странице загрузки виртуальной машины диагностика портал Azure. Снимок экрана помогает диагностировать проблему спасения GRUB и определить, вызвана ли ошибка загрузки.
Следующий текст является примером проблемы спасения GRUB:
error: file '/boot/grub2/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue>
Устранение неполадок аварийного восстановления GRUB в автономном режиме
Чтобы устранить проблему аварийного восстановления GRUB, требуется виртуальная машина спасения и восстановления. Используйте команды восстановления виртуальной машины для создания виртуальной машины с копией подключенного диска операционной системы затронутой виртуальной машины. Подключите копию файловых систем ОС на виртуальной машине восстановления с помощью chroot.
Примечание.
Кроме того, можно создать виртуальную машину спасения вручную с помощью портал Azure. Дополнительные сведения см. в статье "Устранение неполадок виртуальной машины Linux путем подключения диска ОС к виртуальной машине восстановления с помощью портал Azure".
Определите проблему спасения GRUB. При возникновении одной из следующих проблем с спасением GRUB перейдите к соответствующему разделу, чтобы устранить эту проблему:
После устранения проблемы спасения GRUB выполните следующие действия:
Отключите копию файловых систем из виртуальной машины спасения и восстановления.
az vm repair restore
Выполните команду, чтобы переключить восстановленный диск ОС на исходный диск ОС виртуальной машины. Дополнительные сведения см. в шаге 5 в разделе "Восстановление виртуальной машины Linux" с помощью команд восстановления виртуальной машины Azure.Проверьте, может ли виртуальная машина начать, взглянув на последовательную консоль Azure или попытаясь подключиться к виртуальной машине.
Если отсутствует весь раздел /boot или другое важное содержимое и не удается восстановить его, рекомендуется восстановить виртуальную машину из резервной копии. Дополнительные сведения см. в статье "Как восстановить данные виртуальной машины Azure в портал Azure".
Дополнительные сведения об ошибках, возможных причинах и решениях см. в следующих разделах.
Примечание.
В командах, упомянутых в следующих разделах, замените /dev/sdX
на соответствующее дисковое устройство операционной системы (OS).
Ошибка: неизвестная файловая система
На следующем снимку экрана показано сообщение об ошибке:
Эта ошибка может быть связана с одной из следующих проблем:
Повреждение файловой системы /boot.
Чтобы устранить эту проблему, выполните действия, описанные в разделе "Исправление повреждения файловой системы /boot".
Загрузчик GRUB указывает на недопустимый диск или секцию.
Чтобы устранить эту проблему, переустановите GRUB и повторно создайте файл конфигурации GRUB.
Проблемы с таблицей секционирования диска ОС, вызванные ошибкой человека.
Чтобы устранить такие проблемы, выполните действия, описанные в статье "Ошибка: нет такой секции с рекомендациями повторно создать раздел /boot, если отсутствует или создан неправильно".
Исправление повреждения файловой системы /boot
Проверьте, была ли создана виртуальная машина спасения и восстановления. Если он не был создан, выполните шаг 1, чтобы устранить проблему аварийного восстановления GRUB в автономном режиме , чтобы создать виртуальную машину.
Чтобы устранить проблемы с повреждением в соответствующей секции /boot, см. сведения об устранении ошибок повреждения файловой системы в Azure Linux .
Перейдите к шагу 3 в разделе "Устранение неполадок аварийного спасения GRUB" в автономном режиме , чтобы переключить диск ОС.
Переустановите GRUB и повторно создайте файл конфигурации GRUB
Проверьте, была ли создана виртуальная машина спасения и восстановления. Если он не был создан, выполните шаг 1, чтобы устранить проблему аварийного восстановления GRUB в автономном режиме , чтобы создать виртуальную машину. Подключите все необходимые файловые системы, включая /и /boot в виртуальной машине спасения и восстановления, а затем введите среду chroot .
Переустановите GRUB и повторно создайте соответствующий файл конфигурации GRUB с помощью одной из следующих команд:
RHEL/CentOS/Oracle 7.x/8.x/9.x Linux без UEFI (на основе BIOS 1-го поколения)
grub2-install /dev/sdX grub2-mkconfig -o /boot/grub2/grub.cfg sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
RHEL/CentOS/Oracle 7.x/8.x/9.x Linux с UEFI (2-го поколения)
yum reinstall grub2-efi-x64 shim-x64 grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg sed -i 's/hd2/hd0/g' /boot/efi/EFI/redhat/grub.cfg
Если виртуальная машина работает CentOS, замените
centos
redhat
на файл grub.cfg абсолютный путь /boot/efi/EFI/centos/grub.cfg.SLES 12/15 15-го поколения и 2-го поколения
grub2-install /dev/sdX grub2-mkconfig -o /boot/grub2/grub.cfg sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
Ubuntu 20.04/22.04/24.04
grub-install /dev/sdX update-grub
Перейдите к шагу 3 в разделе "Устранение неполадок аварийного спасения GRUB" в автономном режиме , чтобы переключить диск ОС.
Ошибка 15. Файл не найден
На следующем снимку экрана показано сообщение об ошибке:
Проблему можно устранить следующим способом.
Проверьте, была ли создана виртуальная машина спасения и восстановления. Если он не был создан, выполните шаг 1, чтобы устранить проблему аварийного восстановления GRUB в автономном режиме , чтобы создать виртуальную машину. Подключите все необходимые файловые системы, включая /и /boot в виртуальной машине спасения и восстановления, а затем введите среду chroot .
Проверьте содержимое файловой системы /boot и определите, что отсутствует.
Если файл конфигурации GRUB отсутствует, переустановите GRUB и повторно создайте файл конфигурации GRUB.
Убедитесь, что разрешения файла в файловой системе /boot являются ОК. Вы можете сравнить разрешения с помощью другой виртуальной машины под управлением той же версии Linux.
Если отсутствует весь раздел /boot или другое важное содержимое и не удается восстановить его, рекомендуется восстановить виртуальную машину из резервной копии. Дополнительные сведения см. в статье "Как восстановить данные виртуальной машины Azure в портал Azure".
После устранения проблемы перейдите к шагу 3, чтобы устранить проблему аварийного восстановления GRUB в автономном режиме , чтобы переключить диск ОС.
Ошибка: файл "/boot/grub2/i386-pc/normal.mod" не найден
На следующем снимку экрана показано сообщение об ошибке:
Проверьте, была ли создана виртуальная машина спасения и восстановления. Если он не был создан, выполните шаг 1 в разделе "Устранение неполадок аварийного восстановления GRUB в автономном режиме " для создания. Подключите все необходимые файловые системы, включая /и /boot в виртуальной машине спасения и восстановления, а затем введите среду chroot .
Если не удается подключить файловую систему /boot из-за ошибки повреждения, исправьте повреждение файловой системы /boot.
При расположении внутри chroot проверьте содержимое каталога /boot/grub2/i386-pc . Если содержимое отсутствует, скопируйте содержимое из /usr/lib/grub/i386-pc. Для этого воспользуйтесь следующими командами:
ls -l /boot/grub2/i386-pc cp -rp /usr/lib/grub/i386-pc /boot/grub2
Если содержимое секции
/boot
пусто, используйте следующие команды, чтобы повторно создать его:Примечание.
Следующие действия применяются к виртуальным машинам RHEL/CentOS/Oracle 7.x/8.x Linux без UEFI (на основе BIOS 1-го поколения).
В рамках процесса chroot переустановите grub. Замените
/dev/sd[X]
соответствующим образом соответствующую копию диска ОС, подключенного к виртуальной машине восстановления и спасения:grub2-install /dev/sd[X]
Убедитесь, что укажите
/etc/resolv.conf
допустимую запись DNS, чтобы разрешить имя репозитория:cat /etc/resolv.conf
Переустановите ядро:
yum reinstall $(rpm -qa | grep -i kernel)
Создайте файл grub.cfg:
grub2-mkconfig -o /boot/grub2/grub.cfg sed -i 's/hd2/hd0/g' /boot/grub2/grub.cfg
Перейдите к шагу 3, чтобы устранить проблему аварийного спасения GRUB в автономном режиме , чтобы переключить диск ОС.
Ошибка: нет такой секции
На следующем снимку экрана показано сообщение об ошибке:
Эта ошибка возникает на виртуальной машине на основе RHEL (Red Hat, Oracle Linux, CentOS) в одном из следующих сценариев:
- Раздел /boot удаляется по ошибке.
- Раздел /boot создается повторно с помощью неправильных начальных и конечных секторов.
Решение. Повторное создание /загрузочного раздела
Если раздел /boot отсутствует, повторно создайте его, выполнив следующие действия:
Проверьте, была ли создана виртуальная машина спасения и восстановления. Если он не был создан, выполните шаг 1, чтобы устранить проблему аварийного восстановления GRUB в автономном режиме , чтобы создать виртуальную машину.
Определите, создана ли таблица секций в качестве типа dos или GPT с помощью следующей команды:
sudo fdisk -l /dev/sdX
Таблица секционирования Dos
Таблица секций GPT
Если таблица секционирования выполняется в качестве типа таблицы секции, повторно создайте раздел /boot в системах dos. Если таблица секционирования имеет GPT в качестве типа таблицы секции, повторно создайте раздел /boot в системах GPT.
Убедитесь, что загрузчик GRUB установлен с помощью соответствующего диска. Чтобы установить и настроить файл конфигурации GRUB, выполните действия, описанные в разделе "Переустановка GRUB" и повторное создание файла конфигурации GRUB.
Перейдите к шагу 3, чтобы устранить проблему аварийного спасения GRUB в автономном режиме , чтобы переключить диск ОС.
Повторное создание секции /boot в системах dos
Повторно создайте раздел /boot с помощью следующей команды:
sudo fdisk /dev/sdX
Используйте значения по умолчанию в первых и последних секторах, а также тип секции (83). Убедитесь, что таблица секций /boot помечена как загрузочная с помощью
a
параметра в средствеfdisk
, как показано в следующих выходных данных:sudo fdisk /dev/sdc The device presents a logical sector size that is smaller than the physical sector size. Aligning to a physical sector (or optimal I/O) size boundary is recommended, or performance may be impacted. Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1,3,4, default 1): 1 First sector (2048-134217727, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-2099199, default 2099199): Using default value 2099199 Partition 1 of type Linux and of size 1 GiB is set Command (m for help): t Partition number (1,2, default 2): 1 Hex code (type L to list all codes): 83 Changed type of partition 'Linux' to 'Linux' Command (m for help): a Partition number (1,2, default 2): 1 Command (m for help): p Disk /dev/sdc: 68.7 GB, 68719476736 bytes, 134217728 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk label type: dos Disk identifier: 0x000b7179 Device Boot Start End Blocks Id System /dev/sdc1 * 2048 2099199 1048576 83 Linux /dev/sdc2 2099200 134217727 66059264 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table.
После повторного создания отсутствующих секций /boot проверьте, обнаружена ли файловая система /boot. Вы должны увидеть запись
/dev/sdX1
для (отсутствующий раздел /boot).sudo blkid /dev/sdX1
sudo blkid /dev/sdc1 /dev/sdc1: UUID="<UUID>" TYPE="ext4"
Если файловая система /boot не отображается
blkid
после повторного создания раздела, это означает, что данные /boot больше не существуют. Необходимо повторно создать файловую систему /boot (используя тот же формат UUID и файловой системы, который находится в записи /etc/fstab /boot), а затем восстановить его содержимое из резервной копии.
Повторное создание секции /boot в системах GPT
Повторно создайте раздел /boot с помощью следующей команды:
sudo gdisk /dev/sdX
Используйте значения по умолчанию в первых и последних секторах и тип секции (8300), как показано в следующих выходных данных:
sudo gdisk /dev/sdc GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help): n Partition number (1-128, default 1): 1 First sector (34-134217694, default = 1026048) or {+-}size{KMGTP}: Last sector (1026048-2050047, default = 2050047) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem' Command (? for help): p Disk /dev/sdc: 134217728 sectors, 64.0 GiB Model: Virtual Disk Sector size (logical/physical): 512/4096 bytes Disk identifier (GUID): 6D915856-445A-4513-97E4-C55F2E1AD6C0 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 134217694 Partitions will be aligned on 2048-sector boundaries Total free space is 6076 sectors (3.0 MiB) Number Start (sector) End (sector) Size Code Name 1 1026048 2050047 500.0 MiB 8300 Linux filesystem 2 2050048 134215679 63.0 GiB 8E00 14 2048 10239 4.0 MiB EF02 15 10240 1024000 495.0 MiB EF00 EFI System Partition Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): Y OK; writing new GUID partition table (GPT) to /dev/sdc. Warning: The kernel is still using the old partition table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) The operation has completed successfully.
Проверьте, обнаружена ли файловая система /boot системой с помощью следующей команды:
sudo blkid /dev/sdX1
Вы должны увидеть запись
/dev/sdX1
для (отсутствующий раздел /boot).sudo blkid /dev/sdc1 /dev/sdc1: UUID="<UUID>" BLOCK_SIZE="4096" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="<PARTUUID>"
Если файловая система /boot не отображается после повторного создания раздела, это означает, что данные /boot больше не существуют. Необходимо повторно создать файловую систему /boot (используя тот же идентификатор UUID, который находится в записи /etc/fstab /boot), а затем восстановить его содержимое из резервной копии.
Ошибка: символ "grub_efi_get_secure_boot" не найден
На следующем снимку экрана показано сообщение об ошибке:
Ядро Linux версии 4.12.14 (используемое в SLES 12 SP5) не поддерживает параметр безопасной загрузки . Таким образом, если во время развертывания виртуальной машины включена безопасная загрузка (то есть поле типа безопасности установлено на доверенные виртуальные машины запуска), виртуальная машина создает ошибку безопасной загрузки через консоль при попытке начать с помощью этой версии ядра SUSE на образе виртуальной машины 2-го поколения.
Решение
Чтобы устранить ошибку загрузки, выполните следующие действия.
Проверьте, была ли создана виртуальная машина спасения и восстановления. Если он не был создан, выполните шаг 1, чтобы устранить проблему аварийного восстановления GRUB в автономном режиме , чтобы создать виртуальную машину. Подключите все необходимые файловые системы, включая /и /boot, а затем введите среду chroot .
Выполните следующую команду YaST в среде chroot:
yast2 bootloader
Снимите флажок "x" из параметра "Включить поддержку безопасной загрузки", а затем выберите F10 , чтобы сохранить изменение.
Выполните шаг 3, чтобы устранить проблему аварийного восстановления GRUB в автономном режиме , чтобы переключить диск ОС.
Другие ошибки спасения GRUB
На следующем снимку экрана показано сообщение об ошибке:
Эта ошибка активируется в одном из следующих сценариев:
- Отсутствует файл конфигурации GRUB.
- Используется неправильная конфигурация GRUB.
- Отсутствует раздел /boot или его содержимое.
Для устранения этой ошибки выполните следующие действия.
Проверьте, была ли создана виртуальная машина спасения и восстановления. Если он не был создан, выполните шаг 1, чтобы устранить проблему аварийного восстановления GRUB в автономном режиме , чтобы создать виртуальную машину. Подключите все необходимые файловые системы, включая /и /boot, а затем введите среду chroot .
Убедитесь, что файл конфигурации /etc/default/grub настроен. Утвержденные образы Azure Linux уже имеют необходимые конфигурации. Дополнительные сведения см. в следующих статьях:
Переустановите GRUB и повторно создайте файл конфигурации GRUB.
Примечание.
Если отсутствует файл /boot/grub/menu.lst, эта ошибка предназначена для более старых версий ОС (RHEL 6.x, Centos 6.x и Ubuntu 14.04). Команды будут отличаться, так как GRUB версии 1 используется в этих системах. GRUB версии 1 не рассматривается в этой статье.
Если отсутствует весь раздел /boot, выполните действия, описанные в разделе "Ошибка": нет такой секции.
После устранения проблемы перейдите к шагу 3, чтобы устранить проблему аварийного восстановления GRUB в автономном режиме , чтобы переключить диск ОС.
Следующие шаги
Если конкретная ошибка загрузки не является проблемой спасения GRUB, обратитесь к разделу "Устранение неполадок с azure Linux Виртуальные машины ошибками загрузки" для дальнейшего устранения неполадок.
Заявление об отказе от ответственности за сведения о продуктах сторонних производителей
В этой статье упомянуты программные продукты независимых производителей. Корпорация Microsoft не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.
Заявление об отказе от ответственности за контактные данные сторонней организации
Корпорация Майкрософт предоставляет контактные данные сторонних производителей в целях получения дополнительных сведений по данной теме. Эти данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не гарантирует точность контактных данных сторонних производителей.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.