Do not embed when there are multiple (top-level) partmaps.
This commit is contained in:
parent
df3eb88f04
commit
6b654bb0a5
2 changed files with 20 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
|||
2010-07-04 Grégoire Sutre <gregoire.sutre@gmail.com>
|
||||
|
||||
* util/i386/pc/grub-setup.c (setup): Do not embed when there are
|
||||
multiple (top-level) partmaps.
|
||||
|
||||
2010-07-02 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
Bidi and diacritics support.
|
||||
|
|
|
@ -95,6 +95,7 @@ setup (const char *dir,
|
|||
grub_uint16_t core_sectors;
|
||||
grub_device_t root_dev, dest_dev;
|
||||
const char *dest_partmap;
|
||||
int multiple_partmaps;
|
||||
grub_uint8_t *boot_drive;
|
||||
grub_disk_addr_t *kernel_sector;
|
||||
grub_uint16_t *boot_drive_check;
|
||||
|
@ -356,10 +357,17 @@ setup (const char *dir,
|
|||
{
|
||||
if (p->parent)
|
||||
return 0;
|
||||
dest_partmap = p->partmap->name;
|
||||
return 1;
|
||||
if (dest_partmap == NULL)
|
||||
dest_partmap = p->partmap->name;
|
||||
else if (strcmp (dest_partmap, p->partmap->name) != 0)
|
||||
{
|
||||
multiple_partmaps = 1;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
dest_partmap = 0;
|
||||
multiple_partmaps = 0;
|
||||
grub_partition_iterate (dest_dev->disk, identify_partmap);
|
||||
|
||||
if (! dest_partmap)
|
||||
|
@ -367,6 +375,11 @@ setup (const char *dir,
|
|||
grub_util_warn (_("Attempting to install GRUB to a partitionless disk. This is a BAD idea."));
|
||||
goto unable_to_embed;
|
||||
}
|
||||
if (multiple_partmaps)
|
||||
{
|
||||
grub_util_warn (_("Attempting to install GRUB to a disk with multiple partition labels. This is not supported yet."));
|
||||
goto unable_to_embed;
|
||||
}
|
||||
|
||||
if (strcmp (dest_partmap, "msdos") == 0)
|
||||
grub_partition_iterate (dest_dev->disk, find_usable_region_msdos);
|
||||
|
|
Loading…
Reference in a new issue