China DOS Union

-- Unite DOS · Advance DOS · Grow DOS --

Union site: www.cn-dos.net Forum site: www.cn-dos.net/forum
DOS stands for freedom, openness and progress. Let us work hard, learn from the openness and GNU spirit of FreeDOS and Linux, and together build and grow a free GNU GPL world!

中国DOS联盟论坛
The time now is 2026-06-22 07:04
中国DOS联盟论坛 » GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区 » [Download] Memory emulated disk for grub4dos, please test View 28,981 Replies 254
Original Poster Posted 2005-01-12 00:00 ·  中国 河南 南阳 联通
银牌会员
★★★★
不甘寂寞的人
Credits 2,491
Posts 1,115
Joined 2003-09-24 00:00
22-year member
UID 10292
Gender Male
Status Offline
One major drawback of emulating a disk using a disk file is that the disk file must be contiguous. This requirement for continuity is quite strict; for example, the ext2/ext3 partitions in Linux cannot do this. Emulating by copying the disk image to the top of extended memory avoids this drawback.

Advantages of emulating with disk media: It can partially support operating systems like Win98 in protected mode, while the new memdrive does not. The old method of emulating with disk media can support image files of any size (up to 2000GB), while the new memdrive is limited by the amount of physical memory available in the system.

Advantages of memdrive: It can support non-contiguous image files and supports gzip-compressed images.

To utilize the new memdrive emulation function, the following restrictions need to be met.

1. The motherboard BIOS supports the int15/EAX=e820h function call. Motherboards that do not support this function cannot use memdrive. Some old laptops may be affected.
2. The system physical memory must exceed 64M. memdrive does not use memory within 64M to emulate the disk; it only uses memory above 64M. So, if there is only 64M of memory, memdrive cannot be used.

Emulating a disk with RAM memory: 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 is more powerful than memdisk in syslinux. memdisk in syslinux can only emulate one disk and must boot from that emulated disk. Our memdrive supports emulating multiple disks, and even can mix the old non-mem way of emulating with disk media, and the emulated disks do not necessarily have to be boot disks, which is very flexible.
因为我们亲手创建,这个世界更加美丽。
Floor 2 Posted 2005-01-12 00:00 ·  中国 安徽 马鞍山 电信
中级用户
★★
Credits 452
Posts 134
Joined 2004-06-16 00:00
22-year member
UID 26857
Gender Male
Status Offline
Great! By the way, ask Brother Buodian: Wengier's Super MS-DOS 7.10 BootDisk is bootstrapped by GRUB 0.595, with the kind of stage1 and stage2. How to make such a bootable startup disk? Or is there a way to use GRUB 0.95 on a floppy disk? I have been trying to contact Wengier to consult, but I can't always get in touch. I hope the forum experts can give an answer!
Floor 3 Posted 2005-01-12 00:00 ·  中国 河南 南阳 联通
银牌会员
★★★★
不甘寂寞的人
Credits 2,491
Posts 1,115
Joined 2003-09-24 00:00
22-year member
UID 10292
Gender Male
Status Offline
Wengier uses the very old version 0.5.95 mainly because this version is small in size and suitable for placing on a floppy disk. If your floppy disk space is not very tight, it is recommended to use the latest version 0.95.

First, copy the boot/grub directory to the corresponding directory on the floppy disk (that is, there is a /boot/grub directory on the floppy disk). Then, if space is tight, delete the stage1.5 files that are not related to FAT. Enter grub, and at the grub> prompt, type

root (fd0)
setup (fd0)

This is done, and this floppy disk can boot grub.

However, in the future, if the stage2 file is deleted, even if a new one is copied later, it may not be able to start. The above steps must be repeated to make a bootable disk again.

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

In addition, a simpler way is that you directly download
ftp://ftp.linuxeden.com/tinybit/qlinux_setup.img
and make it into a floppy disk.
This image is in FAT12 format. You only need to copy any GRLDR file to its root directory, and you can boot GRUB. Except for GRLDR, all other files and subdirectories can be deleted completely. That is to say, the entire floppy disk only needs to have a GRLDR in the root directory. The first sector of the floppy disk is not the DOS boot program code, but the boot code of GRLDR. When executed, this boot program does not look for the IO.SYS file, but looks for the GRLDR file.
因为我们亲手创建,这个世界更加美丽。
Floor 4 Posted 2005-01-13 00:00 ·  中国 安徽 马鞍山 电信
中级用户
★★
Credits 452
Posts 134
Joined 2004-06-16 00:00
22-year member
UID 26857
Gender Male
Status Offline
Thanks to Brother Budian for the serious and detailed explanation. Wish Brother Budian's GRUB research project to make further progress! Also wish the China DOS Union to become a professional union in the worldwide scope!
Floor 5 Posted 2005-01-16 00:00 ·  中国 安徽 合肥 教育网
初级用户
Credits 121
Posts 10
Joined 2004-11-19 00:00
21-year member
UID 33822
Gender Male
Status Offline
Hehe, this function has already been done~ : )
Floor 6 Posted 2005-02-06 00:00 ·  中国 河北 邯郸 联通
初级用户
Credits 126
Posts 7
Joined 2004-01-01 00:00
22-year member
UID 14731
Gender Male
Status Offline
Bu di Lao Di: Recently, I've been researching Ghost 8.0 and want to use the network mapping function in Ghost 8.0 to complete network backups. Since I have many machines here with various configurations and all kinds of network cards, I thought about integrating all the DOS network card drivers included in Ghost 8.0 into a single bootable disk and then burning it to a CD. Now there's a problem I can't solve: after the network card automatic detection function of Ghost 8.0 finishes running, it needs to write to the disk, but the CD is read-only. At first, I thought of using ramdisk to solve this, but there were still some technical issues I couldn't solve. Later, I found on the internet that I can use grub + memdisk to achieve this function. But I'm getting a bit old and my brain isn't very sharp. I've been working on it for a long time and still haven't fully understood it. Now my question is: How to use Easyboot to call grub and then call memdisk? Which file needs to be called to start grub through Easyboot? Does this file have to be placed in the root directory of the CD? When Easyboot calls grub, is it in non-emulation mode? I hope Lao Di can give some hints. Thanks a lot.
Floor 7 Posted 2005-02-07 00:00 ·  中国 河南 南阳 联通
银牌会员
★★★★
不甘寂寞的人
Credits 2,491
Posts 1,115
Joined 2003-09-24 00:00
22-year member
UID 10292
Gender Male
Status Offline
Dude, still working during the New Year, that's admirable. First, I wish you a happy new year.

Let me make it clear. I didn't know about the easyboot tool before. I just searched and found out it's a CD - making tool. I think you probably want a method to boot GRUB from a CD.

The first method is to use the specification of bootable cdrom no - emulation mode to make a bootable disk, and the stage2_eltorito file that comes with GRUB is needed. This method is described in detail in GRUB's online manual and info help manual, but I haven't studied it, so I can't explain it in detail here.

The second method is to use the floppy image in the CD. First, boot into a DOS, and add grub.exe to autoexec.bat to start GRUB. The floppy image can directly use the Windows 98 boot floppy (delete some redundant files to save space). You can also download this file

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

This is a floppy image. Delete all the files in it, and then copy the latest grldr file into it, and it becomes a floppy that can directly boot GRUB. It's recommended that you use the latter.

I just made a new grub for dos, here:

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

This version 0.4 supports the memdrive function you need. Look at the readme file in it, and there are examples explained.

In addition, the problem you raised is how to call memdisk in GRUB. Regarding this, there are also articles on the network. The following is an example I found by searching:

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

Executing the above three commands in GRUB can start from this floppy image.
Here, c represents the number of cylinders, h represents the number of heads, s represents the number of sectors
7200.zip is the floppy image file itself. memdisk is a file in syslinux, which can be searched on the network and downloaded for use.

Hope these can help solve your problem.
因为我们亲手创建,这个世界更加美丽。
Floor 8 Posted 2005-02-08 00:00 ·  IANA 局域网IP(Private-Use)
中级用户
★★
Credits 385
Posts 118
Joined 2003-11-11 00:00
22-year member
UID 12678
Gender Male
Status Offline
亲爱的 Tinybit,

我已经测试了你的内存盘功能。它可以从内存盘软盘启动,但不能从内存盘硬盘启动。你是否成功地将可引导的分区镜像文件映射到(hd0)并从它启动过?如果成功了,你能给出一个关于如何做到的示例吗?

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?
Floor 9 Posted 2005-02-08 00:00 ·  IANA 局域网IP(Private-Use)
中级用户
★★
Credits 385
Posts 118
Joined 2003-11-11 00:00
22-year member
UID 12678
Gender Male
Status Offline
亲爱的 Tinybit,

还有一件事。你能在你新构建的grldr/grub.exe/grub4lin中加入ntfs支持吗?

请给我们一个下载链接。

非常感谢!
Floor 10 Posted 2005-02-08 00:00 ·  IANA 局域网IP(Private-Use)
中级用户
★★
Credits 385
Posts 118
Joined 2003-11-11 00:00
22-year member
UID 12678
Gender Male
Status Offline
亲爱的Tinybit,

似乎NTFS支持是内置的。但似乎与--mem选项有关。

它通过QEMU运行,在NTFS分区设置了(hd0,0)并带有grldr。

在grldr命令行上,显示:
map .... (fd0)
成功

map --mem .... (fd0)
出现错误消息:error 1: filename must be an absolute name or blocklist.

发生了什么?
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?
Floor 11 Posted 2005-02-08 00:00 ·  中国 河南 南阳 联通
银牌会员
★★★★
不甘寂寞的人
Credits 2,491
Posts 1,115
Joined 2003-09-24 00:00
22-year member
UID 10292
Gender Male
Status Offline
> Have you been successful in mapping a bootable partition image file into (hd0) and boot from it?

No, a partition image file cannot be mapped; only a whole drive image can be mapped.

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

The example file hda.img.gz can be downloaded from ftp://ftp.linuxeden.com/tinybit/. This hda.img.gz has been successfully tested. Please also download the newly updated grub.exe, grldr, and grub4lin files (at the same FTP URL mentioned above, with the file date being February 8), to test the NTFS issue you mentioned. These files contain debugging information. When testing, please post the output result of the map --mem command.

Also, how many GRLDRs are there on your hard drive? Could it be that you are calling an old GRLDR? Please delete all GRLDR files on all hard drives, then copy the latest GRLDR in, and then test.
因为我们亲手创建,这个世界更加美丽。
Floor 12 Posted 2005-02-12 00:00 ·  IANA 局域网IP(Private-Use)
中级用户
★★
Credits 385
Posts 118
Joined 2003-11-11 00:00
22-year member
UID 12678
Gender Male
Status Offline
Dear Tinybit,

Happy Chinese New Year!

There isn't much issue with your new pre04 version.

Finally, I managed to boot correctly from a USB flash drive . It boots from an NTFS partition of the bootable USB flash drive with grldr set up on (hd0,0).

With some adjustments, I could load a 400M FAT32 bootable disk with the --mem option.

It seems I have to first write out IO.SYS, MSDOS.SYS & COMMAND.COM onto the disk image file before the memdrive can read the disk image file; otherwise, a disk read error occurs. I haven't thoroughly tested this. But you can give it a try.

Regarding 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, you need to build a partition image file with your content and the above bootable system files. 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. Then 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.

However, your --mem option can't be used to load Win9x as it seems to directly interact with the BIOS hard disk interrupt, which Win9x doesn't like and refuses to load; while memdisk works perfectly with Win9x. Memdisk can also allow people to use more than 1G of memory. Suppose you have 2G of memory, you can use 1G for memdisk and leave 1G for Win9x. I haven't tested it with more memory, and I can tell you later when I find more memory. Memdisk also works well with our WINDRV as Memdisk uses Int15 that doesn't 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.

To make Win9x run perfectly entirely in RAM, you can either use memdisk/our WINDRV or both working together. To run Win9x stably entirely in RAM for all purposes, you need to use our WINDRV's virtual disk manager to add a virtual disk drive for storing the Windows Swap file; otherwise, some critical applications or hardware may fail, such as USB drives, USB CDROM, E4M, etc.

Floor 13 Posted 2005-02-12 00:00 ·  中国 河北 唐山 联通
版主
★★★
操作系统爱好者
Credits 1,113
Posts 392
Joined 2002-11-11 00:00
23-year member
UID 228
Gender Male
Status Offline
Thanks but no thanks. Personally, I think version 0.2.0 pre9 is more user-friendly. My one-key GHOST is based on this version. I always feel that the new version is somewhat deviating from the original flavor. For example, the boot from CD function doesn't work, and the new memdisk has relatively high requirements for the system... Also, there is another question: Can the Chinese - localized versions of GRLDR and GRUB.exe from the old version (probably pre9) start the new version 0.4.0? Can we graft c:\boot\grub\*.*?
DOS之家 http://doshome.com 站长 葛明阳
Floor 14 Posted 2005-02-12 00:00 ·  中国 河南 南阳 联通
银牌会员
★★★★
不甘寂寞的人
Credits 2,491
Posts 1,115
Joined 2003-09-24 00:00
22-year member
UID 10292
Gender Male
Status Offline
Thanks, and I really appreciate everyone's great assistance. This simulation code for memdrive was completely written by myself, without referring to memdisk in syslinux, so some aspects are not as good as memdisk. However, since someone found a problem, I need to consider solving it. The requirement that gmy mentioned for a relatively high system is something I don't plan to address. Because I think it's not worth specifically taking care of old machines (if my old Pentium II PII 128M RAM is very smooth, I really can't imagine there are lower-end machines now). If you really want to use an old machine, then memdisk is a very good choice.

The scdrom was not compiled in because I don't have the energy to maintain this module, and I can't eliminate the bugs that appear. And gandalf's Chinese version includes this module, so if you need this module, just wait for gandalf's Chinese version. If possible, it is recommended to directly boot sbm.bin in GRUB, which is also a way to boot the CDROM.

Using any old version of GRUB (even including the original unmodified GNU GRUB), you can boot the new version of GRUB for DOS. The method is very simple, like this:

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

With this method, you can freely use the new version of GRUB without installing it. Those boot/grub/*.* files are not very useful and can be deleted.
因为我们亲手创建,这个世界更加美丽。
Floor 15 Posted 2005-02-12 00:00 ·  中国 河南 南阳 联通
银牌会员
★★★★
不甘寂寞的人
Credits 2,491
Posts 1,115
Joined 2003-09-24 00:00
22-year member
UID 10292
Gender Male
Status Offline
Version 0.2 is an unmaintained version. It is recommended to switch to version 0.4.

Version 0.4 includes some new command parameters

map --floppies=2

Set the number of floppy disks in the BIOS data area to 2

map --harddrives=3

Set the number of hard drives in the BIOS data area to 3

Suppose you have two real hard drives. Now, if you want to disable (hd1), you can do this:

map --harddrives=1

Originally you had two hard drives, and now the number becomes 1. Then, you can try whether the number of hard drives has decreased after booting into DOS or win98.

This is another way to disable access to (hd1). Previously, it was done by using map --disable-chs-mode --disable-lba-mode to disable. This time, it can be disabled without emulation.

因为我们亲手创建,这个世界更加美丽。
1 2 3 17 Next ›
Forum Jump: