[PATCH anaconda/master] Add ARM-OMAP class to create a uboot partition to support the boot-loader.
David A. Marlin
dmarlin at redhat.com
Fri Oct 5 13:54:50 UTC 2012
resending... with correct subject line. sorry for the mistake.
d.marlin wrote:
> From: "d.marlin" <dmarlin at redhat.com>
>
> Break out the setup of ARM-OMAP systems, as they need to have a vfat partition
> at the start of the disk in order for the SOC to load the initial boot code.
> This also sets the weight for the '/' partition to ensure it is the last
> partition on the image.
>
> Signed-off-by: David A. Marlin <dmarlin at redhat.com>
> ---
> pyanaconda/platform.py | 40 +++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 39 insertions(+), 1 deletion(-)
>
> diff --git a/pyanaconda/platform.py b/pyanaconda/platform.py
> index ea5b92f..ad89011 100644
> --- a/pyanaconda/platform.py
> +++ b/pyanaconda/platform.py
> @@ -350,6 +350,40 @@ class ARM(Platform):
> self._armMachine = iutil.getARMMachine()
> return self._armMachine
>
> +class omapARM(ARM):
> + _boot_stage1_format_types = ["vfat"]
> + _boot_stage1_device_types = ["partition"]
> + _boot_stage1_mountpoints = ["/boot/uboot"]
> + _boot_uboot_description = N_("U-Boot Partition")
> + _boot_descriptions = {"partition": _boot_uboot_description}
> +
> + def setDefaultPartitioning(self):
> + """Return the ARM-OMAP platform-specific partitioning information."""
> + from storage.partspec import PartSpec
> + ret = [PartSpec(mountpoint="/boot/uboot", fstype="vfat",
> + size=20, maxSize=200, grow=True,
> + weight=self.weight(fstype="vfat", mountpoint="/boot/uboot"))]
> + ret.append(PartSpec(mountpoint="/", fstype="ext4",
> + size=2000, maxSize=3000,
> + weight=self.weight(mountpoint="/")))
> + return ret
> +
> + def weight(self, fstype=None, mountpoint=None):
> + """Return the ARM-OMAP platform-specific weights for the uboot
> + and / partitions. On OMAP, uboot must be the first partition,
> + and '/' must be the last partition, so we try to weight them
> + accordingly."""
> + score = Platform.weight(self, fstype=fstype, mountpoint=mountpoint)
> + if fstype == "vfat" and mountpoint == "/boot/uboot":
> + score = 6000
> + elif mountpoint == "/":
> + score = -100
> +
> + if score:
> + return score
> + else:
> + return 0
> +
> def getPlatform():
> """Check the architecture of the system and return an instance of a
> Platform subclass to match. If the architecture could not be determined,
> @@ -377,6 +411,10 @@ def getPlatform():
> elif iutil.isX86():
> return X86()
> elif iutil.isARM():
> - return ARM()
> + armMachine = iutil.getARMMachine()
> + if (armMachine == "omap" ):
> + return omapARM()
> + else:
> + return ARM()
> else:
> raise SystemError, "Could not determine system architecture."
>
More information about the anaconda-patches
mailing list