2017年3月7日星期二

OVMF折腾

名词相关
    EDK2:     Intel发起的UEFI开发环境
    OVMF:   基于EDK2的开源虚拟机UEFI固件
    seaBios: 基于传统BIOS的开源虚拟机固件

    tianocore:EDK2 的社区


相关网站
    tiancore:      http://www.tianocore.org/edk2/
    EDK2源码:    https://github.com/tianocore/edk2
    seaBios源码:   git://git.seabios.org/seabios.git

相关参考
    https://www.seabios.org/Build_overview
    https://fossies.org/linux/qemu/roms/seabios/src/Kconfig
    https://access.redhat.com/sites/default/files/attachments/ovmf-whtepaper-031815.pdf


  默认的virtual-manager没有安装及打开虚拟机的UEFI支持,其解决方式有二:
    一、安装发行版提供的OVMF套件
    二、自编译并启用该启动固件

  编译依赖 nasm bison flex uuid-dev
    编译该固件,则只需要下载EDK2源码,手动修改Conf/target.txt
      target.txt主要说明:
         ACTIVE_PLATFORM = Nt32Pkg/Nt32Pkg.dsc(目标平台描述)
         TARGET = RELEASE (RELEASE or DEBUG)
         TARGET_ARCH = Ia32 X64 (目标平台)
         TOOL_CHAIN_TAG = GCC48(编译工具)


  也可以使用 build -a (IA32 X64) -p (OvmfPkg/OvmfPkgIa32.dsc | OvmfPkg/OvmfPkgIa32X64.dsc |OvmfPkg/OvmfPkgX64.dsc) -t  (GCCxx  | VS2008)  -D (CSM_ENABLE=TRUE,很少用到CSM的模块,需要先编译seaBios获取Csm16.bin)直接指定

  编译带CSM支持的,则需要另外获取seaBios代码编译出Csm16.bin
 
主要命令
  seaBios
    cd  seaBios
    make  menuconfig (target需要选CSM)
    make
    cp out/Csm16.bin  EDK2/Ovmf/Csm/Csm16/
   EDK2
     cd EDK2  &&  source  edksetup.sh
     cd BaseTools  &&  make
     build
     cp  Build/OvmfXXX/FVRELEASE_GCCxx/FV/{OVMF,OVMF_CODE,OVMF_VARS}.fd      TARGET

没有评论:

发表评论