|
本帖最后由 不点 于 2024-10-15 17:45 编辑
用法上,第一个是正确的,第二个缺少了 map --hook 命令。在 grub4dos 的 legacy bios 版本中,map --hook 命令通常不可以省略。在 grub4dos for UEFI 中,map --hook 好像是可以省略的。
还要注意一些细节:
1、11pe.iso 应放在 grub4dos 能够支持的文件系统分区(卷)上,比如 FAT12/16/32,NTFS,exfat。
2、事先整理碎块,让 11pe.iso 是连续的,即,没有碎块。【在 --mem 的情形,iso 文件不必连续】
3、11pe.iso 应该尽量放在靠近 U 盘的开头。这是因为(在启动时)有些主板的 BIOS 只能访问 U 盘开头的文件。
4、如果 11pe.iso 不是位于软盘(或虚拟软盘)上,则可以给 find 命令添加 --ignore-floppies 选项,这样就不会费劲去软盘上查找 11pe.iso 文件了。去软盘查找时,容易产生死机,或者长时间失去响应,因为软盘是慢速设备。同理,如果 11pe.iso 不是位于 cdrom 或 usb-cdrom 上,则可以给 find 命令添加 --ignore-cd 选项,这样就不会去光盘查找 11pe.iso 文件了。光盘也属于慢速设备,因此也容易产生假死现象。
补充解释一下,为何此处需要 map --hook
title 11PE NEW
find --set-root /11PE.iso 这一句是确定 11PE.iso 所在分区为当前分区
map --mem /11PE.iso (0xff) 这一句建立虚拟盘 (0xFF),但在 map --hook 执行之前,其实是没有挂到 BIOS 的 int13 接口的。所以,这仅仅是个准备动作,是准备建立虚拟盘,只差一个挂钩。
map --hook 这就是把先前 “预建立” 的虚拟盘实实在在挂到 BIOS 接口上,让 BIOS 承认那些 “预建立” 的虚拟盘。本句成功执行以后,(0xff) 就是一个合法的 BIOS 盘号了。假如不执行这句,那么 (0xFF) 还不是一个合法的盘号;即便是合法盘号,那也是以前旧的内容,不是 11PE.iso 对应的那个虚拟盘的盘号。
chainloader (0xff) 此句是要加载虚拟盘 (0xFF) 的引导扇区。也就是说,此时要访问虚拟盘(读取虚拟盘引导扇区)了。因此,此时虚拟盘应该是 “已经存在” 的状态,而不能是 “不存在的”。如果前面没有执行 map --hook,那么,(0xff) 虚拟盘就处于 “不存在” 的状态,那么此时去读取虚拟盘的引导扇区,那就要失败。或者是“存在的”,能够读取成功,但读取的不是 11PE.iso 里面的引导扇区,而是获得了旧的某个虚拟光盘的引导扇区。
在 grub4dos for UEFI 的版本中,map --mem /11PE.iso (0xff) 这一句执行后,您可以理解为 “又立即自动执行了 map --hook”,所以,此时可以不写 map --hook 这句了。map --hook 主要是服务于 legacy BIOS 的。UEFI 体系之下没有传统的 BIOS 概念,这就是新旧 grub4dos 版本的差异。
|
|