[PATCH] support ppc64le in lorax
Mark Hamzy
hamzy at us.ibm.com
Tue Mar 25 20:35:31 UTC 2014
Add support for the ppc64le architecture in lorax.
---
share/ppc64le.tmpl | 82 ++++++++++++++++++++++++++++++++++++++++++++++
share/runtime-install.tmpl | 2 +-
src/pylorax/__init__.py | 2 +-
src/pylorax/treebuilder.py | 1 +
4 files changed, 85 insertions(+), 2 deletions(-)
create mode 100644 share/ppc64le.tmpl
diff --git a/share/ppc64le.tmpl b/share/ppc64le.tmpl
new file mode 100644
index 0000000..b63f8b3
--- /dev/null
+++ b/share/ppc64le.tmpl
@@ -0,0 +1,82 @@
+<%page args="kernels, runtime_img, basearch, libdir, inroot, outroot, product, isolabel"/>
+<%
+configdir="tmp/config_files/ppc"
+BOOTDIR="ppc"
+GRUBDIR="boot/grub"
+LIVEDIR="LiveOS"
+
+## NOTE: yaboot freaks out and stops parsing its config if it sees a '\',
+## so we can't use the udev escape sequences in the root arg.
+## Instead we'll just replace any non-ASCII characters in the isolabel
+## with '_', which means we won't need any udev escapes.
+isolabel = ''.join(ch if ch.isalnum() else '_' for ch in isolabel)
+
+## Anaconda finds the CDROM device automatically
+rootarg = ""
+%>
+
+mkdir ${LIVEDIR}
+install ${runtime_img} ${LIVEDIR}/squashfs.img
+treeinfo stage2 mainimage ${LIVEDIR}/squashfs.img
+
+## install the bootloaders
+## ppc/chrp: for normal PPC systems.
+## uses /ppc/bootinfo.txt in the iso root
+## uses /boot/grub/grub.cfg in the iso root
+mkdir ${BOOTDIR}
+## boot stuff for normal (CHRP/PREP) PPC systems
+install ${configdir}/bootinfo.txt ${BOOTDIR}
+
+mkdir ${GRUBDIR}/powerpc-ieee1275
+## "()" means the current device to grub2
+runcmd grub2-mkimage --format=powerpc-ieee1275 --directory=/usr/lib/grub/powerpc-ieee1275 --prefix="()/"${GRUBDIR} \
+--output=${outroot}/${GRUBDIR}/powerpc-ieee1275/core.elf iso9660 ext2 ofnet net tftp http
+install /usr/lib/grub/powerpc-ieee1275/*.mod ${GRUBDIR}/powerpc-ieee1275
+install /usr/lib/grub/powerpc-ieee1275/*.lst ${GRUBDIR}/powerpc-ieee1275
+
+install ${configdir}/grub.cfg.in ${GRUBDIR}/grub.cfg
+replace @PRODUCT@ '${product.name}' ${GRUBDIR}/grub.cfg
+replace @VERSION@ ${product.version} ${GRUBDIR}/grub.cfg
+replace @ROOT@ "${rootarg}" ${GRUBDIR}/grub.cfg
+
+## copy mapping and magic files needed for isos
+install ${configdir}/mapping ${BOOTDIR}
+install ${configdir}/magic ${BOOTDIR}
+
+## Install kernel and bootloader config (in separate places for each arch)
+%for kernel in kernels:
+ <%
+ bits = 64
+ ## separate dirs/images for each arch
+ KERNELDIR=BOOTDIR+"/ppc%s" % bits
+ %>
+ ## install kernel
+ mkdir ${KERNELDIR}
+ installkernel images-${kernel.arch} ${kernel.path} ${KERNELDIR}/vmlinuz
+ installinitrd images-${kernel.arch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
+
+ %if doupgrade:
+ ## upgrade image
+ installupgradeinitrd images-${kernel.arch} ${kernel.upgrade.path} ${KERNELDIR}/upgrade.img
+ %endif
+
+ treeinfo images-${kernel.arch} zimage
+%endfor
+
+## make boot.iso, which gets renamed to Fedora-xx-xxxxx-netinst.iso
+mkdir images/
+runcmd mkisofs -v -U -J -R -T \
+ -o ${outroot}/images/boot.iso \
+ -part -hfs -r -l -sysid PPC \
+ -A "${product.name} ${product.version}" -V '${isolabel}' \
+ -volset "${product.version}" -volset-size 1 -volset-seqno 1 \
+ -hfs-volid ${product.version} \
+ -chrp-boot -map ${inroot}/${configdir}/mapping \
+ -no-desktop -allow-multidot -graft-points \
+ ${BOOTDIR}=${outroot}/${BOOTDIR} \
+ ${GRUBDIR}=${outroot}/${GRUBDIR} \
+ ${LIVEDIR}=${outroot}/${LIVEDIR}
+
+%for kernel in kernels:
+ treeinfo images-${kernel.arch} boot.iso images/boot.iso
+%endfor
diff --git a/share/runtime-install.tmpl b/share/runtime-install.tmpl
index e4c0336..0cc367d 100644
--- a/share/runtime-install.tmpl
+++ b/share/runtime-install.tmpl
@@ -37,7 +37,7 @@ installpkg grubby
%if basearch in ("i386", "x86_64"):
installpkg grub2 grub2-tools biosdevname memtest86+ syslinux
%endif
-%if basearch in ("ppc", "ppc64"):
+%if basearch in ("ppc", "ppc64", "ppc64le"):
installpkg grub2 grub2-tools fbset hfsutils kernel-bootwrapper ppc64-utils
%endif
%if basearch == "s390x":
diff --git a/src/pylorax/__init__.py b/src/pylorax/__init__.py
index 380a30d..f702949 100644
--- a/src/pylorax/__init__.py
+++ b/src/pylorax/__init__.py
@@ -54,7 +54,7 @@ REMOVE_PPC64_DRIVERS = "floppy scsi_debug nouveau radeon cirrus mgag200"
REMOVE_PPC64_MODULES = "drm plymouth"
class ArchData(DataHolder):
- lib64_arches = ("x86_64", "ppc64", "s390x", "ia64", "aarch64")
+ lib64_arches = ("x86_64", "ppc64", "ppc64le", "s390x", "ia64", "aarch64")
bcj_arch = dict(i386="x86", x86_64="x86",
ppc="powerpc", ppc64="powerpc",
arm="arm", armhfp="arm")
diff --git a/src/pylorax/treebuilder.py b/src/pylorax/treebuilder.py
index d0fac4b..dc8bb48 100644
--- a/src/pylorax/treebuilder.py
+++ b/src/pylorax/treebuilder.py
@@ -35,6 +35,7 @@ templatemap = {
'x86_64': 'x86.tmpl',
'ppc': 'ppc.tmpl',
'ppc64': 'ppc.tmpl',
+ 'ppc64le': 'ppc64le.tmpl',
's390': 's390.tmpl',
's390x': 's390.tmpl',
'aarch64': 'aarch64.tmpl',
--
1.9.0
More information about the anaconda-patches
mailing list