本帖最后由 liuzhaoyzz 于 2021-11-17 11:05 编辑
Grub4dos map命令使用USBOSV3.iso
由于NT 5内核的Windows有WinVBlock(USBOS 2003 PE已集成)及FiraDisk等支持Grub4dos仿真盘的驱动程序加持,用以下G4D代码装载任意目录下的“USBOSV3.iso”,2003 PE或许都能加载到外置工具。即G4D负责从iso仿真盘引导PE,而WinVBlock或FiraDisk负责让PE认知G4D的仿真盘! title USBOSV3.iso find --set-root /MYiSO/USBOSV3.iso map --mem /MYiSO/USBOSV3.iso (hd32) map –hook chainloader (hd32)
可是在NT 6.2以上内核的Windows 8/8.1/10下,因已有的上述类似驱动程序(例如FiraDisk、SVBus)存在导致某些机器启动PE特别慢等问题,20211020已从NT 6.2以上内核中去除此类驱动。因此,仅用以上代码启动USBOSV3.iso,这类PE可能无法加载外置工具。USBOS的解决办法是:PE启动的过程中,一旦未能搜索到外置程序,就运行ImDisk装载约定目录下的“USBOSV3.iso”到虚拟驱动器,如果USBOV3.iso被成功地装载到虚拟驱动器,那么PE访问外置软件包就不成问题了。即G4D负责从iso仿真盘引导PE,而ImDisk负责装载iso到虚拟驱动器供PE访问! USBOS约定用于存放USBOSV3.iso的目录是: ①、任意可见分区的根目录、“ISO”或“ISOS”目录,例如U:\USBOSV3.iso、G:\ISO\USBOSV3.iso或V:\ISOS\USBOSV3.iso等; ②、UD根目录,即(UD)/USBOSV3.iso。
可供参考的G4D代码如下: title USBOSV3.iso set O=/USBOSV3.iso find --set-root %O% && set I=%O% find --set-root /ISO%O% && set I=/ISO%O% find --set-root /ISOS%O% && set I=/ISOS%O% map --unmap=0xff map %I% (0xff) || map --mem %I% (0xff) map --hook chainloader (0xff) 20211021,为USBOS V3 iso添加了 Ventoy Compatible标记。 利用Ventoy整体引导USBOSV3.iso,当启动其中的NT6以上内核PE时,由该PE内的vtoydump.exe 负责挂载iso;当启动其中的03PE时,由WinVBlock识别map的iso。 故在Ventoy引导iso这种情况下,就不再限定iso文件要存储在约定的位置下,也可以对USBOSV3.iso改名。
上面的说明,来自USBOS常见问题及说明.CHM。
不过还有个少许的问题,imdisk等还是需要文件系统作为支持才能认识路径(当然直接指定\\.\PhysicalDrive0这种的话似乎也能处理连续扇区序列?)。
USBOS应该就是找特定位置的特定文件名字“USBOSV3.iso”,确定盘符、路径、文件名,挂载上去就行了。imdisk是支持命令行的,可以直接用pecmd调用。
svbus的打碎片解析补丁,你应该能够胜任了吧。
|