windows无盘启动技术开发之UEFI(新一代BIOS)引导程序开发之二

本文介绍了如何在UEFI环境下开发无盘启动的引导程序,特别是利用BlockIO构造临时虚拟磁盘。文章详细讲解了如何安装BlockIO协议、实现网络通信,并对比了UEFI和传统BIOS引导的性能差异。最后提到了一种新的无盘启动方式,即从本地磁盘的镜像文件启动操作系统。
摘要由CSDN通过智能技术生成

by fanxiushu 2023-04-14/18 转载或引用请注明原始作者。
接上文。

上文提到了至少有两种办法制作UEFI的虚拟磁盘驱动。
本文只接收利用BlockIO的方式来构造一个临时用的虚拟磁盘。
之所以说是临时使用,是因为在作为引导程序中,一旦进入到 \EFI\boot\bootx64.efi之后,
控制权就交给了bootx64.efi以及之后的引导程序,我们的引导程序唯一需要在幕后扮演的就是提供虚拟磁盘的IO功能。
这跟传统BIOS下实现大型系统引导的基本规则是一样的。

所以在开发引导程序的时候,不必按照UEFI规范文档那样阐述的,制作符合UEFI规范的UEFI驱动程序,
我们只需要在程序入口里调用 InstallMultipleProtocolInterfaces 函数安装新的BlockIO的PROTOCOL,
并且之后调用ConnectController 函数,让我们新安装的PROTOCOL能被连接上,
能被别的引导程序(其实就是 EFI\Boot\bootx64.efi 等其他引导程序)识别到。

所以在UEFI中制作这么一个临时的BlockIO接口就会显得比较轻松:
定义:
    EFI_BLOCK_IO_MEDIA              Media;
    EFI_BLOCK_IO_PROTOCOL     BlkIo;
    EFI_BLOCK_DEVICE_PATH     DevPath;
EFI_BLOCK_DEVICE_PATH是我们自己定义的继承自 EFI_DEVICE_PATH 的路径,可直接定义成 MSG_VENDOR_DP 的方式。
设备路径(EFI_DEVICE_PATH)是必须要的,否则其他efi程序无法正确定位。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值