[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#885692: live-build: [Patch] Support building ARM64 live system with EFI boot mechanism



Package: live-build
Version: 1:20171207
Severity: normal
Tags: patch

Dear Maintainer,

Attached please find the patch for creating EFI boot mechanism for ARM64 system.
It would be great to have this for creating ARM64 Debian live. My 2 cents.

-- Package-specific info:

-- System Information:
Debian Release: buster/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.12.0-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages live-build recommends:
ii  apt-utils                       1.6~alpha5
ii  cpio                            2.12+dfsg-6
pn  live-boot-doc                   <none>
pn  live-config-doc                 <none>
ii  live-manual-html [live-manual]  2:20151217.1
ii  wget                            1.19.2-1

live-build suggests no packages.

-- no debconf information

--
Steven Shiau <steven _at_ stevenshiau org>
Public Key Server PGP Key ID: 4096R/163E3FB0
Fingerprint: EB1D D5BF 6F88 820B BCF5  356C 8E94 C9CD 163E 3FB0

Index: live-build-20171207/scripts/build/binary_grub-efi
===================================================================
--- live-build-20171207.orig/scripts/build/binary_grub-efi
+++ live-build-20171207/scripts/build/binary_grub-efi
@@ -41,12 +41,19 @@ Check_lockfile .lock
 Create_lockfile .lock
 
 # Check architecture
-Check_architectures amd64 i386
+Check_architectures amd64 i386 arm64
 Check_crossarchitectures
 
 # Checking depends
-Check_package chroot /usr/lib/grub/x86_64-efi/configfile.mod grub-efi-amd64-bin
-Check_package chroot /usr/lib/grub/i386-efi/configfile.mod grub-efi-ia32-bin
+case "${LB_LINUX_FLAVOURS}" in
+	amd64|486|586|686*|generic)
+	       	Check_package chroot /usr/lib/grub/x86_64-efi/configfile.mod grub-efi-amd64-bin
+		Check_package chroot /usr/lib/grub/i386-efi/configfile.mod grub-efi-ia32-bin
+	;;
+	arm64)
+		Check_package chroot /usr/lib/grub/arm64-efi/configfile.mod grub-efi-arm64-bin
+	;;
+esac
 Check_package chroot /usr/bin/grub-mkimage grub-common
 Check_package chroot /usr/bin/mcopy mtools
 Check_package chroot /sbin/mkfs.msdos dosfstools
@@ -67,7 +74,7 @@ Restore_cache cache/packages.binary
 Install_package
 
 # Cleanup files that we generate
-rm -rf binary/boot/efi.img binary/boot/grub/i386-efi/ binary/boot/grub/x86_64-efi
+rm -rf binary/boot/efi.img binary/boot/grub/i386-efi/ binary/boot/grub/x86_64-efi binary/boot/grub/arm64-efi
 
 # This is workaround till both efi-image and grub-cpmodules are put into a binary package
 case "${LB_BUILD_WITH_CHROOT}" in
@@ -102,16 +109,28 @@ fi
 
 PATH="${PATH}:\${LIVE_BUILD_PATH}" # Make sure grub-cpmodules is used as if it was installed in the system
 
-"\${LIVE_BUILD_PATH}/efi-image" "${_CHROOT_DIR}/grub-efi-temp-x86_64-efi/" "x86_64-efi" "x64" "debian-live/amd64"
-mkdir -p ${_CHROOT_DIR}/grub-efi-temp/efi/boot
-mcopy -n -i ${_CHROOT_DIR}/grub-efi-temp-x86_64-efi/efi.img '::efi/boot/boot*.efi' ${_CHROOT_DIR}/grub-efi-temp/efi/boot
-cp -r "${_CHROOT_DIR}"/grub-efi-temp-x86_64-efi/* "${_CHROOT_DIR}/grub-efi-temp/"
-
-"\${LIVE_BUILD_PATH}/efi-image" "${_CHROOT_DIR}/grub-efi-temp-i386-efi/" "i386-efi" "ia32" "debian-live/i386"
-PATH="\${PRE_EFI_IMAGE_PATH}"
-mkdir -p ${_CHROOT_DIR}/grub-efi-temp/efi/boot
-mcopy -n -i ${_CHROOT_DIR}/grub-efi-temp-i386-efi/efi.img '::efi/boot/boot*.efi' ${_CHROOT_DIR}/grub-efi-temp/efi/boot
-cp -r "${_CHROOT_DIR}"/grub-efi-temp-i386-efi/* "${_CHROOT_DIR}/grub-efi-temp/"
+case "${LB_LINUX_FLAVOURS}" in
+	amd64|486|586|686*|generic)
+		"\${LIVE_BUILD_PATH}/efi-image" "${_CHROOT_DIR}/grub-efi-temp-x86_64-efi/" "x86_64-efi" "x64" "debian-live/amd64"
+		mkdir -p ${_CHROOT_DIR}/grub-efi-temp/efi/boot
+		mcopy -n -i ${_CHROOT_DIR}/grub-efi-temp-x86_64-efi/efi.img '::efi/boot/boot*.efi' ${_CHROOT_DIR}/grub-efi-temp/efi/boot
+		cp -r "${_CHROOT_DIR}"/grub-efi-temp-x86_64-efi/* "${_CHROOT_DIR}/grub-efi-temp/"
+
+		"\${LIVE_BUILD_PATH}/efi-image" "${_CHROOT_DIR}/grub-efi-temp-i386-efi/" "i386-efi" "ia32" "debian-live/i386"
+		PATH="\${PRE_EFI_IMAGE_PATH}"
+		mkdir -p ${_CHROOT_DIR}/grub-efi-temp/efi/boot
+		mcopy -n -i ${_CHROOT_DIR}/grub-efi-temp-i386-efi/efi.img '::efi/boot/boot*.efi' ${_CHROOT_DIR}/grub-efi-temp/efi/boot
+		cp -r "${_CHROOT_DIR}"/grub-efi-temp-i386-efi/* "${_CHROOT_DIR}/grub-efi-temp/"
+	;;
+	arm64)
+		"\${LIVE_BUILD_PATH}/efi-image" "${_CHROOT_DIR}/grub-efi-temp-arm64-efi/" "arm64-efi" "aa64" "debian-live/arm64"
+		mkdir -p ${_CHROOT_DIR}/grub-efi-temp/efi/boot
+		mcopy -n -i ${_CHROOT_DIR}/grub-efi-temp-arm64-efi/efi.img '::efi/boot/boot*.efi' ${_CHROOT_DIR}/grub-efi-temp/efi/boot
+		cp -r "${_CHROOT_DIR}"/grub-efi-temp-arm64-efi/* "${_CHROOT_DIR}/grub-efi-temp/"
+		PATH="\${PRE_EFI_IMAGE_PATH}"
+	;;
+esac
+
 
 # The code below is adapted from tools/boot/jessie/boot-x86
 # in debian-cd
@@ -159,11 +178,13 @@ esac
 # Remove unnecessary files
 rm -f chroot/grub-efi-temp/bootnetia32.efi
 rm -f chroot/grub-efi-temp/bootnetx64.efi
+rm -f chroot/grub-efi-temp/bootnetaa64.efi
 
 mkdir -p binary
 cp -r chroot/grub-efi-temp/* binary/
 rm -rf chroot/grub-efi-temp-x86_64-efi
 rm -rf chroot/grub-efi-temp-i386-efi
+rm -rf chroot/grub-efi-temp-arm64-efi
 rm -rf chroot/grub-efi-temp
 
 # We rely on: binary_loopback_cfg to generate grub.cfg and other configuration files
Index: live-build-20171207/scripts/build/binary_loopback_cfg
===================================================================
--- live-build-20171207.orig/scripts/build/binary_loopback_cfg
+++ live-build-20171207/scripts/build/binary_loopback_cfg
@@ -43,7 +43,7 @@ Check_lockfile .lock
 Create_lockfile .lock
 
 # Check architecture
-Check_architectures amd64 i386
+Check_architectures amd64 i386 arm64
 Check_crossarchitectures
 
 # Variable used to embed newlines

Reply to: