From 817f168d8cc0ee5d20c5b3e62d406acab6495dd8 Mon Sep 17 00:00:00 2001
From: Steev Klimaszewski <steev@kali.org>
Date: Thu, 21 Jan 2021 18:35:28 -0600
Subject: [PATCH] Inital arm64 work

---
 auto/config                                       | 2 +-
 build.sh                                          | 5 ++++-
 kali-config/common/package-lists/kali.list.binary | 4 ++++
 simple-cdd/disc-end-hook                          | 3 +++
 simple-cdd/simple-cdd.conf                        | 9 ++++++++-
 5 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/auto/config b/auto/config
index 2b18d6a..09fb4ff 100755
--- a/auto/config
+++ b/auto/config
@@ -75,7 +75,7 @@ fi
 
 # Define options that vary across architectures
 case "$arch" in
-    amd64)
+    amd64|arm64)
 	lb_opts="$lb_opts --debian-installer live"
     ;;
     i386)
diff --git a/build.sh b/build.sh
index f61b03c..8ebba91 100755
--- a/build.sh
+++ b/build.sh
@@ -27,7 +27,7 @@ image_name() {
 
 live_image_name() {
 	case "$KALI_ARCH" in
-		i386|amd64)
+		i386|amd64|arm64)
 			echo "live-image-$KALI_ARCH.hybrid.iso"
 		;;
 		armel|armhf)
@@ -145,6 +145,9 @@ if [ -n "$OPT_pu" ]; then
 	KALI_CONFIG_OPTS="$KALI_CONFIG_OPTS --proposed-updates"
 	KALI_DIST="$KALI_DIST+pu"
 fi
+if [ "$ARCHES" = "arm64" ]; then
+  KALI_CONFIG_OPTS="$KALI_CONFIG_OPTS --uefi-secure-boot disable"
+fi
 
 # Set sane PATH (cron seems to lack /sbin/ dirs)
 export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
diff --git a/kali-config/common/package-lists/kali.list.binary b/kali-config/common/package-lists/kali.list.binary
index 97be99c..9489621 100644
--- a/kali-config/common/package-lists/kali.list.binary
+++ b/kali-config/common/package-lists/kali.list.binary
@@ -20,3 +20,7 @@ grub-efi-ia32
 grub-efi
 grub-efi-amd64
 #endif
+#if ARCHITECTURES arm64
+# Note: There is no grub-efi package on arm64
+grub-efi-arm64
+#endif
diff --git a/simple-cdd/disc-end-hook b/simple-cdd/disc-end-hook
index bfe2baa..3c48f3a 100755
--- a/simple-cdd/disc-end-hook
+++ b/simple-cdd/disc-end-hook
@@ -11,6 +11,8 @@ ARCHES=$5
 cd $CDDIR
 
 # Rebrand Debian into Kali
+# The theme doesn't exist on arm64...
+if [ "$ARCHES" != "arm64" ]; then
 sed -i -e 's|Debian GNU/Linux|Kali Linux|g' \
     -e 's|Kali GNU/Linux|Kali Linux|g' \
     -e 's|Debian kali-rolling|Kali Rolling|g' \
@@ -20,6 +22,7 @@ sed -i -e 's|Debian GNU/Linux|Kali Linux|g' \
     ../boot$DISKNUM/isolinux/*.txt \
     boot/grub/theme/* \
     autorun.inf
+fi
 
 # Replace Debian specific documentation
 rm -rf css
diff --git a/simple-cdd/simple-cdd.conf b/simple-cdd/simple-cdd.conf
index 6c60d55..c7925da 100644
--- a/simple-cdd/simple-cdd.conf
+++ b/simple-cdd/simple-cdd.conf
@@ -45,7 +45,11 @@ fi
 # Mirror tools
 mirror_tools="reprepro download"
 mirror_files=""  # Don't try to download README doc/ tools/
-require_optional_packages="true"
+if [ "$ARCH" = "arm64" ]; then
+  require_optional_packages="false"
+else
+  require_optional_packages="true"
+fi
 ignore_missing_checksums="true"
 
 # Mirror variables
@@ -64,6 +68,9 @@ updates_mirror=""
 if [ "$ARCH" = "i386" ]; then
     kernel_packages="linux-image-686-pae"
 fi
+if [ "$ARCH" = "arm64" ]; then
+    kernel_packages="linux-image-arm64"
+fi
 
 # Random other variables
 export default_desktop="xfce"