Handle USB pendrives exposed as floppies.

* grub-core/boot/i386/pc/boot.S: Check LBA even on what appears to be
	floppy.
	* grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_open): Likewise.
	Check for partitions on all devices.
This commit is contained in:
Vladimir 'phcoder' Serbinenko 2010-08-27 03:44:55 +02:00
parent e35e46fce1
commit 671404469c
3 changed files with 11 additions and 6 deletions

View file

@ -1,3 +1,12 @@
2010-08-27 Vladimir Serbinenko <phcoder@gmail.com>
Handle USB pendrives exposed as floppies.
* grub-core/boot/i386/pc/boot.S: Check LBA even on what appears to be
floppy.
* grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_open): Likewise.
Check for partitions on all devices.
2010-08-25 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/term/ieee1275/ofconsole.c (put): Correct prototype.

View file

@ -153,10 +153,6 @@ real_start:
/* set %si to the disk address packet */
movw $disk_address_packet, %si
/* do not probe LBA if the drive is a floppy */
testb $GRUB_BOOT_MACHINE_BIOS_HD_FLAG, %dl
jz LOCAL(chs_mode)
/* check if LBA is supported */
movb $0x41, %ah
movw $0x55aa, %bx

View file

@ -107,7 +107,7 @@ grub_biosdisk_open (const char *name, grub_disk_t disk)
if (drive < 0)
return grub_errno;
disk->has_partitions = ((drive & 0x80) && (drive != cd_drive));
disk->has_partitions = 1;
disk->id = drive;
data = (struct grub_biosdisk_data *) grub_zalloc (sizeof (*data));
@ -123,7 +123,7 @@ grub_biosdisk_open (const char *name, grub_disk_t disk)
/* TODO: get the correct size. */
total_sectors = GRUB_DISK_SIZE_UNKNOWN;
}
else if (drive & 0x80)
else
{
/* HDD */
int version;