summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kickstart.py8
-rw-r--r--platform.py28
-rw-r--r--storage/formats/__init__.py2
3 files changed, 20 insertions, 18 deletions
diff --git a/kickstart.py b/kickstart.py
index 1b44ed488..34714898e 100644
--- a/kickstart.py
+++ b/kickstart.py
@@ -662,11 +662,11 @@ class Partition(commands.partition.F12_Partition):
type = "EFI System Partition"
pd.fsopts = "defaults,uid=0,gid=0,umask=0077,shortname=winnt"
kwargs["weight"] = self.handler.anaconda.platform.weight(fstype="efi")
- elif pd.mountpoint == "/boot":
- type = self.handler.anaconda.platform.bootFSType
else:
if pd.fstype != "":
type = pd.fstype
+ elif pd.mountpoint == "/boot":
+ type = self.handler.anaconda.platform.defaultBootFSType
else:
type = storage.defaultFSType
@@ -800,11 +800,11 @@ class Raid(commands.raid.F12_Raid):
raise KickstartValueError, formatErrorMsg(self.lineno, msg="PV partition defined multiple times")
rd.mountpoint = ""
- elif rd.mountpoint == "/boot" and self.handler.anaconda.platform.supportsMdRaidBoot:
- type = self.handler.anaconda.platform.bootFSType
else:
if rd.fstype != "":
type = rd.fstype
+ elif rd.mountpoint == "/boot" and self.handler.anaconda.platform.supportsMdRaidBoot:
+ type = self.handler.anaconda.platform.defaultBootFSType
else:
type = storage.defaultFSType
diff --git a/platform.py b/platform.py
index 4140c4f81..fdc895aa9 100644
--- a/platform.py
+++ b/platform.py
@@ -38,7 +38,7 @@ class Platform(object):
during installation. The intent is to eventually encapsulate all the
architecture quirks in one place to avoid lots of platform checks
throughout anaconda."""
- _bootFSType = "ext3"
+ _bootFSTypes = ["ext3"]
_diskType = parted.diskType["msdos"]
_isEfi = iutil.isEfi()
_minimumSector = 0
@@ -71,9 +71,14 @@ class Platform(object):
return mntDict.get("/boot", mntDict.get("/"))
@property
- def bootFSType(self):
+ def defaultBootFSType(self):
"""Return the default filesystem type for the boot partition."""
- return self._bootFSType
+ return self._bootFSTypes[0]
+
+ @property
+ def bootFSTypes(self):
+ """Return a list of all valid filesystem types for the boot partition."""
+ return self._bootFSTypes
def bootloaderChoices(self, bl):
"""Return the default list of places to install the bootloader.
@@ -118,12 +123,9 @@ class Platform(object):
if req.type == "mdarray" and not self.supportsMdRaidBoot:
errors.append(_("Bootable partitions cannot be on a RAID device."))
- # Lots of filesystems types don't support /boot.
- if not req.format.bootable:
- errors.append(_("Bootable partitions cannot be on an %s filesystem.") % req.format.name)
-
- # vfat /boot is insane.
- if req == self.anaconda.id.storage.rootDevice and req.format.type == "vfat":
+ # Make sure /boot is on a supported FS type. This prevents crazy
+ # things like boot on vfat.
+ if not req.format.bootable or not req.format.type in self.bootFSTypes:
errors.append(_("Bootable partitions cannot be on an %s filesystem.") % req.format.type)
if req.type == "luks/dm-crypt":
@@ -162,7 +164,7 @@ class Platform(object):
def setDefaultPartitioning(self):
"""Return the default platform-specific partitioning information."""
- return [PartSpec(mountpoint="/boot", fstype=self.bootFSType, size=200,
+ return [PartSpec(mountpoint="/boot", fstype=self.defaultBootFSType, size=200,
weight=self.weight(mountpoint="/boot"))]
@property
@@ -195,7 +197,7 @@ class Platform(object):
return 0
class EFI(Platform):
- _bootFSType = "ext4"
+ _bootFSTypes = ["ext4", "ext3", "ext2"]
_diskType = parted.diskType["gpt"]
_minBootPartSize = 50
_maxBootPartSize = 256
@@ -285,7 +287,7 @@ class IA64(EFI):
EFI.__init__(self, anaconda)
class PPC(Platform):
- _bootFSType = "ext4"
+ _bootFSTypes = ["ext4", "ext3", "ext2"]
_packages = ["yaboot"]
_ppcMachine = iutil.getPPCMachine()
_supportsMdRaidBoot = True
@@ -456,7 +458,7 @@ class Sparc(Platform):
return start+1
class X86(EFI):
- _bootFSType = "ext4"
+ _bootFSTypes = ["ext4", "ext3", "ext2"]
_packages = ["grub"]
_supportsMdRaidBoot = True
diff --git a/storage/formats/__init__.py b/storage/formats/__init__.py
index ea60ccbed..ab33211d2 100644
--- a/storage/formats/__init__.py
+++ b/storage/formats/__init__.py
@@ -47,7 +47,7 @@ def get_default_filesystem_type(boot=None):
import platform
if boot:
- fstypes = [platform.getPlatform(None).bootFSType]
+ fstypes = [platform.getPlatform(None).defaultBootFSType]
else:
fstypes = default_fstypes