How Do I Boot the GRUB Floppy As a RAMdisk?
I have been experimenting with the. Among other things, you can add raw images of bootable media to it and those images can be loaded as a RAMdisk and then booted. I would like to be able to do this with the GRUB floppy.
I have been experimenting with the Emergency Boot CD (EBCD). Among other things, you can add raw images of bootable media to it and those images can be loaded as a RAMdisk and then booted. I would like to be able to do this with the GRUB floppy.
The creating and booting of the RAMdisk looks to me like Linux commands, but I am no Linux expert. I have made some progress: the RAMdisk is created and it loads GRUB, and GRUB appears to be fully functional (even loads menu.lst), but when trying to boot Windows 98 from the GRUB RAMdisk the HDD makes some clanking noises and then I get the following error:
While initializing device IOS:
Windows protection error. You need to restart your computer.
I have to hard boot after this.
The real floppy disk boots Windows 98 perfectly.
Here is the code used to create the RAMdisk:
Code:
I've run out of ideas. Please help!
The creating and booting of the RAMdisk looks to me like Linux commands, but I am no Linux expert. I have made some progress: the RAMdisk is created and it loads GRUB, and GRUB appears to be fully functional (even loads menu.lst), but when trying to boot Windows 98 from the GRUB RAMdisk the HDD makes some clanking noises and then I get the following error:
While initializing device IOS:
Windows protection error. You need to restart your computer.
I have to hard boot after this.
The real floppy disk boots Windows 98 perfectly.
Here is the code used to create the RAMdisk:
Code:
<?xml version="1.0" encoding="CP866" ?><!-- Emergency Boot CD-ROM (EBCD)Copyright 2002-2003 Mikhail KupchikThis program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.--><EBCDML> <ISOLINUX_Alt Name="GRUB_Boot_Floppy" Category="1"> <Line>kernel /boot/memdisk.sys</Line> <Line>append initrd=/boot/GRUB_Kpx.img floppy</Line> </ISOLINUX_Alt> <DeclareGZipable File="BOOT\GRUB_Kpx.img" /></EBCDML>This code works perfectly for most other bootable floppy image files, but not the GRUB floppy.
I've run out of ideas. Please help!
Participate on our website and join the conversation
This topic is archived. New comments cannot be posted and votes cannot be cast.
Responses to this topic
I have'nt found an answer to this one yet, so I posted on a couple other forums to see if anybody there had any ideas. The EBCD forum would be my first choice, but I seem to be strangely locked out there. Do I have to be a member of an exclusive club to post on the EBCD forum?
I think the problem is in the "kernel" or "append initrd=" commands. I was hoping exposure to more Linux users on this forum might at least get me started toward a solution.
I think the problem is in the "kernel" or "append initrd=" commands. I was hoping exposure to more Linux users on this forum might at least get me started toward a solution.
The problem is whre is the EBCD documentation? Can you post a link? I can't seem to find any. I assume the code is not modified at all by you and EBCD is using it's own Linux subsystem to boot the operating systems.
What distro of Linux do you currently have on the system? The clunking of the hard drive is not good and seems to indicate that grub is not looking (or not configured) for the proper partition/sectors on the hard drive to boot Windows 98.
I also notice that you are running Windows 98? Do you think that this system has enough RAM to run both the EBCD in RAM and initiate the Grub floppy in RAM, since you are attempting to load everything into RAM? In other words, how much RAM is in the system?
I also found this link. It is not EBCD specific, but may give you some clues.
What distro of Linux do you currently have on the system? The clunking of the hard drive is not good and seems to indicate that grub is not looking (or not configured) for the proper partition/sectors on the hard drive to boot Windows 98.
I also notice that you are running Windows 98? Do you think that this system has enough RAM to run both the EBCD in RAM and initiate the Grub floppy in RAM, since you are attempting to load everything into RAM? In other words, how much RAM is in the system?
I also found this link. It is not EBCD specific, but may give you some clues.
My cable modem died last week. Just got back on-line.
You can get everything at EBCD Homepage, but you will go nuts trying to find the documentation there (it's buried in the download!). Download the "Pro" version (the larger of the two files named "ebcd-0.6.1-pro-sfx.exe" ). Double-click the "exe" and tell it where you want to extract to. Don't worry, it creates a folder named "ebcd-0.6.1-pro" and puts everything in there, so no mess. In that folder the file "ebcd_readme.htm" is the documentation.
I am using code exactly as supplied (ie. modified exactly per their instructions) and EBCD is using it's own Linux subsystem to boot the operating systems.
No Linux distro currently, but planning big repartition & multiboot project very soon. GRUB is installed to MBR from Knoppix CD so I could test it on booting Windows, floppy drive, CD, etc. I'm considering Debian, Suse and Fedora mostly, but all comments welcome. From HDD GRUB boots Win98 and Win2000 without a hitch. I even have "menu.lst" on FAT32. Same success starting with the GRUB floppy (even loads the menu). The clunking occurs only with the "image" of the GRUB floppy loaded as a RAMdisk by EBCD and booted by EBCD.
I have 384MB RAM. I don't think this is an issue though. I have read that the same RAM address is used always to start the boot process (0x700 - I think?), so that no matter how many steps you do to get to the the final boot sector, each one userps control from the previous one (ie. you can boot to floppy, then boot the CD, then boot the HDD (GRUB), then boot NTLDR, then boot GRUB again, then boot Linux). This is a little buggy on my machine, but basically works.
"The clunking of the hard drive is not good and seems to indicate that grub is not looking (or not configured) for the proper partition/sectors on the hard drive to boot Windows 98."
Now we're getting somewhere! Could be that the boot image for EBCD and GRUB differ in size and the geometry information is getting overwritten by the RAMdisk, OR GRUB wants to store the geometry information where the RAMdisk is located. Can "initrd" be told where to put the RAMdisk?
Thanks for the great link! There seems to be much excitement over the EBCD at the PC Guide forums, hence why I looked into that one first. This one (UBCD) has an impressive list of features too, so I must look into it. Nothing jumps out for the GRUB problem, but I see much potential here to help with other things I want to do with EBCD.
I'm still going 'round in circles at the EBCD forum. I have no account there yet, but they created an account for me at the "DAVAR Hebrew Dictionary Forum". Yea, I can log in there.
You can get everything at EBCD Homepage, but you will go nuts trying to find the documentation there (it's buried in the download!). Download the "Pro" version (the larger of the two files named "ebcd-0.6.1-pro-sfx.exe" ). Double-click the "exe" and tell it where you want to extract to. Don't worry, it creates a folder named "ebcd-0.6.1-pro" and puts everything in there, so no mess. In that folder the file "ebcd_readme.htm" is the documentation.
I am using code exactly as supplied (ie. modified exactly per their instructions) and EBCD is using it's own Linux subsystem to boot the operating systems.
No Linux distro currently, but planning big repartition & multiboot project very soon. GRUB is installed to MBR from Knoppix CD so I could test it on booting Windows, floppy drive, CD, etc. I'm considering Debian, Suse and Fedora mostly, but all comments welcome. From HDD GRUB boots Win98 and Win2000 without a hitch. I even have "menu.lst" on FAT32. Same success starting with the GRUB floppy (even loads the menu). The clunking occurs only with the "image" of the GRUB floppy loaded as a RAMdisk by EBCD and booted by EBCD.
I have 384MB RAM. I don't think this is an issue though. I have read that the same RAM address is used always to start the boot process (0x700 - I think?), so that no matter how many steps you do to get to the the final boot sector, each one userps control from the previous one (ie. you can boot to floppy, then boot the CD, then boot the HDD (GRUB), then boot NTLDR, then boot GRUB again, then boot Linux). This is a little buggy on my machine, but basically works.
"The clunking of the hard drive is not good and seems to indicate that grub is not looking (or not configured) for the proper partition/sectors on the hard drive to boot Windows 98."
Now we're getting somewhere! Could be that the boot image for EBCD and GRUB differ in size and the geometry information is getting overwritten by the RAMdisk, OR GRUB wants to store the geometry information where the RAMdisk is located. Can "initrd" be told where to put the RAMdisk?
Thanks for the great link! There seems to be much excitement over the EBCD at the PC Guide forums, hence why I looked into that one first. This one (UBCD) has an impressive list of features too, so I must look into it. Nothing jumps out for the GRUB problem, but I see much potential here to help with other things I want to do with EBCD.
I'm still going 'round in circles at the EBCD forum. I have no account there yet, but they created an account for me at the "DAVAR Hebrew Dictionary Forum". Yea, I can log in there.
Yep, I got the documentation. Figured that one out!
Ahh...you have Windows 2000 and Win 98 on the system!
I should have guessed that Knoppix is the boot image being used, by the initrd entry.
Let me ask, was Windows 98 installed first, then Win 2000?
What I am getting at, is when you boot from Grub, does The Windows boot.ini come up with both options to boot Win 98 and 2000? In other words, Win 98 installed first, then Windows 2000, so that you have one boot.ini file handling both operating systems?
Also, what is the grub entry for Windows on the Grub menu?
I assume that both OS' are installed on different hard drives?
Ahh...you have Windows 2000 and Win 98 on the system!
I should have guessed that Knoppix is the boot image being used, by the initrd entry.
Let me ask, was Windows 98 installed first, then Win 2000?
What I am getting at, is when you boot from Grub, does The Windows boot.ini come up with both options to boot Win 98 and 2000? In other words, Win 98 installed first, then Windows 2000, so that you have one boot.ini file handling both operating systems?
Also, what is the grub entry for Windows on the Grub menu?
I assume that both OS' are installed on different hard drives?
Windows 98 was installed first on (hd0,0) "C:". Boot.ini is here. Then installed Windows 2000 to 7th partition (hd0,9) "G:". Both use same boot.ini.
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(13)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(7)\WINNT="Microsoft Windows 2000 Professional on NTFS P7" /fastdetect
C:\="Microsoft Windows 98"
I believe the GRUB installation was done as follows:
Copied GRUB binaries from Knoppix CD to (hd0,0)/boot/grub/. This is "C:" FAT32. Used "dd" to copy stage1 to sector "0" of floppy. Used "dd" to copy stage2 to floppy starting at sector "1". Then booted floppy, and from GRUB command line:
root (hd0,0)
setup (hd0)
To boot Win98/2000 I have:
title Windows 98 / Windows 2000 on (hd0)
unhide (hd0,0)
unhide (hd0,4)
hide (hd1,0)
hide (hd1,1)
rootnoverify (hd0,0)
chainloader +1
# makeactive
OK, to answer your obvious question, (hd0,0) has the active flag set and nothing else is ever made active, so the "#" should'nt matter.
So booting from the hard drive I get the GRUB menu first, then the boot.ini menu. No problems!
Same process booting from GRUB floppy first, except I have to tell it where to find the menu.lst. No problems!
Process is same booting from EBCD first, then loading GRUB floppy image from EBCD to a RAMdisk and booting the RAMdisk. The problem does'nt occur until I choose Win98 from the second menu.
The "initrd" is from the EBCD, not Knoppix, though I suspect the EBCD author must have started with some NIX distro.
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(13)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(7)\WINNT="Microsoft Windows 2000 Professional on NTFS P7" /fastdetect
C:\="Microsoft Windows 98"
I believe the GRUB installation was done as follows:
Copied GRUB binaries from Knoppix CD to (hd0,0)/boot/grub/. This is "C:" FAT32. Used "dd" to copy stage1 to sector "0" of floppy. Used "dd" to copy stage2 to floppy starting at sector "1". Then booted floppy, and from GRUB command line:
root (hd0,0)
setup (hd0)
To boot Win98/2000 I have:
title Windows 98 / Windows 2000 on (hd0)
unhide (hd0,0)
unhide (hd0,4)
hide (hd1,0)
hide (hd1,1)
rootnoverify (hd0,0)
chainloader +1
# makeactive
OK, to answer your obvious question, (hd0,0) has the active flag set and nothing else is ever made active, so the "#" should'nt matter.
So booting from the hard drive I get the GRUB menu first, then the boot.ini menu. No problems!
Same process booting from GRUB floppy first, except I have to tell it where to find the menu.lst. No problems!
Process is same booting from EBCD first, then loading GRUB floppy image from EBCD to a RAMdisk and booting the RAMdisk. The problem does'nt occur until I choose Win98 from the second menu.
The "initrd" is from the EBCD, not Knoppix, though I suspect the EBCD author must have started with some NIX distro.
I don't have a lot of time this am, as I am preparing for a job interview, but let me ask some basic questions. As you provide more information, unfortunately, more questions arise about the setup on your system. Bear with me.
Quote:Windows 98 was installed first on (hd0,0) "C:". Boot.ini is here. Then installed Windows 2000 to 7th partition (hd0,9) "G:". Both use same boot.ini.
The actual location of partition 7 is based on what combination of primary and logical partitions that you have on the drive. You probably already know this, but in grub, the partitions start at zero and move up the line. So technically partition 7 would be hd0,8, but that is dependent on the partiton setup on your system (after hd0,0, which is usually always a primary partiton).
You should be able to read the actual geometry of Grub, by typing the letter "c" at the Grub menu list to get the grub command line, then type;
geometry (hd0) (hit the enter key)
which shows you the geometry, as grub sees it for the primary master drive (hd0).
I assume that this might be a typo?
default=multi(0)disk(0)rdisk(0)partition(13)\WINNT
Should be default=multi(0)disk(0)rdisk(0)partition(7)\WINNT
Also, what are all the hide/unhide options? What is on (hd0,4) that you are unhiding?
Also, you have a primary slave drive in the system?
hide (hd1,0)
hide (hd1,1)
Quote:So booting from the hard drive I get the GRUB menu first, then the boot.ini menu. No problems!
...and both Win 98 and 2000 boot normally?
Quote:Windows 98 was installed first on (hd0,0) "C:". Boot.ini is here. Then installed Windows 2000 to 7th partition (hd0,9) "G:". Both use same boot.ini.
The actual location of partition 7 is based on what combination of primary and logical partitions that you have on the drive. You probably already know this, but in grub, the partitions start at zero and move up the line. So technically partition 7 would be hd0,8, but that is dependent on the partiton setup on your system (after hd0,0, which is usually always a primary partiton).
You should be able to read the actual geometry of Grub, by typing the letter "c" at the Grub menu list to get the grub command line, then type;
geometry (hd0) (hit the enter key)
which shows you the geometry, as grub sees it for the primary master drive (hd0).
I assume that this might be a typo?
default=multi(0)disk(0)rdisk(0)partition(13)\WINNT
Should be default=multi(0)disk(0)rdisk(0)partition(7)\WINNT
Also, what are all the hide/unhide options? What is on (hd0,4) that you are unhiding?
Also, you have a primary slave drive in the system?
hide (hd1,0)
hide (hd1,1)
Quote:So booting from the hard drive I get the GRUB menu first, then the boot.ini menu. No problems!
...and both Win 98 and 2000 boot normally?
My geometry as seen by GRUB is follows:
drive 0x80: C/H/S 1022/240/63, sectors=160086528, LBA (Primary Master)
Partition 0 -- fat - 0xb - Windows 98 os C:
Partition 4 -- fat - 0xb - Windows 98 Program Files (D: to Win98)
Partition 5 -- unk - 0x7 - Temp files
Partition 6 -- fat - 0xc - 13GB free space for whatever
Partition 7 -- fat - 0xb - Windows 95 os C: (Boots directly from GRUB!)
Partition 8 -- unk - 0x7 - Personal (favorites, e-mail, etc.)
Partition 9 -- unk - 0x7 - Windows 2000 os on NTFS G:
Partition 10 - fat - 0xb - Windows 2000 Program Files (D: to Win2k)
Partition 11 - fat - 0xb - Windows 2000 Paging File (I: to Win2k)
Partition 12 - unk - 0x7 - data
Partition 13 - fat - 0xb - data
Partition 14 - fat - 0xb - data
Partition 15 - fat - 0xb - Windows 2000 os on FAT32 G:
Partition 16 - fat - 0xc - data
Partition 17 - fat - 0xc - data
Partition 18 - unk - 0x7 - Windows 2000 os on NTFS G:
Partition 19 - fat - 0x6 - prevents Win9x last logical partition bug
Extended is (hd0,1) type 0xf.
NO Primary Slave.
drive 0x81: C/H/S 831/240/63, sectors=12594960, LBA (Secondary Master)
Partition 0 -- fat - 0xb - Windows 95 os C: (Boots directly from GRUB)
Partition 1 -- fat - 0x1 - FAT12 just testing
No Extended.
CD-RW drive is Secondary Slave.
It's an experiment in progress.
NOTE: 4, 5 & 6 were originally one large FAT32 partition. This is how Windows 2000 became G:.
NOTE: Windows 98 Program Files and Windows 2000 Program Files were originally on the same partition --- why they both have to be D:.
Not really a typo. Actually I have in boot.ini:
multi(0)disk(0)rdisk(0)partition(13)\WINNT="Microsoft Windows 2000 Professional on FAT32 P13" /fastdetect
multi(0)disk(0)rdisk(0)partition(7)\WINNT="Microsoft Windows 2000 Professional on NTFS P7" /fastdetect
multi(0)disk(0)rdisk(0)partition(19)\WINNT="Microsoft Windows 2000 Professional on NTFS P19" /fastdetect
Yes, all the Windows 2000 instances boot fine! "7" was the original installation. "19" is a clone made by restoring a Ghost image of "7". "13" is a clone made by booting into "19" and "drag & drop" copy of "7" to "13" (because you can't copy files from the one you are booted to). The boot files for all three instances of Windows 2000 are on C: {(hd0,0)}.
There is one obvious problem here:
drive 0x80 should be C/H/S 1024/240/63
drive 0x81 should be C/H/S 833/240/63
This is causing other problems for me. See "partnew" Command Writes Wrong Ending Cylinder in MPT
Quote:...and both Win 98 and 2000 boot normally?Yes!
drive 0x80: C/H/S 1022/240/63, sectors=160086528, LBA (Primary Master)
Partition 0 -- fat - 0xb - Windows 98 os C:
Partition 4 -- fat - 0xb - Windows 98 Program Files (D: to Win98)
Partition 5 -- unk - 0x7 - Temp files
Partition 6 -- fat - 0xc - 13GB free space for whatever
Partition 7 -- fat - 0xb - Windows 95 os C: (Boots directly from GRUB!)
Partition 8 -- unk - 0x7 - Personal (favorites, e-mail, etc.)
Partition 9 -- unk - 0x7 - Windows 2000 os on NTFS G:
Partition 10 - fat - 0xb - Windows 2000 Program Files (D: to Win2k)
Partition 11 - fat - 0xb - Windows 2000 Paging File (I: to Win2k)
Partition 12 - unk - 0x7 - data
Partition 13 - fat - 0xb - data
Partition 14 - fat - 0xb - data
Partition 15 - fat - 0xb - Windows 2000 os on FAT32 G:
Partition 16 - fat - 0xc - data
Partition 17 - fat - 0xc - data
Partition 18 - unk - 0x7 - Windows 2000 os on NTFS G:
Partition 19 - fat - 0x6 - prevents Win9x last logical partition bug
Extended is (hd0,1) type 0xf.
NO Primary Slave.
drive 0x81: C/H/S 831/240/63, sectors=12594960, LBA (Secondary Master)
Partition 0 -- fat - 0xb - Windows 95 os C: (Boots directly from GRUB)
Partition 1 -- fat - 0x1 - FAT12 just testing
No Extended.
CD-RW drive is Secondary Slave.
It's an experiment in progress.
NOTE: 4, 5 & 6 were originally one large FAT32 partition. This is how Windows 2000 became G:.
NOTE: Windows 98 Program Files and Windows 2000 Program Files were originally on the same partition --- why they both have to be D:.
Not really a typo. Actually I have in boot.ini:
multi(0)disk(0)rdisk(0)partition(13)\WINNT="Microsoft Windows 2000 Professional on FAT32 P13" /fastdetect
multi(0)disk(0)rdisk(0)partition(7)\WINNT="Microsoft Windows 2000 Professional on NTFS P7" /fastdetect
multi(0)disk(0)rdisk(0)partition(19)\WINNT="Microsoft Windows 2000 Professional on NTFS P19" /fastdetect
Yes, all the Windows 2000 instances boot fine! "7" was the original installation. "19" is a clone made by restoring a Ghost image of "7". "13" is a clone made by booting into "19" and "drag & drop" copy of "7" to "13" (because you can't copy files from the one you are booted to). The boot files for all three instances of Windows 2000 are on C: {(hd0,0)}.
There is one obvious problem here:
drive 0x80 should be C/H/S 1024/240/63
drive 0x81 should be C/H/S 833/240/63
This is causing other problems for me. See "partnew" Command Writes Wrong Ending Cylinder in MPT
Quote:...and both Win 98 and 2000 boot normally?Yes!