From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id QJ7xOY9grWKufQEAbAwnHQ (envelope-from ) for ; Sat, 18 Jun 2022 07:20:16 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id wLL+OI9grWJoUgAAG6o9tA (envelope-from ) for ; Sat, 18 Jun 2022 07:20:15 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 39A0A40D02 for ; Sat, 18 Jun 2022 07:20:15 +0200 (CEST) Received: from localhost ([::1]:49990 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o2QsX-0005kD-QM for larch@yhetil.org; Sat, 18 Jun 2022 01:20:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43600) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o2QsN-0005k5-4I for guix-patches@gnu.org; Sat, 18 Jun 2022 01:20:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:53486) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1o2QsM-0005pL-6W for guix-patches@gnu.org; Sat, 18 Jun 2022 01:20:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1o2QsL-0006pv-Th for guix-patches@gnu.org; Sat, 18 Jun 2022 01:20:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#55343] Add support for 32bit UEFI In-Reply-To: <20220510011812.15710e0b@primarylaptop.localdomain> Resent-From: Timothy Sample Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sat, 18 Jun 2022 05:20:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55343 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: Mathieu Othacehe , Maxime Devos , 55343@debbugs.gnu.org, Denis 'GNUtoo' Carikli Received: via spool by 55343-submit@debbugs.gnu.org id=B55343.165552954226198 (code B ref 55343); Sat, 18 Jun 2022 05:20:01 +0000 Received: (at 55343) by debbugs.gnu.org; 18 Jun 2022 05:19:02 +0000 Received: from localhost ([127.0.0.1]:47378 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o2QrB-0006nz-Iy for submit@debbugs.gnu.org; Sat, 18 Jun 2022 01:19:02 -0400 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]:45607) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o2Qr6-0006nc-2S for 55343@debbugs.gnu.org; Sat, 18 Jun 2022 01:18:48 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.west.internal (Postfix) with ESMTP id 030413200917; Sat, 18 Jun 2022 01:18:37 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Sat, 18 Jun 2022 01:18:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1655529517; x=1655615917; bh=2cfswMjpEUqPXiWYYPxwttQke38tOczqmJO xE48+3AI=; b=bvd/X/tjadU1z404fxbgy3P06WA7KS6htSSqV+CZKEPeVt78p0i ffBpvxl66uAdrIUxty++7HCXkNyM4dhMeIj/TM53lm9e/dTKnrU+7gErbc1erlCP vV7b8viVBuw64Dv/0oeVLZK3Ebwc+NYJkXvFBiKfgyEgJuoTsoG5NSFytnqxpx7W 1wpcn6Ro80chHk8/pd6NjateisSv1VdxEglcvRyC2xAnN1IX5Kgvr3hckppn4gRb bDqHQGHs0WN2aXd0fghb24nL823Q3vn/S/OEpPeqPAAt7mPqJH+0BeKDgdVCyavX 6/1z1FVMoP0rOeFbRD+XX+yT3vJegEqBPIg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedruddviedgleeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvvefufhffkfgfgggtsehmtderredtreejnecuhfhrohhmpefvihhmohht hhihucfurghmphhlvgcuoehsrghmphhlvghtsehnghihrhhordgtohhmqeenucggtffrrg htthgvrhhnpeekffdvvdehheehleefvedvgeekgfefgfffieelleehveeiveekuedujeeg vddvieenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hsrghmphhlvghtsehnghihrhhordgtohhm X-ME-Proxy: Feedback-ID: i4721425c:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 18 Jun 2022 01:18:36 -0400 (EDT) From: Timothy Sample References: <20220510011812.15710e0b@primarylaptop.localdomain> <20220509232451.30605-1-GNUtoo@cyberdimension.org> <20220509232451.30605-2-GNUtoo@cyberdimension.org> <20220511190023.527dacfa@primarylaptop.localdomain> <73c23088990ce1751410d24ecc84580c9811fe2a.camel@telenet.be> <20220518155003.4ef86460@primarylaptop.localdomain> <20220611184135.7bf2ce49@primarylaptop.localdomain> <874k0jdo30.fsf_-_@gnu.org> Date: Fri, 17 Jun 2022 23:18:35 -0600 Message-ID: <87fsk25z2s.fsf@ngyro.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.1 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1655529615; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=2cfswMjpEUqPXiWYYPxwttQke38tOczqmJOxE48+3AI=; b=NQgqDaWnKb36QcAQpFcbV5ZeEDOpKATjFfrnUdWeTZ5RQ7rA4YrMV0Vygms2qs1T0QiqOI pjRSeXYADymDB/cyz66YFb+x9LqMFWY3bSygqgaaj2j9RgGakXAgVK1Lnb0e3ZF13Q+BqB RLewgAGuJ2AurBpZIb9qGLa38ziYwFKt47IVE1OgCIPHbvS7A6CerrgP8SIQ7oMYUeSNq5 65dkzPvoFaupWkrTfdj7YvBqCJeUr+6pG9x5RTGBWY0XGJ9CvSMSt7+dlB4QBtXBIvQ+5b kKze53Rz6klSSyYLYi+YKziP2nrIubpJBzBPSqw/+bGwPddXkM3+qRX+O9ql2w== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1655529615; a=rsa-sha256; cv=none; b=W41sGl8BswMWZNqYUQU6o2hV8btzSdlrAZ4EbF+RCAMDAKkbsqDo6mtvyZw359oCIdxt7s qGhNkLKjd3sszHL0D810SDiXc7GZ2i1G0rqHPCO3BUxKuQrTO/dCx/IQyS1S9Pl1eJ1mGL 1V2rmvni7iDjdrHSkHbrOwXKleGTMB6bMfs00gPr2tnDZzDQRCNrd6cVFQ6Cs2uisYroTC RkWzNBRKZGgqyIYhYTmp+Gd4XAR8ZsRtQ2auLfntsOwn24pMPaox2VEIl48uETdGAj9rS8 rsxFWHuJXDmNB8x52XVAR7u7urIKTf0/qLAdl/t9VbrNMS5JjHIZXFYjsqJc4A== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=messagingengine.com header.s=fm2 header.b="bvd/X/tj"; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: 2.11 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=messagingengine.com header.s=fm2 header.b="bvd/X/tj"; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 39A0A40D02 X-Spam-Score: 2.11 X-Migadu-Scanner: scn0.migadu.com X-TUID: cp2Ff9UqNuQB --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi all, Ludovic Court=C3=A8s writes: > Denis 'GNUtoo' Carikli skribis: > >> As I understood that serie was ready to be merged or is there something >> I still need to do on my side? > > Sorry for the delay; Mathieu, this is more your area of expertise: WDYT? I=E2=80=99m not Mathieu, but I wanted to chime in anyway. :) I have an old Mac Mini with the same setup: it=E2=80=99s a 64bit system wit= h a 32bit UEFI. I=E2=80=99ve been using the same GRUB package and bootloader modifications from this patch for years and it works great. I also just tested the image generation code. I built an image, wrote it to a USB storage device, and booted the machine from it. That=E2=80=99s pretty hand= y! I=E2=80=99ve attached a slightly modified version of the second patch. It removes some duplication. Essentially, I added a keyword to the =E2=80=98install-efi=E2=80=99 procedure so that callers can override the GR= UB image type and output file. There=E2=80=99s lots of duplication in the patch, but that seems to be largely due to the structure of the existing code, so I wouldn=E2=80=99t worry about it. So, barring any comments from Mathieu, these patches LGTM. -- Tim --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: inline; filename=0001-image-Support-32bit-UEFI-on-64bit-systems.patch Content-Transfer-Encoding: quoted-printable >From 4be147b1c8fdef014ba06fd92e701753148d58c6 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Tue, 10 May 2022 01:24:51 +0200 Subject: [PATCH] image: Support 32bit UEFI on 64bit systems. * gnu/bootloader/grub.scm (grub-efi32-bootloader): New variable. (install-grub-efi32): New variable. * gnu/build/bootloader.scm (install-efi): Add a 'targets' keyword argument. (install-efi-loader): Likewise. * gnu/build/image.scm (initialize-efi32-partition): New procedure. * gnu/packages/bootloaders.scm (grub-efi32): New variable. * gnu/system/image.scm (esp32-partition): New variable (efi32-disk-image): New variable. (efi32-raw-image-type): New variable. (system-disk-image)[partition-image]: Set '#:grub-efi32' when calling the partition initializer. --- gnu/bootloader/grub.scm | 32 +++++++++++++++++++++++++++++++ gnu/build/bootloader.scm | 37 +++++++++++++++++++++++------------- gnu/build/image.scm | 14 ++++++++++++++ gnu/packages/bootloaders.scm | 13 +++++++++++++ gnu/system/image.scm | 19 ++++++++++++++++++ 5 files changed, 102 insertions(+), 13 deletions(-) diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm index 65d7171432..4f18c9b518 100644 --- a/gnu/bootloader/grub.scm +++ b/gnu/bootloader/grub.scm @@ -8,6 +8,7 @@ ;;; Copyright =C2=A9 2020 Maxim Cournoyer ;;; Copyright =C2=A9 2020 Stefan ;;; Copyright =C2=A9 2022 Karl Hallsby +;;; Copyright =C2=A9 2022 Denis 'GNUtoo' Carikli ;;; ;;; This file is part of GNU Guix. ;;; @@ -57,6 +58,7 @@ (define-module (gnu bootloader grub) grub-bootloader grub-efi-bootloader grub-efi-removable-bootloader + grub-efi32-bootloader grub-efi-netboot-bootloader grub-mkrescue-bootloader grub-minimal-bootloader @@ -636,6 +638,29 @@ (define install-grub-efi-removable "--bootloader-id=3DGuix" "--efi-directory" target-esp))))) =20 +(define install-grub-efi32 + #~(lambda (bootloader efi-dir mount-point) + ;; There is nothing useful to do when called in the context of a disk + ;; image generation. + (when efi-dir + ;; Install GRUB onto the EFI partition mounted at EFI-DIR, for the + ;; system whose root is mounted at MOUNT-POINT. + (let ((grub-install (string-append bootloader "/sbin/grub-install"= )) + (install-dir (string-append mount-point "/boot")) + ;; When installing Guix, it's common to mount EFI-DIR below + ;; MOUNT-POINT rather than /boot/efi on the live image. + (target-esp (if (file-exists? (string-append mount-point efi= -dir)) + (string-append mount-point efi-dir) + efi-dir))) + ;; Tell 'grub-install' that there might be a LUKS-encrypted /boo= t or + ;; root partition. + (setenv "GRUB_ENABLE_CRYPTODISK" "y") + (invoke/quiet grub-install "--boot-directory" install-dir + "--bootloader-id=3DGuix" + (cond ((target-x86?) "--target=3Di386-efi") + ((target-arm?) "--target=3Darm-efi")) + "--efi-directory" target-esp))))) + (define (install-grub-efi-netboot subdir) "Define a grub-efi-netboot bootloader installer for installation in SUBD= IR, which is usually efi/Guix or efi/boot." @@ -768,6 +793,13 @@ (define grub-efi-removable-bootloader (name 'grub-efi-removable-bootloader) (installer install-grub-efi-removable))) =20 +(define grub-efi32-bootloader + (bootloader + (inherit grub-efi-bootloader) + (installer install-grub-efi32) + (name 'grub-efi32) + (package grub-efi32))) + (define grub-efi-netboot-bootloader (bootloader (inherit grub-efi-bootloader) diff --git a/gnu/build/bootloader.scm b/gnu/build/bootloader.scm index 9a89fe55cb..af6063a884 100644 --- a/gnu/build/bootloader.scm +++ b/gnu/build/bootloader.scm @@ -1,6 +1,8 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright =C2=A9 2017 Mathieu Othacehe ;;; Copyright =C2=A9 2019 Ludovic Court=C3=A8s +;;; Copyright =C2=A9 2022 Denis 'GNUtoo' Carikli +;;; Copyright =C2=A9 2022 Timothy Sample ;;; ;;; This file is part of GNU Guix. ;;; @@ -54,8 +56,12 @@ (define (write-file-on-device file size device offset) ;;; EFI bootloader. ;;; =20 -(define (install-efi grub grub-config esp) - "Write a self-contained GRUB EFI loader to the mounted ESP using GRUB-CO= NFIG." +(define* (install-efi grub grub-config esp #:key targets) + "Write a self-contained GRUB EFI loader to the mounted ESP using +GRUB-CONFIG. + +If TARGETS is set, use its car as the GRUB image format and its cdr as +the output filename. Otherwise, use defaults for the host platform." (let* ((system %host-type) ;; Hard code the output location to a well-known path recognized = by ;; compliant firmware. See "3.5.1.1 Removable Media Boot Behaviou= r": @@ -63,14 +69,15 @@ (define (install-efi grub grub-config esp) (grub-mkstandalone (string-append grub "/bin/grub-mkstandalone")) (efi-directory (string-append esp "/EFI/BOOT")) ;; Map grub target names to boot file names. - (efi-targets (cond ((string-prefix? "x86_64" system) - '("x86_64-efi" . "BOOTX64.EFI")) - ((string-prefix? "i686" system) - '("i386-efi" . "BOOTIA32.EFI")) - ((string-prefix? "armhf" system) - '("arm-efi" . "BOOTARM.EFI")) - ((string-prefix? "aarch64" system) - '("arm64-efi" . "BOOTAA64.EFI"))))) + (efi-targets (or targets + (cond ((string-prefix? "x86_64" system) + '("x86_64-efi" . "BOOTX64.EFI")) + ((string-prefix? "i686" system) + '("i386-efi" . "BOOTIA32.EFI")) + ((string-prefix? "armhf" system) + '("arm-efi" . "BOOTARM.EFI")) + ((string-prefix? "aarch64" system) + '("arm64-efi" . "BOOTAA64.EFI")))))) ;; grub-mkstandalone requires a TMPDIR to prepare the firmware image. (setenv "TMPDIR" esp) =20 @@ -81,9 +88,12 @@ (define (install-efi grub grub-config esp) ;; Graft the configuration file onto the image. (string-append "boot/grub/grub.cfg=3D" grub-config)))) =20 -(define (install-efi-loader grub-efi esp) +(define* (install-efi-loader grub-efi esp #:key targets) "Install in ESP directory the given GRUB-EFI bootloader. Configure it to -load the Grub bootloader located in the 'Guix_image' root partition." +load the Grub bootloader located in the 'Guix_image' root partition. + +If TARGETS is set, use its car as the GRUB image format and its cdr as +the output filename. Otherwise, use defaults for the host platform." (let ((grub-config "grub.cfg")) (call-with-output-file grub-config (lambda (port) @@ -97,5 +107,6 @@ (define (install-efi-loader grub-efi esp) insmod part_gpt~@ search --set=3Droot --label Guix_image~@ configfile /boot/grub/grub.cfg~%"))) - (install-efi grub-efi grub-config esp) + (install-efi grub-efi grub-config esp #:targets targets) (delete-file grub-config))) + diff --git a/gnu/build/image.scm b/gnu/build/image.scm index ddfd34c111..321be8e4b1 100644 --- a/gnu/build/image.scm +++ b/gnu/build/image.scm @@ -6,6 +6,7 @@ ;;; Copyright =C2=A9 2020, 2022 Tobias Geerinckx-Rice ;;; Copyright =C2=A9 2020 Mathieu Othacehe ;;; Copyright =C2=A9 2022 Pavel Shlyak +;;; Copyright =C2=A9 2022 Denis 'GNUtoo' Carikli ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,6 +28,7 @@ (define-module (gnu build image) #:use-module (guix build syscalls) #:use-module (guix build utils) #:use-module (guix store database) + #:use-module (guix utils) #:use-module (gnu build bootloader) #:use-module (gnu build install) #:use-module (gnu build linux-boot) @@ -41,6 +43,7 @@ (define-module (gnu build image) convert-disk-image genimage initialize-efi-partition + initialize-efi32-partition initialize-root-partition =20 make-iso9660-image)) @@ -169,6 +172,17 @@ (define* (initialize-efi-partition root "Install in ROOT directory, an EFI loader using GRUB-EFI." (install-efi-loader grub-efi root)) =20 +(define* (initialize-efi32-partition root + #:key + grub-efi32 + #:allow-other-keys) + "Install in ROOT directory, an EFI 32bit loader using GRUB-EFI32." + (install-efi-loader grub-efi32 root + #:targets (cond ((target-x86?) + '("i386-efi" . "BOOTIA32.EFI")) + ((target-arm?) + '("arm-efi" . "BOOTARM.EFI"))))) + (define* (initialize-root-partition root #:key bootcfg diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 91d259475a..71a10f54d5 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -15,6 +15,7 @@ ;;; Copyright =C2=A9 2020, 2021 Pierre Langlois ;;; Copyright =C2=A9 2021 Vincent Legoll ;;; Copyright =C2=A9 2021 Brice Waegeneire +;;; Copyright =C2=A9 2022 Denis 'GNUtoo' Carikli ;;; ;;; This file is part of GNU Guix. ;;; @@ -332,6 +333,18 @@ (define-public grub-efi "/bin/mcopy\""))) #t)))))))))) =20 +(define-public grub-efi32 + (package + (inherit grub-efi) + (name "grub-efi32") + (synopsis "GRand Unified Boot loader (UEFI 32bit version)") + (arguments + `(,@(substitute-keyword-arguments (package-arguments grub-efi) + ((#:configure-flags flags + ''()) `(cons* ,(cond ((target-x86?) "--target=3Di386") + ((target-arm?) "--target=3Darm")) + ,flags))))))) + ;; Because grub searches hardcoded paths it's easiest to just build grub ;; again to make it find both grub-pc and grub-efi. There is a command ;; line argument which allows you to specify ONE platform - but diff --git a/gnu/system/image.scm b/gnu/system/image.scm index f02f6e0b8c..5972a944d7 100644 --- a/gnu/system/image.scm +++ b/gnu/system/image.scm @@ -2,6 +2,7 @@ ;;; Copyright =C2=A9 2020, 2021 Mathieu Othacehe ;;; Copyright =C2=A9 2020 Jan (janneke) Nieuwenhuizen ;;; Copyright =C2=A9 2022 Pavel Shlyak +;;; Copyright =C2=A9 2022 Denis 'GNUtoo' Carikli ;;; ;;; This file is part of GNU Guix. ;;; @@ -66,6 +67,7 @@ (define-module (gnu system image) root-label =20 esp-partition + esp32-partition root-partition =20 efi-disk-image @@ -75,6 +77,7 @@ (define-module (gnu system image) =20 image-with-os efi-raw-image-type + efi32-raw-image-type qcow2-image-type iso-image-type uncompressed-iso-image-type @@ -110,6 +113,11 @@ (define esp-partition (flags '(esp)) (initializer (gexp initialize-efi-partition)))) =20 +(define esp32-partition + (partition + (inherit esp-partition) + (initializer (gexp initialize-efi32-partition)))) + (define root-partition (partition (size 'guess) @@ -123,6 +131,11 @@ (define efi-disk-image (format 'disk-image) (partitions (list esp-partition root-partition)))) =20 +(define efi32-disk-image + (image + (format 'disk-image) + (partitions (list esp32-partition root-partition)))) + (define iso9660-image (image (format 'iso9660) @@ -164,6 +177,11 @@ (define efi-raw-image-type (name 'efi-raw) (constructor (cut image-with-os efi-disk-image <>)))) =20 +(define efi32-raw-image-type + (image-type + (name 'efi32-raw) + (constructor (cut image-with-os efi32-disk-image <>)))) + (define qcow2-image-type (image-type (name 'qcow2) @@ -376,6 +394,7 @@ (define* (system-disk-image image #$(image-shared-store? ima= ge)) #:system-directory #$os #:grub-efi #+grub-efi + #:grub-efi32 #+grub-efi32 #:bootloader-package #+(bootloader-package bootloader) #:bootloader-installer --=20 2.36.1 --=-=-=--