[PATCH lorax/master] Add initial support for ARM based systems. - try 2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




This is my second attempt to add ARM support to Lorax. Based on feedback and comments from other users we have reworked the patch to install all supported ARM kernel variants to create a single install tree. This eliminates the platform hash/lookup from the earlier version and simplifies the patch a bit.

The patch was made against lorax/master, and tested by applying it to lorax-17.25.

-----

From: "d.marlin" <dmarlin@xxxxxxxxxx>

Signed-off-by: David A. Marlin <dmarlin@xxxxxxxxxx>
---------------------------------------------------

diff --git a/share/arm.tmpl b/share/arm.tmpl
new file mode 100644
index 0000000..1a1026c
--- /dev/null
+++ b/share/arm.tmpl
@@ -0,0 +1,74 @@
+<%page args="kernels, runtime_img, runtime_base, basearch, outroot, arch"/>
+<%
+configdir="tmp/config_files/uboot"
+PXEBOOTDIR="images/pxeboot"
+BOOTDIR="boot"
+KERNELDIR=PXEBOOTDIR
+LIVEDIR="LiveOS"
+
+# different platforms use different kernel load addresses.
+# include a 'baseline' kernel for no 'flavor'.
+kernelAddress = { 'baseline' : '0x00008000',
+                  'highbank' : '0x00008000',
+                  'imx'      : '0x90008000',
+                  'kirkwood' : '0x00008000',
+                  'omap'     : '0x80008000',
+                  'tegra'    : '0x00008000',
+                }
+%>
+
+mkdir ${LIVEDIR}
+install ${runtime_img} ${LIVEDIR}/squashfs.img
+treeinfo stage2 mainimage ${LIVEDIR}/squashfs.img
+
+## install kernels
+mkdir ${KERNELDIR}
+%for kernel in kernels:
+    %if kernel.flavor:
+        installkernel images-${kernel.flavor}-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz-${kernel.flavor}
+        installinitrd images-${kernel.flavor}-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd-${kernel.flavor}.img
+
+        # create U-Boot wrapped images
+
+        runcmd mkimage \
+             -A arm -O linux -T ramdisk -C none \
+             -a 0 -e 0 -n initramfs \
+             -d ${outroot}/${KERNELDIR}/initrd-${kernel.flavor}.img \
+                ${outroot}/${KERNELDIR}/uInitrd-${kernel.flavor}
+
+        runcmd mkimage \
+             -A arm -O linux -T kernel -C none \
+             -a ${kernelAddress[kernel.flavor]} -e ${kernelAddress[kernel.flavor]} -n kernel \
+             -d ${outroot}/${KERNELDIR}/vmlinuz-${kernel.flavor} \
+                ${outroot}/${KERNELDIR}/uImage-${kernel.flavor}
+
+        treeinfo images-${kernel.flavor}-${basearch} uimage ${KERNELDIR}/uImage-${kernel.flavor}
+        treeinfo images-${kernel.flavor}-${basearch} uinitrd ${KERNELDIR}/uInitrd-${kernel.flavor}
+
+    %else:
+        installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz
+        installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
+
+        # create U-Boot wrapped images
+
+        runcmd mkimage \
+             -A arm -O linux -T ramdisk -C none \
+             -a 0 -e 0 -n initramfs \
+             -d ${outroot}/${KERNELDIR}/initrd.img \
+                ${outroot}/${KERNELDIR}/uInitrd
+
+        runcmd mkimage \
+             -A arm -O linux -T kernel -C none \
+             -a ${kernelAddress['baseline']} -e ${kernelAddress['baseline']} -n kernel \
+             -d ${outroot}/${KERNELDIR}/vmlinuz \
+                ${outroot}/${KERNELDIR}/uImage
+
+        treeinfo images-${basearch} uimage ${KERNELDIR}/uImage
+        treeinfo images-${basearch} uinitrd ${KERNELDIR}/uInitrd
+
+    %endif
+%endfor
+
+
+## FIXME: ARM may need some extra boot config
+
diff --git a/share/runtime-install.tmpl b/share/runtime-install.tmpl
index 90c1a1c..21d3916 100644
--- a/share/runtime-install.tmpl
+++ b/share/runtime-install.tmpl
@@ -20,6 +20,10 @@ installpkg kernel
 %endif
 
 ## arch-specific packages (bootloaders etc.)
+%if basearch in ("arm", "armhfp"):
+    installpkg kernel-highbank kernel-imx kernel-kirkwood kernel-omap kernel-tegra
+    installpkg uboot-tools
+%endif
 %if basearch == "i386":
     installpkg kernel-PAE gpart
 %endif
diff --git a/src/pylorax/__init__.py b/src/pylorax/__init__.py
index 25cccb3..0606fbd 100644
--- a/src/pylorax/__init__.py
+++ b/src/pylorax/__init__.py
@@ -57,7 +57,10 @@ class ArchData(DataHolder):
     lib64_arches = ("x86_64", "ppc64", "sparc64", "s390x", "ia64")
     bcj_arch = dict(i386="x86", x86_64="x86",
                     ppc="powerpc", ppc64="powerpc",
-                    sparc="sparc", sparc64="sparc")
+                    sparc="sparc", sparc64="sparc",
+                    armv5tel="arm", armv7l="arm",
+                    armv7hl="armhfp")
+
     def __init__(self, buildarch):
         self.buildarch = buildarch
         self.basearch = getBaseArch(buildarch)
diff --git a/src/pylorax/treebuilder.py b/src/pylorax/treebuilder.py
index 0ec651f..10b18c7 100644
--- a/src/pylorax/treebuilder.py
+++ b/src/pylorax/treebuilder.py
@@ -39,6 +39,8 @@ templatemap = {
     'sparc64': 'sparc.tmpl',
     's390':    's390.tmpl',
     's390x':   's390.tmpl',
+    'arm':     'arm.tmpl',
+    'armhfp':  'arm.tmpl',
 }
 
 def generate_module_info(moddir, outfile=None):
@@ -258,7 +260,7 @@ class TreeBuilder(object):
 
 def findkernels(root="/", kdir="boot"):
     # To find possible flavors, awk '/BuildKernel/ { print $4 }' kernel.spec
-    flavors = ('debug', 'PAE', 'PAEdebug', 'smp', 'xen')
+    flavors = ('debug', 'PAE', 'PAEdebug', 'smp', 'xen', 'highbank', 'imx', 'kirkwood', 'omap', 'tegra')
     kre = re.compile(r"vmlinuz-(?P<version>.+?\.(?P<arch>[a-z0-9_]+)"
                      r"(\.(?P<flavor>{0}))?)$".format("|".join(flavors)))
     kernels = []
_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list

[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux