mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
gnu: bootloader: Update bootloader-configuration targets field.
* gnu/bootloader.scm (warn-update-targets): New procedure. (bootloader-configuration)[targets]: Use warn-update-targets sanitizer. * gnu/installer/parted.scm (bootloader-configuration): Use new target field format. * gnu/system/images/hurd.scm (hurd-barebones-os)[bootloader], gnu/system/images/novena.scm (novena-barebones-os)[bootloader], gnu/system/images/orangepi-r1-plus-lts-rk3328.scm (orangepi-r1-plus-lts-rk3328-barebones-os)[bootloader], gnu/system/images/pine64.scm (pine64-barebones-os)[bootloader], gnu/system/images/pinebook-pro.scm (pinebook-pro-barebones-os)[bootloader], gnu/system/images/rock64.scm (rock64-barebones-os)[bootloader], gnu/system/images/unmatched.scm (unmatched-barebones-os)[bootloader], gnu/system/images/visionfive2.scm (visionfive2-barebones-os)[bootloader]: Use new target format. * gnu/system/install.scm (installation-os)[bootloader]: Use new format. (embedded-installation-os): Use new format and adjust description. (beaglebone-black-installation-os, a20-olinuxino-lime-installation-os, a20-olinuxino-lime2-emmc-installation-os, a20-olinuxino-micro-installation-os, bananapi-m2-ultra-installation-os, firefly-rk3399-installation-os, mx6cuboxi-installation-os, novena-installation-os, nintendo-nes-classic-edition-installation-os, orangepi-r1-plus-lts-rk3328-installation-os, pine64-plus-installation-os, pinebook-installation-os, rock64-installation-os, rockpro64-installation-os, rk3399-puma-installation-os, wandboard-installation-os): Don't guess block device. Change-Id: I3654d160f7306bb45a78b82ea6b249ff4281f739
This commit is contained in:
parent
5a6f0fbc58
commit
d09d96bccc
11 changed files with 88 additions and 80 deletions
|
@ -43,6 +43,7 @@ (define-module (gnu bootloader)
|
|||
#:use-module (guix utils)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 receive)
|
||||
#:use-module (ice-9 regex)
|
||||
#:use-module (rnrs bytevectors)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
|
@ -486,9 +487,49 @@ (define blocks
|
|||
;;; Bootloader configuration record.
|
||||
;;;
|
||||
|
||||
;; The <bootloader-configuration> record contains bootloader independant
|
||||
;; The <bootloader-configuration> record contains bootloader independent
|
||||
;; configuration used to fill bootloader configuration file.
|
||||
|
||||
;; Based on report-duplicate-field-specifier from (guix records).
|
||||
(define (report-duplicate-type-field targets)
|
||||
"Report the first target with duplicate type among TARGETS."
|
||||
(let loop ((targets targets)
|
||||
(seen '()))
|
||||
(match targets
|
||||
((target rest ...)
|
||||
(let ((type (bootloader-target-type target)))
|
||||
(when (memq type seen)
|
||||
(error loc (G_ "target with duplicate type~%") duplicate))
|
||||
(loop rest (cons type seen))))
|
||||
(() #t))))
|
||||
|
||||
(define-with-syntax-properties (warn-update-targets (value properties))
|
||||
(let ((targets (wrap-element value))
|
||||
(loc (source-properties->location properties)))
|
||||
(define string->target
|
||||
(match-lambda
|
||||
((? bootloader-target? target) target)
|
||||
((? string? s) (if (string-prefix? "/dev" s)
|
||||
(if (string-match ".+p[0-9]+$" s)
|
||||
(bootloader-target
|
||||
(type 'part)
|
||||
(device s))
|
||||
(bootloader-target
|
||||
(type 'disk)
|
||||
(device s)))
|
||||
(bootloader-target
|
||||
(type 'esp)
|
||||
(offset 'root)
|
||||
(path s))))
|
||||
(x (error loc (G_ "invalid target '~a'~%") x))))
|
||||
|
||||
;; XXX: Should this be an error?
|
||||
(when (any string? targets)
|
||||
(warning loc (G_ "the 'targets' field should now contain \
|
||||
<bootloader-target> records, inferring a best guess, this might break!~%")))
|
||||
(let* ((targets (map string->target targets)))
|
||||
(report-duplicate-type-field targets)
|
||||
targets)))
|
||||
|
||||
(define-record-type* <bootloader-configuration>
|
||||
bootloader-configuration make-bootloader-configuration
|
||||
|
@ -496,7 +537,8 @@ (define-record-type* <bootloader-configuration>
|
|||
(bootloader
|
||||
bootloader-configuration-bootloader) ;<bootloader>
|
||||
(targets bootloader-configuration-targets
|
||||
(default #f)) ;list of strings
|
||||
(default '()) ;list of strings
|
||||
(sanitize warn-update-targets))
|
||||
(menu-entries bootloader-configuration-menu-entries
|
||||
(default '())) ;list of <menu-entry>
|
||||
(default-entry bootloader-configuration-default-entry
|
||||
|
|
|
@ -1460,15 +1460,19 @@ (define (root-user-partition? partition)
|
|||
|
||||
(define (bootloader-configuration user-partitions)
|
||||
"Return the bootloader configuration field for USER-PARTITIONS."
|
||||
(let* ((root-partition (find root-user-partition?
|
||||
user-partitions))
|
||||
(let* ((root-partition (find root-user-partition? user-partitions))
|
||||
(root-partition-disk (user-partition-disk-file-name root-partition)))
|
||||
`((bootloader-configuration
|
||||
,@(if (efi-installation?)
|
||||
`((bootloader grub-efi-bootloader)
|
||||
(targets (list ,(default-esp-mount-point))))
|
||||
(targets (list (bootloader-target
|
||||
(type 'esp)
|
||||
(path ,(default-esp-mount-point))))))
|
||||
`((bootloader grub-bootloader)
|
||||
(targets (list ,root-partition-disk))))
|
||||
(targets (list (bootloader-target
|
||||
(type 'disk)
|
||||
;; TODO: Provide a uuid or label.
|
||||
(device ,root-partition-disk))))))
|
||||
|
||||
;; XXX: Assume we defined the 'keyboard-layout' field of
|
||||
;; <operating-system> right above.
|
||||
|
|
|
@ -41,9 +41,7 @@ (define-module (gnu system images hurd)
|
|||
(define hurd-barebones-os
|
||||
(operating-system
|
||||
(inherit %hurd-default-operating-system)
|
||||
(bootloader (bootloader-configuration
|
||||
(bootloader grub-minimal-bootloader)
|
||||
(targets '("/dev/sdX"))))
|
||||
(bootloader (bootloader-configuration (bootloader grub-minimal-bootloader)))
|
||||
(file-systems (cons (file-system
|
||||
(device (file-system-label "my-root"))
|
||||
(mount-point "/")
|
||||
|
|
|
@ -39,8 +39,7 @@ (define novena-barebones-os
|
|||
(timezone "Europe/Paris")
|
||||
(locale "en_US.utf8")
|
||||
(bootloader (bootloader-configuration
|
||||
(bootloader u-boot-novena-bootloader)
|
||||
(targets '("/dev/vda"))))
|
||||
(bootloader u-boot-novena-bootloader)))
|
||||
(initrd-modules '())
|
||||
(kernel linux-libre-arm-generic)
|
||||
(kernel-arguments '("console=ttymxc1,115200"))
|
||||
|
|
|
@ -39,8 +39,7 @@ (define orangepi-r1-plus-lts-rk3328-barebones-os
|
|||
(timezone "Europe/Amsterdam")
|
||||
(locale "en_US.utf8")
|
||||
(bootloader (bootloader-configuration
|
||||
(bootloader u-boot-orangepi-r1-plus-lts-rk3328-bootloader)
|
||||
(targets '("/dev/mmcblk0"))))
|
||||
(bootloader u-boot-orangepi-r1-plus-lts-rk3328-bootloader)))
|
||||
(initrd-modules '())
|
||||
(kernel linux-libre-arm64-generic)
|
||||
(file-systems (cons (file-system
|
||||
|
|
|
@ -41,8 +41,7 @@ (define pine64-barebones-os
|
|||
(timezone "Europe/Paris")
|
||||
(locale "en_US.utf8")
|
||||
(bootloader (bootloader-configuration
|
||||
(bootloader u-boot-pine64-lts-bootloader)
|
||||
(targets '("/dev/vda"))))
|
||||
(bootloader u-boot-pine64-lts-bootloader)))
|
||||
(initrd-modules '())
|
||||
(kernel linux-libre-arm64-generic)
|
||||
(file-systems (cons (file-system
|
||||
|
|
|
@ -38,8 +38,7 @@ (define pinebook-pro-barebones-os
|
|||
(timezone "Europe/Paris")
|
||||
(locale "en_US.utf8")
|
||||
(bootloader (bootloader-configuration
|
||||
(bootloader u-boot-pinebook-pro-rk3399-bootloader)
|
||||
(targets '("/dev/vda"))))
|
||||
(bootloader u-boot-pinebook-pro-rk3399-bootloader)))
|
||||
(initrd-modules '())
|
||||
(kernel linux-libre-arm64-generic)
|
||||
(file-systems (cons (file-system
|
||||
|
|
|
@ -39,8 +39,7 @@ (define rock64-barebones-os
|
|||
(timezone "Europe/Oslo")
|
||||
(locale "en_US.utf8")
|
||||
(bootloader (bootloader-configuration
|
||||
(bootloader u-boot-rock64-rk3328-bootloader)
|
||||
(targets '("/dev/sda"))))
|
||||
(bootloader u-boot-rock64-rk3328-bootloader)))
|
||||
(initrd-modules '())
|
||||
(kernel linux-libre-arm64-generic)
|
||||
(file-systems (cons (file-system
|
||||
|
|
|
@ -39,8 +39,7 @@ (define unmatched-barebones-os
|
|||
(timezone "Asia/Jerusalem")
|
||||
(locale "en_US.utf8")
|
||||
(bootloader (bootloader-configuration
|
||||
(bootloader u-boot-sifive-unmatched-bootloader)
|
||||
(targets '("/dev/vda"))))
|
||||
(bootloader u-boot-sifive-unmatched-bootloader)))
|
||||
(initrd-modules '())
|
||||
(kernel linux-libre-riscv64-generic)
|
||||
(file-systems (cons (file-system
|
||||
|
|
|
@ -62,8 +62,7 @@ (define visionfive2-barebones-os
|
|||
(timezone "Etc/UTC")
|
||||
(locale "en_US.utf8")
|
||||
(bootloader (bootloader-configuration
|
||||
(bootloader u-boot-starfive-visionfive2-bootloader)
|
||||
(targets '("/dev/mmcblk0"))))
|
||||
(bootloader u-boot-starfive-visionfive2-bootloader)))
|
||||
(file-systems (cons (file-system
|
||||
(device (file-system-label "Guix_image"))
|
||||
(mount-point "/")
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2022 Josselin Poiret <dev@jpoiret.xyz>
|
||||
;;; Copyright © 2023 Herman Rimm <herman@rimm.ee>
|
||||
;;; Copyright © 2023-2024 Herman Rimm <herman@rimm.ee>
|
||||
;;; Copyright © 2024 Lilah Tascheter <lilah@lunabee.space>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -503,9 +504,7 @@ (define installation-os
|
|||
(timezone "Europe/Paris")
|
||||
(locale "en_US.utf8")
|
||||
(name-service-switch %mdns-host-lookup-nss)
|
||||
(bootloader (bootloader-configuration
|
||||
(bootloader grub-bootloader)
|
||||
(targets '("/dev/sda"))))
|
||||
(bootloader (bootloader-configuration (bootloader grub-bootloader)))
|
||||
(label (string-append "GNU Guix installation "
|
||||
(or (getenv "GUIX_DISPLAYED_VERSION")
|
||||
(package-version guix))))
|
||||
|
@ -569,17 +568,19 @@ (define* (os-with-u-boot os board #:key (bootloader-target "/dev/mmcblk0")
|
|||
(package (make-u-boot-package board triplet))))
|
||||
(targets (list bootloader-target))))))
|
||||
|
||||
(define* (embedded-installation-os bootloader bootloader-target tty
|
||||
#:key (extra-modules '()))
|
||||
"Return an installation os for embedded systems.
|
||||
The initrd gets the extra modules EXTRA-MODULES.
|
||||
A getty is provided on TTY.
|
||||
The bootloader BOOTLOADER is installed to BOOTLOADER-TARGET."
|
||||
(define* (embedded-installation-os bootloader #:optional
|
||||
(tty "ttyS0")
|
||||
(extra-modules '())
|
||||
(bootloader-targets '()))
|
||||
"Return an installation OS for embedded systems. The BOOTLOADER is
|
||||
installed to its default targets, or BOOTLOADER-TARGETS if provided. A
|
||||
getty is provided on ttyS0, or on TTY if provided. The initrd gets the
|
||||
EXTRA-MODULES."
|
||||
(operating-system
|
||||
(inherit installation-os)
|
||||
(bootloader (bootloader-configuration
|
||||
(bootloader bootloader)
|
||||
(targets (list bootloader-target))))
|
||||
(targets bootloader-targets)))
|
||||
(kernel linux-libre)
|
||||
(kernel-arguments
|
||||
(cons (string-append "console=" tty)
|
||||
|
@ -587,88 +588,58 @@ (define* (embedded-installation-os bootloader bootloader-target tty
|
|||
(initrd-modules (append extra-modules %base-initrd-modules))))
|
||||
|
||||
(define beaglebone-black-installation-os
|
||||
(embedded-installation-os u-boot-beaglebone-black-bootloader
|
||||
"/dev/sda"
|
||||
"ttyO0"
|
||||
#:extra-modules
|
||||
;; This module is required to mount the sd card.
|
||||
'("omap_hsmmc")))
|
||||
(embedded-installation-os
|
||||
;; The omap_hsmmc module is required to mount the microSD card.
|
||||
u-boot-beaglebone-black-bootloader "ttyO0" '("omap_hsmmc")))
|
||||
|
||||
|
||||
(define a20-olinuxino-lime-installation-os
|
||||
(embedded-installation-os u-boot-a20-olinuxino-lime-bootloader
|
||||
"/dev/mmcblk0" ; SD card storage
|
||||
"ttyS0"))
|
||||
(embedded-installation-os u-boot-a20-olinuxino-lime-bootloader))
|
||||
|
||||
(define a20-olinuxino-lime2-emmc-installation-os
|
||||
(embedded-installation-os u-boot-a20-olinuxino-lime2-bootloader
|
||||
"/dev/mmcblk1" ; eMMC storage
|
||||
"ttyS0"))
|
||||
(embedded-installation-os u-boot-a20-olinuxino-lime2-bootloader))
|
||||
|
||||
(define a20-olinuxino-micro-installation-os
|
||||
(embedded-installation-os u-boot-a20-olinuxino-micro-bootloader
|
||||
"/dev/mmcblk0" ; SD card storage
|
||||
"ttyS0"))
|
||||
(embedded-installation-os u-boot-a20-olinuxino-micro-bootloader))
|
||||
|
||||
(define bananapi-m2-ultra-installation-os
|
||||
(embedded-installation-os u-boot-bananapi-m2-ultra-bootloader
|
||||
"/dev/mmcblk1" ; eMMC storage
|
||||
"ttyS0"))
|
||||
(embedded-installation-os u-boot-bananapi-m2-ultra-bootloader))
|
||||
|
||||
(define firefly-rk3399-installation-os
|
||||
(embedded-installation-os u-boot-firefly-rk3399-bootloader
|
||||
"/dev/mmcblk0" ; SD card/eMMC (SD priority) storage
|
||||
"ttyS2")) ; UART2 connected on the Pi2 bus
|
||||
|
||||
(define mx6cuboxi-installation-os
|
||||
(embedded-installation-os u-boot-mx6cuboxi-bootloader
|
||||
"/dev/mmcblk0" ; SD card storage
|
||||
"ttymxc0"))
|
||||
(embedded-installation-os u-boot-mx6cuboxi-bootloader "ttymxc0"))
|
||||
|
||||
(define novena-installation-os
|
||||
(embedded-installation-os u-boot-novena-bootloader
|
||||
"/dev/mmcblk1" ; SD card storage
|
||||
"ttymxc1"))
|
||||
(embedded-installation-os u-boot-novena-bootloader "ttymxc1"))
|
||||
|
||||
(define nintendo-nes-classic-edition-installation-os
|
||||
(embedded-installation-os u-boot-nintendo-nes-classic-edition-bootloader
|
||||
"/dev/mmcblk0" ; SD card (solder it yourself)
|
||||
"ttyS0"))
|
||||
(embedded-installation-os u-boot-nintendo-nes-classic-edition-bootloader))
|
||||
|
||||
(define orangepi-r1-plus-lts-rk3328-installation-os
|
||||
(embedded-installation-os u-boot-orangepi-r1-plus-lts-rk3328-bootloader
|
||||
"/dev/mmcblk0" ; SD card storage
|
||||
"ttyS0"))
|
||||
(embedded-installation-os u-boot-orangepi-r1-plus-lts-rk3328-bootloader))
|
||||
|
||||
(define pine64-plus-installation-os
|
||||
(embedded-installation-os u-boot-pine64-plus-bootloader
|
||||
"/dev/mmcblk0" ; SD card storage
|
||||
"ttyS0"))
|
||||
(embedded-installation-os u-boot-pine64-plus-bootloader))
|
||||
|
||||
(define pinebook-installation-os
|
||||
(embedded-installation-os u-boot-pinebook-bootloader
|
||||
"/dev/mmcblk0" ; SD card storage
|
||||
"ttyS0"))
|
||||
(embedded-installation-os u-boot-pinebook-bootloader))
|
||||
|
||||
(define rock64-installation-os
|
||||
(embedded-installation-os u-boot-rock64-rk3328-bootloader
|
||||
"/dev/mmcblk0" ; SD card/eMMC (SD priority) storage
|
||||
"ttyS2")) ; UART2 connected on the Pi2 bus
|
||||
|
||||
(define rockpro64-installation-os
|
||||
(embedded-installation-os u-boot-rockpro64-rk3399-bootloader
|
||||
"/dev/mmcblk0" ; SD card/eMMC (SD priority) storage
|
||||
"ttyS2")) ; UART2 connected on the Pi2 bus
|
||||
|
||||
(define rk3399-puma-installation-os
|
||||
(embedded-installation-os u-boot-puma-rk3399-bootloader
|
||||
"/dev/mmcblk0" ; SD card storage
|
||||
"ttyS0"))
|
||||
(embedded-installation-os u-boot-puma-rk3399-bootloader))
|
||||
|
||||
(define wandboard-installation-os
|
||||
(embedded-installation-os u-boot-wandboard-bootloader
|
||||
"/dev/mmcblk0" ; SD card storage
|
||||
"ttymxc0"))
|
||||
(embedded-installation-os u-boot-wandboard-bootloader "ttymxc0"))
|
||||
|
||||
;; Return the default os here so 'guix system' can consume it directly.
|
||||
installation-os
|
||||
|
|
Loading…
Reference in a new issue