최근 Debian이 설치된 VMware VM을 Hyper-V로 마이그레이션했다.
마이그레이션 작업이 순조롭게 끝날 것으로 예상했으나 VM을 부팅하니 아래처럼 Hyper-V 로고만 출력됐다.
Hyper-V 펌웨어에서 efi 파일이 인식되지 않아 qemu-img로 vmdk를 vhdx로 변환하는 과정에서 가상 디스크 일부가 손상된 것으로 생각하여 StarWind V2V Converter로 변환했지만 여전히 부팅이 되지 않았다.
여러 해외 사이트를 뒤져보니 Secure Boot를 비활성화하거나 GRUB를 복구하면 해결된다는 내용이 있었다. 다행히 GRUB 복구 후 Debian을 정상적으로 부팅할 수 있었다.
만약 EFI로 설치한 Debian이 마이그레이션 등으로 인하여 부팅이 되지 않는다면 GRUB 복구를 추천한다.
Debian GRUB 복구 (EFI)
1) Debian ISO 다운로드
https://cdimage.debian.org/debian-cd/current/amd64/iso-cd
위 링크에서 debian-버전명-amd64-netinst.iso 파일을 다운로드한다. (edu, mac은 제외)
2) ISO 부팅, GRUB 복구
ISO로 부팅하면 위의 화면이 뜬다. Advanced option…에서 엔터를 누른다.
Graphical rescue mode에서 엔터를 누른다.
여기에서 선택한 언어에 따라 GRUB 언어가 결정 나기에 본인이 원하는 언어를 택하면 된다.
여기에서 선택한 위치는 실제 시스템에 영향이 가지 않기에 건들지 않고 넘어가면 된다.
키보드도 실제 시스템에 영향이 가지 않기에 건들지 않고 넘어가면 된다.
호스토 이름도 실제 시스템에 영향이 가지 않기에 건들지 않고 넘어가면 된다.
이 부분도 건들지 않고 넘어가면 된다.
기존에 루트로 사용한 파티션을 선택하면 된다. (필자의 파티션은 다음과 같이 구성되어 있다. sda1: /boot/efi, sda2: /(루트), sda3: swap)
만약 루트 파티션을 모르면 모든 파티션을 선택하여 efi 관련 내용이 뜨는지 확인해보면 된다.
기본 선택은 ‘예’로 되어있다. 이 상태에서 ‘계속’을 눌러 다음으로 넘어가면 된다.
‘GRUB 부트로더 다시 설치’를 선택하고 다음으로 넘어가면 된다.
‘/dev/디스크 전체 이름’ 이렇게 적어주면 된다. (e.g. /dev/sda)
‘/dev/sda2’처럼 디스크 파티션 이름을 적으면 안 된다.
GRUB 다시 설치는 1~4초 안에 빨리 끝난다.
작업이 완료되었으면 ‘시스템 다시 시작’을 선택하여 재부팅한다.
3) 복구 완료
GRUB가 정상적으로 출력되고, 부팅이 되면 복구가 완료된 것이다.
Hyper-V 펌웨어에서 shimx64.efi가 정상적으로 인식된다.