diff -urN grub-0.97.orig/stage2/fsys_ext2fs.c grub-0.97/stage2/fsys_ext2fs.c --- grub-0.97.orig/stage2/fsys_ext2fs.c 2004-08-08 18:19:18.000000000 +0000 +++ grub-0.97/stage2/fsys_ext2fs.c 2008-09-16 19:31:15.000000000 +0000 @@ -254,7 +254,7 @@ { int retval = 1; - if ((((current_drive & 0x80) || (current_slice != 0)) + if ((((current_slice != 0)) && (current_slice != PC_SLICE_TYPE_EXT2FS) && (current_slice != PC_SLICE_TYPE_LINUX_RAID) && (! IS_PC_SLICE_TYPE_BSD_WITH_FS (current_slice, FS_EXT2FS)) diff -urN grub-0.97.orig/stage2/fsys_fat.c grub-0.97/stage2/fsys_fat.c --- grub-0.97.orig/stage2/fsys_fat.c 2005-03-15 16:52:00.000000000 +0000 +++ grub-0.97/stage2/fsys_fat.c 2008-09-16 19:31:26.000000000 +0000 @@ -70,7 +70,7 @@ __u32 magic, first_fat; /* Check partition type for harddisk */ - if (((current_drive & 0x80) || (current_slice != 0)) + if (((current_slice != 0)) && ! IS_PC_SLICE_TYPE_FAT (current_slice) && (! IS_PC_SLICE_TYPE_BSD_WITH_FS (current_slice, FS_MSDOS))) return 0; diff -urN grub-0.97.orig/stage2/fsys_ffs.c grub-0.97/stage2/fsys_ffs.c --- grub-0.97.orig/stage2/fsys_ffs.c 2003-07-09 11:45:52.000000000 +0000 +++ grub-0.97/stage2/fsys_ffs.c 2008-09-16 19:31:32.000000000 +0000 @@ -82,7 +82,7 @@ { int retval = 1; - if ((((current_drive & 0x80) || (current_slice != 0)) + if ((((current_slice != 0)) && ! IS_PC_SLICE_TYPE_BSD_WITH_FS (current_slice, FS_BSDFFS)) || part_length < (SBLOCK + (SBSIZE / DEV_BSIZE)) || !devread (SBLOCK, 0, SBSIZE, (char *) SUPERBLOCK) diff -urN grub-0.97.orig/stage2/fsys_minix.c grub-0.97/stage2/fsys_minix.c --- grub-0.97.orig/stage2/fsys_minix.c 2003-07-09 11:45:53.000000000 +0000 +++ grub-0.97/stage2/fsys_minix.c 2008-09-16 19:32:01.000000000 +0000 @@ -160,7 +160,7 @@ int minix_mount (void) { - if (((current_drive & 0x80) || current_slice != 0) + if ((current_slice != 0) && ! IS_PC_SLICE_TYPE_MINIX (current_slice) && ! IS_PC_SLICE_TYPE_BSD_WITH_FS (current_slice, FS_OTHER)) return 0; /* The partition is not of MINIX type */ diff -urN grub-0.97.orig/stage2/fsys_ufs2.c grub-0.97/stage2/fsys_ufs2.c --- grub-0.97.orig/stage2/fsys_ufs2.c 2004-06-19 12:17:52.000000000 +0000 +++ grub-0.97/stage2/fsys_ufs2.c 2008-09-16 19:32:32.000000000 +0000 @@ -87,7 +87,7 @@ sblockloc = -1; type = 0; - if (! (((current_drive & 0x80) || (current_slice != 0)) + if (! (((current_slice != 0)) && ! IS_PC_SLICE_TYPE_BSD_WITH_FS (current_slice, FS_BSDFFS))) { for (i = 0; sblock_try[i] != -1; ++i) diff -urN grub-0.97.orig/stage2/fsys_vstafs.c grub-0.97/stage2/fsys_vstafs.c --- grub-0.97.orig/stage2/fsys_vstafs.c 2003-07-09 11:45:53.000000000 +0000 +++ grub-0.97/stage2/fsys_vstafs.c 2008-09-16 19:32:39.000000000 +0000 @@ -47,7 +47,7 @@ { int retval = 1; - if( (((current_drive & 0x80) || (current_slice != 0)) + if( (((current_slice != 0)) && current_slice != PC_SLICE_TYPE_VSTAFS) || ! devread (0, 0, BLOCK_SIZE, (char *) FSYS_BUF) || FIRST_SECTOR->fs_magic != 0xDEADFACE)