dark_enigma 发表于 2012-4-25 16:39:34

用grub4dos的map方式启动PE光盘镜像,如何释放镜像占用的内存

事情这样的,mem map方式加载PE镜像启动后,由于已经把WinPE.IM_载入内存,不再需要虚拟的镜像光盘(先不谈镜像里的外置程序),想把镜像所占的内存给释放掉还给WinPE,请教如何操作比较好
原来的菜单是这样,最常规的写法


title find and boot MicroPE.ISO
find --set-root /boot/MicroPE.ISO
map --mem /boot/MicroPE.ISO (0xff)            就是这步加载的镜像盘想在进入PE后释放其占用的内存并还给PE
map --hook
chainloader (0xff)

[ 本帖最后由 dark_enigma 于 2012-4-25 16:43 编辑 ]

zhs509 发表于 2012-4-25 16:51:20

若ISO无碎片,直接map,速度还更快。。。

不点 发表于 2012-4-25 16:55:19

建议不要带 --mem,这样,光盘 ISO 镜像就不会占用内存了。

如果用 --mem 把很大的 ISO 文件放在内存,这本身可能很消耗时间。后来很快又释放掉,这样也不划算,不如根本不带 --mem 省事。

如果你必须(或者喜欢)使用 --mem 加载 iso,那么你在加载之后的某一时刻,仍然有机会释放掉它。执行 map (0xff) (0xff) 然后再 map --rehook 就可以释放掉 (0xff) 这个仿真光盘了。同理,执行 map (hd32) (hd32) 然后再 map --rehook 就可以释放掉 (hd32) 这个仿真光盘了。

以上是在 grub4dos 环境下释放虚拟光盘的方法。如果你已经进入操作系统了,那时候就没有机会释放虚拟光盘了。你必须掌握好,在操作系统的内核接管控制之前释放虚拟盘,否则没有机会释放它。

dark_enigma 发表于 2012-4-25 17:02:39

多谢楼上两位,能不带mem参数我也不想带啊,问题是我是在PXE网络启动环境,不用mem参数根本就不能加载成功。


看起来,在网络启动环境下只有使用非ramdisk方式的winpe才是节省内存的最佳途径了。

不点 发表于 2012-4-25 17:16:37

明白了。

你可以研究 ISO 的结构,直接找到 ISO 里面要启动的文件,加载它。这样就不需要执行 chainloader (0xff) 这条命令了。

取而代之的是,执行其他 map 命令以及其他 chainloader 命令。思路是这样的:

title find and boot MicroPE.ISO
find --set-root /boot/MicroPE.ISO
map --mem /boot/MicroPE.ISO (0xff)
map --hook
map --mem (0xff)/.../MAIN.IMG (fd0)            把 ISO 文件中的 MAIN.IMG 仿真为软盘(只是举例而已)
map (0xff) (0xff)                                          此时 (0xff) 已经决定不再使用了,准备释放掉它
map --rehook                                                执行之后虚拟光盘 (0xff) 就不存在了。
rootnoverify (fd0)                                           但刚才建立的虚拟软盘依旧存在
chainloader (fd0)+1                                        从虚拟软盘启动操作系统

dark_enigma 发表于 2012-4-25 17:38:11

回复 #5 不点 的帖子

谢谢不点的思路,我再想想,看起来grub4dos能做的已经都做了,剩下的知识是winpe相关的了,还需要继续深化学习,现在常见的PE大部分是ramdisk方式运行的,都有个im_格式的一级核心先行载入内存,必须用setupldr.bin来引导。

不点,想往grub4dos的map命令生成的虚拟盘里拷入若干个指定路径的指定文件或者对其中的文件进行删除,是不是只能使用fat外部命令

2011qf020124 发表于 2012-4-25 22:37:28

回复 #4 dark_enigma 的帖子

那你为什么不能直接用PXE启动PE呢?PE本身就支持从网络启动!

dark_enigma 发表于 2012-4-26 08:42:39

回复 #7 2011qf020124 的帖子

用PXE方式直接启动iso,以及startrom启动我都会做,我只是在实际使用中还有一些老机器内存不太够,无法使用上述方式,因此想继续改造方法,让我的PXE服务器适用面更广些。其实0pe完全满足要求,也很好用,但出于学习的目的,还是想知其然知其所以然

2011qf020124 发表于 2012-4-26 20:48:13

回复 #8 dark_enigma 的帖子

网络PXE启动方式下,直接将PE的RAMDISK镜像加载到内存启动已经是比较省内存的方法了!如果还想再省,就只有ISCSI或AOE启动的PE了(本人没研究过,不知道行不行,应该是行的!)

dongwu 发表于 2017-3-4 12:44:09

ISO无碎片,直接map

求道者 发表于 2017-3-7 17:58:43

一直以为MEM进PE之后就直接没有了
原来还占用着内存啊
页: [1]
查看完整版本: 用grub4dos的map方式启动PE光盘镜像,如何释放镜像占用的内存