中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区 » [下载]grub4dos用内存仿真磁盘,请测试
« [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... [17] »
作者:
标题: [下载]grub4dos用内存仿真磁盘,请测试 上一主题 | 下一主题
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『楼 主』:  [下载]grub4dos用内存仿真磁盘,请测试

用磁盘文件仿真磁盘的一个主要缺陷是,要求该磁盘文件必须连续。这个连续性的要求是很苛刻的,例如 Linux 的 ext2/ext3 分区是做不到的。把磁盘映象拷贝到扩展内存的顶端来仿真,就避免了这一缺陷。



用磁盘介质仿真的优点:可以部分地支持 Win98 等保护模式的操作系统,而新的 memdrive 就不支持了。用旧的磁盘介质的仿真方法,可以支持任意大小的映象文件(最大2000GB),而新的 memdrive 受系统中所拥有的物理内存容量的限制。



用 memdrive 的优点:可以支持非连续的映象文件,并且支持 gzip 压缩的映象。



要想利用新的 memdrive 仿真功能,还需要满足以下限制条件。



1. 主板 BIOS 支持 int15/EAX=e820h 功能调用。不支持该功能的主板,将不能使用 memdrive。一些旧的笔记本电脑可能受影响。

2. 系统物理内存必须超过 64M,memdrive 不使用 64M 以内的内存来仿真磁盘,它只使用高于 64M 的内存。所以,如果只有 64M 内存,那么就无法使用 memdrive 了。



用 RAM 内存来仿真磁盘: memdrive

download the binary build(2005-01-12, test only) here:


ftp://ftp.linuxeden.com/tinybit/grub.exe


ftp://ftp.linuxeden.com/tinybit/grldr


ftp://ftp.linuxeden.com/tinybit/grub4lin


or here:


http://grub.linuxeden.com/wakka.php?wakka=UploadFile/files.xml&action=download&file=grub_test.tar.gz





Example:





map --mem (...)/.../floppy.img (fd0)


map --hook


chainloader (fd0)+1


rootnoverify (fd0)


boot



memdrive 比 syslinux 中 memdisk 的功能要强大一些。syslinux 中的 memdisk
只能仿真一个磁盘,并且必须从该仿真盘启动。我们的 memdrive
支持多个磁盘仿真,甚至其中可以混杂着旧的那种利用磁盘介质的非mem方式的仿真,而且被仿真的磁盘不一定作为启动盘,很灵活。





因为我们亲手创建,这个世界更加美丽。
2005-1-12 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
blue777
中级用户




积分 452
发帖 134
注册 2004-6-16
状态 离线
『第 2 楼』:  

太好了!顺便问下不点兄:Wengier的超级MS-DOS 7.10 BootDisk是 GRUB0.595引导的,带有stage1、stage2的那种,如何制作出这种引导的启动盘?或者有没有办法在软盘上用GRUB0.95来做?我一直试图联系Wengier向其咨询,可总联系不上,盼论坛高手给予答复!

2005-1-12 00:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 3 楼』:  

Wengier之所以采用很老的 0.5.95 版本,我猜想,主要是因为这个版本的体积小,适合于放在软盘上。如果你的软盘空间不是很紧张,建议用最新的 0.95 版本。

首先把 boot/grub 目录拷贝到 软盘的该目录下(也就是说软盘上存在 /boot/grub 目录),然后,如果空间紧张的话,删去与 FAT 无关的那些个stage1.5文件,进入 grub ,在 grub> 提示符下敲入

root (fd0)
setup (fd0)

这就完成了,这张软盘就可以引导 grub 了。

不过,以后假如删掉了 stage2 文件,即使后来又拷贝一个过来,恐怕也不能启动了,必须重复上面的步骤才能再制作一个启动盘。

---------------------------

另外,一个更简单的办法是,你直接下载
ftp://ftp.linuxeden.com/tinybit/qlinux_setup.img
将它制作成软盘。
这个映象是一个 FAT12 格式的,你只要复制任意一个 GRLDR 文件到它的根目录,就可以引导 GRUB 了。除了 GRLDR之外,其它所有的文件和子目录,都可以通通删去。也就是说,整个软盘只要有一个 GRLDR 在根目录就行了。软盘的第一扇区不是 DOS的引导程序代码,而是 GRLDR 的引导代码,在执行时,这个引导程序不去寻找 IO.SYS 文件,而是要寻找 GRLDR 文件。






因为我们亲手创建,这个世界更加美丽。
2005-1-12 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
blue777
中级用户




积分 452
发帖 134
注册 2004-6-16
状态 离线
『第 4 楼』:  

谢谢不点兄的认真详细讲解,祝不点兄GRUB研究项目更进一层楼!也祝中国dos联盟成为世界范围的专业联盟!

2005-1-13 00:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pierrexqw
初级用户




积分 121
发帖 10
注册 2004-11-19
状态 离线
『第 5 楼』:  

呵,已经做好这个功能啦~:)

2005-1-16 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
coooooolee
初级用户




积分 126
发帖 7
注册 2004-1-1
状态 离线
『第 6 楼』:  

不点老弟:最近研究ghost 8.0,想利用ghost8.0中的网络影射功能完成网络备份,因为我这里的机器很多,配置比较杂,各种各样的网卡都有,所以呢就想把ghost8.0种所包含的dos网卡驱动都整合到一张启动盘里面去,然后刻录到光盘上,现在有一个问题无法解决:就是ghost8.0的网卡自动检测功能运行完毕以后要写盘,而光盘是只读的,最开始的时候想使用ramdisk来解决这个问题,但是还是有一些技术问题解决不了,后来在网上查找,发现可以利用grub+memdisk可以实现这个功能,可是老兄年纪有些大了,脑子有些不太灵光,搞了许久也没有弄得太明白,现在我的问题是:如何使用Easyboot调用grub,然后再调用memdisk?通过Easyboot启动grub需要调用那一个文件?这个文件必须放在光盘的根目录下吗?Easyboot调用grub的时候是非模拟方式吗?希望老弟能给一些提示。万分感谢。

2005-2-6 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 7 楼』:  

老兄过年还在干活,令人敬佩。先祝新年快乐。

我先说明,我不曾了解过 easyboot 这个工具,刚才搜索了一下,才知道它是一个光盘制作工具。我想,您大概是想要一个能够从光盘启动 grub 的方法吧。

第一种办法,用 bootable cdrom no-emulation mode 这一规范,来制作启动盘,需要用到随 grub一起发行的stage2_eltorito 文件。这种方法在 grub 的联机手册以及info帮助手册中有详细说明,但我没有研究过,所以,我无法在此详说。

第二种办法,用光盘中的软盘映象的方法,首先启动一个 DOS,在 autoexec.bat 中加入 grub.exe 就可以启动 GRUB 了。这里的软盘映象,可以直接采用 win98 的启动软盘(删掉一些多余的文件,可以节约空间)。您也可以下载这个文件

ftp://ftp.linuxeden.com/tinybit/qlinux_setup.img

这是个软盘映象,将里面的文件全部删除,然后拷贝一个最新的 grldr 文件进去,就成为一个能够直接引导 GRUB 的软盘了。建议你采用后者。

我刚刚制作了一个新的 grub for dos, 在这里:

ftp://ftp.linuxeden.com/tinybit/grub_for_dos-0.4.0pre.tar.gz

这个 0.4 的版本支持您要的 memdrive 功能。看看里面的 readme 文件,其中有举例说明。

另外,您提出的问题是如何在 GRUB 中调用 memdisk,关于这一点,网络上也有文章,下面是我搜索到的一个举例:

kernel /boot/grub/memdisk c=32 h=8 s=36 floppy
initr /boot/grub/7200.zip
boot

在 GRUB 中执行上述三条命令就可以从该软盘映象启动了,
其中 c 表示柱面数,h 表示磁头数,s 表示扇区数
7200.zip 就是软盘映象文件本身。memdisk 是 syslinux 中的一个文件,网络上可以搜索到它,下载用了就行。

希望这些能够帮助解决您的问题。




因为我们亲手创建,这个世界更加美丽。
2005-2-7 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
windrv
中级用户




积分 385
发帖 118
注册 2003-11-11
状态 离线
『第 8 楼』:  

Dear Tinybit,
I have tested your memdrive feature.
It can boot from memdrive floppy but not from a memdrive harddisk.
Have you been successful in mapping a bootable partition image file into (hd0) and boot from it?
If yes, could you give an example about how it is to be done?

2005-2-8 00:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
windrv
中级用户




积分 385
发帖 118
注册 2003-11-11
状态 离线
『第 9 楼』:  

Dear Tinybit,
Another thing. Could you add ntfs support into grldr/grub.exe/grub4lin in your new build?
Please give us a link for download.
Thanks a lot!

2005-2-8 00:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
windrv
中级用户




积分 385
发帖 118
注册 2003-11-11
状态 离线
『第 10 楼』:  

Dear Tinybit,
It seems that ntfs support is built in. But it seems to relate to the option --mem
It runs it from QEMU with a (hd0,0) in NTFS partition setup with grldr.
On grldr command line, it shows:
map .... (fd0)
as successful
but
map --mem .... (fd0)
with an error message: error 1: filename must be an absolute name or blocklist.
What happens?

2005-2-8 00:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 11 楼』:  

> Have you been successful in mapping a bootable partition image file into (hd0) and boot from it?

不,partition image file 不可以被 map,只有 whole drive image 才可以被 map。

map --mem (...)/hda.img.gz (hd0)
map --hook
chainloader (hd0)+1
boot

例子文件 hda.img.gz 可以从 ftp://ftp.linuxeden.com/tinybit/ 下载得到。这个 hda.img.gz已经经过了成功的测试。请同时下载刚刚更新的 grub.exe, grldr 和 grub4lin 文件(在上述相同的FTP网址,文件日期是 2月 8 日的),以便测试您所提到的 NTFS 的问题。这些文件含有调试信息,测试时,请贴出 map --mem 命令的输出结果。

另外,你的硬盘上有几个 GRLDR?会不会你调用的是旧的 GRLDR?请将所有硬盘上的所有的 GRLDR 文件全部删除,然后拷贝最新的 GRLDR 进去,再做测试。







因为我们亲手创建,这个世界更加美丽。
2005-2-8 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
windrv
中级用户




积分 385
发帖 118
注册 2003-11-11
状态 离线
『第 12 楼』:  

Dear Tinybit,
Happy Chinese New Year!
There is not much problem with your new pre04 version.
Finally I could get it right for booting from a USB flash drive [from sandisk]. It boots from a NTFS partition of the booting USB flash drive with grldr setup on (hd0,0).
With some tweaking, I could load up a 400M FAT32 bootable disk with --mem option.
It seems that I have to write out IO.SYS, MSDOS.SYS & COMMAND.COM onto the disk image file first before the memdrive can read the disk image file; otherwise it turns out a disk read error. I have not thoroughly tested on this. But you could try.
About how to build the disk image file, one can download the trial version of WINDRV at windrv.net. It includes a WINDRV Client Configurator. Help documentation has been loaded on the website.
Briefly speaking, you have to build a partition image file with your content and bootable system files above. Then use MBR/BS Manager to add a valid boot sector to your partition image file. And then use Build Disk Manager to add the partition image file to a disk image file. You can simply use the default settings. And then you use the MBR/BS Manager to add a valid MBR to the disk image file. And you can use it with your --mem option or with syslinux's memdisk.
Your --mem option however cannot be used to load Win9x as it seems to play directly with the BIOS hard disk interrupt that Win9x seems not liking it and refuses to load; while memdisk works perfectly with Win9x. Memdisk is also able to let people using memory more than 1G. Suppose you have 2G memory, you can use one 1G for memdisk and 1G left for Win9x. I have not tested it for more memory, and I could tell you later when I find more memory. Memdisk also works well with our WINDRV as Memdisk uses Int15 that does not use HIMEM.SYS to handle memory while our WINDRV uses HIMEM.SYS to handle memory.
If one wants to use more memory drives with memdisk, one can use WINDRV's Build Disk Manager to add more partition image files to the disk image file and memdisk can recognize the disk with more drives as there are partition image files within the disk image file.
One inconvenience with memdisk is that it disables the use of internal hard disk(s) after loading up.
To make Win9x run perfectly all in ram, you can either use memdisk/our WINDRV or both working together. To run Win9x all in ram stably for all purposes, you need to use our WINDRV's virtual disk manager to add a virtual disk drive for storing Windows Swap file; otherwise, some critical applications or hardware may fail such as USB drives, USB CDROM, E4M, etc.

[此贴子已经被作者于2005-2-12 10:15:32编辑过]




2005-2-12 00:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
gmy
版主

操作系统爱好者


积分 1113
发帖 392
注册 2002-11-11
状态 离线
『第 13 楼』:  

谢谢不点, 我个人觉得还是0.2.0 pre9 好用一些,我的 一键GHOST 就是以该版为内核的.总觉得 新版有些脱离原味, 如 boot form cd 功能不能用, 新 memdisk 对系统要求较高......另外,还有一个问题,使用旧版(可能是pre9) 的 GRLDR 汉化版 和 GRUB.exe 汉化版 能否启动 新版 0.4.0 ? (嫁接c:\boot\grub\*.* 可以吗?)



DOS之家 http://doshome.com 站长 葛明阳
2005-2-12 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 14 楼』:  

谢谢,非常感谢诸位的大力协助。这个 memdrive 的仿真代码,完全是我自己写的,没有参考 syslinux 中的memdisk,所以,某些地方不如 memdisk 好。不过,既然有人发现毛病了,我就要考虑去解决它了。gmy 所说的对系统要求较高,这一点我不打算解决。因为我觉得不值得去特别照顾老机器(如果我的老奔二 PII 128M RAM都很顺利的话,真不能想象现在还有比这更低档的机器)。如果实在想用老机器,那么 memdisk 就是一个很好的选择。

scdrom 没有编译进去,因为这个模块我没有精力去维护,出现的 BUG 我无法去排除。而 gandalf的中文版本包含了这个模块,所以,如果需要这个模块,就等着 gandalf 的中文版。如果可能的话,建议在 GRUB 中直接启动sbm.bin,这也是一个启动 CDROM 的办法。

用任何一个旧版本的 GRUB(甚至包括未经改动的原始的 GNU GRUB),都可以启动新版本的 GRUB for DOS,方法很简单,是这样的:

kernel (...)/.../grub4lin
boot

用这种办法,你无需安装 GRUB 新版本就可以自由地使用它了。那些 boot/grub/*.* 文件没有太大用处,删掉也可。






因为我们亲手创建,这个世界更加美丽。
2005-2-12 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 15 楼』:  

0.2 系列是个不再维护的版本。建议转向 0.4 系列。



0.4 中包括了一些新的命令参数



map --floppies=2



让 BIOS 数据区中的软盘个数成为 2



map --harddrives=3



让 BIOS 数据区中的硬盘个数成为 3



假定你有两个真实的硬盘,现在,如果你想禁止 (hd1),就可以这样:



map --harddrives=1



本来你有两个硬盘,现在这个数目变成了 1,  那么,你可以试试,在启动进入 DOS 或者 win98 后,硬盘个数是否已经减少了。



这是禁止访问 (hd1) 的另外一种方法了,以前是用 map --disable-chs-mode --disable-lba-mode 来禁止。这次不用仿真就能禁止。


[此贴子已经被作者于2005-2-12 22:38:52编辑过]






因为我们亲手创建,这个世界更加美丽。
2005-2-12 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... [17] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: