UEFI 시뮬레이터 놀기

2950 단어 firmwareuefiedk2tech

개요


가상화 환경 없이 UEFI(최근 BIOS) 펌웨어를 사용하는 방법
UEFI 펌웨어 및 응용프로그램 개발 환경은 OSS(EDK2)로 공개됩니다.
https://github.com/tianocore/edk2
이 트리에는 호스트 환경에서 실행할 수 있는 UEFI 펌웨어와 UEFI 쉘의 시뮬레이터가 포함되어 있습니다.이 시뮬레이터에서도 UEFI 응용 프로그램을 실행할 수 있습니다.
다음은 이 빌딩에서 방법을 총결해 봅시다.

시뮬레이터가 할 수 있는 일


가볍게 건드리면 다음과 같은 일을 할 수 있다.
VM이 없어도 UEFI Shell은 VM에서 쉽게 시도할 수 있으며, UEFI 응용프로그램에서도 실행할 수 있기 때문에 간단한 동작 확인에 사용될 수 있습니다.
  • UEFI 쉘 작업
  • 에뮬레이터에서 마운트된 호스트의 디렉토리
  • 시뮬레이터에서 호스트에서 UEFI 어플리케이션 실행
  • 시뮬레이터의 구축


    Ubuntu 18.0464 비트에 구축됩니다.[1]
    Ubuntu의 공식 홈페이지에는 환경을 구축하는 방법이 적혀 있어 참고할 수 있다.

    1. 필요한 패키지 설치


    ※ 참고자료에 기재되지 않은 최근 EDK2 구축 필요python3-distutils.후반전의 두 개의libx는 시뮬레이터의 구축에 필요한 것이다.
    sudo apt-get update
    sudo apt-get install build-essential git uuid-dev iasl nasm python3-distutils libx11-dev libxext-dev
    

    2. EDK2의 체크아웃 및 기본 도구 구축


    다음은 레이블edk2-stable202011에서 작성한 예입니다.
    git clone --depth 1 --branch edk2-stable202011 https://github.com/tianocore/edk2.git
    cd edk2
    . edksetup.sh
    git submodule update --init
    make -C BaseTools
    

    3. 시뮬레이터의 구축


    Ubutnu18.04+GCC5는 구축에 성공했지만 실행할 때Segmentation Fault의 issue를 보고했습니다.최적화 옵션을 일시적으로 끊어서 구축할 수 있습니다.
    https://bugzilla.tianocore.org/show_bug.cgi?id=2639
    perl -pi.bak -e 's/-D DISABLE_NEW_DEPRECATED_INTERFACES/-D DISABLE_NEW_DEPRECATED_INTERFACES -O0/g' EmulatorPkg/EmulatorPkg.dsc
    build -p EmulatorPkg/EmulatorPkg.dsc -t GCC5 -a X64
    

    실행 시뮬레이터


    ※ 실행 후 터미널의 표준 출력에 이상이 발생할 수 있으니 주의하세요.
    구문 디렉토리에서 를 실행하면 UEFI 셸이 상승합니다.
    cd Build/EmulatorX64/DEBUG_GCC5/X64/
    ./Host
    

    호스트 디렉토리 마운트


    이 UEFI Shell에서 fs0으로 위의 실행 디렉토리(edk2のルートディレクトリ以下の)Build/EmulatorX64/DEBUG_GCC5/X64/를 볼 수 있습니다.
    다음 명령을 사용하여 UEFI 셸에서 호스트 디렉토리를 마운트할 수 있습니다.
    fs0:
    ls
    
    위 실행 디렉토리 아래에 임의의 UEFI 응용 프로그램을 배치하면 에뮬레이터의 UEFI 셸에서 를 실행할 수 있습니다.

    참고 자료


    Ubuntu 공식 EDK2 구축 방법 문서
    https://wiki.ubuntu.com/UEFI/EDK2
    각주
    Windows도 구축할 수 있지만 시도해 보지 않았기 때문에 사랑하지 않습니다.https://github.com/tianocore/edk2/tree/master/EmulatorPkg#how-to-build--run ↩︎

    좋은 웹페이지 즐겨찾기