[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