본문 바로가기
개발 및 운영

QEMU 에서 UEFI+CSM(Legacy) boot 사용하기

by Joseph.Lee 2025. 6. 12.

옛날 EDK2 에는 CSM 구현이 있지만 최신에서는 더이상 유지보수되지 않아 제거되었다.

edk2-stable202311 가 마지막이고, 다음 edk2-stable202402 에서는 완전히 사라졌다.

$ git clone -b edk2-stable202311 https://github.com/tianocore/edk2

# SEABIOS 빌드
$ git clone https://git.seabios.org/seabios.git
$ cd seabios
$ make menuconfig
여기서 CONFIG_CSM 활성화: General Features -> Build Target -> CSM for EFI BIOS 로 변경
그리고 나는 QEMU_HARDWARE 도 활성화했다. (사실 뭔지 모르지만 필요할거 같아서)
CONFIG_ROM_SIZE=192 로도 변경했다. (https://github.com/tianocore/edk2/issues/82 때문에)
$ make
$ cp out/Csm16.bin ../edk2/OvmfPkg/Csm/Csm16/Csm16.bin

# EDK2/OVMF 빌드
$ cd ../edk2
$ vim .gitmodules
url = https://github.com/Zeex/subhook.git
부분을
url = https://github.com/tianocore/edk2-subhook.git
으로 바꾼다. (https://github.com/tianocore/edk2/pull/6402 참고)
$ git submodule update --init --recursive
$ make -C BaseTools
$ source edksetup.sh
$ export WORKSPACE=$(pwd)
$ export PACKAGES_PATH=$WORKSPACE
$ export EDK_TOOLS_PATH=$WORKSPACE/BaseTools
$ build -a X64 -t GCC5 -b RELEASE -p OvmfPkg/OvmfPkgX64.dsc \
  -D CSM_ENABLE \
  -D SECURE_BOOT_ENABLE \
  -D TPM2_ENABLE \
  -D TLS_ENABLE \
  -D HTTP_BOOT_ENABLE \
  -D SMM_REQUIRE


이제 Build/OvmfX64/RELEASE_GCC5/FV/OVMF.fd 가 만들어졌다

 

근데 부팅이 안됨...

그냥 https://gist.github.com/Trumeet/0f80542986ae282fe1305c2e6f61c30c 참고하시길..

버전 문제인듯..

 

OVMF_CODE.fd
1.88MB
OVMF_VARS.fd
0.13MB

반응형

댓글