@@ -568,6 +569,15 @@ class BootLoader(object):
log.debug("_is_valid_location(%s) returning %s" % (device.name,ret))
return ret
+ def _is_valid_partition(self, device, primary=None, desc=""):
+ ret = True
+ if device.type == "partition" and primary and not device.isPrimary:
+ self.errors.append(_("%s must be on a primary partition.") % desc)
+ ret = False
+
+ log.debug("_is_valid_partition(%s) returning %s" % (device.name,ret))
+ return ret
+
#
# target/stage1 device access
#
@@ -766,6 +776,10 @@ class BootLoader(object):
desc=self.stage2_description):
valid = False
+ if not self._is_valid_partition(device,
+ primary=self.stage2_must_be_primary):
+ valid = False
+
if not self._is_valid_md(device, device_types=self.stage2_device_types,
raid_levels=self.stage2_raid_levels,
metadata=self.stage2_raid_metadata,
@@ -1100,6 +1114,7 @@ class GRUB(BootLoader):