[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Thinkpad X20 can't boot (stage2/bios.c)
From: |
HORIKAWA Kazunori |
Subject: |
Thinkpad X20 can't boot (stage2/bios.c) |
Date: |
Wed, 13 Dec 2000 01:04:53 +0900 |
User-agent: |
Wanderlust/2.4.0 (Rio) EMY/1.13.9 (Art is long, life is short) FLIM/1.14.0 (Ninokuchi) APEL/10.2 MULE XEmacs/21.1 (patch 12) (Channel Islands) (i386-debian-linux) |
Thinkpad X20 can't boot with GRUB.
GRUB reboots at stage2/bios.c:get_diskinfo().
if add dummy[10] to 'struct drive_parameters', GRUB boots fine.
below is a debug result
-------------------------------------------------------------
PC:thinkpad X20
grub> geometory (hd0)
version:48
0 0 0 0 0 bf 0 0 0 0 <------ bf? garbage?
PC:VAIO726
grub> geometry (hd0)
version:33
0 0 0 0 0 0 0 0 0 0 <------- OK
debug patch
--- grub-0.5.96.1-cvs.orig/stage2/bios.c Sat Nov 11 00:33:10 2000
+++ grub-0.5.96.1-cvs/stage2/bios.c Tue Dec 12 23:49:45 2000
@@ -134,6 +134,7 @@
unsigned long total_sectors = 0;
version = check_int13_extensions (drive);
+ printf("version:%d\n", version);
if (version)
{
struct drive_parameters
@@ -157,10 +158,27 @@
unsigned char device_path[8];
unsigned char reserved2;
unsigned char checksum;
+ unsigned char dummy[10];
} drp;
+ {
+ int i;
+ for (i = 0; i < sizeof(drp.dummy); i++)
+ {
+ drp.dummy[i] = 0;
+ }
+ }
drp.size = sizeof (drp);
err = get_diskinfo_int13_extensions (drive, &drp);
+ {
+ int i;
+ for (i = 0; i < sizeof(drp.dummy); i++)
+ {
+ printf("%x ", drp.dummy[i]);
+ }
+ }
+ printf("\n");
+
if (! err)
{
/* Set the LBA flag. */
- Thinkpad X20 can't boot (stage2/bios.c),
HORIKAWA Kazunori <=