grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Create floppy emulation boot CD with grub-mkimage


From: Bean
Subject: Re: [PATCH] Create floppy emulation boot CD with grub-mkimage
Date: Sat, 9 Feb 2008 19:56:16 +0800

On Feb 9, 2008 6:45 AM, Robert Millan <address@hidden> wrote:
> On Fri, Feb 08, 2008 at 11:03:07PM +0100, Christian Franke wrote:
> >
> > Yes, all of my boot CDs work :-)
> >
> > Meantime, I found the problem: cdboot.img was > 512 bytes. I forgot to
> > add the ld script necessary for the Cygwin build (-N does not work).
> > Should have checked this first, sorry.
>
> Is this a remaining patch that was needed for Cygwin?
>
> > Now the CD boots, but the result is interesting:
> >
> > Real PC: escape to rescue mode, root=hd31, no (cd0) device, no modules.
> >
> > VMWare: same.
> >
> > VirtualPC: escape to rescue mode, root=cd15, (cd0) exists, normal mode
> > can be started manually.
> >
> > VirtualBox: Works as expected.

For VirtualPC, try the following patch:

diff --git a/kern/i386/pc/init.c b/kern/i386/pc/init.c
index 7237492..5eb5484 100644
--- a/kern/i386/pc/init.c
+++ b/kern/i386/pc/init.c
@@ -77,9 +77,9 @@ make_install_device (void)
       if (grub_root_drive == 0xFF)
         grub_root_drive = grub_boot_drive;

-      if (grub_root_drive >= GRUB_BIOSDISK_MACHINE_CDROM_START)
-        grub_sprintf (dev, "(cd%u",
-                     grub_root_drive - GRUB_BIOSDISK_MACHINE_CDROM_START);
+      if ((grub_root_drive >= GRUB_BIOSDISK_MACHINE_CDROM_START) &&
+          (grub_root_drive < GRUB_BIOSDISK_MACHINE_CDROM_END))
+       grub_strcpy (dev, "(cd0)");
       else
         grub_sprintf (dev, "(%cd%u",
                      (grub_root_drive & 0x80) ? 'h' : 'f',

For Real PC, you should be able to fix it by setting
GRUB_BIOSDISK_MACHINE_CDROM_START to 0x9F in
/include/grub/i386/pc/biosdisk.h, but i don't recommend using it as
default value.

-- 
Bean




reply via email to

[Prev in Thread] Current Thread [Next in Thread]