diff -up grub-0.97/stage2/disk_io.c.original grub-0.97/stage2/disk_io.c --- grub-0.97/stage2/disk_io.c.original 2012-06-06 18:21:26.231605730 +0900 +++ grub-0.97/stage2/disk_io.c 2012-06-06 18:22:04.982002533 +0900 @@ -400,7 +400,7 @@ sane_partition (void) return 1; if (!(current_partition & 0xFF000000uL) - && ((current_drive & 0xFFFFFF7F) < 8 + && ((current_drive & 0xFFFFFF7F) < MAX_HD_NUM || current_drive == cdrom_drive) && (current_partition & 0xFF) == 0xFF && ((current_partition & 0xFF00) == 0xFF00 diff -up grub-0.97/stage2/shared.h.original grub-0.97/stage2/shared.h --- grub-0.97/stage2/shared.h.original 2012-06-06 18:20:53.999229772 +0900 +++ grub-0.97/stage2/shared.h 2012-06-06 18:20:57.642151483 +0900 @@ -79,6 +79,8 @@ extern void *grub_scratch_mem; #define BIOSDISK_FLAG_LBA_EXTENSION 0x1 #define BIOSDISK_FLAG_CDROM 0x2 +#define MAX_HD_NUM 128 + /* * This is the filesystem (not raw device) buffer. * It is 32K in size, do not overrun!