diff --git a/diskimage_builder/elements/bootloader/finalise.d/50-bootloader b/diskimage_builder/elements/bootloader/finalise.d/50-bootloader
index be8e7ad3a..5e8c2d28c 100755
--- a/diskimage_builder/elements/bootloader/finalise.d/50-bootloader
+++ b/diskimage_builder/elements/bootloader/finalise.d/50-bootloader
@@ -177,6 +177,8 @@ function install_grub2 {
     # Serial console on Power is hvc0
     if [[ "powerpc ppc64 ppc64le" =~ "$ARCH" ]]; then
         SERIAL_CONSOLE="hvc0"
+    elif [[ "arm64" =~ "$ARCH" ]]; then
+        SERIAL_CONSOLE="ttyAMA0,115200"
     else
         SERIAL_CONSOLE="ttyS0,115200"
     fi
diff --git a/diskimage_builder/elements/ubuntu-minimal/package-installs.yaml b/diskimage_builder/elements/ubuntu-minimal/package-installs.yaml
index 30acf078b..d73a1fe30 100644
--- a/diskimage_builder/elements/ubuntu-minimal/package-installs.yaml
+++ b/diskimage_builder/elements/ubuntu-minimal/package-installs.yaml
@@ -1,2 +1,9 @@
 linux-image-generic:
+  not-arch: arm64
+# TODO(ianw): this is Xenial specific, for now.  This kernel works
+# much better, however, including better support for cdrom's for
+# config-drive.  We'll need to filter this further for future
+# releases; maybe add a $DIB_RELEASE filter too?
+linux-generic-hwe-16.04:
+  arch: arm64
 initramfs-tools: