[PATCH lorax/master] Add initial 64-bit ARM (aarch64) support.
d.marlin
dmarlin at redhat.com
Fri Oct 25 21:42:02 UTC 2013
From: "d.marlin" <dmarlin at redhat.com>
Signed-off-by: David A. Marlin <dmarlin at redhat.com>
---
share/aarch64.tmpl | 50 ++++++++++++++++++++++++++++++++
share/config_files/aarch64/boot.msg | 5 ++++
share/config_files/aarch64/grub.conf | 13 +++++++++
share/config_files/aarch64/grub2-efi.cfg | 24 +++++++++++++++
share/runtime-install.tmpl | 3 ++
src/pylorax/__init__.py | 2 +-
src/pylorax/treebuilder.py | 1 +
7 files changed, 97 insertions(+), 1 deletion(-)
create mode 100644 share/aarch64.tmpl
create mode 100644 share/config_files/aarch64/boot.msg
create mode 100644 share/config_files/aarch64/grub.conf
create mode 100644 share/config_files/aarch64/grub2-efi.cfg
diff --git a/share/aarch64.tmpl b/share/aarch64.tmpl
new file mode 100644
index 0000000..5b9acd2
--- /dev/null
+++ b/share/aarch64.tmpl
@@ -0,0 +1,50 @@
+<%page args="kernels, runtime_img, basearch, outroot, product, isolabel"/>
+<%
+configdir="tmp/config_files/aarch64"
+PXEBOOTDIR="images/pxeboot"
+BOOTDIR="boot"
+KERNELDIR=PXEBOOTDIR
+LIVEDIR="LiveOS"
+%>
+
+mkdir ${LIVEDIR}
+install ${runtime_img} ${LIVEDIR}/squashfs.img
+treeinfo stage2 mainimage ${LIVEDIR}/squashfs.img
+
+## install bootloader and config files
+mkdir ${BOOTDIR}
+# FIXME: fill this in when we have grub2 or gummiboot or ?
+install ${configdir}/boot.msg ${BOOTDIR}
+install ${configdir}/grub.conf ${BOOTDIR}
+
+## configure bootloader
+replace @VERSION@ ${product.version} ${BOOTDIR}/grub.conf ${BOOTDIR}/*.msg
+replace @PRODUCT@ '${product.name}' ${BOOTDIR}/grub.conf ${BOOTDIR}/*.msg
+
+## install kernels
+mkdir ${KERNELDIR}
+%for kernel in kernels:
+ ## normal aarch64
+ installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz
+ installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
+ %if doupgrade:
+ installupgradeinitrd images-${basearch} ${kernel.upgrade.path} ${KERNELDIR}/upgrade.img
+ %endif
+%endfor
+
+#FIXME: this will need adjusted when we have a real bootloader.
+## WHeeeeeeee, EFI.
+## We could remove the basearch restriction someday..
+<% efiargs=""; efigraft="" %>
+%if exists("boot/efi/EFI/*/gcdx64.efi"):
+ <%
+ efiarch = 'AARCH64'
+ efigraft="EFI/BOOT={0}/EFI/BOOT".format(outroot)
+ images = ["images/efiboot.img"]
+ for img in images:
+ efiargs += " -eltorito-alt-boot -e {0} -no-emul-boot".format(img)
+ efigraft += " {0}={1}/{0}".format(img,outroot)
+ %>
+ <%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch=efiarch, isolabel=isolabel"/>
+%endif
+
diff --git a/share/config_files/aarch64/boot.msg b/share/config_files/aarch64/boot.msg
new file mode 100644
index 0000000..ff54899
--- /dev/null
+++ b/share/config_files/aarch64/boot.msg
@@ -0,0 +1,5 @@
+
+splash.lss
+
+ - Press the 01<ENTER>07 key to begin the installation process.
+
diff --git a/share/config_files/aarch64/grub.conf b/share/config_files/aarch64/grub.conf
new file mode 100644
index 0000000..49fa32b
--- /dev/null
+++ b/share/config_files/aarch64/grub.conf
@@ -0,0 +1,13 @@
+#debug --graphics
+default=0
+splashimage=@SPLASHPATH@
+timeout 5
+hiddenmenu
+title Install @PRODUCT@ @VERSION@
+ findiso
+ kernel @KERNELPATH@ @ROOT@ quiet
+ initrd @INITRDPATH@
+title Test this media & install @PRODUCT@ @VERSION@
+ findiso
+ kernel @KERNELPATH@ @ROOT@ rd.live.check quiet
+ initrd @INITRDPATH@
diff --git a/share/config_files/aarch64/grub2-efi.cfg b/share/config_files/aarch64/grub2-efi.cfg
new file mode 100644
index 0000000..d02fcd3
--- /dev/null
+++ b/share/config_files/aarch64/grub2-efi.cfg
@@ -0,0 +1,24 @@
+set default="0"
+
+insmod gzio
+insmod part_gpt
+insmod ext2
+
+set timeout=5
+### END /etc/grub.d/00_header ###
+
+### BEGIN /etc/grub.d/10_linux ###
+menuentry 'Install @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@ quiet
+ initrdefi @INITRDPATH@
+}
+menuentry 'Test this media & install @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@ rd.live.check quiet
+ initrdefi @INITRDPATH@
+}
+submenu 'Troubleshooting -->' {
+ menuentry 'Rescue a @PRODUCT@ system' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@ rescue quiet
+ initrdefi @INITRDPATH@
+ }
+}
diff --git a/share/runtime-install.tmpl b/share/runtime-install.tmpl
index 547ce89..2323f7d 100644
--- a/share/runtime-install.tmpl
+++ b/share/runtime-install.tmpl
@@ -21,6 +21,9 @@ installpkg grubby
%endif
## arch-specific packages (bootloaders etc.)
+%if basearch == "aarch64":
+ installpkg grubby
+%endif
%if basearch in ("arm", "armhfp"):
installpkg kernel-lpae
installpkg uboot-tools
diff --git a/src/pylorax/__init__.py b/src/pylorax/__init__.py
index 37829da..f5f21be 100644
--- a/src/pylorax/__init__.py
+++ b/src/pylorax/__init__.py
@@ -50,7 +50,7 @@ from discinfo import DiscInfo
from executils import runcmd, runcmd_output
class ArchData(DataHolder):
- lib64_arches = ("x86_64", "ppc64", "s390x", "ia64")
+ lib64_arches = ("x86_64", "ppc64", "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 3106483..9020f6a 100644
--- a/src/pylorax/treebuilder.py
+++ b/src/pylorax/treebuilder.py
@@ -37,6 +37,7 @@ templatemap = {
'ppc64': 'ppc.tmpl',
's390': 's390.tmpl',
's390x': 's390.tmpl',
+ 'aarch64': 'aarch64.tmpl',
'arm': 'arm.tmpl',
'armhfp': 'arm.tmpl',
}
--
1.8.3.1
More information about the anaconda-patches
mailing list