那得看你走运不走运了。由于软盘映像是在内存中,如果你在进入 GRUB 之后还能在内存中找到该映像、并且最好该映像在内存中也是连续的,那就能够成功;否则,恐怕得另想办法。
现在可以肯定的是,你的软盘中的所有扇区都在内存中了,你用 (md)XXXXXX+XXXXXX的格式可以访问内存中的扇区序列(XXXXXX 需要你填入合适的值):
map (md)XXXXXX1+YYYYYY1,XXXXXX2+YYYYYY2,XXXXXX3+YYYYYY3 (fd0)
map --hook
这样就可以访问软盘中的文件了。
不过困难在于确定 XXXXXX 的值,需要你手动操作决定,挺麻烦的。
所以建议你的从 PXE 中执行的软盘映像直接采用 GRUB 引导软盘,也就是说,软盘的引导扇区直接就采用 GRLDR 的引导扇区(用bootlace 命令可以建立这样的软盘引导扇区),说的更清楚一点,这个软盘不含DOS,你始终不要有进入 DOS 的步骤。这样,当 GRUB 获得控制时,GRUB 可以访问你从 PXE 传递过来的软盘,其实它就是 (fd0) 了。如此一来,你软盘上的任何内容,都可以方便地在 GRUB 下操作了(你甚至无需再使用map命令了)。
如果后一种办法不适合你的口味,那么你仍然可以考虑改造前一种办法。你在 DOS 下生办法把整个软盘映像放置到内存中某个固定的、连续的区域,比如放置在物理地址 0x400000 也就是 4M 的位置,然后进入GRUB,并用
map (md)0x2000+2880 (fd0)
map --hook
来仿真,这就 OK 了。解释一下:0x2000 乘以扇区大小 0x200 就是 0x400000
2880 表示软盘的总扇区数。