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