unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Herman Rimm via Guix-patches via <guix-patches@gnu.org>
To: 73202@debbugs.gnu.org
Cc: Lilah Tascheter <lilah@lunabee.space>
Subject: [bug#73202] [PATCH] Preparation for bootloader rewrite.
Date: Thu, 3 Oct 2024 22:32:30 +0200	[thread overview]
Message-ID: <4fnudiucjxequd3m4ayy7drqsgjokybfvsu6l2tbssurhlr5wd@odqr53qw5qqz> (raw)
In-Reply-To: <20240912165818.21580-1-herman@rimm.ee>

Hi Lilah,

I wrote a series of annotated Guile code snippets, regarding an
alternative implementation of bootloader-target, and example user
configuration (with tftp/NFS).  See below, and please let me know what
you think.

Cheers,
Herman

;; In (gnu bootloader grub):
(define (grub-efi-default-targets esp)
  (tree->target ; like arborify
                (bootloader-target
                  (type 'esp)
                  (path esp)
                  (targets ; counterpart of offset
                           (list (bootloader-target
                                   (type 'vendir)
                                   (path "EFI/Guix"))
                                 (bootloader-target
                                   (type 'install)
                                   (path "grub")))))))

;; This is the same as (grub-efi-default-targets "boot").  It could be
;; exported standalone, instead of using bootloader default-targets.
(define %grub-efi-default-targets
  '((esp     . "/boot")
    (install . "/boot/EFI/Guix")
    (vendir  . "/boot/grub")))

;; A simple consequence of this change is that this:
(with-targets %grub-efi-default-targets
  (('install => (path :path))
   ...))
;; becomes:
(let ((install-path (assoc-ref %grub-efi-default-targets 'install)))
  ...)

;; But e.g. device is provided separately (or derived from path):
(with-targets %grub-efi-default-targets
  (('esp => (device :device))
   ...))
;; becomes:
(let* ((path (assoc-ref %grub-efi-default-targets 'esp))
       ;; A single root-device is provided in addition to targets.
       (device (root-device->block-device root-device path)))
  ...)

;; This procedure is in (gnu bootloader).  Something like:
(define (root-device->block-device device path)
  (match device
    ((? block-device?) device) ; string with /dev/ prefix
    ((? uuid?) (find-partition-for-uuid device))
    ((? string?) (find-partition-for-label device))
    ;; This might be necessary, but should not be relied on.
    (_ (mount-source (find-mount path)))))

;; Example user configuration:
(define %grub-efi-bootloader
  (bootloader-configuration
    (bootloader grub-efi-bootloader)
    ;; This is for bootloader configuration (not installation), e.g.
    ;; GRUB search or install-efi disk argument.
    (root-device "UUID, label, or block device.")
    ;; This is complementary to root-device.  It will configure some
    ;; files to be fetched remotely instead of installed.
    (tftp "Varies for UEFI/GRUB/U-Boot.")))

(operating-system
  (bootloader (list %grub-efi-bootloader))
  ;; This is shared between bootloaders.  Ideally, it does not affect
  ;; which files are installed or their contents, but only the location.
  (bootloader-targets (grub-efi-default-targets "boot")))




  parent reply	other threads:[~2024-10-03 20:37 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-12 16:58 [bug#73202] [PATCH] guix: scripts: Rewrite reinstall-bootloader to use provenance data Herman Rimm via Guix-patches via
2024-09-20 10:37 ` [bug#73202] [PATCH v2 00/15] Preparation for bootloader rewrite Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 01/15] gnu: bootloader: Remove deprecated bootloader-configuration field Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 02/15] gnu: system: Remove useless boot parameters Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 03/15] gnu: tests: reconfigure: Remove bootloader install test Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 04/15] guix: scripts: Remove unused code Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 05/15] guix: scripts: Rewrite reinstall-bootloader to use provenance data Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 06/15] guix: utils: Add flatten and flat-map from haunt Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 07/15] guix: records: Add wrap-element procedure Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 08/15] gnu: bootloader: Add bootloader-target record and infastructure Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 09/15] gnu: bootloader: Add bootloader-configurations->gexp Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 10/15] gnu: bootloader: Add device-subvol field to menu-entry record Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 11/15] gnu: build: bootloader: Add efi-bootnums procedure Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 12/15] gnu: bootloader: Install any bootloader to ESP Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 13/15] gnu: bootloader: Match records outside the module Herman Rimm via Guix-patches via
2024-09-20 10:37   ` [bug#73202] [PATCH v2 14/15] gnu: system: boot: Add procedure Herman Rimm via Guix-patches via
2024-09-20 10:38   ` [bug#73202] [PATCH v2 15/15] teams: Add bootloading team Herman Rimm via Guix-patches via
2024-09-21 10:57 ` [bug#73202] [PATCH v2 00/15] Preparation for bootloader rewrite Herman Rimm via Guix-patches via
2024-09-25 20:58   ` Lilah Tascheter via Guix-patches
2024-09-26 10:08 ` [bug#73202] [PATCH v3 01/14] gnu: bootloader: Remove deprecated bootloader-configuration field Herman Rimm via Guix-patches via
2024-09-26 10:08   ` [bug#73202] [PATCH v3 02/14] gnu: system: Remove useless boot parameters Herman Rimm via Guix-patches via
2024-09-26 10:09   ` [bug#73202] [PATCH v3 03/14] gnu: tests: reconfigure: Remove bootloader install test Herman Rimm via Guix-patches via
2024-09-26 10:09   ` [bug#73202] [PATCH v3 04/14] guix: scripts: Remove unused code Herman Rimm via Guix-patches via
2024-09-26 10:09   ` [bug#73202] [PATCH v3 05/14] guix: scripts: Rewrite reinstall-bootloader to use provenance data Herman Rimm via Guix-patches via
2024-09-26 10:09   ` [bug#73202] [PATCH v3 06/14] guix: utils: Add flatten and flat-map from haunt Herman Rimm via Guix-patches via
2024-09-26 10:09   ` [bug#73202] [PATCH v3 07/14] guix: records: Add wrap-element procedure Herman Rimm via Guix-patches via
2024-09-26 10:09   ` [bug#73202] [PATCH v3 08/14] gnu: bootloader: Add bootloader-target record and infastructure Herman Rimm via Guix-patches via
2024-09-26 10:09   ` [bug#73202] [PATCH v3 09/14] gnu: bootloader: Add bootloader-configurations->gexp Herman Rimm via Guix-patches via
2024-09-26 10:09   ` [bug#73202] [PATCH v3 10/14] gnu: bootloader: Add device-subvol field to menu-entry record Herman Rimm via Guix-patches via
2024-09-26 10:09   ` [bug#73202] [PATCH v3 11/14] gnu: build: bootloader: Add efi-bootnums procedure Herman Rimm via Guix-patches via
2024-09-26 10:09   ` [bug#73202] [PATCH v3 12/14] gnu: bootloader: Install any bootloader to ESP Herman Rimm via Guix-patches via
2024-09-26 10:09   ` [bug#73202] [PATCH v3 13/14] gnu: bootloader: Match records outside the module Herman Rimm via Guix-patches via
2024-09-26 10:09   ` [bug#73202] [PATCH v3 14/14] teams: Add bootloading team Herman Rimm via Guix-patches via
2024-10-03 20:32 ` Herman Rimm via Guix-patches via [this message]
2024-10-04  5:07   ` [bug#73202] [PATCH] Preparation for bootloader rewrite Lilah Tascheter via Guix-patches
2024-10-04 13:55     ` Herman Rimm via Guix-patches via
2024-10-07 16:59       ` Ryan via Guix-patches via
2024-10-07 19:23         ` Herman Rimm via Guix-patches via
2024-10-08 14:37         ` Ryan via Guix-patches via
2024-10-08 17:23           ` Lilah Tascheter via Guix-patches
2024-10-08 18:05       ` Lilah Tascheter via Guix-patches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4fnudiucjxequd3m4ayy7drqsgjokybfvsu6l2tbssurhlr5wd@odqr53qw5qqz \
    --to=guix-patches@gnu.org \
    --cc=73202@debbugs.gnu.org \
    --cc=herman@rimm.ee \
    --cc=lilah@lunabee.space \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).