|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『楼 主』:
grub4dos的磁盘和CD仿真之下启动保护模式的操作系统
最近我从
http://bbs.downbank.cn/viewthread.php?tid=15986
下载了“多功能电脑急救维护盘”(光盘版),发现了一个问题,这个问题似乎以前也有人讨论过。ISO 文件通过 grub4dos 的 ISO 仿真启动之后,进入 WinPE,则有很多工具找不到。这应该是系统进入保护模式之后,无法访问虚拟光盘所导致的。
由此我觉得这张光盘还有改进的余地。我对于 Windows 的这些启动过程不熟悉,但我熟悉 Linux 的一个古老的方法,不妨就用 Linux 来说事。
用如下的办法可以启动 Linux 系统:
kernel (...)/vmlinuz .......
initrd (...)/initrd.gz
其中,kernel 和 initrd 都是 grub 的命令,它们把内核以及 Linux 的内存盘装入内存中,就完事了,剩下的事情,在 boot 之后都由 Linux 来全权接管了,因此,这样的启动方案,不再使用仿真磁盘了,因此也不会失败了。
因此,如果把所有的文件都放置在 WinPE 所能使用的那个内存盘中,那么 WinPE 在 ISO 仿真下的启动过程应该也可以是同样完美的。
另外,补充说明一点。在上述 kernel 和 initrd 命令之后,即将进入 Linux,那么仿真磁盘和仿真光盘都将不再起作用了,因此此时可以卸载仿真,释放内存供 Linux 使用:
kernel (...)/vmlinuz .......
initrd (...)/initrd.gz
map --mem (hd32) (hd32) # 撤销可能的仿真光盘 hd32
map --mem (0xff) (0xff) # 撤销可能的仿真光盘 0xff
map --mem (fd0) (fd0) # 撤销可能的仿真软盘 fd0
map --mem (fd1) (fd1) # 撤销可能的仿真软盘 fd1
map --mem (hd0) (hd0) # 撤销可能的仿真硬盘 hd0
map --mem (hd1) (hd1) # 撤销可能的仿真硬盘 hd1
map --mem (hd2) (hd2) # 撤销可能的仿真硬盘 hd2
map --mem (hd3) (hd3) # 撤销可能的仿真硬盘 hd3
map --mem (hd4) (hd4) # 撤销可能的仿真硬盘 hd4
map --unhook # 脱钩 int13,恢复 int13 为原始的 BIOS 操作
boot
以上 map 都是必要的,如果仅仅只有最后一条 map --unhook 是不够的,因为 boot 命令会自动执行 map --hook,如果 boot 命令发现有仿真存在的话。撤销仿真磁盘时,参数 --mem 的意思是“强制撤销内存盘”。此处的参数 --mem 也能撤销“非内存”的普通仿真盘。
以上命令序列是安全的,即便在 kernel 之前不曾执行过磁盘仿真,也没有坏处。所以,建议以后启动 Linux 时都要这么做。
[ Last edited by 不点 on 2008-2-14 at 12:06 PM ]
|
因为我们亲手创建,这个世界更加美丽。 |
|
2008-2-14 11:44 |
|
|
fddds
初级用户
积分 58
发帖 21
注册 2007-9-22
状态 离线
|
『第
2 楼』:
以“KERNEL \boot\grub\grub.exe ”方式,WinPE 在 ISO 仿真下启动后,运行PE速度太慢了,请问不点有没有什么办法解决?
|
|
2008-2-14 17:34 |
|
|
fujianabc
金牌会员
积分 3467
发帖 1616
注册 2004-6-21
状态 离线
|
『第
3 楼』:
支持不点。
你的想法对于linux很有效,对于winpe来说则没有机会撤销仿真。
因为linux在grub的initrd阶段就把系统载入了内存,而winpe要在离开grub之后由setupldr.bin把系统载入ramdisk。
|
|
2008-2-14 18:23 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
4 楼』:
fddds:暂且没有什么办法。我也似乎发现过这个问题,但没有找到原因。以后这个问题也确实应该解决,希望能够解决。
目前没有好的办法,只有一个建议,就是直接使用 grub4dos,不要使用别的引导器如 GNU GRUB,SYSlinux,LILO 等。
------------------
fujianabc:虽然 200 多兆的内存被 ISO 占据不能释放,浪费了,但是这仍然只是一个小问题,解决与否都不太要紧。如果确实想解决的话,我们可以研究 setupldr.bin 何时就已经完全装入ramdisk了(从而不再需要仿真磁盘了),这样我们就可以给 setupldr.bin 打个补丁,让它在那个适当的时机卸载磁盘仿真。或者如果可能的话,可以改用直接装入 sdi 文件的方式,来启动 windows,这样就应该和 Linux 的情况差不多了。
我前面的帖子所说的问题,就是把外部程序都放在 ramdisk 里面,启动 winPE 之后,这些程序都是可以访问的,算是比较完美了,而且这一点应该不难做到,对于这个软件的制作者来说。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2008-2-14 19:16 |
|
|
fujianabc
金牌会员
积分 3467
发帖 1616
注册 2004-6-21
状态 离线
|
『第
5 楼』:
setupldr.bin的问题不解决也没关系,顶多就是多占了一些内存而已,毕竟hack setupldr.bin过于困难,而且setupldr.bin版本与ntldr一起时常在更新。
grub的直接载入sdi的启动方式也不错,不过只适用于xp embedded,不适用于pe
|
|
2008-2-15 11:30 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
|
2008-2-15 16:31 |
|
|
barton
中级用户
积分 480
发帖 197
注册 2006-9-20 来自 黄冈
状态 离线
|
『第
7 楼』:
对于外置工具的PE,chenall的pe是在启动到pe的时候利用命令行工具挂载iso,启动外置程序
Quote: | 为内核增加了一个功能
可以在使用GRUB访真ISO启动时也可以使用ISO文件里面的外置程序.
这个功能只会在特定的条件下启用(在没有找到\MINIPE\SYSTEM.WIM时)
而且启动的ISO文件名必须为\BOOT\MICROPE.ISO
isocmd在开始的时候自动mount \boot\MicroPE.ISO |
|
http://bbs.wuyou.com/viewthread.php?tid=118886&extra=page%3D1
[ Last edited by barton on 2008-2-16 at 10:00 AM ]
|
|
2008-2-15 17:26 |
|
|
fujianabc
金牌会员
积分 3467
发帖 1616
注册 2004-6-21
状态 离线
|
『第
8 楼』:
Quote: | Originally posted by 不点 at 2008-2-15 04:31 PM:
内存问题本来就不严重,只要 ISO 在硬盘上连续,就不需要 --mem 了。搜到下面这篇文章,似乎很容易把软件都集成在 WinPE 的内存盘中。
制作WinPE的基 ... |
|
u盘版基本上与硬盘版没有什么差别的,而光盘版就是把硬盘版做成iso而已。
|
|
2008-2-15 18:08 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
9 楼』:
chenall 做的这个简直太棒了,从根本上解决了访问外置程序的问题。谢谢 barton 的指引。
===============
fujianabc:我说的意思是,连硬盘版都不需要做,只要把 ISO 放在硬盘或者U盘上,用 grub4dos 来启动就行了。看来 chenall 已经成功了,非常强悍,赞!
|
因为我们亲手创建,这个世界更加美丽。 |
|
2008-2-15 23:51 |
|
|
gaogaozhen
新手上路
积分 14
发帖 5
注册 2008-3-11
状态 离线
|
『第
10 楼』:
我在做grub4dos启动u盘的时候就在发出这样的疑问了:我下载了电脑公司版的xp安装盘iso,如果能用grub直接加载启动安装就爽了?
|
|
2008-3-11 22:46 |
|
|
fliger
初级用户
积分 24
发帖 11
注册 2008-11-4
状态 离线
|
『第
11 楼』:
我也在尝试,能不能把XP系统镜像到ISO里去,然后用GRUB来引导启动,现在不是有光盘上运行的操作系统吗,只是光盘上运行太伤光盘了,速度也不行啊
|
|
2009-1-31 02:49 |
|