无忧启动论坛

标题: 新版uefi 2.6加入了仿真磁盘的功能 [打印本页]

作者: 510819776    时间: 2018-1-10 00:34
标题: 新版uefi 2.6加入了仿真磁盘的功能
本帖最后由 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的驱动程序呢?

作者: jeep2700    时间: 2018-1-10 09:49
这个对我来说  ,  知识点 深了......
作者: 青青草    时间: 2018-1-10 09:57
谢谢分享!
作者: gtc    时间: 2018-1-10 10:23
这样的知识多普及一下,虽然我看不太懂

作者: 红毛樱木    时间: 2018-1-10 13:35
微软自己的ramdisk.sys能不能识别出来?
作者: sairen139    时间: 2018-1-10 16:41
这种微软自带的ramos最好了,uefi启动最方便。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net./) Powered by Discuz! X3.3