summaryrefslogtreecommitdiffstats
path: root/pyanaconda/bootloader.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyanaconda/bootloader.py')
-rw-r--r--pyanaconda/bootloader.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/pyanaconda/bootloader.py b/pyanaconda/bootloader.py
index 6ea74776f..b3a60ff69 100644
--- a/pyanaconda/bootloader.py
+++ b/pyanaconda/bootloader.py
@@ -36,6 +36,7 @@ from pyanaconda.constants import *
from pyanaconda.storage.errors import StorageError
from pyanaconda.storage.fcoe import fcoe
import pyanaconda.network
+from pyanaconda import platform as _platform
import gettext
_ = lambda x: gettext.ldgettext("anaconda", x)
@@ -44,7 +45,6 @@ N_ = lambda x: x
import logging
log = logging.getLogger("storage")
-
def get_boot_block(device, seek_blocks=0):
status = device.status
if not status:
@@ -2191,6 +2191,26 @@ class UBOOT(BootLoader):
if rc:
raise BootLoaderError("bootloader install failed")
+
+# every platform that wants a bootloader needs to be in this dict
+bootloader_by_platform = {_platform.X86: GRUB2,
+ _platform.EFI: EFIGRUB,
+ _platform.MacEFI: MacEFIGRUB,
+ _platform.PPC: GRUB2,
+ _platform.IPSeriesPPC: IPSeriesGRUB2,
+ _platform.NewWorldPPC: MacYaboot,
+ _platform.S390: ZIPL,
+ _platform.Sparc: SILO,
+ _platform.ARM: UBOOT,
+ _platform.omapARM: UBOOT}
+
+def get_bootloader(platform):
+ platform_name = platform.__class__.__name__
+ cls = bootloader_by_platform.get(platform.__class__, BootLoader)
+ log.info("bootloader %s on %s platform" % (cls.__name__, platform_name))
+ return cls(platform)
+
+
# anaconda-specific functions
def writeSysconfigKernel(storage, version):