Udostępnij za pośrednictwem


Rozwiązywanie problemów z błędami rozruchu UEFI na maszynach wirtualnych z systemem Linux na platformie Azure

Dotyczy: ✔️ maszyny wirtualne z systemem Linux

Uwaga

CentOS, do których odwołuje się ten artykuł, jest dystrybucją systemu Linux i osiągnie koniec życia (EOL). Rozważ odpowiednie użycie i zaplanuj. Aby uzyskać więcej informacji, zobacz CentOS End Of Life guidance (Wskazówki dotyczące zakończenia życia systemu CentOS).

Obrazy partnerów systemu Linux w witrynie Azure Marketplace są oznaczane i konfigurowane pod kątem rozruchu generacji 1 systemu BIOS i rozruchu unified Extensible Firmware Interface (UEFI) generacji 2.

Podczas wdrażania maszyn wirtualnych generacji 2 z systemem Linux na platformie Azure mogą wystąpić błędy rozruchu UEFI. W tym artykule omówiono niektóre scenariusze, w których występują błędy rozruchu INTERFEJSu UEFI i udostępniają rozwiązania.

Objawy

Podczas wdrażania maszyny wirtualnej z systemem Linux generacji 2 na platformie Azure rozruch kończy się niepowodzeniem i serwer jest niedostępny.

Identyfikowanie błędów rozruchu interfejsu UEFI

Sprawdź bieżący stan maszyny wirtualnej przy użyciu diagnostyki rozruchu platformy Azure.

Zrzut ekranu diagnostyki rozruchu przedstawia następujące komunikaty o błędach:

  • Błąd 1

    Podsumowanie rozruchu maszyny wirtualnej

    1. Nieznane urządzenie
      Moduł ładujący rozruch nie załadował systemu operacyjnego.
    2. Dysk SCSI (0,0)
      Moduł ładujący rozruch nie załadował systemu operacyjnego.
    3. Dysk SCSI (0,1)
      Moduł ładujący rozruch nie załadował systemu operacyjnego.
    4. Karta sieciowa (000D3A4DD64D)
      Nie znaleziono obrazu rozruchowego.

    Nie załadowano żadnego systemu operacyjnego. Maszynę wirtualną można skonfigurować niepoprawnie. Zamknij i ponownie skonfiguruj maszynę wirtualną lub kliknij przycisk uruchom ponownie, aby ponowić próbę ponownego uruchomienia bieżącej sekwencji rozruchowej.

    Zrzut ekranu przedstawiający komunikat o błędzie funkcji Hyper-V dotyczący braku obrazu rozruchowego UEFI.

  • Błąd 2

    Uruchamianie środowiska PXE za pośrednictwem protokołu IPv4

    Zrzut ekranu przedstawiający problem z przejściem błędu funkcji hyper-V do rozruchu środowiska PXE.

Przed rozpoczęciem rozwiązywania problemów

Aby wykonać naprawę maszyny wirtualnej w trybie offline wymaganą w scenariuszu 1: brak partycji UEFI w obrazie rozruchowym, a w scenariuszu 2: partycja UEFI w obrazie rozruchowym jest uszkodzona, upewnij się, że masz dostęp do interfejsu wiersza polecenia platformy Azure lub usługi Azure Cloud Shell.

Scenariusz 1. Brak partycji UEFI w obrazie rozruchowym

Jeśli brakuje partycji modułu ładującego rozruchu UEFI lub zostanie ona usunięta, rozruch maszyny wirtualnej z systemem Linux generacji 2 zakończy się niepowodzeniem.

Aby rozwiązać ten problem, wykonaj poniższe czynności:

  1. Użyj polecenia az vm repair create, aby utworzyć maszynę wirtualną naprawy. Maszyna wirtualna naprawy będzie mieć kopię dysku systemu operacyjnego dla niefunkcjonanej maszyny wirtualnej dołączonej. Aby uzyskać więcej informacji, zobacz Naprawianie maszyny wirtualnej z systemem Linux przy użyciu poleceń naprawy maszyny wirtualnej platformy Azure.

  2. Utwórz ponownie partycję przy użyciu następujących poleceń:

    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.
    

    Ważne

    • Zastąp /dev/sdc element odpowiednią kopią urządzenia z dyskiem systemu operacyjnego( OS).
    • Wybór numeru partycji nie ma znaczenia, o ile punkt początkowy i końcowy sektora jest poprawny. Wybrano prawidłowe punkty początkowe i końcowe sektora, ponieważ system operacyjny jest w stanie określić brakujące sektory.
    • Upewnij się, że sektor końcowy nie jest zajęty przez żadną inną partycję na dysku. Wybranie wartości domyślnych powinno być wystarczające tutaj.

    Obrazy partnerów systemu Linux platformy Azure mają następujący numer partycji, punkty początkowe sektora i punkty końcowe sektora:

    Dystrybucja systemu operacyjnego Linux Numer partycji EFI Początek sektora Koniec sektora
    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. Po ponownym utworzeniu partycji przywróć maszynę wirtualną, zamieniając naprawiony dysk systemu operacyjnego na oryginalny dysk systemu operacyjnego maszyny wirtualnej przy użyciu polecenia az vm repair restore . Aby uzyskać więcej informacji, zobacz krok 5 w temacie Naprawianie maszyny wirtualnej z systemem Linux przy użyciu poleceń naprawy maszyny wirtualnej platformy Azure.

Scenariusz 2. Partycja UEFI w obrazie rozruchowym jest uszkodzona

Jeśli partycja rozruchowa UEFI jest uszkodzona, rozruch maszyny wirtualnej z systemem Linux generacji 2 zakończy się niepowodzeniem. Aby rozwiązać ten problem, wykonaj poniższe czynności:

  1. Użyj polecenia az vm repair create, aby utworzyć maszynę wirtualną naprawy. Maszyna wirtualna naprawy będzie mieć kopię dysku systemu operacyjnego dla niefunkcjonanej maszyny wirtualnej dołączonej. Aby uzyskać więcej informacji, zobacz Naprawianie maszyny wirtualnej z systemem Linux przy użyciu poleceń naprawy maszyny wirtualnej platformy Azure.

  2. Wyczyść uszkodzoną partycję przy użyciu następujących poleceń:

    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
    

    Ważne

    • Zastąp /dev/sdc element odpowiednią kopią urządzenia z dyskiem systemu operacyjnego.
    • Zawsze wykonaj kopię zapasową dysku systemu operacyjnego i wykonaj suchy przebieg z -n opcją przed wykonaniem kontroli systemu plików wymienionej powyżej.
    • Polecenie dosfsck może służyć do sprawdzania systemu plików vfat. Oba polecenia są takie same. Aby uzyskać więcej informacji, zobacz fsck.vfat.
  3. Po wyczyszczeniu partycji przywróć maszynę wirtualną, zamieniając naprawiony dysk systemu operacyjnego na oryginalny dysk systemu operacyjnego maszyny wirtualnej przy użyciu polecenia az vm repair restore . Aby uzyskać więcej informacji, zobacz krok 5 w temacie Naprawianie maszyny wirtualnej z systemem Linux przy użyciu poleceń naprawy maszyny wirtualnej platformy Azure.

Scenariusz 3. Cała zawartość partycji /boot jest usuwana

Jeśli brakuje całej partycji /boot lub innej ważnej zawartości i nie można jej odzyskać, przywracanie maszyny wirtualnej z kopii zapasowej jest jedyną opcją. Aby uzyskać więcej informacji, zobacz Jak przywrócić dane maszyny wirtualnej platformy Azure w witrynie Azure Portal.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pomoc techniczną społeczności platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.