1 From d1018c38965a4a58e7d8ed735259a880887af814 Mon Sep 17 00:00:00 2001
2 From: Jackie Huang <jackie.huang@windriver.com>
3 Date: Thu, 27 Jul 2023 11:19:40 +0800
4 Subject: [PATCH 09/12] grub-efi: add support for arm64
6 The patches for x86 secure boot can't work for arm64,
7 add extra series_arm64 in patches and deb_patches dir
8 for arm64 specifc patches, not secure boot specifc patches
9 are included, so the secure boot feature is disable
13 PASS: build-pkgs on x86-64 host
14 PASS: build-image on x86-64 host
15 PASS: build-pkgs on arm64 host
16 PASS: build-image on arm64 host
17 PASS: Deploy AIO-SX on x86-64 target
18 PASS: Deploy AIO-SX on arm64 target
19 PASS: Deploy AIO-DX on arm64 targets
20 PASS: Deploy std (2+2+2) on arm64 targets
25 Depends-On: https://review.opendev.org/c/starlingx/root/+/889686
27 Change-Id: Ie0c63e4f35c34dc26971b2129c0b82001c78e059
28 Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
30 ...ARM-rules-create-efi-files-for-arm64.patch | 70 +++++++++++
31 ...2-ARM-rules-disable-efivar-for-arm64.patch | 29 +++++
32 ...rol-add-grub-common-and-grub2-common.patch | 111 ++++++++++++++++++
33 grub/grub-efi/debian/deb_patches/series_arm64 | 5 +
34 .../1001-ARM-init.c-fix-build-for-arm64.patch | 34 ++++++
35 grub/grub-efi/debian/patches/series_arm64 | 32 +++++
36 6 files changed, 281 insertions(+)
37 create mode 100644 grub/grub-efi/debian/deb_patches/arm/1001-ARM-rules-create-efi-files-for-arm64.patch
38 create mode 100644 grub/grub-efi/debian/deb_patches/arm/1002-ARM-rules-disable-efivar-for-arm64.patch
39 create mode 100644 grub/grub-efi/debian/deb_patches/arm/1003-ARM-control-add-grub-common-and-grub2-common.patch
40 create mode 100644 grub/grub-efi/debian/deb_patches/series_arm64
41 create mode 100644 grub/grub-efi/debian/patches/arm/1001-ARM-init.c-fix-build-for-arm64.patch
42 create mode 100644 grub/grub-efi/debian/patches/series_arm64
44 diff --git a/grub/grub-efi/debian/deb_patches/arm/1001-ARM-rules-create-efi-files-for-arm64.patch b/grub/grub-efi/debian/deb_patches/arm/1001-ARM-rules-create-efi-files-for-arm64.patch
46 index 00000000..596fee53
48 +++ b/grub/grub-efi/debian/deb_patches/arm/1001-ARM-rules-create-efi-files-for-arm64.patch
50 +From af42d524353ffd95f63fb9afa910258f1394231d Mon Sep 17 00:00:00 2001
51 +From: Jackie Huang <jackie.huang@windriver.com>
52 +Date: Fri, 19 May 2023 05:56:03 -0400
53 +Subject: [PATCH] rules: create efi files for arm64
55 +Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
57 + debian/rules | 32 +++++++++++++++++++++++++++++++-
58 + 1 file changed, 31 insertions(+), 1 deletion(-)
60 +diff --git a/debian/rules b/debian/rules
61 +index c22ba5a..e45d349 100755
64 +@@ -344,7 +344,7 @@ install/grub-none:
66 + mkdir -p debian/tmp-$(package)/usr/share/locale
68 +-D_PACKAGE := debian/grub-efi-amd64/
69 ++D_PACKAGE := debian/grub-efi-$(DEB_HOST_ARCH)/
70 + EFI_BOOT_PATH := /boot/efi/EFI/BOOT
71 + DISTRO_NAME := StarlingX
73 +@@ -357,6 +357,12 @@ GRUB_TARGET := x86_64
74 + GRUB_PREFIX_DIR := /EFI/BOOT
75 + OBJ_DIR := ./obj/grub-efi-amd64
77 ++ifeq ($(DEB_HOST_ARCH),arm64)
78 ++OSTREE_CONSOLE := console=ttyAMA0,115200
79 ++GRUB_TARGET := arm64
80 ++OBJ_DIR := ./obj/grub-efi-arm64
83 + install/grub-efi-amd64 install/grub-efi-ia64 install/grub-efi-arm install/grub-efi-arm64 install/grub-ieee1275 install/grub-coreboot install/grub-emu install/grub-uboot install/grub-xen install/grub-yeeloong:
85 + if [ "$@" = "install/grub-xen" ] ; then \
86 +@@ -501,6 +507,30 @@ install/grub-efi-amd64 install/grub-efi-ia64 install/grub-efi-arm install/grub-e
87 + install -m 0644 $(OBJ_DIR)/grub-core/*.mod $(D_PACKAGE)$(EFI_BOOT_PATH)/$(GRUB_TARGET)-efi ; \
90 ++ if [ "$@" = "install/grub-efi-arm64" ] ; then \
91 ++ install -d $(D_PACKAGE)/$(EFI_BOOT_PATH) ; \
92 ++ install -m 0600 ./grub-runtime.cfg $(D_PACKAGE)$(EFI_BOOT_PATH)/grub.cfg ; \
93 ++ sed -i "s#%DISTRO_NAME%#$(DISTRO_NAME)#g" "$(D_PACKAGE)$(EFI_BOOT_PATH)/grub.cfg" ; \
94 ++ sed -i "s#%DISTRO_VERSION%#$(DISTRO_VERSION)#g" "$(D_PACKAGE)$(EFI_BOOT_PATH)/grub.cfg" ; \
95 ++ echo -n "password_pbkdf2 $(OSTREE_GRUB_USER) " > ./pw ; \
96 ++ cat "$(OSTREE_GRUB_PW_FILE)" >> ./pw ; \
97 ++ sed -i "s#%OSTREE_GRUB_USER%#$(OSTREE_GRUB_USER)#g" "$(D_PACKAGE)$(EFI_BOOT_PATH)/grub.cfg" ; \
98 ++ str_pw=`cat ./pw` ; \
99 ++ sed -i "s#%OSTREE_GRUB_PW%#$${str_pw}#g" "$(D_PACKAGE)$(EFI_BOOT_PATH)/grub.cfg" ; \
100 ++ sed -i "s#%OSTREE_CONSOLE%#$(OSTREE_CONSOLE)#g" "$(D_PACKAGE)$(EFI_BOOT_PATH)/grub.cfg" ; \
101 ++ $(OBJ_DIR)/grub-mkimage -c ./cfg_nosecure -p "$(GRUB_PREFIX_DIR)" -d "$(OBJ_DIR)/grub-core" \
102 ++ -O "$(GRUB_TARGET)-efi" -o "./bootaa64-nosig.efi" \
103 ++ $(GRUB_BUILDIN) ; \
104 ++ install -m 0644 ./bootaa64-nosig.efi $(D_PACKAGE)$(EFI_BOOT_PATH)/bootaa64-nosig.efi ; \
105 ++ $(OBJ_DIR)/grub-editenv "$(D_PACKAGE)$(EFI_BOOT_PATH)/grubenv" create ; \
106 ++ install -d $(D_PACKAGE)$(EFI_BOOT_PATH)/$(GRUB_TARGET)-efi ; \
107 ++ $(OBJ_DIR)/grub-mkimage -c ./cfg -p "$(GRUB_PREFIX_DIR)" -d "$(OBJ_DIR)/grub-core" \
108 ++ -O "$(GRUB_TARGET)-efi" -o "./grubaa64.efi" \
109 ++ $(GRUB_BUILDIN) $(GRUB_SECURE_BUILDIN) ; \
110 ++ install -m 0644 ./grubaa64.efi $(D_PACKAGE)$(EFI_BOOT_PATH)/grubaa64.efi ; \
111 ++ install -m 0644 $(OBJ_DIR)/grub-core/*.mod $(D_PACKAGE)$(EFI_BOOT_PATH)/$(GRUB_TARGET)-efi ; \
115 + if [ -e debian/grub-common.$(1) ]; then \
116 + sed 's/@COMMON_PLATFORM@/$(COMMON_PLATFORM)/g' \
120 diff --git a/grub/grub-efi/debian/deb_patches/arm/1002-ARM-rules-disable-efivar-for-arm64.patch b/grub/grub-efi/debian/deb_patches/arm/1002-ARM-rules-disable-efivar-for-arm64.patch
122 index 00000000..5312a255
124 +++ b/grub/grub-efi/debian/deb_patches/arm/1002-ARM-rules-disable-efivar-for-arm64.patch
126 +From 84f319dd8deaf2bb5d00e697979d4a432faafba8 Mon Sep 17 00:00:00 2001
127 +From: Jackie Huang <jackie.huang@windriver.com>
128 +Date: Fri, 19 May 2023 06:22:57 -0400
129 +Subject: [PATCH] rules: disable efivar for arm64
131 +./obj/grub-efi-arm64/grub-mkimage: error: cannot open `./obj/grub-efi-arm64/grub-core/efivar.mod': No such file or directory.
132 +./obj/grub-efi-arm64/grub-mkimage: error: cannot open `./obj/grub-efi-arm64/grub-core/efivar.mod': No such file or directory.
134 +Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
136 + debian/rules | 2 ++
137 + 1 file changed, 2 insertions(+)
139 +diff --git a/debian/rules b/debian/rules
140 +index 5697b3d..9fef924 100755
143 +@@ -361,6 +361,8 @@ ifeq ($(DEB_HOST_ARCH),arm64)
144 + OSTREE_CONSOLE := console=ttyAMA0,115200
145 + GRUB_TARGET := arm64
146 + OBJ_DIR := ./obj/grub-efi-arm64
147 ++GRUB_BUILDIN := boot linux ext2 fat serial part_msdos part_gpt normal efi_gop iso9660 configfile search loadenv test tftp efinet reboot chain regexp
148 ++GRUB_SECURE_BUILDIN := tftp reboot chain password_pbkdf2 pgp gcry_rsa gcry_sha256 gcry_sha512 --pubkey ./boot_pub_key
151 + install/grub-efi-amd64 install/grub-efi-ia64 install/grub-efi-arm install/grub-efi-arm64 install/grub-ieee1275 install/grub-coreboot install/grub-emu install/grub-uboot install/grub-xen install/grub-yeeloong:
155 diff --git a/grub/grub-efi/debian/deb_patches/arm/1003-ARM-control-add-grub-common-and-grub2-common.patch b/grub/grub-efi/debian/deb_patches/arm/1003-ARM-control-add-grub-common-and-grub2-common.patch
157 index 00000000..14c5f19c
159 +++ b/grub/grub-efi/debian/deb_patches/arm/1003-ARM-control-add-grub-common-and-grub2-common.patch
161 +From 05ca2538d90be2c9789e5076770457039f6f4ab0 Mon Sep 17 00:00:00 2001
162 +From: Jackie Huang <jackie.huang@windriver.com>
163 +Date: Tue, 23 May 2023 23:28:14 -0400
164 +Subject: [PATCH] control: add grub-common and grub2-common
166 +Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
168 + debian/control | 33 +++++++++++++++++++++++++++++++++
169 + debian/grub-common.install.in | 2 --
170 + debian/rules | 7 ++++---
171 + 3 files changed, 37 insertions(+), 5 deletions(-)
173 +diff --git a/debian/control b/debian/control
174 +index caea0c3..7b4f933 100644
175 +--- a/debian/control
176 ++++ b/debian/control
177 +@@ -50,6 +50,39 @@ Description: GRand Unified Bootloader, version 2 (dummy package)
178 + This is a dummy package that depends on the grub-efi-$ARCH package most likely
179 + to be appropriate for each architecture.
181 ++Package: grub-common
183 ++Depends: ${shlibs:Depends}, ${misc:Depends}, gettext-base, ${lsb-base-depends}
184 ++Replaces: grub-pc (<< 2.00-4), grub-ieee1275 (<< 2.00-4), grub-efi (<< 1.99-1), grub-coreboot (<< 2.00-4), grub-linuxbios (<< 1.96+20080831-1), grub-efi-ia32 (<< 2.00-4), grub-efi-amd64 (<< 2.00-4), grub-efi-ia64 (<< 2.00-4), grub-yeeloong (<< 2.00-4), init-select
185 ++Recommends: os-prober (>= 1.33)
186 ++Suggests: multiboot-doc, grub-emu [any-i386 any-amd64 any-powerpc], mtools [any-i386 any-amd64 any-ia64 any-arm any-arm64], xorriso (>= 0.5.6.pl00), desktop-base (>= 4.0.6), console-setup
187 ++Conflicts: init-select
188 ++# mdadm: See bugs #435983 and #455746
189 ++Breaks: mdadm (<< 2.6.7-2), lupin-support (<< 0.55), friendly-recovery (<< 0.2.13), apport (<< 2.1.1)
190 ++Multi-Arch: foreign
191 ++Description: GRand Unified Bootloader (common files)
192 ++ This package contains common files shared by the distinct flavours of GRUB.
193 ++ It is shared between GRUB Legacy and GRUB 2, although a number of files
194 ++ specific to GRUB 2 are here as long as they do not break GRUB Legacy.
196 ++ grub-mkrescue needs the suggested packages mtools (for UEFI targets) and
199 ++Package: grub2-common
200 ++# Not Architecture: any because this package contains some things which are
201 ++# only built when there is a real platform (e.g. grub-install), and the rest
202 ++# of the package is not very useful in a utilities-only build.
203 ++Architecture: any-i386 any-amd64 any-powerpc any-ppc64 any-ppc64el any-sparc any-sparc64 any-mipsel any-ia64 any-arm any-arm64
204 ++Depends: grub-common (= ${binary:Version}), dpkg (>= 1.15.4) | install-info, ${shlibs:Depends}, ${misc:Depends}
205 ++Replaces: grub, grub-legacy, ${legacy-doc-br}, grub-common (<< 1.99-1), grub-pc (<< 2.02+dfsg1-7), grub-coreboot (<< 2.02+dfsg1-7), grub-efi-ia32 (<< 2.02+dfsg1-7), grub-efi-amd64 (<< 2.02+dfsg1-7), grub-efi-ia64 (<< 2.02+dfsg1-7), grub-efi-arm (<< 2.02+dfsg1-7), grub-efi-arm64 (<< 2.02+dfsg1-7), grub-ieee1275 (<< 2.02+dfsg1-7), grub-uboot (<< 2.02+dfsg1-7), grub-xen (<< 2.02+dfsg1-7), grub-yeeloong (<< 2.02+dfsg1-7), grub-cloud-amd64 (<< 0.0.4)
206 ++Conflicts: grub-legacy
207 ++Breaks: grub (<< 0.97-54), ${legacy-doc-br}, shim (<< 0.9+1474479173.6c180c6-0ubuntu1~), grub-pc (<< 2.02+dfsg1-7), grub-coreboot (<< 2.02+dfsg1-7), grub-efi-ia32 (<< 2.02+dfsg1-7), grub-efi-amd64 (<< 2.02+dfsg1-7), grub-efi-ia64 (<< 2.02+dfsg1-7), grub-efi-arm (<< 2.02+dfsg1-7), grub-efi-arm64 (<< 2.02+dfsg1-7), grub-ieee1275 (<< 2.02+dfsg1-7), grub-uboot (<< 2.02+dfsg1-7), grub-xen (<< 2.02+dfsg1-7), grub-yeeloong (<< 2.02+dfsg1-7), grub-cloud-amd64 (<< 0.0.4)
208 ++Multi-Arch: foreign
209 ++Description: GRand Unified Bootloader (common files for version 2)
210 ++ This package contains common files shared by the distinct flavours of GRUB.
211 ++ The files in this package are specific to GRUB 2, and would break GRUB
212 ++ Legacy if installed on the same system.
214 + Package: grub-efi-amd64-bin
215 + Architecture: i386 kopensolaris-i386 any-amd64
216 + Depends: ${shlibs:Depends}, ${misc:Depends}, grub-common
217 +diff --git a/debian/grub-common.install.in b/debian/grub-common.install.in
218 +index 420a61e..cc6ae6d 100644
219 +--- a/debian/grub-common.install.in
220 ++++ b/debian/grub-common.install.in
221 +@@ -22,7 +22,6 @@ usr/bin/grub-script-check
222 + usr/bin/grub-syslinux2cfg
223 + usr/sbin/grub-macbless
224 + usr/sbin/grub-mkconfig
225 +-usr/sbin/grub-mkdevicemap
226 + usr/sbin/grub-probe
228 + usr/share/grub/*.pf2
229 +@@ -47,5 +46,4 @@ usr/share/man/man1/grub-script-check.1
230 + usr/share/man/man1/grub-syslinux2cfg.1
231 + usr/share/man/man8/grub-macbless.8
232 + usr/share/man/man8/grub-mkconfig.8
233 +-usr/share/man/man8/grub-mkdevicemap.8
234 + usr/share/man/man8/grub-probe.8
235 +diff --git a/debian/rules b/debian/rules
236 +index 9fef924..b3d2897 100755
239 +@@ -167,10 +167,10 @@ override_dh_autoreconf:
241 + dh_autoreconf -- ./autogen.sh
243 +-debian/stamps/configure-grub-common:
244 ++debian/stamps/configure-grub-common: debian/stamps/configure-grub-$(COMMON_PLATFORM)
247 +-debian/stamps/build-grub-common:
248 ++debian/stamps/build-grub-common: debian/stamps/build-grub-$(COMMON_PLATFORM)
251 + debian/stamps/configure-grub-none debian/stamps/configure-grub-pc debian/stamps/configure-grub-ieee1275 debian/stamps/configure-grub-coreboot debian/stamps/configure-grub-emu debian/stamps/configure-grub-uboot debian/stamps/configure-grub-yeeloong:
252 +@@ -208,7 +208,7 @@ debian/stamps/build-grub-none debian/stamps/build-grub-efi-ia64 debian/stamps/bu
256 +-debian/stamps/build-grub-efi-amd64 debian/stamps/build-grub-efi-arm64: debian/stamps/build-%: debian/stamps/configure-%
257 ++debian/stamps/build-grub-efi-amd64 debian/stamps/build-grub-efi-arm64: debian/stamps/build-%: debian/stamps/configure-% debian/stamps/build-grub-$(COMMON_PLATFORM)
259 + grub_dir=`mktemp -d` ; \
260 + sed -e "s/@DEB_VERSION@/$(deb_version)/g" \
261 +@@ -564,6 +564,7 @@ override_dh_install:
262 + ifneq (,$(NON_PLATFORM_PACKAGES))
263 + dh_install $(patsubst %,-p%,$(NON_PLATFORM_PACKAGES))
265 ++ dh_install $(patsubst %,-p%,$(COMMON_PLATFORM_PACKAGES)) --sourcedir=debian/tmp-grub-$(COMMON_PLATFORM)
266 + rm -f debian/grub2-common/usr/share/info/dir*
267 + rm -f debian/grub-theme-starfield/usr/share/grub/themes/starfield/COPYING.CC-BY-SA-3.0
268 + ifneq (,$(PLATFORM_PACKAGES))
272 diff --git a/grub/grub-efi/debian/deb_patches/series_arm64 b/grub/grub-efi/debian/deb_patches/series_arm64
274 index 00000000..0d336ead
276 +++ b/grub/grub-efi/debian/deb_patches/series_arm64
278 +0001-Make-series-null.patch
279 +0002-grub-efi-build-packages-related-with-grub-efi.patch
280 +arm/1001-ARM-rules-create-efi-files-for-arm64.patch
281 +arm/1002-ARM-rules-disable-efivar-for-arm64.patch
282 +arm/1003-ARM-control-add-grub-common-and-grub2-common.patch
283 diff --git a/grub/grub-efi/debian/patches/arm/1001-ARM-init.c-fix-build-for-arm64.patch b/grub/grub-efi/debian/patches/arm/1001-ARM-init.c-fix-build-for-arm64.patch
285 index 00000000..fcdd0c86
287 +++ b/grub/grub-efi/debian/patches/arm/1001-ARM-init.c-fix-build-for-arm64.patch
289 +From 46e54aec0b0f6eda1bed195dd63f79e02f8b020a Mon Sep 17 00:00:00 2001
290 +From: Jackie Huang <jackie.huang@windriver.com>
291 +Date: Thu, 25 May 2023 22:54:29 -0400
292 +Subject: [PATCH] init.c: fix build for arm64
294 +Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
296 + grub-core/kern/efi/init.c | 3 ++-
297 + 1 file changed, 2 insertions(+), 1 deletion(-)
299 +diff --git a/grub-core/kern/efi/init.c b/grub-core/kern/efi/init.c
300 +index 4a88397..0ddadaa 100644
301 +--- a/grub-core/kern/efi/init.c
302 ++++ b/grub-core/kern/efi/init.c
303 +@@ -94,6 +94,7 @@ grub_cmd_efi_watchdog (grub_command_t cmd __attribute__ ((unused)),
304 + grub_efi_status_t status;
305 + grub_efi_uintn_t timeout;
306 + grub_efi_uint64_t code;
307 ++ grub_efi_char16_t *str_grub = (grub_efi_char16_t *)L"GRUB";
310 + return grub_error (GRUB_ERR_BAD_ARGUMENT,
311 +@@ -137,7 +138,7 @@ grub_cmd_efi_watchdog (grub_command_t cmd __attribute__ ((unused)),
314 + status = efi_call_4 (grub_efi_system_table->boot_services->set_watchdog_timer,
315 +- timeout, code, sizeof(L"GRUB"), L"GRUB");
316 ++ timeout, code, sizeof(str_grub), str_grub);
318 + if (status != GRUB_EFI_SUCCESS)
319 + return grub_error (GRUB_ERR_BUG,
323 diff --git a/grub/grub-efi/debian/patches/series_arm64 b/grub/grub-efi/debian/patches/series_arm64
325 index 00000000..54cbcc3d
327 +++ b/grub/grub-efi/debian/patches/series_arm64
329 +0001-grub2-add-tboot.patch
330 +0002-grub2-checking-if-loop-devices-are-available.patch
331 +0020-kern-efi-sb-Reject-non-kernel-files-in-the-shim_lock.patch
332 +0021-video-readers-Add-artificial-limit-to-image-dimensio.patch
333 +0022-font-Reject-glyphs-exceeds-font-max_glyph_width-or-f.patch
334 +0023-font-Fix-size-overflow-in-grub_font_get_glyph_intern.patch
335 +0024-font-Fix-several-integer-overflows-in-grub_font_cons.patch
336 +0025-font-Remove-grub_font_dup_glyph.patch
337 +0026-font-Fix-integer-overflow-in-ensure_comb_space.patch
338 +0027-font-Fix-integer-overflow-in-BMP-index.patch
339 +0028-font-Fix-integer-underflow-in-binary-search-of-char-.patch
340 +0029-kern-efi-sb-Enforce-verification-of-font-files.patch
341 +0030-fbutil-Fix-integer-overflow.patch
342 +0031-font-Fix-an-integer-underflow-in-blit_comb.patch
343 +0032-font-Harden-grub_font_blit_glyph-and-grub_font_blit_.patch
344 +0033-font-Assign-null_font-to-glyphs-in-ascii_font_glyph.patch
345 +0034-normal-charset-Fix-an-integer-overflow-in-grub_unico.patch
346 +0035-video-readers-png-Drop-greyscale-support-to-fix-heap.patch
347 +0036-video-readers-png-Avoid-heap-OOB-R-W-inserting-huff-.patch
348 +0037-video-readers-jpeg-Block-int-underflow-wild-pointer-.patch
349 +0038-net-ip-Do-IP-fragment-maths-safely.patch
350 +0039-net-http-Fix-OOB-write-for-split-http-headers.patch
351 +0040-net-http-Error-out-on-headers-with-LF-without-CR.patch
352 +0041-loader-efi-chainloader-Simplify-the-loader-state.patch
353 +0042-commands-boot-Add-API-to-pass-context-to-loader.patch
354 +0043-loader-efi-chainloader-Use-grub_loader_set_ex.patch
355 +0044-fs-ntfs-Fix-an-OOB-write-when-parsing-the-ATTRIBUTE_.patch
356 +0045-fs-ntfs-Fix-an-OOB-read-when-reading-data-from-the-r.patch
357 +lat/0003-Make-UEFI-watchdog-behaviour-configurable.patch
358 +lat/0004-correct-grub_errno.patch
359 +lat/0005-grub-verify-Add-skip_check_cfg-variable.patch
360 +arm/1001-ARM-init.c-fix-build-for-arm64.patch