Устранение неполадок с загрузкой UEFI на виртуальных машинах Azure Linux

Область применения: ✔️ виртуальные машины Linux

Примечание.

CentOS, на который ссылается в этой статье, является дистрибутивом Linux и достигнет конца жизни (EOL). Думайте об использовании и планировании соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

Образы партнеров Linux в Azure Marketplace помечены и настроены для загрузки 1-го поколения BIOS и единого расширяемого интерфейса встроенного ПО (UEFI) поколения 2.

При развертывании виртуальных машин Linux поколения 2 в Azure могут возникнуть сбои загрузки UEFI. В этой статье рассматриваются некоторые сценарии, в которых возникают сбои загрузки UEFI и предоставляются решения.

Симптомы

При развертывании виртуальной машины Linux поколения 2 в Azure загрузка завершается сбоем, и сервер недоступен.

Определение ошибок загрузки UEFI

Проверьте текущее состояние виртуальной машины с помощью диагностика загрузки Azure.

На снимках экрана загрузки диагностика показаны следующие сообщения об ошибках:

  • Ошибка 1

    Сводка загрузки виртуальной машины

    1. Неизвестное устройство
      Загрузчик не загружал операционную систему.
    2. Диск SCSI (0,0)
      Загрузчик не загружал операционную систему.
    3. Диск SCSI (0,1)
      Загрузчик не загружал операционную систему.
    4. Сетевой адаптер (000D3A4DD64D)
      Загрузочный образ не найден.

    Операционная система не была загружена. Виртуальная машина может быть настроена неправильно. Закройте и повторно настройте виртуальную машину или нажмите кнопку "Перезапустить", чтобы повторить повторную загрузку текущей последовательности загрузки.

    Снимок экрана: сообщение об ошибке Hyper-V для отсутствующих образов загрузки UEFI.

  • Ошибка 2

    Запуск PXE через IPv4

    Снимок экрана: переход ошибки Hyper-V на проблему загрузки PXE.

Перед устранением неполадок

Чтобы выполнить восстановление автономной виртуальной машины, необходимое для сценария 1: раздел UEFI в загрузочном образе отсутствует и сценарий 2. Раздел UEFI в загрузочном образе поврежден, убедитесь, что у вас есть доступ к Azure CLI или Azure Cloud Shell.

Сценарий 1. Отсутствует секция UEFI в загрузочном образе

Если секция загрузчика UEFI отсутствует или удалена, виртуальная машина Linux поколения 2 завершится ошибкой загрузки.

Проблему можно устранить следующим способом.

  1. Используйте команду az vm repair create для создания виртуальной машины восстановления. Виртуальная машина восстановления будет иметь копию диска ОС для нефункциональную виртуальную машину. Дополнительные сведения см. в статье "Восстановление виртуальной машины Linux" с помощью команд восстановления виртуальной машины Azure.

  2. Повторно создайте секцию с помощью следующих команд:

    root@repair-centos7:~# 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): p
    Disk /dev/sdc: 134217728 sectors, 64.0 GiB
    Model: Virtual Disk    
    Sector size (logical/physical): 512/4096 bytes
    Disk identifier (GUID): <Disk GUID>
    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 1019837 sectors (498.0 MiB)
    
    Number  Start (sector)    End (sector)  Size       Code  Name
       1         1026048         3123199   1024.0 MiB  0700  
       2         3123200       134215679   62.5 GiB    8E00  
      14            2048           10239   4.0 MiB     EF02  
    
    Command (? for help): n
    Partition number (3-128, default 3): 
    First sector (34-134217694, default = 10240) or {+-}size{KMGTP}: 10240
    Last sector (10240-1026047, default = 1026047) or {+-}size{KMGTP}: 1026047
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): ef00
    Changed type of partition to 'EFI System'
    
    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): <Disk GUID>
    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 4029 sectors (2.0 MiB)
    
    Number  Start (sector)    End (sector)  Size       Code  Name
       1         1026048         3123199   1024.0 MiB  0700  
       2         3123200       134215679   62.5 GiB    8E00  
       3           10240         1026047   496.0 MiB   EF00  EFI System
      14            2048           10239   4.0 MiB     EF02  
    
    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.
    

    Внимание

    • Замените /dev/sdc соответствующую копию диска операционной системы (ОС).
    • Выбор номера секции не имеет значения, если начальные и конечные точки сектора правильны. Выбраны правильные точки начала и окончания сектора, так как ОС может определить отсутствующие секторы.
    • Убедитесь, что конечный сектор не занят какой-либо другой секцией на диске. Выбор значений по умолчанию должен быть достаточно.

    Образы партнеров Azure Linux имеют следующий номер секции, начальные точки сектора и конечные точки сектора:

    Дистрибутив ОС Linux Номер раздела EFI Начало сектора Конец сектора
    CentOS 7 15 10240 1024000
    CentOS 8 15 10240 1024000
    Debian 10 15 8192 262143
    Debian 11 15 8192 262143
    RHEL 7 1 2048 1026047
    RHEL 8 15 10240 1024000
    Oracle Linux 7 15 10240 1024000
    Oracle Linux 8 15 10240 1024000
    Ubuntu 18.04 15 10240 227327
    Ubuntu 20.04 15 10240 227327
    SLES 12 2 6144 1054719
    SLES 15 2 6144 1054719
  3. После повторного создания раздела восстановите виртуальную машину, переключив восстановленный диск ОС с исходным диском ОС виртуальной машины с помощью команды az vm restore . Дополнительные сведения см. в шаге 5 в разделе "Восстановление виртуальной машины Linux" с помощью команд восстановления виртуальной машины Azure.

Сценарий 2. Повреждение секции UEFI в загрузочном образе

Если загрузочный раздел UEFI поврежден, виртуальная машина Linux поколения 2 завершится ошибкой загрузки. Проблему можно устранить следующим способом.

  1. Используйте команду az vm repair create для создания виртуальной машины восстановления. Виртуальная машина восстановления будет иметь копию диска ОС для нефункциональную виртуальную машину. Дополнительные сведения см. в статье "Восстановление виртуальной машины Linux" с помощью команд восстановления виртуальной машины Azure.

  2. Очистка поврежденной секции с помощью следующих команд:

    root@repair-centos7:~# gdisk -l /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.
    Disk /dev/sdc: 134217728 sectors, 64.0 GiB
    Model: Virtual Disk    
    Sector size (logical/physical): 512/4096 bytes
    Disk identifier (GUID): <Disk GUID>
    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 4029 sectors (2.0 MiB)
    
    Number  Start (sector)    End (sector)  Size       Code  Name
       1         1026048         3123199   1024.0 MiB  0700  
       2         3123200       134215679   62.5 GiB    8E00  
       3           10240         1026047   496.0 MiB   EF00  EFI System
      14            2048           10239   4.0 MiB     EF02 
    
    root@repair-centos7:~# fsck.vfat -n /dev/sdc3
    fsck.fat 4.1 (2017-01-24)
    0x25: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
     Automatically removing dirty bit.
    Leaving filesystem unchanged.
    /dev/sdc3: 19 files, 1438/63326 clusters
    
    root@repair-centos7:~# fsck.vfat /dev/sdc3
    fsck.fat 4.1 (2017-01-24)
    0x25: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
    1) Remove dirty bit
    2) No action
    ? 1
    Perform changes ? (y/n) y
    /dev/sdc3: 19 files, 1438/63326 clusters
    root@repair-centos7:~# fsck.vfat /dev/sdc3
    fsck.fat 4.1 (2017-01-24)
    /dev/sdc3: 19 files, 1438/63326 clusters
    

    Внимание

    • Замените /dev/sdc соответствующую копию устройства диска ОС.
    • Всегда выполняйте резервную копию диска ОС и выполняйте сухой запуск с -n параметром перед выполнением проверки файловой системы, указанной выше.
    • Для dosfsck проверки файловой системы vfat можно использовать команду. Обе команды одинаковы. Дополнительные сведения см. в разделе fsck.vfat.
  3. После очистки раздела восстановите виртуальную машину, переключив восстановленный диск ОС на исходный диск виртуальной машины с помощью команды az vm restore . Дополнительные сведения см. в шаге 5 в разделе "Восстановление виртуальной машины Linux" с помощью команд восстановления виртуальной машины Azure.

Сценарий 3. Удаление всего содержимого секции /boot

Если весь раздел /boot или другое важное содержимое отсутствует и не удается восстановить, восстановление виртуальной машины из резервной копии является единственным вариантом. Дополнительные сведения см. в статье "Как восстановить данные виртуальной машины Azure в портал Azure".

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или помощь, создайте запрос на поддержку или попросите сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.