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

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

 



diff --git a/share/arm.tmpl b/share/arm.tmpl
new file mode 100644
index 0000000..a6817f4
--- /dev/null
+++ b/share/arm.tmpl
@@ -0,0 +1,78 @@
+<%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 "${product.name} ${product.version} ${kernel.flavor} ${kernel.arch}" \
+             -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 "${product.name} ${product.version} ${kernel.flavor} ${kernel.arch}" \
+             -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 "${product.name} ${product.version} ${kernel.arch}" \
+             -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 "${product.name} ${product.version} ${kernel.arch}" \
+             -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..c7732b6 100644
--- a/src/pylorax/__init__.py
+++ b/src/pylorax/__init__.py
@@ -57,7 +57,9 @@ 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",
+                    arm="arm", armhfp="arm")
+
     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