构建EDK2 UEFI shell之Shell.efi
如何搭建EDK2开发环境以及编译UEFI程序,请参考:ubuntu20.04下搭建EDK2开发环境 。
编译EDK2 UEFI shell程序:
cd edk2 export WORKSPACE=$PWD export EDK_TOOLS_PATH="$PWD/edk2/BaseTools" export PACKAGES_PATH="$PWD/edk2:$PWD/edk2-platforms:$PWD/edk2-non-osi" . edk2/edksetup.sh build -a X64 -t GCC5 -p ShellPkg/ShellPkg.dsc
编译完成后,在Build/Shell/DEBUG_GCC5/X64/ShellPkg/Application/Shell/Shell/OUTPUT/目录下会生成Shell.efi。
另:如果想通过U盘启动进入UEFI shell,自动执行某些命令,可以更改Shell源码,位于:ShellPkg/Application/Shell/,更改完成后重新编译生成Shell.efi。
自动执行UEFI shell的U盘制作步骤:
- 找一个U盘,格式化成FAT32,然后在U盘根目录下建立/efi/boot目录。
- 把Shell.efi改名成BOOTX64.efi,然后把BOOTX64.efi拷贝到U盘/efi/boot/目录下。
- U盘插入电脑,开机后按F10(不同厂商电脑可能有所不同)进入UEFI menu选择页面,选择从U盘启动。
然后就会自动进入UEFI Shell,然后执行你在Shell.efi里所加的操作。
UEFI shell下自动执行的脚本
进入了UEFI shell环境,会查找根目录下有没有startup.nsh脚本,如果有的话,会自动执行startup.nsh脚本。
我们如果想要调用其他UEFI程序,可以不用更改Shell.efi的源码来实现,可以在上述制作好的U盘的根目录下添加startup.nsh脚本,脚本里加上想要做的操作,实现起来更简单:
比如U盘在UEFI shell下的盘符为 FS0: ,我们想要执行myUefiApp.efi程序,startup.nsh脚本如下:
FS0:
MyUefiApp.efi
注意:上述FS0:的‘:’不能少,也可以用绝对路径执行MyUefiApp.efi,即 FS0:\MyUefiApp.efi 。
本文来自博客园,作者:闹闹爸爸,转载请注明原文链接:https://www.cnblogs.com/wanglouxiaozi/p/17883780.html