|
lianjiang大侠的初级教程里面就有这么一段话:
自动生成MBR
影像文件有两种类型。一种是文件系统影像,它里面只包含某一个文件系统的数据。另一种是磁盘影像,它里面包含了类似于物理硬盘的结构,也就是,影像以MBR开始,然后才是文件系统的数据。对于虚拟内存盘,其结构是类似于真实硬盘的,因此在使用map命令进行映射时,应该使用磁盘影像。
GRUB4DOS考虑到了这个问题。为了让用户使用更加方便,GRUB4DOS作了如下的改进:当把磁盘影像读入内存时,程序会检测其结构,如果发现是文件系统影像,那么在它前面自动生成MBR,把它变为磁盘影像。因此,无论用户选择使用文件系统影像还是磁盘影像,装载到内存后都会变成正确的格式。
自动生成MBR还有一个应用,就是直接从硬盘上的装载分区,从而生成虚拟磁盘。例如:
title Load Partition From Disk
map --mem (hd0,0)+1 (hd0)
map (hd0) (hd1)
map --hook
root (hd0,0)
chainloader +1
boot
该菜单的功能是把硬盘上第一个分区的内容装载到内存,并且自动在其前面加上MBR而生成虚拟磁盘。然后,把该虚拟磁盘映射为第一只硬盘,原来的硬盘映射为第二只硬盘。最后,从虚拟磁盘中启动。
在使用该菜单启动后,系统分区的内容和好像和原来一样,但这时实际是使用在内存里的虚拟磁盘。对分区的修改在重启机器后便会消失。
该菜单是把整个分区的内容装载到内存,要确定内存足够大,否则命令不会成功。
在map命令中,(hd0,0)+1是指整个(hd0,0)分区,而不是(hd0,0)的第一个扇区。这种表示只是在map命令中适用,在其它的地方,(hd0,0)+1 还是原来的第一扇区。
比如cat --hex (hd0,0)+1 //查看第一硬盘第一扇区的内容以16进制显示
#4
title Micro Windows XPE (by LaoMaotao) [hd(0,4)]
map +1 (hd0)
find --set-root /ldrxpe
chainloader /ldrxpe
这样有意思默认不map --hook可能是下面这样的执行,不然前面map +1 (hd0)应该就不能准确定位ldrxpe所在分区吧。。
title Micro Windows XPE (by LaoMaotao) [hd(0,4)]
find --set-root /ldrxpe
chainloader /ldrxpe
map +1 (hd0)
map --hook
boot
我自己到是很少这样写,保险起见我喜欢map后面跟上map --hook。所以可能会写成这样
title Micro Windows XPE (by LaoMaotao) [hd(0,4)]
find --set-root /ldrxpe
map ()+1 (hd0)
map --hook
chainloader /ldrxpe |
|