DEV/CONSOLE

Qumu ovmf

SBP 2025. 5. 15. 08:53
Linux QEMU, QEMU Guest Agent, OVMF, swtpm 정보

Linux QEMU, QEMU Guest Agent, OVMF, swtpm 정보

QEMU(큐에무)는 오픈 소스 머신 에뮬레이터(Emulator)가상화 도구(Virtualizer)입니다. 다양한 CPU 아키텍처의 코드를 다른 아키텍처에서 실행하거나, 하드웨어를 가상화하여 게스트 운영체제를 실행할 수 있도록 해줍니다.

특히 Linux 환경에서는 Kernel-based Virtual Machine (KVM)과 함께 사용될 때 강력한 가상화 솔루션이 됩니다. QEMU가 하드웨어 에뮬레이션 및 장치 모델링을 담당하고, KVM은 CPU 및 메모리 가상화를 위한 커널 모듈을 제공하여 거의 네이티브에 가까운 성능으로 가상 머신(VM)을 실행할 수 있게 합니다.

QEMU의 주요 동작 모드 및 특징

  • 전체 시스템 에뮬레이션: 다른 아키텍처 OS 실행.
  • 사용자 모드 에뮬레이션: 다른 아키텍처 단일 프로세스 실행.
  • 하드웨어 가상화 (KVM 연동): 고성능 VM 실행 (동일 아키텍처).
  • 다양한 아키텍처, 가상 장치, 디스크 형식, 네트워킹 지원.

Linux에 QEMU 설치

패키지 관리자로 qemu-system-x86, qemu-kvm 등을 설치합니다.

# Debian/Ubuntu 계열
sudo apt install qemu-system-x86 qemu-kvm

# RHEL/CentOS/AlmaLinux/Rocky Linux 계열
sudo yum install qemu-kvm qemu-img

QEMU 기본 사용 방법 (명령줄 중심)

  • 가상 디스크 생성: qemu-img create -f qcow2 my_virtual_disk.qcow2 20G
  • VM 실행 (ISO 설치 또는 설치된 디스크):
    qemu-system-x86_64 -enable-kvm -m 2048 -hda my_virtual_disk.qcow2 -cdrom /path/to/os.iso -boot d ...

GUI 도구 및 관리 툴

virt-manager, libvirt, virsh 등을 사용하면 QEMU/KVM VM 관리가 편리해집니다.

QEMU Guest Agent (qemu-ga)

QEMU Guest Agent (qemu-ga)는 QEMU 가상 머신 **내부** (게스트 OS)에서 실행되는 서비스입니다. 호스트 또는 관리 도구(libvirt 등)와 게스트 OS 간의 통신 채널을 제공하여 게스트 내부 정보를 얻거나 특정 작업을 지시할 수 있게 합니다.

  • **주요 기능:** 파일 시스템 일관성 스냅샷, 클린 종료/재부팅, 게스트 정보 획득(IP 등), 게스트 내 명령 실행.
  • **설치:** **게스트 OS 내부**에서 qemu-guest-agent 패키지를 설치합니다.
  • **사용:** 호스트에서 virsh qemu-agent-command ... 또는 QEMU 명령줄 유틸리티를 통해 사용합니다.

추가 구성 요소: OVMF 및 swtpm

최신 운영체제를 사용하거나 보안 기능을 활성화하기 위해 QEMU VM 설정 시 추가적으로 사용되는 중요한 컴포넌트들입니다.

1. OVMF (Open Virtual Machine Firmware)

  • 무엇인가:
    가상 머신을 위한 오픈 소스 UEFI 펌웨어 구현체입니다. 전통적인 BIOS 펌웨어를 대체합니다.
  • 왜 사용하는가:
    Windows 10/11의 보안 부팅(Secure Boot), BitLocker와 같은 최신 OS 기능들은 UEFI 펌웨어를 필요로 합니다. OVMF를 사용하면 QEMU VM에서 이러한 기능들을 활성화할 수 있습니다. 또한, BIOS에 비해 더 빠른 부팅 시간을 제공하기도 합니다.
  • 설치:
    호스트 시스템에 OVMF 패키지를 설치합니다.
    # Debian/Ubuntu 계열
    sudo apt install ovmf
    
    # RHEL/CentOS/AlmaLinux/Rocky Linux 계열
    sudo yum install edk2-ovmf
    # 또는 dnf 사용 시
    # sudo dnf install edk2-ovmf
  • 사용:
    QEMU 명령줄에서 -bios /usr/share/OVMF/OVMF_CODE.fd (경로는 설치에 따라 다를 수 있음) 옵션을 사용하거나, libvirt VM 설정 XML에서 <os><loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>...</os> 와 같이 설정합니다. 게스트 OS의 NVRAM 상태를 저장할 파일도 함께 지정해야 합니다.

2. swtpm (Software TPM)

  • 무엇인가:
    TPM(Trusted Platform Module) 칩의 기능을 소프트웨어로 구현한 것입니다. TPM은 암호화 키 저장, 플랫폼 무결성 검증 등의 하드웨어 기반 보안 기능을 제공하는 보안 프로세서입니다.
  • 왜 사용하는가:
    가상 머신에 물리적인 TPM 칩 없이 TPM 기능을 제공하기 위해 사용됩니다. Windows의 BitLocker 드라이브 암호화, 보안 부팅(Secure Boot) 관련 기능 등 TPM을 요구하는 게스트 OS 기능을 VM에서 사용 가능하게 합니다.
  • 설치:
    호스트 시스템에 swtpm 패키지를 설치합니다.
    # Debian/Ubuntu 계열
    sudo apt install swtpm swtpm-tools
    
    # RHEL/CentOS/AlmaLinux/Rocky Linux 계열
    sudo yum install swtpm swtpm-tools
    # 또는 dnf 사용 시
    # sudo dnf install swtpm swtpm-tools
  • 사용:
    QEMU 실행 시 가상 TPM 장치를 연결하는 옵션을 사용하거나, libvirt VM 설정 XML에 <tpm model='tpm-tis'><backend type='swtpm'/></tpm> 와 같이 TPM 장치 및 swtpm 백엔드를 정의합니다.

OVMF, swtpm, QEMU/VM 간의 관계

OVMF와 swtpm은 QEMU가 실행하는 가상 머신에 추가적인 하드웨어 기능(UEFI 펌웨어 및 가상 TPM)을 제공하는 컴포넌트입니다.

  • QEMU는 VM의 가상 하드웨어를 에뮬레이션하고 게스트 코드를 실행하는 주체입니다.
  • VM이 부팅될 때, QEMU는 전통적인 BIOS 대신 **OVMF** 펌웨어 코드를 로드하여 실행할 수 있습니다.
  • OVMF(UEFI 펌웨어)는 부팅 과정에서 **swtpm**이 제공하는 가상 TPM 장치와 상호 작용하여 플랫폼 상태를 확인하거나 암호화 키를 활용할 수 있습니다.
  • 게스트 운영체제(예: Windows)가 부팅되면, 이 OS는 VM에 연결된 가상 TPM 장치(swtpm이 제공)를 인식하고 BitLocker와 같은 TPM 기반 보안 기능을 활성화할 수 있습니다.

즉, QEMU는 가상 하드웨어 플랫폼을 제공하고, OVMF는 이 플랫폼의 펌웨어(BIOS/UEFI) 역할을 하며, swtpm은 이 플랫폼에 가상 TPM 칩을 추가하여 최신 OS 기능 및 보안 요구사항을 충족시키는 데 기여합니다. qemu-ga는 OS가 부팅된 후에 호스트와 게스트 간의 상호 작용을 담당하는 별개의 레이어입니다.