From: "d.marlin" dmarlin@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@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."
resending... with correct subject line. sorry for the mistake.
d.marlin wrote:
From: "d.marlin" dmarlin@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@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:
else: raise SystemError, "Could not determine system architecture."return ARM()
On Fri, Oct 05, 2012 at 12:48:37AM -0500, d.marlin wrote:
From: "d.marlin" dmarlin@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@redhat.com
pyanaconda/platform.py | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-)
Thanks, I tweaked it slightly before pushing -- no need to save the return value in score, just return it. This also maintains consistency with the other classes.
anaconda-patches@lists.fedorahosted.org