19. bcfg 명령어를 사용한 부팅 옵션 수정
이번 장에서는 NVRAM 변수(BIOS 설정), 즉 부팅 사이에 지속되는 변수에 대해 설명한다.
이전에 OVMF 빌드로 생성된 파일이 있다.
$ ls -l Build/OvmfX64/RELEASE_GCC5/FV/OVMF*
-rw-rw-r-- 1 ubuntu ubuntu 3653632 11월 23 17:51 Build/OvmfX64/RELEASE_GCC5/FV/OVMF_CODE.fd
-rw-rw-r-- 1 ubuntu ubuntu 4194304 11월 24 10:23 Build/OvmfX64/RELEASE_GCC5/FV/OVMF.fd
-rw-rw-r-- 1 ubuntu ubuntu 540672 11월 23 21:10 Build/OvmfX64/RELEASE_GCC5/FV/OVMF_VARS.fdOVMF_CODE.fd- code image (read-only)OVMF_VARS.fd- NVRAM variables image (read-write)OVMF.fd- combined image (OVMF_CODE.fd+OVMF_VARS.fd)
위 파일들을 이용해서 QEMU를 실행하는 2가지 방법이 있다.
OVMF.fd 파일 하나만 사용하는 방법
$ qemu-system-x86_64 -drive if=pflash,format=raw,file=Build/OvmfX64/RELEASE_GCC5/FV/OVMF.fd \
...OVMF_CODE.fd 와 OVMF_VARS.fd 를 사용한 방법
$ qemu-system-x86_64 -drive if=pflash,format=raw,readonly,file=Build/OvmfX64/RELEASE_GCC5/FV/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=Build/OvmfX64/RELEASE_GCC5/FV/OVMF_VARS.fd \
...이전에는 짧게 OVMF.fd 파일만을 이용해서 진행했지만, 여기서는 NVRAM 변수를 수정할 것이기 때문에 초기 상태로 되돌릴 수 있도록OVMF_NVRAM.fd 파일을 복사하여 진행한다.
먼저 이전에 OVMF에 HelloWorld 애플리케이션을 넣었기 때문에 OVMF 패키지부터 초기 상태로 되돌린다.
OVMF를 초기 상태로 빌드하였기 때문에 이제 OVMF_VARS.fd를 복사한 후 복사한 파일을 사용하여 QEMU를 실행한다.
부팅 변수를 변경하기 전에 bcfg boot dump 명령어를 통해 확인한다.
부팅 옵션을 표시하는 것 외에도 bcfg 명령은 부팅 옵션을 추가/제거하거나 순서를 변경할 수 있다.
도움말은 아래 명령을 통해 확인할 수 있다.
이제 부팅 옵션에 Interactive.efi 를 추가한다.
정상적으로 추가됐는지 확인하기 위해 다시 부팅 옵션을 확인한다.
부팅 옵션을 확인했을 때도 추가가 된 것을 볼 수 있었고 부팅 매니저를 통해서도 확인이 가능하다.

해당 부팅 옵션은 OVMF_VARS.fd를 변경하지 않으면 QEMU를 다시 시작해도 계속해서 나타난다.
애플리케이션을 첫 번째 부팅 소스로 설정하는 것도 가능하다.
다시 부팅 옵션을 확인하면 맨 아래에 있었던 Interactive app이 맨 위로 옮겨진 것을 볼 수 있다.
EFI Internal Shell을 통해 reset 명령을 입력하여 재부팅 되면 Interactive app을 먼저 통과한 후 BIOS로 진입하는 모습을 볼 수 있다.

EFI Internal Shell을 통해 해당 부팅 옵션을 삭제할 수도 있다.
Last updated