Bug#345931: A patch solving #345931

Robert Millan rmh at aybabtu.com
Mon Sep 25 14:25:13 UTC 2006


Also please send your input to bug report addresses (e.g.
345931 at bugs.debian.org).  Otherwise it gets lost here.

On Mon, Sep 25, 2006 at 04:17:15PM +0200, Robert Millan wrote:
> On Mon, Sep 11, 2006 at 06:26:37PM +0200, Mats Erik Andersson wrote:
> >   Venerable Maintainers of Grub,
> > 
> >  I offer you a patch that should close bug report  
> >  #345931.
> >  
> >  The patch has been built on top of grub-0.97-13 with
> >  success and it repaired with honours mbr-installs of
> > 
> >         grub-0.97-1ubuntu1   on kubuntu 6.0.6
> >   and
> >         grub-0.95+cvs20040624-17sarge1 on Debian
> > Sarge.
> 
> Does your patch work with grub from debian sid?
> 
> Does GRUB 2 also exhibit this problem?
> 
> 
> >  As you will see the coding is independent of any
> >  Debian patches and contains a few lines of code for
> >  the source file
> > 
> >          grub-0.97/stage2/builtins.c
> > 
> >  and thus would easily integrate in the upstream  
> >  version 0.97. I leave to you to decide whether the 
> >  author ought to be informed, since I am still a
> >  novice in these matters.
> > 
> >           Best regards
> > 
> >             Mats Erik Andersson
> >             ynglingatal at yahoo.se
> Content-Description: 526972506-drive_correction.diff
> > diff -Naur grub-0.97.orig/stage2/builtins.c grub-0.97/stage2/builtins.c
> > --- grub-0.97.orig/stage2/builtins.c	2006-09-11 16:08:32.261227280 +0200
> > +++ grub-0.97/stage2/builtins.c	2006-09-11 16:15:54.035067448 +0200
> > @@ -1953,13 +1953,30 @@
> >    *((unsigned char *) (stage1_buffer + STAGE1_FORCE_LBA)) = is_force_lba;
> >  
> >    /* If DEST_DRIVE is a hard disk, enable the workaround, which is
> > -     for buggy BIOSes which don't pass boot drive correctly. Instead,
> > -     they pass 0x00 or 0x01 even when booted from 0x80.  */
> > +   * for buggy BIOSes which don't pass boot drive correctly. Instead,
> > +   *  they pass 0x00 or 0x01 even when booted from 0x80.  */
> >    if (dest_drive & BIOS_FLAG_FIXED_DISK)
> > -    /* Replace the jmp (2 bytes) with double nop's.  */
> > -    *((unsigned short *) (stage1_buffer + STAGE1_BOOT_DRIVE_CHECK))
> > -      = 0x9090;
> > -  
> > +  {
> > +    if ( *((unsigned char *) (stage1_buffer + STAGE1_BOOT_DRIVE_CHECK)) == 0xeb )
> > +            /* For version 0.97: 
> > +	     * Replace the jmp (2 bytes) with double nop's.  */
> > +       *((unsigned short *) (stage1_buffer + STAGE1_BOOT_DRIVE_CHECK))
> > +         = 0x9090;
> > +    else if ( *((unsigned char *) (stage1_buffer + STAGE1_BOOT_DRIVE_CHECK)) == 0x80 )
> > +         {   
> > +            /* For versions 0.94-96:
> > +	     *  Set the boot drive mask. This is a workaround for buggy BIOSes which
> > +            *  don't pass boot drive correctly. Instead, they pass 0x00 even when
> > +            *  booted from 0x80.
> > +	     *  Rem: the old STAGE1_BOOT_DRIVE_MASK equals STAGE1_BOOT_DRIVE_CHECK + 2  */
> > +         *((unsigned char *) (stage1_buffer + STAGE1_BOOT_DRIVE_CHECK + 2 ))
> > +             = (dest_drive & BIOS_FLAG_FIXED_DISK);
> > +	  }
> > +        else
> > +	      /* The boot sector is older than version 0.94.
> > +	       * Changing to a "nop" could make 0.92 and 0.93 acceptable. */
> > +	   goto fail;
> > +  }
> >    /* Read the first sector of Stage 2.  */
> >    disk_read_hook = disk_read_savesect_func;
> >    if (grub_read (stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE)
> 
> -- 
> Robert Millan
> 
> My spam trap is honeypot at aybabtu.com.  Note: this address is only intended for
> spam harvesters.  Writing to it will get you added to my black list.
> 
> _______________________________________________
> Pkg-grub-devel mailing list
> Pkg-grub-devel at lists.alioth.debian.org
> http://lists.alioth.debian.org/mailman/listinfo/pkg-grub-devel
> 

-- 
Robert Millan

My spam trap is honeypot at aybabtu.com.  Note: this address is only intended for
spam harvesters.  Writing to it will get you added to my black list.




More information about the Pkg-grub-devel mailing list