![QEMU의 실제(UEFI) 디스크 이미지에서 부팅](https://linux55.com/image/196574/QEMU%EC%9D%98%20%EC%8B%A4%EC%A0%9C(UEFI)%20%EB%94%94%EC%8A%A4%ED%81%AC%20%EC%9D%B4%EB%AF%B8%EC%A7%80%EC%97%90%EC%84%9C%20%EB%B6%80%ED%8C%85.png)
요약:
Ubuntu를 실행하는 실제 머신에서 생성한 디스크 이미지를 사용하여 QEMU를 부팅하고 싶습니다. 이미지를 생성하고 QEMU를 실행하려고 시도한 후 VM이 "하드 디스크에서 부팅" 상태에서 중단됩니다.
상세 설명
표준 Ubuntu 20.04.3이 설치된 x86_64 데스크탑 컴퓨터가 있습니다. 기본적으로 GRUB도 1TiB HDD의 부트로더로 설치됩니다. 디스크에는 GPT, EFI 파티션 및 ext4 파티션(~50GiB)이 있습니다. 시스템이 가동되어 실행 중이며 완벽하게 작동합니다. 라이브 USB를 통해 실행하면서 전체 부팅 디스크의 원시 이미지를 만들었습니다. image 를 호출해 보겠습니다 ae.img
.
원격 컴퓨터에서 다음을 실행하여 이미지를 만들었습니다.
ssh root@<IP> "dd if=/dev/sda bs=100M status=progress | xz -T 8 -1" | unxz | cp --sparse=always /proc/self/fd/0 ae.img
네트워크를 통해 데이터를 압축하는 / 를 무시하면 xz
실제로 전체 디스크를 읽고 네트워크를 통해 전송하고 스파스 파일에 기록합니다. 실행 중인 라이브 USB의 경우 HDD입니다. 저는 이미지의 파티션 테이블을 확인하고 실제 ext4 파티션을 루프백 장치로 마운트하여 데이터를 확인하곤 했습니다.unxz
dd
ae.img
cp
/dev/sda
fdisk
도전:
QEMU를 사용하는 다른(거의 동일한) 시스템에서 이 디스크 이미지로 가상 머신을 실행하고 싶습니다. 이 이미지를 QEMU의 드라이브로 지정하면 해당 이미지에서 부팅을 시도한 다음 GRUB 부트 로더를 시작하는 등의 작업이 수행될 수 있습니다. 동일하게 유지하기 위해 비디오 출력으로 실행해 보았습니다. 내가 사용하는 명령은 다음과 같습니다
-m 4G \
-machine type=q35,accel=kvm \
-smp 4 \
-drive format=raw,file=ae.img \
-cpu host \
-display default \
-vga virtio \
-show-cursor
이미지를 드라이브로 지정하고 vga 디스플레이, 4GB RAM, 4코어를 제공했습니다. 그 정도면 충분합니다. 이 명령을 실행하면 아래와 같은 QEMU 창이 표시됩니다. 부팅이 계속 진행되고 더 이상 진행되지 않습니다. htop
보고서에 따르면 QEMU는 코어를 100% 소비하고 있으며, 한 막대는 50% 파란색(낮은 우선순위 프로세스)과 50% 빨간색(커널)입니다.
무슨 일이 일어나고 있는지 어떻게 진단합니까? 제안된 수정 사항이 있나요?
답변1
방금 알아 냈습니다.
일반화하다
QEMU는 기본적으로 BIOS를 사용하여 부팅됩니다. 이는 UEFI를 사용하여 부팅하는 실제 시스템과 대조됩니다. UEFI와 BIOS에는 서로 다른 디스크 구성이 필요합니다. UEFI 시스템의 디스크 이미지가 BIOS를 사용하여 부팅된 QEMU에서 작동하지 않습니다.
수정: 추가 옵션-bios /usr/share/ovmf/OVMF.fd
OVMF는 올바른 펌웨어를 제공합니다.
더 자세한 답변
에서 인용운영 체제 개발, "레거시 BIOS는 부팅 장치의 MBR에서 물리적 주소 7C00의 메모리로 512바이트 플랫 바이너리 blob을 로드하고 해당 위치로 점프합니다." 여기에는 실제 UEFI 디스크에 임의의 데이터가 포함되어 정지될 수 있습니다.