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