Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✔️ виртуальные машины 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).
Переустановите GRUB и повторно создайте файл конфигурации GRUB с помощью автоматического восстановления Azure Linux
Скрипты автоматического восстановления Azure Linux (ALAR) являются частью расширения восстановления виртуальной машины, описанного в статье "Использование автоматического восстановления Azure Linux (ALAR) для исправления виртуальной машины Linux. ALAR охватывает автоматизацию нескольких сценариев восстановления, включая проблемы спасения GRUB.
Скрипты ALAR используют расширение repair-button
восстановления для устранения проблем GRUB, указав --button-command grubfix
для виртуальных машин поколения 1 или --button-command efifix
для виртуальных машин поколения 2. Этот параметр активирует автоматическое восстановление. Выполните следующие команды, чтобы автоматизировать устранение распространенных ошибок GRUB, переустановив GRUB и повторно создав соответствующий файл конфигурации:
Виртуальные машины Linux без UEFI (на основе BIOS 1-го поколения):
az extension add -n vm-repair az extension update -n vm-repair az vm repair repair-button --button-command 'grubfix' --verbose $RGNAME --name $VMNAME
Виртуальные машины Linux с UEFI (2-го поколения):
az extension add -n vm-repair az extension update -n vm-repair az vm repair repair-button --button-command 'efifix' --verbose $RGNAME --name $VMNAME
Внимание
Замените имя группы ресурсов и имя $RGNAME
$VMNAME
виртуальной машины соответствующим образом.
Сценарий восстановления виртуальной машины в сочетании со скриптом ALAR временно создает группу ресурсов, виртуальную машину восстановления и копию диска ОС затронутой виртуальной машины. Он переустановит GRUB, повторно создает соответствующий файл конфигурации GRUB, а затем переключает диск ОС сломанной виртуальной машины на скопированный фиксированный диск. Наконец, repair-button
скрипт автоматически удаляет группу ресурсов, содержащую временную виртуальную машину восстановления.
Переустановите 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 1-го поколения и 2-го поколения
grub-install /dev/sdX update-grub
Перейдите к шагу 3 в разделе "Устранение неполадок аварийного спасения GRUB" в автономном режиме , чтобы переключить диск ОС.
Ошибка: неизвестная файловая система
На следующем снимку экрана показано сообщение об ошибке:
Эта ошибка может быть связана с одной из следующих проблем:
/boot
Повреждение файловой системы.Чтобы устранить эту проблему, выполните действия, описанные в разделе "Исправление повреждения файловой системы /boot".
Загрузчик GRUB указывает на недопустимый диск или раздел.
Чтобы устранить эту проблему, переустановите GRUB и повторно создайте файл конфигурации GRUB вручную.
Проблемы с таблицей секционирования диска ОС, вызванные ошибкой человека.
Чтобы устранить такие проблемы, выполните действия, описанные в разделе "Ошибка". Нет такой секции, чтобы повторно создать секцию
/boot
, если она отсутствует или создана неправильно.
Исправление повреждения файловой системы /boot
Чтобы устранить /boot
повреждение файловой системы, выполните следующие действия.
Проверьте, была ли создана виртуальная машина спасения и восстановления. Если он не был создан, выполните шаг 1, чтобы устранить проблему аварийного восстановления GRUB в автономном режиме , чтобы создать виртуальную машину.
Чтобы устранить проблемы с повреждением в соответствующей
/boot
секции, см. сведения об устранении ошибок повреждения файловой системы в Azure Linux.Перейдите к шагу 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 и файловой системы, который находится в/boot
/etc/fstab
записи), а затем восстановить его содержимое из резервной копии.
Повторное создание секции /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, который находится в/boot
/etc/fstab
записи), а затем восстановить его содержимое из резервной копии.
Ошибка: символ "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 Виртуальные машины ошибками загрузки" для дальнейшего устранения неполадок.
Заявление об отказе от ответственности за сведения о продуктах сторонних производителей
В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.
Заявление об отказе от ответственности за контактные данные сторонней организации
Корпорация Майкрософт предоставляет контактные данные сторонней организации для оказания помощи пользователям по вопросам, упомянутым в данной статье. Эти данные могут быть изменены без предварительного уведомления. Корпорация Майкрософт не дает гарантий относительно верности приведенных контактных данных сторонних организаций.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.