[Top][All Lists]
[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
Re: [PATCH] Create floppy emulation boot CD with grub-mkimage, Robert Millan, 2008/02/08