无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: 2011yaya2007777
打印 上一主题 下一主题

[原创] GRUB4DOS for UEFI

    [复制链接]
361#
发表于 2020-11-10 19:28:01 | 只看该作者
wintoflash 发表于 2020-11-10 19:07
EFI_LOADER_CODE 和 EFI_LOADER_DATA,操作系统可以自行决定是否回收。
AllocatePages分配的内存不跨页 ...

自行决定是否回收的话对我们的虚拟盘估计就比较有风险了……
回复

使用道具 举报

362#
 楼主| 发表于 2020-11-10 19:57:41 来自手机 | 只看该作者
操作系统可以自行决定是否回收。那就是和引导时代码及引导时数据一样了?操作系统执行退出引导代码及数据时,同时收回了?

点评

还有如果映射能映射到0xffff了那我是不是驱动里的映射插槽也要修订一下…… 驱动里用的映射插槽还是这个 from to用的都还是8位的  详情 回复 发表于 2020-11-10 21:04
EFI_BOOT_SERVICES_CODE和EFI_BOOT_SERVICES_CODE是由uefi固件在系统启动的时候自动收回的,启动服务驱动用的就是这种。 EFI_LOADER_CODE 和 EFI_LOADER_DATA 是由loader或者系统自己决定的。 所以应该用runtime d  详情 回复 发表于 2020-11-10 20:29
估计变成概率问题了……所以总感觉这样非常不安全,容易引发各种问题……  详情 回复 发表于 2020-11-10 20:17
回复

使用道具 举报

363#
 楼主| 发表于 2020-11-10 19:59:57 来自手机 | 只看该作者
热键只是个功能,你可以不使用。不懂你说的兼容性是什么意思。

点评

照顾 复制粘贴族 只改个iso名 (0xffff),有次启动,怎么也map不上,后来 help map ,看到说明,是四位,map上了, 后来也没复现过,可以忽略。  详情 回复 发表于 2020-11-10 20:50
回复

使用道具 举报

364#
 楼主| 发表于 2020-11-10 20:03:17 来自手机 | 只看该作者
cchessbd:希望听到你关于344#的回答。
回复

使用道具 举报

365#
发表于 2020-11-10 20:17:17 | 只看该作者
2011yaya2007777 发表于 2020-11-10 19:57
操作系统可以自行决定是否回收。那就是和引导时代码及引导时数据一样了?操作系统执行退出引导代码及数据时 ...

估计变成概率问题了……所以总感觉这样非常不安全,容易引发各种问题……
回复

使用道具 举报

366#
发表于 2020-11-10 20:29:01 | 只看该作者
2011yaya2007777 发表于 2020-11-10 19:57
操作系统可以自行决定是否回收。那就是和引导时代码及引导时数据一样了?操作系统执行退出引导代码及数据时 ...

EFI_BOOT_SERVICES_CODE和EFI_BOOT_SERVICES_CODE是由uefi固件在系统启动的时候自动收回的,启动服务驱动用的就是这种。
EFI_LOADER_CODE 和 EFI_LOADER_DATA 是由loader或者系统自己决定的。
所以应该用runtime data类型的。
回复

使用道具 举报

367#
发表于 2020-11-10 20:50:03 | 只看该作者
本帖最后由 2011whp 于 2020-11-11 09:05 编辑
2011yaya2007777 发表于 2020-11-10 19:59
热键只是个功能,你可以不使用。不懂你说的兼容性是什么意思。

照顾  复制粘贴族   只改个iso名  (出错 见 270楼,)

(0xffff),有次启动,怎么也map不上,后来  help map ,看到说明,是四位,map上了,
后来也没复现过,可以忽略。



补充 (cd0)(0xff)是可以的,上述现象仅出现过一次,



回复

使用道具 举报

368#
发表于 2020-11-10 21:04:31 | 只看该作者

本帖最后由 sunsea 于 2020-11-10 21:06 编辑
2011yaya2007777 发表于 2020-11-10 19:57
操作系统可以自行决定是否回收。那就是和引导时代码及引导时数据一样了?操作系统执行退出引导代码及数据时 ...

还有如果映射能映射到0xffff了那我是不是驱动里的映射插槽也要修订一下……
驱动里用的映射插槽还是这个
  1. typedef struct _GRUB4DOS_DRIVE_MAP_SLOT
  2. {
  3.         UCHAR from_drive;
  4.         UCHAR to_drive;                         // 0xFF indicates a memdrive
  5.         UCHAR max_head;
  6.         UCHAR max_sector:6;
  7.         UCHAR disable_lba:1;         // bit 6: disable lba
  8.         UCHAR read_only:1;                 // bit 7: read only
  9.         USHORT to_cylinder:13;         // max cylinder of the TO drive
  10.         USHORT from_cdrom:1;         // bit 13: FROM drive is CDROM(with big 2048-byte sector)
  11.         USHORT to_cdrom:1;                 // bit 14:  TO  drive is CDROM(with big 2048-byte sector)
  12.         USHORT to_support_lba:1; // bit 15:  TO  drive support LBA
  13.         UCHAR to_head;                         // max head of the TO drive
  14.         UCHAR to_sector:6;                 // max sector of the TO drive
  15.         UCHAR fake_write:1;                 // bit 6: fake-write or safe-boot
  16.         UCHAR in_situ:1;                 // bit 7: in-situ
  17.         ULONGLONG start_sector;
  18.         ULONGLONG sector_count;
  19. }GRUB4DOS_DRIVE_MAP_SLOT,*PGRUB4DOS_DRIVE_MAP_SLOT;
复制代码
,然后硬编码了from_drive<0x80时认为是软盘,>0xA0时认为是光盘
from to用的都还是8位的
回复

使用道具 举报

369#
 楼主| 发表于 2020-11-11 08:59:36 | 只看该作者
熟悉并使用过 SVBus、FiraDisk、WinVblock 的坛友,请释疑一下:
是往 windows 传递了软盘?硬盘?光盘?是一个还是多个?

imagex 可以在 windows 挂载软盘、硬盘、光盘,难道不能满足需求,非要使用 SVBus、FiraDisk、WinVblock ,有充分的理由吗?

我看 SVBus 的源代码,他传递的是物理地址,也可以说是扇区序列。所以如果映像没有加载到内存,也就是说 map 的时候没有使用 --mem,映像必须连续!
G4D 之所以映像可以不连续,是因为有碎片映射表,并且有专用驱动程序。

点评

他们似乎都是传递了硬盘,就是把grub4dos仿真到内存盘的这个(rd),从grub4dos下的实模式“传递”到windows保护模式里面。 看下内置了svbus的vhd启动菜单就知道了啊。 title WIN10X64-SVBUS (/VHD/ltsb-svbus.vhd  详情 回复 发表于 2020-11-12 11:40
SVBus、FiraDisk、WinVblock 这三个 G4D 的驱动,只要在 G4D 里映射了,就会在 Windows 里找到相应类型的磁盘,好像没有多少的限制?反正我将同一个 SVBUS 之类的 IMG 映射成软驱A、B,在 Windows 中都能够见到。  详情 回复 发表于 2020-11-11 12:47
1,有多少插槽创建多少设备,反正对于它在的那个层次(SCSI Miniport),Windows不区分,统一下发SCSI指令,区分由更高层的驱动处理 2,Imdisk工作依赖于【文件系统】(当然如果你直接指定\\.\PhysicalDrive0这种“  详情 回复 发表于 2020-11-11 10:53
回复

使用道具 举报

370#
发表于 2020-11-11 10:53:08 | 只看该作者
本帖最后由 sunsea 于 2020-11-11 10:58 编辑
2011yaya2007777 发表于 2020-11-11 08:59
熟悉并使用过 SVBus、FiraDisk、WinVblock 的坛友,请释疑一下:
是往 windows 传递了软盘?硬盘?光盘? ...

1,有多少插槽创建多少设备,反正对于它在的那个层次(SCSI Miniport),Windows不区分,统一下发SCSI指令,区分由更高层的驱动处理
2,Imdisk工作依赖于【文件系统】(当然如果你直接指定\\.\PhysicalDrive0这种“镜像”当我没说),SVBus加载的时候(SCSI Miniport组),文件系统驱动还没有加载,只能扇区序列读。随后文件系统才到场对各个已经成型的设备进行识别。Imdisk也不认识映射插槽,所以硬要用Imdisk也可以,不过还是得有个工作在内核层次的东西处理插槽信息。
3,不在这种极端早期加载驱动,Windows就会读盘失败——SCSI Miniport这个驱动组加载完成以后Windows就用他们读盘而不是UEFI BIOS本身提供的功能读盘,所以这个时候之后再加载不出来Windows会直接BSOD掉,当年XP上很经典的0x7B还是啥的蓝屏就是这个,只不过当年是因为XP没有AHCI驱动而已。
回复

使用道具 举报

371#
 楼主| 发表于 2020-11-11 12:28:21 | 只看该作者
然后硬编码了from_drive<0x80时认为是软盘,>0xA0时认为是光盘
from to用的都还是8位的

一共8个插槽,from_drive<0x80时认为是软盘,>=0xA0时认为是光盘。
复制的插槽结构与SVBus一致。

看了楼上你的解答,我理解是这个正在启动过程中windows,要加载某个缺少驱动程序,而这个驱动程序,是由G4D映射,并通过SVBus提供。

点评

做PE的时候,很多都有【复杂环境下找到外置或者其他什么虚拟盘】的需求。尤其是从UD启动的时候。当然UEFI没UD了,但是如果是一些隐藏方案的话启动时认虚拟盘需求仍在。 以及做RAMOS。都需要有驱动来帮Windows认盘,  详情 回复 发表于 2020-11-11 12:42
回复

使用道具 举报

372#
发表于 2020-11-11 12:28:23 | 只看该作者
本帖最后由 cchessbd 于 2020-11-11 12:39 编辑
2011yaya2007777 发表于 2020-11-9 20:54
在命令行执行graphicsmode,就知道支持不支持图形模式,知道支持什么尺寸。

不知道yaya大有没有认真看我的贴,那我再说一下遇到uefi版本的问题吧,虚拟机的暂且不管。。。
1.实机命令行执行graphicsmode死机,执行graphicsmode -1 800也死机,死机都是黑屏无任何提示,菜单debug on打开也无任何提示,注释这个命令的话,就可以出现文本菜单。见343楼
2.实机启动后usb光驱变为(fd0),找不到(cd0) (cd1),chainloader能正常启动efi/boot/bootx64.efi,不能启动/bootmgr.efi,启动bootx64.efi后无法进入win10 pe,出现0xc000000e的错误,没有进入加载wim的过程。(虚拟机有0xa0光驱,没有出现0xc000000e的错误,进入了加载wim的过程)见343楼。
(不能启动/bootmgr.efi见348楼图片)
3.实机执行以下菜单项后不是进入win系统,按c进入命令行,root,找不到root设备了.bios版本无影响正常启动进入win.
title   Windows 硬盘系统
cat --length=0 /boot/default && savedefault
find --set-root --devices=h makeactive --status || rootnoverify (hd0,0)
checkrange 0x17,0x1c,0x1b parttype && unhide
rootnoverify
chainloader /gr1dr || chainloader /bootmgr || chainloader /ntldr || chainloader +1
boot

4.实机菜单又能显示汉字,但缺一汉字(虚拟机无汉字),文本菜单横向也没有对齐。见340楼图。

其实这些都是影响使用的问题。还是希望能得到解决吧。如果可以希望yaya贴一个完整的启动菜单,列举几项菜单,启动进入win,启动第二硬盘,启动iso,启动img,启动efi等。因为我不知道chainloader 出错了了n次,不知道怎么用了。。。
我觉得不应该要用户去试错,然后来嘲笑说用户不会用。。。
所以我建议:uefi版本尽量兼容以前的菜单命令,如果该命令不能运行,应该直接退出,或者应该采用不同的菜单文件名。
第2项我不知道是不是普遍现象,所以这个需要会量产的拿uefi版本再试一试。


点评

bootmgr.efi本来就不是efi可执行程序,不能启动。 (fd0)是光盘的El Torito软盘镜像。 uefi固件没有认出来光盘,只认出了里面的软盘镜像,当然启动不了。 这个菜单本来就只能在BIOS下用。grldr, bootmfr,  详情 回复 发表于 2020-11-11 13:18
回复

使用道具 举报

373#
发表于 2020-11-11 12:36:55 | 只看该作者
本帖最后由 2011whp 于 2020-12-11 13:38 编辑

简单监测命令
   debug -3  进入调试模式
   map --status   列出当前所有map的 设备个数
   root  显示root分区的信息
   find  显示所有 分区块(g4e仍从0分区开始)
   ls  直接列出 (root)/
   graphicsmode,就知道支持不支持图形模式,知道支持什么尺寸
文件碎片  blocklist /VHD/SX10090329.vhd
内存碎片  displaymem



回复

使用道具 举报

374#
发表于 2020-11-11 12:42:11 | 只看该作者
本帖最后由 sunsea 于 2020-11-11 12:52 编辑
2011yaya2007777 发表于 2020-11-11 12:28
一共8个插槽,from_drive=0xA0时认为是光盘。
复制的插槽结构与SVBus一致。


做PE的时候,很多都有【复杂环境下加载一二级内核,找到外置或者其他什么虚拟盘】的需求。尤其是从UD启动的时候。当然UEFI没UD了,但是如果是一些隐藏方案的话启动时认虚拟盘需求仍在。
以及做RAMOS。都需要有驱动来帮Windows认盘,毕竟对于这两个环境来说这就是系统盘,系统盘都不认的话就直接蓝屏、启动失败之类的。
SVBus,Firadisk,winvblock这类驱动就相当于XP年代的AHCI驱动,帮助Windows认出虚拟盘,就这个。

总结一下,就是【系统文件在虚拟盘上,需要驱动认盘】,SVBus干的就是帮助认盘。

点评

这个大框图就像:vm虚拟机安装win7 然后win7内安装vm_tools 达到内外(或叫低层 /高层)更好地联合工作。 (g4e相当于虚拟机 svbus相当于 vm_tools)  详情 回复 发表于 2020-11-11 12:50
回复

使用道具 举报

375#
发表于 2020-11-11 12:47:23 | 只看该作者
2011yaya2007777 发表于 2020-11-11 08:59
熟悉并使用过 SVBus、FiraDisk、WinVblock 的坛友,请释疑一下:
是往 windows 传递了软盘?硬盘?光盘? ...

SVBus、FiraDisk、WinVblock 这三个 G4D 的驱动,只要在 G4D 里映射了,就会在 Windows 里找到相应类型的磁盘,好像没有多少的限制?反正我将同一个 SVBUS 之类的 IMG 映射成软驱A、B,在 Windows 中都能够见到。
回复

使用道具 举报

376#
发表于 2020-11-11 12:50:12 | 只看该作者
sunsea 发表于 2020-11-11 12:42
做PE的时候,很多都有【复杂环境下找到外置或者其他什么虚拟盘】的需求。尤其是从UD启动的时候。当然UE ...

这个大框图就像:vm虚拟机安装win7   然后win7内安装vm_tools  达到内外(或叫低层 /高层)更好地联合工作。

    (g4e相当于虚拟机   svbus相当于 vm_tools)
回复

使用道具 举报

377#
 楼主| 发表于 2020-11-11 12:56:14 来自手机 | 只看该作者
cchessbd:1. 你的设备不支持图形模式。至于为什么不正常退出而死机,待查。可是第四项你能显示汉字,奇怪了。2. 怎么根目录会在rd0,而且丢失了光盘,很奇怪。你的menu.lst在软盘里?目前启动不了bootmgr.efi,以后再改进。3. 这个菜单是启动BIOS里面的grldr,与本楼不搭建。4. 既然不支持图形模式,怎么进入了图形模式?

点评

我注释了graphicsmode,uefi没有进入图形模式,是文本菜单显示了汉字。正常显示了图片加汉字的是bios启动后的菜单。  详情 回复 发表于 2020-11-11 13:29
回复

使用道具 举报

378#
 楼主| 发表于 2020-11-11 13:09:53 来自手机 | 只看该作者
谢谢S大,解释的非常清楚!
回复

使用道具 举报

379#
发表于 2020-11-11 13:18:25 | 只看该作者
cchessbd 发表于 2020-11-11 12:28
不知道yaya大有没有认真看我的贴,那我再说一下遇到uefi版本的问题吧,虚拟机的暂且不管。。。
1.实机命 ...
不能启动/bootmgr.efi

bootmgr.efi本来就不是efi可执行程序,不能启动。
实机启动后usb光驱变为(fd0),找不到(cd0) (cd1)
启动bootx64.efi后无法进入win10 pe,出现0xc000000e的错误,没有进入加载wim的过程。(虚拟机有0xa0光驱,没有出现0xc000000e的错误,进入了加载wim的过程)见343楼。

(fd0)是光盘的El Torito软盘镜像。
uefi固件没有认出来光盘,只认出了里面的软盘镜像,当然启动不了。
3.实机执行以下菜单项后不是进入win系统,按c进入命令行,root,找不到root设备了.bios版本无影响正常启动进入win.
title   Windows 硬盘系统
cat --length=0 /boot/default && savedefault
find --set-root --devices=h makeactive --status || rootnoverify (hd0,0)
checkrange 0x17,0x1c,0x1b parttype && unhide
rootnoverify
chainloader /gr1dr || chainloader /bootmgr || chainloader /ntldr || chainloader +1
boot

这个菜单本来就只能在BIOS下用。grldr, bootmfr, ntldr, 启动扇区都是BIOS下的老东西,uefi下没用。
实机菜单又能显示汉字,但缺一汉字(虚拟机无汉字),文本菜单横向也没有对齐。见340楼图。

你没有进图形模式,只能显示uefi固件里面自带的字符。虚拟机uefi固件一般只带ASCII字符,不带中文字符。
所以我建议:uefi版本尽量兼容以前的菜单命令,如果该命令不能运行,应该直接退出,或者应该采用不同的菜单文件名。
第2项我不知道是不是普遍现象,所以这个需要会量产的拿uefi版本再试一试。

UEFI跟BIOS几乎没有共同之处,grub4dos的uefi版本可以看作一个全新的引导器,要忘掉以前BIOS的那堆过时东西。

点评

谢谢您的解释,如果不能用bios的那套,那grub uefi下怎么启动windows呢。 启动img是不是只能是硬盘镜像,还是chainloader (hd0)+1之类的吗 ?  详情 回复 发表于 2020-11-11 13:26
回复

使用道具 举报

380#
发表于 2020-11-11 13:26:52 | 只看该作者
本帖最后由 cchessbd 于 2020-11-11 13:34 编辑
wintoflash 发表于 2020-11-11 13:18
bootmgr.efi本来就不是efi可执行程序,不能启动。

谢谢您的解释,如果不能用bios的那套,那grub uefi下怎么启动windows呢。怎么启动某个分区?
启动img是不是只能是硬盘镜像,还是chainloader (hd0)+1之类的吗 ?

点评

启动windows应该是 chainloader /EFI/Microsoft/Boot/bootmgfw.efi 这样子,不过现在好象还不行,还要耐心等。 启动某个分区,特别是(hd0)+1之类,是bios启动的那一套,是扇区引导;而uefi不用这一套的,是直接文  详情 回复 发表于 2020-11-11 15:39
回复

使用道具 举报

381#
发表于 2020-11-11 13:29:39 | 只看该作者
本帖最后由 cchessbd 于 2020-11-11 13:31 编辑
2011yaya2007777 发表于 2020-11-11 12:56
cchessbd:1. 你的设备不支持图形模式。至于为什么不正常退出而死机,待查。可是第四项你能显示汉字,奇怪 ...

我注释了graphicsmode,uefi没有进入图形模式,是文本菜单显示了汉字。正常显示了图片加汉字的是bios启动后的菜单。bios菜单是集成到了grldr的。uefi加载menu.ls,bios不加载。
回复

使用道具 举报

382#
发表于 2020-11-11 15:39:43 | 只看该作者
cchessbd 发表于 2020-11-11 13:26
谢谢您的解释,如果不能用bios的那套,那grub uefi下怎么启动windows呢。怎么启动某个分区?
启动img是 ...

启动windows应该是 chainloader /EFI/Microsoft/Boot/bootmgfw.efi 这样子,不过现在好象还不行,还要耐心等。

启动某个分区,特别是(hd0)+1之类,是bios启动的那一套,是扇区引导;而uefi不用这一套的,是直接文件引导的,在uefi环境要引导指定分区,应该引导该分区某文件,我一般是在相应分区放一个唯一的文件,然后引导这个文件。

点评

谢谢解惑,我又研究了下Ventoy,也启动不了win,uefi启动可能还需要修复硬盘的bcd,如果有多个主分区,多个系统,每个系统分区隐藏不一样的情况下,麻烦事一堆,uefi从硬盘启动win那只好放弃了。那这样目前就好像只  详情 回复 发表于 2020-11-11 21:31
回复

使用道具 举报

383#
发表于 2020-11-11 15:58:41 | 只看该作者
建议还是象之前发的32位版本那个一样,叫GRUB4EFI,简称g4e。
是grub4dos的全新分支,是新的软件,不是g4d的加强版或升级版。
回复

使用道具 举报

384#
发表于 2020-11-11 16:04:04 | 只看该作者
本帖最后由 hkkitlee 于 2020-11-11 16:11 编辑

提個意見:何不請壇主@wuyou考慮開一個新區,來區分舊的grub4dos / grub4efi ,始終在grub4dos區域下總有人搞不清楚bios/efi完全不同的概念,也花時間解釋。

主力開發基本功能都夠花精力,額外功能/花哨美觀慢慢來吧。
開發者可以更專心開發,研發交流一個帖,測試/問題回報一個帖。
回复

使用道具 举报

385#
发表于 2020-11-11 21:31:52 | 只看该作者
hilsonma 发表于 2020-11-11 15:39
启动windows应该是 chainloader /EFI/Microsoft/Boot/bootmgfw.efi 这样子,不过现在好象还不行,还要耐 ...

谢谢解惑,我又研究了下Ventoy,也启动不了win,uefi启动可能还需要修复硬盘的bcd,如果有多个主分区,多个系统,每个系统分区隐藏不一样的情况下,麻烦事一堆,uefi从硬盘启动win那只好放弃了。那这样目前就好像只能采用微软的bootx64.efi来启动pe吧,这样兼容性强一些。毕竟就弄一个pe维护算了。不过Ventoy启动wim,iso都挺方便的。也可以做成uefi启动。Ventoy做usb硬盘的uefi启动不错。

点评

你得先保证自己的windows系统是安装在gpt分区上的,有ESP分区,ESP分区里面有bootmgfw.efi,才可能支持UEFI启动 (不接受抬杠)  详情 回复 发表于 2020-11-11 21:54
回复

使用道具 举报

386#
发表于 2020-11-11 21:54:00 | 只看该作者
cchessbd 发表于 2020-11-11 21:31
谢谢解惑,我又研究了下Ventoy,也启动不了win,uefi启动可能还需要修复硬盘的bcd,如果有多个主分区,多 ...

你得先保证自己的windows系统是安装在gpt分区上的,有ESP分区,ESP分区里面有bootmgfw.efi,才可能支持UEFI启动 (不接受抬杠)

点评

Windows 系统,并不只是安装在 GPT 分区上,才可以用 UEFI 启动,安装在 MBR 分区上也是可以的。我一个安装在 120GB SSD MBR 盘上的同一个 Windows 7 x64 系统,就可以使用传统和 UEFI 启动它,只要在相应的 BCD 菜  详情 回复 发表于 2020-11-12 10:10
回复

使用道具 举报

387#
发表于 2020-11-12 10:10:15 | 只看该作者
wintoflash 发表于 2020-11-11 21:54
你得先保证自己的windows系统是安装在gpt分区上的,有ESP分区,ESP分区里面有bootmgfw.efi,才可能支持UE ...

Windows 系统,并不只是安装在 GPT 分区上,才可以用 UEFI 启动,安装在 MBR 分区上也是可以的。我一个安装在 120GB SSD MBR 盘上的同一个 Windows 7 x64 系统,就可以使用传统和 UEFI 启动它,只要在相应的 BCD 菜单中加入相应启动项就行了。

点评

说了,不接受抬杠。 我回复的这个网友对UEFI一点了解也没有,你说了太多例外情况,他就迷糊了。  详情 回复 发表于 2020-11-12 12:45
回复

使用道具 举报

388#
发表于 2020-11-12 11:40:54 | 只看该作者
2011yaya2007777 发表于 2020-11-11 08:59
熟悉并使用过 SVBus、FiraDisk、WinVblock 的坛友,请释疑一下:
是往 windows 传递了软盘?硬盘?光盘? ...
熟悉并使用过 SVBus、FiraDisk、WinVblock 的坛友,请释疑一下:
是往 windows 传递了软盘?硬盘?光盘?是一个还是多个?

他们似乎都是传递了硬盘,就是把grub4dos仿真到内存盘的这个(rd),从grub4dos下的实模式“传递”到windows保护模式里面。
看下内置了svbus的vhd启动菜单就知道了啊。
title WIN10X64-SVBUS (/VHD/ltsb-svbus.vhd)
find --ignore-floppies --ignore-cd --set-root /VHD/ltsb-svbus.vhd
map --mem --top /VHD/ltsb-svbus.vhd (hd0)
map (hd0) (hd1)
map --e820cycles=-1
map --hook
root (hd0,0)
chainloader (hd0,0)/bootmgr

点评

本质上这类驱动只是把这块内存“占用”起来,然后向Windows创建了一个设备而已。 然后如果映射到的磁盘号大于0xA0就告诉Windows这是光盘,在0x80-0xA0之间就告诉Windows这是硬盘,0-0x7F告诉Windows这是软盘。 然  详情 回复 发表于 2020-11-12 11:45
回复

使用道具 举报

389#
发表于 2020-11-12 11:45:41 | 只看该作者
本帖最后由 sunsea 于 2020-11-12 11:46 编辑
liuzhaoyzz 发表于 2020-11-12 11:40
他们似乎都是传递了硬盘,就是把grub4dos仿真到内存盘的这个(rd),从grub4dos下的实模式“传递”到wind ...

本质上这类驱动只是把这块内存“占用”起来,然后向Windows创建了一个设备而已。
然后如果映射到的磁盘号大于0xA0就告诉Windows这是光盘,在0x80-0xA0之间就告诉Windows这是硬盘,0-0x7F告诉Windows这是软盘。
然后剩下的事情是由Windows自己的高层驱动程序处理,我们的第三方驱动只处理那些最基本的读写请求。所以只能叫传递设备,它自己不处理设备细节。

点评

SVBus之类的支持带文件碎片的map吗?  详情 回复 发表于 2020-11-12 12:55
回复

使用道具 举报

390#
发表于 2020-11-12 12:45:43 | 只看该作者
xianglang 发表于 2020-11-12 10:10
Windows 系统,并不只是安装在 GPT 分区上,才可以用 UEFI 启动,安装在 MBR 分区上也是可以的。我一个安 ...

说了,不接受抬杠。
我回复的这个网友对UEFI一点了解也没有,你说了太多例外情况,他就迷糊了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-29 20:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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