无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 3493|回复: 5
打印 上一主题 下一主题

[分享] 新版uefi 2.6加入了仿真磁盘的功能

[复制链接]
跳转到指定楼层
1#
发表于 2018-1-10 00:34:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 510819776 于 2018-1-10 00:45 编辑





大家看图就行啦
看起来是uefi模拟和加载磁盘的功能,可惜没有对应的ramdisk驱动
不然可以试试看能否作为uefi的ramdisk系统来使用



2015年底的时候, UEFI Specification 2.6中新加入了一个 Ram Disk Protocol,但是一直以来我搞不清楚如何使用。到了 UDK2017 有了Demo,终于可以弄清楚使用方法。
实验环境是 QEMU X64。用到UDK2017中的OvmfPkgX64.dsc,编译之后生成 ovmf.fd 使用 qemu-system-x86_64.exe –bios ovmf.fd 进行启动。启动之后,可以在Setup中刚看到 RamDisk 的相关设定。
哈哈 不知道谁的bios有这个功能呢?
另外能不能把这个bios的ramdisk模块驱动 等提取出来 让没有 这个功能的bios也能使用到呢?



前面提到过 Ram Disk Protocol,这次尝试编写一个 Application 来完成创建 RamDisk 的动作。
首先看一下 Specification:

注册一个Ram Disk 需要给定:
RamDiskBase: 新的 Ram Disk 的基地址
RamDiskSize: 新的 Ram Disk 的大小
RamDiskType: 新的 Ram Disk 的类型(似乎可以定义 ISO/RAW之类的)
ParentDevicePath: 指向父设备的 Device Path(不明白这个功能有什么意义)。如果没有可以设置为 NULL
DevicePath: 返回的创建的 Ram Disk 的 Device Path

有了上面的信息,我们即可完成创建工作。

编写一个测试代码,步骤如下:
1.        查找 RamDiskProtocol
2.        读取 “”MemTest.Img”到内存中
3.        用 RamDiskProtocol 的 Register 函数将上面的内存注册为 Ram Disk

原帖还有软件参考一下http://www.lab-z.com/stu132rd/ 这里
我估计 xorboot uefi版本里面的 iso模拟光驱启动功能应该是采用了这个办法,但是磁盘仿真能不能成功呢?
uefi的ramdisk貌似就需要这个东西,现在 加载ramdisk的引导器有了,还缺少一个ramdisk的驱动程序呢?

评分

参与人数 1无忧币 +5 收起 理由
gtc + 5 谢谢普及知识!

查看全部评分

2#
发表于 2018-1-10 09:49:57 | 只看该作者
这个对我来说  ,  知识点 深了......
回复

使用道具 举报

3#
发表于 2018-1-10 09:57:37 | 只看该作者
谢谢分享!
回复

使用道具 举报

4#
发表于 2018-1-10 10:23:38 | 只看该作者
这样的知识多普及一下,虽然我看不太懂
回复

使用道具 举报

5#
发表于 2018-1-10 13:35:26 | 只看该作者
微软自己的ramdisk.sys能不能识别出来?
回复

使用道具 举报

6#
发表于 2018-1-10 16:41:31 来自手机 | 只看该作者
这种微软自带的ramos最好了,uefi启动最方便。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-24 08:40

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表