|
Wengier
系统支持
“新DOS时代”站长
积分 27734
发帖 10521
注册 2002-10-9
状态 离线
|
『第
121 楼』:
不点:刚才我已试了,证明使用GRUB for DOS的map方法对于DOS和Windows ME都是有效的。用map命令禁用第二个硬盘后,DOS及WinME都是看不到已被禁用的硬盘的。由此可见,Win9x/ME跳过BIOS存取磁盘是有一定限度的,可能仅仅是对磁盘镜像虚拟等情况下会造成问题?而且,上面都是针对WIN的“32位保护模式磁盘存取”打开时的情况而言的,更不用说关闭“32位保护模式磁盘存取”时的情况了。不过,我通过使用GRUB的map命令禁用硬盘,已成功解决了我在双硬盘时盘符交错导致WinME无法正常启动的问题,而不再需要在BIOS中设置了。可以说这回GRUB for DOS/NTLDR是真正解决了我最近遇到的一个实际问题,所以非常感谢您的大作,希望它越来越强大实用!
[此贴子已经被作者于2004-1-28 14:56:28编辑过]
|
Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
|
|
2004-1-28 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
122 楼』:
呵呵,真是不错!我也是很高兴!看来好人有好报,您为 GRUB for DOS/NTLDR 所做的许许多多,本来就应当有所回报的。
您的测试成功,说明 GRUB for DOS 的程序代码是够健壮的了。这更增强了我的信心。衷心感谢您!
关于“32位保护模式磁盘存取”的情况,还需要我们进一步研究。在 0.2.0 之后不打算开发了,但是我们可以充分测试 0.2.0 在 windows 下的各种表现,看看究竟有什么新情况出现。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-28 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
123 楼』:
Quote: | 以下是引用i659在2004-1-28 12:22:26的发言:
我用 blocklist 看了一下:
blocklist (hd0,6)/boot.flp
(hd0,6)13700944+5760
显示这样,应该没有碎片吧(我不是太清楚的说,对这方面我不是太懂的说) |
|
是的,这是个连续的文件,所有 5760 个扇区连成一块,没有碎片。
5760 × 512 = 2880 × 1024
就是说,它是一个 2.88M 的连续文件。
这个文件可以用 grub_t14/t15 来仿真 2.88M 的软盘。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-28 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
124 楼』:
Quote: | 以下是引用i659在2004-1-28 13:47:31的发言:
或许是程序的问题,在dos下我用的是 grub for dos 0.1.4 (下载地址
http://newdos.yginfo.net/dosware/grub/grub014.zip )
版本就出现上面的贴子中出现的问题,找不到kernel
刚换了一下最新的测试版 grub_t14.exe
( ftp://211.100.7.71/incoming/grub_t14.exe  
就解决问题了,但还是出现在用ntloader 中出现的提示:
Autodetect number-of-heads failed. Use default value 2
Autodetect sectors-per-track failed. Use default value 36
跟在windows xp中一样,后面步骤能够继续 |
|
grub_t14/15.exe 和 grub_for_ntldr-test??? 的有关磁盘仿真的内核都是最新的。因此它们的效果是一样的。
Autodetect number-of-heads failed. Use default value 2
Autodetect sectors-per-track failed. Use default value 36
这两条信息不是错误。当软盘第一扇区没有 DOS 的 BPB 结构时,就会出现这条消息。因为自动探测 DOS 的BPB 结构失败,所以 用默认的 2 面【也就是两个磁头】、每个磁道 36 扇区来仿真。对于 2.88M 的磁盘来说,这是正确的。
您可以继续了,就软盘仿真而言,没有什么危险的。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-28 00:00 |
|
|
windrv
中级用户
积分 385
发帖 118
注册 2003-11-11
状态 离线
|
『第
125 楼』:
Hi TinyBit,
Your previous message says:
******
GRUB for DOS 0.1.x 对 2.88M 的软盘一般是不支持的。GRUB for DOS 0.2.0 对任意尺寸的软盘映象都支持了,还支持任意尺寸的硬盘映象的仿真。现在虽然还没有发布 GRUB for DOS 0.2.0 的正式版,但现在的测试版几乎就等于正式版了。
******
in which: 还支持任意尺寸的硬盘映象的仿真
I want to know:
1. What are the exact commands for doing that? Could you give some examples?
2. After issuing such commands and booting the harddisk image file into real DOS mode, is there any way or real DOS mode programme [included in Grub For DOS?] that we can use to unmap/hide/delete such mapping? Could we use DOS Subst command?
Thanks a lot!
|
|
2004-1-30 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
126 楼』:
回 windrv 兄:
1. What are the exact commands for doing that? Could you give some examples?
例子1:用某个 img 文件仿真 0x80 号的 BIOS 硬盘【要求 img 文件在磁盘上没有碎块】:
map (hd0,0)/hd.img (hd0)
例子2:用 DOS 分区(hd0,4)+1 仿真 BIOS 的 0x80 号硬盘:
map (hd0,4)+1 (hd0)
关于硬盘仿真,有安全问题,需要注意,尽量不要在仿真硬盘的情况下启动windows。在以下网页的尾部有详细说明:
http://www.linuxeden.com/edu/doctext.php?docid=3006
2. After issuing such commands and booting the harddisk image file into real DOS mode, is there any way or real DOS mode programme [included in Grub For DOS?] that we can use to unmap/hide/delete such mapping? Could we use DOS Subst command?
仿真一个磁盘,进入某个操作系统之后,这时候不应当撤掉仿真,否则操作系统会混乱。因为操作系统已经认可了已经实施的仿真,假如突然撤掉这个仿真,则系统将找不到所需要的文件。例如,当 C: 盘是仿真的,里面有 command.com 文件,这时,如果撤掉仿真,则系统将无法找到 command.com 文件。这仅仅是举例,其实撤掉仿真之后还有更复杂的情况会发生,按照扇区读写的程序将会带来灾难,破坏掉真实硬盘上的资料。所以,GRUB 不提供撤掉仿真的 DOS 命令或者类似的方法。
但是,如果在 DOS 下再次运行 GRUB.exe 命令,则以前的仿真即被完全撤销。如果不再次使用 map 命令,将不会有任何仿真继续起作用了。这是安全的,因为运行 GRUB.exe 之后,就意味着原来的 DOS 环境不复存在了。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-30 00:00 |
|
|
windrv
中级用户
积分 385
发帖 118
注册 2003-11-11
状态 离线
|
『第
127 楼』:
Quote: | 以下是引用不点在2004-1-30 13:27:03的发言:
回 windrv 兄:
1. What are the exact commands for doing that? Could you give some examples?
例子1:用某个 img 文件仿真 0x80 号的 BIOS 硬盘【要求 img 文件在磁盘上没有碎块】:
map (hd0,0)/hd.img (hd0)
例子2:用 DOS 分区(hd0,4)+1 仿真 BIOS 的 0x80 号硬盘:
map (hd0,4)+1 (hd0)
关于硬盘仿真,有安全问题,需要注意,尽量不要在仿真硬盘的情况下启动windows。在以下网页的尾部有详细说明:
http://www.linuxeden.com/edu/doctext.php?docid=3006
2. After issuing such commands and booting the harddisk image file into real DOS mode, is there any way or real DOS mode programme [included in Grub For DOS?] that we can use to unmap/hide/delete such mapping? Could we use DOS Subst command?
仿真一个磁盘,进入某个操作系统之后,这时候不应当撤掉仿真,否则操作系统会混乱。因为操作系统已经认可了已经实施的仿真,假如突然撤掉这个仿真,则系统将找不到所需要的文件。例如,当 C: 盘是仿真的,里面有 command.com 文件,这时,如果撤掉仿真,则系统将无法找到 command.com 文件。这仅仅是举例,其实撤掉仿真之后还有更复杂的情况会发生,按照扇区读写的程序将会带来灾难,破坏掉真实硬盘上的资料。所以,GRUB 不提供撤掉仿真的 DOS 命令或者类似的方法。
但是,如果在 DOS 下再次运行 GRUB.exe 命令,则以前的仿真即被完全撤销。如果不再次使用 map 命令,将不会有任何仿真继续起作用了。这是安全的,因为运行 GRUB.exe 之后,就意味着原来的 DOS 环境不复存在了。
|
|
Dear TinyBit,
Thank you very much!
I however wish you could clarify what would happen if I do the following:
1. I have one hard disk with only one FAT32 partition.
2. I boot Grub for DOS and map (hd0,0)/hd.img (hd0)
3. and boot hd.img with DOS system
Does hd.img appear as C: after booting into real DOS mode?
and
Does the only partition in the hard disk appear as D:?
So if could I issue DOS Subst command as:
Subst C: D:\
and I could use DOS normally and have the partition appear as both C: & D:?
|
|
2004-1-30 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
128 楼』:
windrv兄:
谢谢您提的问题。您的问题很有启发性。
1. I have one hard disk with only one FAT32 partition.
2. I boot Grub for DOS and map (hd0,0)/hd.img (hd0)
3. and boot hd.img with DOS system
Does hd.img appear as C: after booting into real DOS mode?
是的,由于 hd.img 成为第一个 BIOS 硬盘,所以,它里面的某个分区将成为 C: 盘。注意它里面可以有多个逻辑分区的,那些逻辑分区,如果存在的话,将成为 D:, E: 等等。
Does the only partition in the hard disk appear as D:?
不。GRUB for DOS 不增加系统中磁盘的个数。GRUB for DOS 仅仅把 (hd0) 的读写,重新定向到 (hd0,0)/hd.img 文件。如果系统中没有另外一个硬盘 (hd1),那么 GRUB for DOS 也不会增加上一个硬盘 (hd1) 的。但是,如果系统中存在一个真实的 (hd1),则您可以同时用这样两条命令:
map (hd0,0)/hd.img (hd0)
map (hd0) (hd1)
来定义您的磁盘 map。这样,BIOS 访问 0x80 硬盘的时候,就去找 hd.img ,而访问 0x81 硬盘的时候,就去找 真实的 0x80 号硬盘。如此一来,真实的 0x80 号硬盘上的那个分区,就会被访问到的,也即,会成为 D: 盘。而真实的 0x81 号磁盘,将不可访问了,也就是,它将被隐藏了。
正如以前和 wengier 讨论的那样,我们的 GRUB for DOS 不增加磁盘总数,也不减少磁盘总数。要想增减磁盘总数的话,必须同时修改 BIOS 数据区中的硬盘和软盘个数字节;这一点,我们没有实现【也不打算实现,不过,如果有很多人要求实现的话,我可以考虑加入这一功能】。
假如有了真实的 (hd1) 硬盘,要达到 C: == D: 的目的,不需要 DOS 的 subst 命令。我们可以这样做:
map (hd0) (hd1)
这条命令使得对 0x81 的读写,转向对 0x80 进行读写。所以,磁盘 D: 将和磁盘 C: 完全一样。而真实的 0x81 号硬盘将不可访问了。
作为对比,以下命令将交换 0x80 和 0x81 :
map (hd0) (hd1)
map (hd1) (hd0)
两个硬盘都可以访问,不过真实的 C:成了虚拟的 D:,而真实的 D:成了虚拟的 C:了。
----------------
以上都假定只运行 DOS,不运行 windows。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-30 00:00 |
|
|
windrv
中级用户
积分 385
发帖 118
注册 2003-11-11
状态 离线
|
『第
129 楼』:
Quote: | 以下是引用不点在2004-1-30 16:15:55的发言:
windrv兄:
谢谢您提的问题。您的问题很有启发性。
1. I have one hard disk with only one FAT32 partition.
2. I boot Grub for DOS and map (hd0,0)/hd.img (hd0)
3. and boot hd.img with DOS system
Does hd.img appear as C: after booting into real DOS mode?
是的,由于 hd.img 成为第一个 BIOS 硬盘,所以,它里面的某个分区将成为 C: 盘。注意它里面可以有多个逻辑分区的,那些逻辑分区,如果存在的话,将成为 D:, E: 等等。
Does the only partition in the hard disk appear as D:?
不。GRUB for DOS 不增加系统中磁盘的个数。GRUB for DOS 仅仅把 (hd0) 的读写,重新定向到 (hd0,0)/hd.img 文件。如果系统中没有另外一个硬盘 (hd1),那么 GRUB for DOS 也不会增加上一个硬盘 (hd1) 的。但是,如果系统中存在一个真实的 (hd1),则您可以同时用这样两条命令:
map (hd0,0)/hd.img (hd0)
map (hd0) (hd1)
来定义您的磁盘 map。这样,BIOS 访问 0x80 硬盘的时候,就去找 hd.img ,而访问 0x81 硬盘的时候,就去找 真实的 0x80 号硬盘。如此一来,真实的 0x80 号硬盘上的那个分区,就会被访问到的,也即,会成为 D: 盘。而真实的 0x81 号磁盘,将不可访问了,也就是,它将被隐藏了。
正如以前和 wengier 讨论的那样,我们的 GRUB for DOS 不增加磁盘总数,也不减少磁盘总数。要想增减磁盘总数的话,必须同时修改 BIOS 数据区中的硬盘和软盘个数字节;这一点,我们没有实现【也不打算实现,不过,如果有很多人要求实现的话,我可以考虑加入这一功能】。
假如有了真实的 (hd1) 硬盘,要达到 C: == D: 的目的,不需要 DOS 的 subst 命令。我们可以这样做:
map (hd0) (hd1)
这条命令使得对 0x81 的读写,转向对 0x80 进行读写。所以,磁盘 D: 将和磁盘 C: 完全一样。而真实的 0x81 号硬盘将不可访问了。
作为对比,以下命令将交换 0x80 和 0x81 :
map (hd0) (hd1)
map (hd1) (hd0)
两个硬盘都可以访问,不过真实的 C:成了虚拟的 D:,而真实的 D:成了虚拟的 C:了。
----------------
以上都假定只运行 DOS,不运行 windows。
|
|
Dear TinyBit,
Thank you very much for your clarification.
From your clarification, I now know that:
If I have only one hard disk with one FAT32 partition in which I place the hd.img,
after mapping the hd.img and booting it up, my hd0 will disappear and the hd.img
within will become C:. Is that correct?
What I actually want is to explore whether and how your Grub For DOS can be used
together with our WINDRV to enable users to deploy different bootable img files on
a FAT32 hard disk so that they can start up Grub For DOS and boot into these
different bootable img files so that they can select different versions of Win95, Win98
or WinMe of different sizes and different configurations and run these graphical OSes
safely.
Let me explain a little bit how WINDRV takes Win95/98/ME to run on ramdisk.
Suppose we have one hard disk with one partition.
After booting in DOS from this single harddisk-partition C:, we run a loader, WDDOS,
which loads up a real-mode ramdisk driver and copy an img file onto the ramdisk D:.
Let's call this img file rd.img.
WDDOS then maps the harddisk-partition C: as D: and the ramdisk D: as C:
WIN.COM is then run and the system runs into protected mode Win95/98/ME.
With your Grub For DOS, we may perhaps do something like that:
1. Turn the bootable harddisk-partition into a hd.img
2. The hd.img contains boot-sector code, io.sys, command.com, msdos.sys,
config.sys, himem.sys, ifshlp.sys and our WINDRV product files as well as the
rd.img
3. Reformat a brandnew single hard-disk partition into FAT32 and install
Grub For DOS
4. Boot up hd.img as C: and run WINDRV
5. WINDRV loads rd.img in hd.img as ramdisk D:
6. WINDRV swaps C: with D:
7. we issue "Subst D: C:\" to hide the hd.img
8. After issuing WIN.COM, we enter into Windows protected mode
9. I guess Windows 95/98/ME will then recognize the original hd0 as E:
and access it using 32bit protected mode driver. And hd.img will re-appear
on E: as a file.
So we can have a 95.img, mini95.img, 98.img, mini98.img, ME.img, miniME.img
or as many as we could on the hd0.
On start up Grub For DOS, we can let people select which OS of the size and
configuration they want to boot up.
We can back up these img files and this prevent virus attack.
By the way, for computer that can boot up USB hard disk, the only USB hard disk
can be removed also. So only ramdisk Windows is run on a standalone diskless
computer.
How do you think?
Is this workable?
|
|
2004-1-30 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
130 楼』:
回复 windrv 兄:
From your clarification, I now know that:
If I have only one hard disk with one FAT32 partition in which I place the hd.img,
after mapping the hd.img and booting it up, my hd0 will disappear and the hd.img
within will become C:. Is that correct?
是的。而且,这个事实与“只有一个分区”无关。您可以有不只一个的分区,只要硬盘只有一块就行。更有甚者,这其实与硬盘的个数也没有关系。单个的命令 “map (....)/somewhere/some_img_file (hd0)” 总是隐藏真实的硬盘 0x80,而把 (....)/somewhere/some_img_file 当作虚拟的硬盘 0x80。
What I actually want is to explore whether and how your Grub For DOS can be used
together with our WINDRV to enable users to deploy different bootable img files on
a FAT32 hard disk so that they can start up Grub For DOS and boot into these
different bootable img files so that they can select different versions of Win95, Win98
or WinMe of different sizes and different configurations and run these graphical OSes
safely.
Let me explain a little bit how WINDRV takes Win95/98/ME to run on ramdisk.
Suppose we have one hard disk with one partition.
After booting in DOS from this single harddisk-partition C:, we run a loader, WDDOS,
which loads up a real-mode ramdisk driver and copy an img file onto the ramdisk D:.
Let's call this img file rd.img.
WDDOS then maps the harddisk-partition C: as D: and the ramdisk D: as C:
WIN.COM is then run and the system runs into protected mode Win95/98/ME.
With your Grub For DOS, we may perhaps do something like that:
1. Turn the bootable harddisk-partition into a hd.img
更正一个说法。应当是 Turn the bootable harddisk into a hd.img。文件 hd.img 应当包括 MBR,也就是主引导扇区,否则不能用来仿真一个硬盘,只能用来仿真一个软盘。
2. The hd.img contains boot-sector code, io.sys, command.com, msdos.sys,
config.sys, himem.sys, ifshlp.sys and our WINDRV product files as well as the
rd.img
如上所说,文件 hd.img 包括 MBR,以及 DOS 的 boot-sector code, io.sys,等等。
3. Reformat a brandnew single hard-disk partition into FAT32 and install Grub For DOS
4. Boot up hd.img as C: and run WINDRV
是的,这一步应当是成功的。
5. WINDRV loads rd.img in hd.img as ramdisk D:
6. WINDRV swaps C: with D:
这两个步骤是您公司独有的特技,您们自己清楚它的工作状况。
7. we issue "Subst D: C:\" to hide the hd.img
通常这个步骤也是成立的。您公司清楚它的工作情况。
8. After issuing WIN.COM, we enter into Windows protected mode
由于您只用了 hd.img 作为仿真的磁盘,而 subst 命令又隐藏了它,所以,按照常规,windows 应当是找不到它了,也就是说,windows 应当是可以启动的。
9. I guess Windows 95/98/ME will then recognize the original hd0 as E:
and access it using 32bit protected mode driver. And hd.img will re-appear
on E: as a file.
是的,如果 windows 能够启动,它通常可以找到真实硬盘的。
So we can have a 95.img, mini95.img, 98.img, mini98.img, ME.img, miniME.img
or as many as we could on the hd0.
On start up Grub For DOS, we can let people select which OS of the size and
configuration they want to boot up.
We can back up these img files and this prevent virus attack.
By the way, for computer that can boot up USB hard disk, the only USB hard disk
can be removed also. So only ramdisk Windows is run on a standalone diskless
computer.
How do you think?
Is this workable?
我没有看出有什么不合适的地方。好像是个很不错的主意。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-1-30 00:00 |
|
|
windrv
中级用户
积分 385
发帖 118
注册 2003-11-11
状态 离线
|
『第
131 楼』:
Hi TinyBit,
Thank you for your prompt response and enlightnment!
We have run WIN95/98/ME successfully on a standalone notebook computer with bootable USB harddisk using WINDRV. We can also remove the USB hard disk to make the standalone notebook computer run diskless completely.
So from now on, diskless computers running sophisticated graphical OS are not limited to network computers anymore.
Thank you any way for your kind help.
|
|
2004-1-31 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
132 楼』:
GRUB for DOS 的测试版暂且和 GRUB for NTLDR 放在一起了。最新的测试版采用 GNU GRUB 0.94 的版本。
信息页:
http://www.linuxeden.com/download/softdetail.php?softid=1026
下载:
ftp://211.100.7.71/incoming/grub_for_ntldr-test005.tar.gz
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-2-1 00:00 |
|
|
cavvie
初级用户
积分 150
发帖 18
注册 2003-10-13
状态 离线
|
『第
133 楼』:
呵呵,grub for dos越来越完善了,不过请问有没有更新过的能安装在mbr中的版本(即你上回给我的stage2文件) ^_^
|
|
2004-2-3 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
134 楼』:
下次一起吧.
考虑到现在的测试阶段即将完成, 所以, 下一个 GRUB FOR NTLDR 的测试版本就要包括所有的那些 STAGE 文件了.
再等待几天吧.
谢谢您一直以来的跟踪支持.
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-2-3 00:00 |
|
|
cavvie
初级用户
积分 150
发帖 18
注册 2003-10-13
状态 离线
|
『第
135 楼』:
呵呵,帮不上什么忙,只好当潜水员了:),眼看着grub for dos越来越好还是很激动的。
|
|
2004-2-3 00:00 |
|