2005-03-15 Yoshinori K. Okuji <okuji@enbug.org>

* stage2/fsys_fat.c (fat_mount): Ignore the 3rd bit of a media
  descriptor, because some BIOSes overwrite this value, according
  to the storage mode (e.g. USB Floppy or USB HDD).
This commit is contained in:
okuji 2005-03-15 16:54:24 +00:00
parent 257fff664f
commit f307cbf7c6
4 changed files with 15 additions and 6 deletions

View file

@ -1,3 +1,9 @@
2005-03-15 Yoshinori K. Okuji <okuji@enbug.org>
* stage2/fsys_fat.c (fat_mount): Ignore the 3rd bit of a media
descriptor, because some BIOSes overwrite this value, according
to the storage mode (e.g. USB Floppy or USB HDD).
2005-02-16 Yoshinori K. Okuji <okuji@enbug.org> 2005-02-16 Yoshinori K. Okuji <okuji@enbug.org>
* grub/asmstub.c (grub_stage2): Remove the attribute `volatile' * grub/asmstub.c (grub_stage2): Remove the attribute `volatile'

View file

@ -1,5 +1,5 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.23. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.23.
.TH GRUB "8" "February 2005" "grub (GNU GRUB 0.96)" FSF .TH GRUB "8" "March 2005" "grub (GNU GRUB 0.96)" FSF
.SH NAME .SH NAME
grub \- the grub shell grub \- the grub shell
.SH SYNOPSIS .SH SYNOPSIS

View file

@ -1,5 +1,5 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.23. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.23.
.TH MBCHK "1" "February 2005" "mbchk (GNU GRUB 0.96)" FSF .TH MBCHK "1" "March 2005" "mbchk (GNU GRUB 0.96)" FSF
.SH NAME .SH NAME
mbchk \- check the format of a Multiboot kernel mbchk \- check the format of a Multiboot kernel
.SH SYNOPSIS .SH SYNOPSIS

View file

@ -1,6 +1,6 @@
/* /*
* GRUB -- GRand Unified Bootloader * GRUB -- GRand Unified Bootloader
* Copyright (C) 2000, 2001 Free Software Foundation, Inc. * Copyright (C) 2000,2001,2005 Free Software Foundation, Inc.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -149,8 +149,7 @@ fat_mount (void)
FAT_SUPER->clust_eof_marker = 0xff8; FAT_SUPER->clust_eof_marker = 0xff8;
} }
} }
/* Now do some sanity checks */ /* Now do some sanity checks */
if (FAT_CVT_U16(bpb.bytes_per_sect) != (1 << FAT_SUPER->sectsize_bits) if (FAT_CVT_U16(bpb.bytes_per_sect) != (1 << FAT_SUPER->sectsize_bits)
@ -184,7 +183,11 @@ fat_mount (void)
magic = 0x0f00; magic = 0x0f00;
} }
if (first_fat != (magic | bpb.media)) /* Ignore the 3rd bit, because some BIOSes assigns 0xF0 to the media
descriptor, even if it is a so-called superfloppy (e.g. an USB key).
The check may be too strict for this kind of stupid BIOSes, as
they overwrite the media descriptor. */
if ((first_fat | 0x8) != (magic | bpb.media | 0x8))
return 0; return 0;
FAT_SUPER->cached_fat = - 2 * FAT_CACHE_SIZE; FAT_SUPER->cached_fat = - 2 * FAT_CACHE_SIZE;