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:
parent
e35e46fce1
commit
671404469c
3 changed files with 11 additions and 6 deletions
|
@ -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>
|
2010-08-25 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
* grub-core/term/ieee1275/ofconsole.c (put): Correct prototype.
|
* grub-core/term/ieee1275/ofconsole.c (put): Correct prototype.
|
||||||
|
|
|
@ -153,10 +153,6 @@ real_start:
|
||||||
/* set %si to the disk address packet */
|
/* set %si to the disk address packet */
|
||||||
movw $disk_address_packet, %si
|
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 */
|
/* check if LBA is supported */
|
||||||
movb $0x41, %ah
|
movb $0x41, %ah
|
||||||
movw $0x55aa, %bx
|
movw $0x55aa, %bx
|
||||||
|
|
|
@ -107,7 +107,7 @@ grub_biosdisk_open (const char *name, grub_disk_t disk)
|
||||||
if (drive < 0)
|
if (drive < 0)
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
|
|
||||||
disk->has_partitions = ((drive & 0x80) && (drive != cd_drive));
|
disk->has_partitions = 1;
|
||||||
disk->id = drive;
|
disk->id = drive;
|
||||||
|
|
||||||
data = (struct grub_biosdisk_data *) grub_zalloc (sizeof (*data));
|
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. */
|
/* TODO: get the correct size. */
|
||||||
total_sectors = GRUB_DISK_SIZE_UNKNOWN;
|
total_sectors = GRUB_DISK_SIZE_UNKNOWN;
|
||||||
}
|
}
|
||||||
else if (drive & 0x80)
|
else
|
||||||
{
|
{
|
||||||
/* HDD */
|
/* HDD */
|
||||||
int version;
|
int version;
|
||||||
|
|
Loading…
Add table
Reference in a new issue