diff -rup --exclude CVS grub2.orig/disk/i386/pc/biosdisk.c grub2/disk/i386/pc/biosdisk.c --- grub2.orig/disk/i386/pc/biosdisk.c 2008-02-03 20:29:51.500000000 +0100 +++ grub2/disk/i386/pc/biosdisk.c 2008-02-10 12:26:25.843750000 +0100 @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -391,6 +392,16 @@ GRUB_MOD_INIT(biosdisk) } } + /* Some BIOSes do not report INT13 Extensions for the + boot CD. Ensure that the boot CD can be accessed. */ + if (! found + && GRUB_BIOSDISK_MACHINE_CDROM_START <= grub_boot_drive + && grub_boot_drive < GRUB_BIOSDISK_MACHINE_CDROM_END) + { + cd_start = grub_boot_drive; + found = 1; + } + cd_count = found; } diff -rup --exclude CVS grub2.orig/include/grub/i386/pc/biosdisk.h grub2/include/grub/i386/pc/biosdisk.h --- grub2.orig/include/grub/i386/pc/biosdisk.h 2008-02-03 20:29:52.187500000 +0100 +++ grub2/include/grub/i386/pc/biosdisk.h 2008-02-09 15:55:04.713289500 +0100 @@ -25,7 +25,7 @@ #define GRUB_BIOSDISK_FLAG_LBA 1 #define GRUB_BIOSDISK_FLAG_CDROM 2 -#define GRUB_BIOSDISK_MACHINE_CDROM_START 0xe0 +#define GRUB_BIOSDISK_MACHINE_CDROM_START 0x9f #define GRUB_BIOSDISK_MACHINE_CDROM_END 0xf0 struct grub_biosdisk_data diff -rup --exclude CVS grub2.orig/include/grub/i386/pc/kernel.h grub2/include/grub/i386/pc/kernel.h --- grub2.orig/include/grub/i386/pc/kernel.h 2008-02-03 20:29:52.375000000 +0100 +++ grub2/include/grub/i386/pc/kernel.h 2008-02-10 00:16:43.812500000 +0100 @@ -71,7 +71,7 @@ extern grub_int32_t grub_memdisk_image_s extern char grub_prefix[]; /* The boot BIOS drive number. */ -extern grub_int32_t grub_boot_drive; +extern grub_int32_t EXPORT_VAR(grub_boot_drive); /* The root BIOS drive number. */ extern grub_int32_t grub_root_drive;