다음을 통해 공유


Azure Linux Virtual Machines의 UEFI 부팅 실패 문제 해결

적용 대상: ✔️ Linux VM

참고 항목

이 문서에서 참조하는 CentOS는 Linux 배포이며 EOL(수명 종료)에 도달합니다. 사용 및 계획을 적절하게 고려하세요. 자세한 내용은 CentOS 수명 종료 지침을 참조 하세요.

Azure Marketplace의 Linux 파트너 이미지는 BIOS 1세대 부팅 및 UEFI(Unified Extensible Firmware Interface) 2세대 부팅 모두에 대해 태그가 지정되고 구성됩니다.

Azure에서 2세대 Linux VM(가상 머신)을 배포하는 경우 UEFI 부팅 오류가 발생할 수 있습니다. 이 문서에서는 UEFI 부팅 오류가 발생하는 몇 가지 시나리오에 대해 설명하고 솔루션을 제공합니다.

증상

Azure에서 2세대 Linux VM을 배포하면 부팅이 실패하고 서버에 액세스할 수 없습니다.

UEFI 부팅 오류 식별

Azure 부팅 진단을 사용하여 VM의 현재 상태를 확인합니다.

부팅 진단 스크린샷은 다음 오류 메시지를 보여줍니다.

  • 오류 1

    Virtual Machine 부팅 요약

    1. 알 수 없는 디바이스
      부팅 로더가 운영 체제를 로드하지 않았습니다.
    2. SCSI 디스크(0,0)
      부팅 로더가 운영 체제를 로드하지 않았습니다.
    3. SCSI 디스크(0,1)
      부팅 로더가 운영 체제를 로드하지 않았습니다.
    4. 네트워크 어댑터(000D3A4DD64D)
      부팅 이미지를 찾을 수 없습니다.

    운영 체제가 로드되지 않았습니다. 가상 머신이 잘못 구성되었을 수 있습니다. VM을 종료하고 다시 구성하거나 다시 시작을 클릭하여 현재 부팅 시퀀스를 다시 시도합니다.

    누락된 UEFI 부팅 이미지에 대한 hyper-V 오류 메시지의 스크린샷

  • 오류 2

    IPv4를 통해 PXE 시작

    Hyper-V 오류를 PXE 부팅 문제로 전환하는 스크린샷

문제 해결 전

시나리오 1에 필요한 오프라인 VM 복구를 수행하려면 부팅 이미지의 UEFI 파티션이 누락 되고 시나리오 2: 부팅 이미지의 UEFI 파티션이 손상되었는지 확인합니다. Azure CLI 또는 Azure Cloud Shell에 액세스할 수 있는지 확인합니다.

시나리오 1: 부팅 이미지의 UEFI 파티션이 없습니다.

UEFI 부팅 로더 파티션이 없거나 삭제되면 2세대 Linux VM이 부팅되지 않습니다.

이 문제를 해결하려면 다음 단계를 따릅니다.

  1. az vm repair create 명령을 사용하여 복구 VM을 만듭니다. 복구 VM에는 비기능 VM에 대한 OS 디스크 복사본이 연결됩니다. 자세한 내용은 Azure Virtual Machine 복구 명령을 사용하여 Linux VM 복구를 참조하세요.

  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.
    

    Important

    • OS(운영 체제) 디스크 디바이스의 해당 복사본으로 바꿉 /dev/sdc 니다.
    • 섹터 시작 및 끝점이 올바른 경우 파티션 번호 선택은 중요하지 않습니다. OS에서 누락된 섹터를 확인할 수 있기 때문에 올바른 섹터 시작 및 끝점이 선택됩니다.
    • 끝 섹터가 디스크 내의 다른 파티션에서 차지하지 않는지 확인합니다. 여기에서 기본값을 선택하는 것으로 충분합니다.

    Azure Linux 파트너 이미지에는 다음과 같은 파티션 번호, 섹터 시작점 및 섹터 엔드포인트가 있습니다.

    Linux OS 배포 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 repair restore 명령을 사용하여 복구된 OS 디스크를 VM의 원래 OS 디스크와 교환하여 VM을 복원 합니다. 자세한 내용은 Azure Virtual Machine 복구 명령을 사용하여 Linux VM 복구의 5 단계를 참조하세요.

시나리오 2: 부팅 이미지의 UEFI 파티션이 손상됨

UEFI 부팅 파티션이 손상된 경우 2세대 Linux VM이 부팅되지 않습니다. 이 문제를 해결하려면 다음 단계를 따릅니다.

  1. az vm repair create 명령을 사용하여 복구 VM을 만듭니다. 복구 VM에는 비기능 VM에 대한 OS 디스크 복사본이 연결됩니다. 자세한 내용은 Azure Virtual Machine 복구 명령을 사용하여 Linux VM 복구를 참조하세요.

  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
    

    Important

    • OS 디스크 디바이스의 해당 복사본으로 바꿉 /dev/sdc 다.
    • 위에서 언급한 파일 시스템 검사를 수행하기 전에 항상 OS 디스크의 백업을 -n 수행하고 옵션으로 드라이 실행을 수행합니다.
    • dosfsck 명령을 사용하여 vfat 파일 시스템 검사를 수행할 수 있습니다. 두 명령 모두 동일합니다. 자세한 내용은 fsck.vfat을 참조하세요.
  3. 파티션이 정리되면 az vm repair restore 명령을 사용하여 복구된 OS 디스크를 VM의 원래 OS 디스크와 교환하여 VM을 복원 합니다. 자세한 내용은 Azure Virtual Machine 복구 명령을 사용하여 Linux VM 복구의 5 단계를 참조하세요.

시나리오 3: 전체 /부팅 파티션 콘텐츠가 삭제됨

전체 /boot 파티션 또는 기타 중요한 콘텐츠가 누락되어 복구할 수 없는 경우 백업에서 VM을 복원하는 것이 유일한 옵션입니다. 자세한 내용은 Azure Portal에서 Azure VM 데이터를 복원하는 방법을 참조 하세요.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.