Also please send your input to bug report addresses (e.g. [EMAIL PROTECTED]). 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 > > [EMAIL PROTECTED] > 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 [EMAIL PROTECTED] 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 > [EMAIL PROTECTED] > http://lists.alioth.debian.org/mailman/listinfo/pkg-grub-devel > -- Robert Millan My spam trap is [EMAIL PROTECTED] Note: this address is only intended for spam harvesters. Writing to it will get you added to my black list. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]