一 编写源代码
OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c

UINTN
BootOptionPriority (
CONST EFI_BOOT_MANAGER_LOAD_OPTION *BootOption
)
{
DEBUG ((EFI_D_ERROR," [CSDN] BootOptionPriority %S .\n", BootOption->Description));

if (StrCmp (BootOption->Description, L"Boot Device List") == 0) {
return 4;
}

//
// Make sure Shell is last
//
if ( StrStr (BootOption->Description, L"EFI Internal Shell" ) != NULL) {
return 1;
}
return 30;
}

/**

GC_TODO: add routine description@param Left  - GC_TODO: add arg description
@param Right - GC_TODO: add arg description@retval (BOOLEAN) (BootOptionPriority (Left) < BootOptionPriority (Right)) - GC_TODO: add retval description

**/

INTN
EFIAPI
CompareBootOption (
IN CONST VOID *Buffer1,
IN CONST VOID *Buffer2
)

{
return (BOOLEAN) (BootOptionPriority ((EFI_BOOT_MANAGER_LOAD_OPTION *) Buffer1) > BootOptionPriority ((EFI_BOOT_MANAGER_LOAD_OPTION *) Buffer2));
}

VOID
EFIAPI
PlatformBootManagerAfterConsole (
VOID
)
{
//
// Register UEFI Shell
//
PlatformRegisterFvBootOption (
&gUefiShellFileGuid, L"EFI Internal Shell", LOAD_OPTION_ACTIVE
);

//Add default boot first option as uefi shell
DEBUG ((EFI_D_ERROR," [CSDN]: EfiBootManagerSortLoadOptionVariable before.\n"));
EfiBootManagerSortLoadOptionVariable (LoadOptionTypeBoot, CompareBootOption);
DEBUG ((EFI_D_ERROR," [CSDN]: EfiBootManagerSortLoadOptionVariable after.\n"));

}

二、 编译生成EFI文件 & 运行

设置Shell为默认启动项后,BIOS启动会优先加载Shell(对于OVMD而言就不用等待前面的PXE、QEMU USB加载了, 可以节省时间)。 当然如果需要设置其他的启动项为默认项,只需要修改BootOptionPriority 中 StrCmp (BootOption->Description, L"EFI Internal Shell")为 StrCmp (BootOption->Description, L"XXXX")。

UEFI 基础教程 (十四) - 设置默认启动项为UEFI Shell相关推荐

  1. 联想开机启动项按哪个_联想电脑开机按f12后,怎么设置默认启动项

    步骤如下:1.开机时按住F12键进入到该电脑的BIOS设置界面,选择高级BIOS设置AdvancedBIOSFeatures.2.在进入高级BIOS设置(AdvancedBIOSFeatures)界面 ...

  2. 电脑重启f12怎么处理_联想电脑开机按f12后,怎么设置默认启动项

    优质回答 回答者:dingmanhao 步骤如下: 1.开机时按住F12键进入到该电脑的BIOS设置界面,选择高级BIOS设置Advanced BIOS Features. 2.在进入高级BIOS设置 ...

  3. win10+Ubuntu双系统,设置默认启动项为win10

    在win10下安装了Ubuntu20.04系统后,开机进入系统引导项界面,默认选择的是Ubuntu系统. 这是因为,双系统后由Ubuntu的grub引导启动的, 一般还是WIN10用的多一些,下面就设 ...

  4. linux程序默认启动项,windows和linux双系统,设置默认启动项

    在终端里输入:sudo gedit /boot/grub/grub.cfg 先装windows而后装linux系统,默认启动项会非常多,执行上面的命令后,会打开一个文档,里面代码如下: ------- ...

  5. PHP基础教程十四之使用MySqli操作数据库

    前言 在实际的开发中,PHP都是会和数据库一起使用的,因为在后台需要有太多的数据进行保存,而数据库就是一种很好的保存数据的地方,我们PHP开发用到的数据库是关系型数据库mysql,而PHP和mysql ...

  6. UEFI 基础教程 (零) - 目录

    GitHub 主页 UEFI 基础教程 (一) - 搭建UEFI开发环境 UEFI 基础教程 (二) - 运行第一个APP HelloWorld UEFI 基础教程 (三) - 运行第一个PEI Dr ...

  7. Ubuntu18.04 更改GRUB引导菜单背景图片和默认启动项

    一.更改GRUB引导菜单背景图片 1.首先准备一张想要的照片,文件名是啥无所谓,只要格式是*.jpg *.JPG *.jpeg *.JPEG *.png *.PNG *.tga *.TGA都行,都能自 ...

  8. go设置后端启动_Go语言基础(十四)

    Go语言基础(十四) 一.Redis 二.NSQ 三.Go module 四.Context......0 一.Redis Redis是一个key-value存储系统.和Memcached类似,它支持 ...

  9. Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议

    Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议 原文:Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议 在上一篇中,留下了许可协议的问题,目前已经解决.感谢网友武全的指点 ...

最新文章

  1. TeamCity 和 Nexus 的使用
  2. 快排--java实现
  3. php读取 rss pubdate,PHP产生RSS pubDate所需日期时间格式的方法
  4. centos 的关机命令
  5. Golang学习笔记——Slice
  6. 750px设计稿处理方式
  7. jdk1.6集成activemq的2种方式
  8. oracle sql 分区查询语句_Oracle 分区概述
  9. 荣耀发布了全球首款 4800 万像素手机,并推出 YOYO 智能音箱...
  10. 微课|玩转Python轻松过二级(1.3节):编码规范与代码优化建议2
  11. DedeCMS快速建站
  12. java xlsx转html
  13. 基于Pytorch的上市公司财务预警分析
  14. java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计
  15. php是舍五入,php四舍php四舍五入五入函数 floor函数、ceil函数、round
  16. Flask刚开始遇到的问题UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xbb in position 0: invalid start
  17. Hadoop第五天--HDFS详解
  18. android gif播放慢了,Glide加载Gif动画播放速度过慢的问题
  19. FE内容付费系统响应式(带手机版) v5.46
  20. Linux 下常用工具

热门文章

  1. php订阅号网页登录,微信订阅号怎么使用网页授权登录
  2. 学习设计到底应该学习figma、sketch还是PS
  3. linux scp 输入密码,scp 在脚本中使用输入密码的解决方法
  4. 三口烧瓶规格有哪些_什么是三口烧瓶,应该如何制作 | | 化工资讯网
  5. Day 06 | 242.有效的字母异位词 349. 两个数组的交集 202.快乐数 1. 两数之和
  6. 基于IjkPlayer的多路投屏直播
  7. 空口协议probe req和probe rsp 、auth req和auth rsp 、assoc req和assoc rsp讲解
  8. 开发板qt移植和交叉开发环境搭建学习笔记
  9. 设定软件使用期限,根据网络时间保护试用软件产品的方法
  10. BlueTooth: 浅析CC2540的OSAL原理