gnu: bootloader: Deprecate "device" field in favor of "target".

* gnu/bootloader.scm (<bootloader-configuration>): Deprecate "device" field in
favor of "target" field.  This is mostly a renaming but also a generalization
to support UEFI targets being paths to a mounted partition instead of a device
name.
* gnu/system/examples/bare-bones.tmpl:
* gnu/system/examples/desktop.tmpl:
* gnu/system/examples/lightweight-desktop.tmpl:
* gnu/system/examples/vm-image.tmpl:
* gnu/system/install.scm:
* gnu/tests.scm:
* gnu/tests/install.scm:
* gnu/tests/nfs.scm:
* tests/system.scm: Adapt all invocations of bootloader-configuration.
* guix/scripts/system.scm (perform-action): Rename device argument to
bootloader-target.
(process-action): Adapt caller.
* doc/guix.texi (Proceeding with the Installation):
* doc/guix.texi (Bootloader Configuration): Update documentation.
This commit is contained in:
Andy Wingo 2017-08-23 21:48:58 +02:00
parent ba015ce9c0
commit 045ebb3e58
No known key found for this signature in database
GPG Key ID: A8803732E4436885
12 changed files with 57 additions and 38 deletions

View File

@ -7964,9 +7964,13 @@ in particular:
@itemize @itemize
@item @item
Make sure the @code{grub-configuration} form refers to the device you Make sure the @code{grub-configuration} form refers to the target you
want to install GRUB on. You also need to specify the @code{grub-efi} want to install GRUB on. It should mention @code{grub-bootloader} if
package if you wish to use native UEFI boot. you are installing GRUB in the legacy way, or @code{grub-efi-bootloader}
for newer UEFI systems. For legacy systems, the @code{target} field
names a device, like @code{/dev/sda}; for UEFI systems it names a path
to a mounted EFI partition, like @code{/boot/efi}, and do make sure the
path is actually mounted.
@item @item
Be sure that your partition labels match the value of their respective Be sure that your partition labels match the value of their respective
@ -17192,11 +17196,15 @@ The bootloader to use, as a @code{bootloader} object. For now
Available bootloaders are described in @code{(gnu bootloader @dots{})} Available bootloaders are described in @code{(gnu bootloader @dots{})}
modules. modules.
@item @code{device} @item @code{target}
This is a string denoting the boot device. It must be a device name This is a string denoting the target onto which to install the
understood by the bootloader @command{installer} command, such as bootloader. The exact interpretation depends on the bootloader in
@code{/dev/sda} or @code{(hd0)} (for GRUB, @pxref{Invoking grub-install,,, grub, question; for @code{grub-bootloader}, for example, it should be a device
GNU GRUB Manual}). name understood by the bootloader @command{installer} command, such as
@code{/dev/sda} or @code{(hd0)} (for GRUB, @pxref{Invoking
grub-install,,, grub, GNU GRUB Manual}). For
@code{grub-efi-bootloader}, it should be the path to a mounted EFI file
system.
@item @code{menu-entries} (default: @code{()}) @item @code{menu-entries} (default: @code{()})
A possibly empty list of @code{menu-entry} objects (see below), denoting A possibly empty list of @code{menu-entry} objects (see below), denoting
@ -17448,7 +17456,7 @@ files, packages, and so on. It also creates other essential files
needed for the system to operate correctly---e.g., the @file{/etc}, needed for the system to operate correctly---e.g., the @file{/etc},
@file{/var}, and @file{/run} directories, and the @file{/bin/sh} file. @file{/var}, and @file{/run} directories, and the @file{/bin/sh} file.
This command also installs bootloader on the device specified in This command also installs bootloader on the target specified in
@file{my-os-config}, unless the @option{--no-bootloader} option was @file{my-os-config}, unless the @option{--no-bootloader} option was
passed. passed.

View File

@ -43,7 +43,7 @@
bootloader-configuration bootloader-configuration
bootloader-configuration? bootloader-configuration?
bootloader-configuration-bootloader bootloader-configuration-bootloader
bootloader-configuration-device bootloader-configuration-target
bootloader-configuration-menu-entries bootloader-configuration-menu-entries
bootloader-configuration-default-entry bootloader-configuration-default-entry
bootloader-configuration-timeout bootloader-configuration-timeout
@ -107,6 +107,8 @@
(bootloader bootloader-configuration-bootloader) ; <bootloader> (bootloader bootloader-configuration-bootloader) ; <bootloader>
(device bootloader-configuration-device ; string (device bootloader-configuration-device ; string
(default #f)) (default #f))
(target %bootloader-configuration-target ; string
(default #f))
(menu-entries bootloader-configuration-menu-entries ; list of <boot-parameters> (menu-entries bootloader-configuration-menu-entries ; list of <boot-parameters>
(default '())) (default '()))
(default-entry bootloader-configuration-default-entry ; integer (default-entry bootloader-configuration-default-entry ; integer
@ -126,6 +128,15 @@
(additional-configuration bootloader-configuration-additional-configuration ; record (additional-configuration bootloader-configuration-additional-configuration ; record
(default #f))) (default #f)))
(define (bootloader-configuration-target config)
(or (%bootloader-configuration-target config)
(let ((device (bootloader-configuration-device config)))
(when device
(issue-deprecation-warning
"The 'device' field of bootloader configurations is deprecated."
"Use 'target' instead."))
device)))
;;; ;;;
;;; Bootloaders. ;;; Bootloaders.

View File

@ -14,7 +14,7 @@
;; the label of the target root file system. ;; the label of the target root file system.
(bootloader (bootloader-configuration (bootloader (bootloader-configuration
(bootloader grub-bootloader) (bootloader grub-bootloader)
(device "/dev/sdX"))) (target "/dev/sdX")))
(file-systems (cons (file-system (file-systems (cons (file-system
(device "my-root") (device "my-root")
(title 'label) (title 'label)

View File

@ -15,7 +15,7 @@
;; is the label of the target root file system. ;; is the label of the target root file system.
(bootloader (bootloader-configuration (bootloader (bootloader-configuration
(bootloader grub-bootloader) (bootloader grub-bootloader)
(device "/dev/sdX"))) (target "/dev/sdX")))
;; Specify a mapped device for the encrypted root partition. ;; Specify a mapped device for the encrypted root partition.
;; The UUID is that returned by 'cryptsetup luksUUID'. ;; The UUID is that returned by 'cryptsetup luksUUID'.

View File

@ -15,7 +15,7 @@
;; Partition mounted on /boot/efi. ;; Partition mounted on /boot/efi.
(bootloader (bootloader-configuration (bootloader (bootloader-configuration
(bootloader grub-efi-bootloader) (bootloader grub-efi-bootloader)
(device "/boot/efi"))) (target "/boot/efi")))
;; Assume the target root file system is labelled "my-root". ;; Assume the target root file system is labelled "my-root".
(file-systems (cons* (file-system (file-systems (cons* (file-system

View File

@ -26,7 +26,7 @@ partprobe, and then 2) resizing the filesystem with resize2fs.\n"))
;; Assuming /dev/sdX is the target hard disk, and "my-root" is ;; Assuming /dev/sdX is the target hard disk, and "my-root" is
;; the label of the target root file system. ;; the label of the target root file system.
(bootloader (grub-configuration (device "/dev/sda") (bootloader (grub-configuration (target "/dev/sda")
(terminal-outputs '(console)))) (terminal-outputs '(console))))
(file-systems (cons (file-system (file-systems (cons (file-system
(device "my-root") (device "my-root")

View File

@ -299,8 +299,7 @@ Use Alt-F2 for documentation.
(host-name "gnu") (host-name "gnu")
(timezone "Europe/Paris") (timezone "Europe/Paris")
(locale "en_US.utf8") (locale "en_US.utf8")
(bootloader (grub-configuration (bootloader (grub-configuration (target "/dev/sda")))
(device "/dev/sda")))
(file-systems (file-systems
;; Note: the disk image build code overrides this root file system with ;; Note: the disk image build code overrides this root file system with
;; the appropriate one. ;; the appropriate one.

View File

@ -206,7 +206,7 @@ the system under test."
(timezone "Europe/Berlin") (timezone "Europe/Berlin")
(locale "en_US.UTF-8") (locale "en_US.UTF-8")
(bootloader (grub-configuration (device "/dev/sdX"))) (bootloader (grub-configuration (target "/dev/sdX")))
(file-systems (cons (file-system (file-systems (cons (file-system
(device "my-root") (device "my-root")
(title 'label) (title 'label)

View File

@ -59,7 +59,7 @@
(timezone "Europe/Paris") (timezone "Europe/Paris")
(locale "en_US.UTF-8") (locale "en_US.UTF-8")
(bootloader (grub-configuration (device "/dev/vdb"))) (bootloader (grub-configuration (target "/dev/vdb")))
(kernel-arguments '("console=ttyS0")) (kernel-arguments '("console=ttyS0"))
(file-systems (cons (file-system (file-systems (cons (file-system
(device "my-root") (device "my-root")
@ -98,7 +98,7 @@
(bootloader (bootloader-configuration (bootloader (bootloader-configuration
(bootloader extlinux-bootloader-gpt) (bootloader extlinux-bootloader-gpt)
(device "/dev/vdb"))) (target "/dev/vdb")))
(kernel-arguments '("console=ttyS0")) (kernel-arguments '("console=ttyS0"))
(file-systems (cons (file-system (file-systems (cons (file-system
(device "my-root") (device "my-root")
@ -326,7 +326,7 @@ per %test-installed-os, this test is expensive in terms of CPU and storage.")
(timezone "Europe/Paris") (timezone "Europe/Paris")
(locale "en_US.utf8") (locale "en_US.utf8")
(bootloader (grub-configuration (device "/dev/vdb"))) (bootloader (grub-configuration (target "/dev/vdb")))
(kernel-arguments '("console=ttyS0")) (kernel-arguments '("console=ttyS0"))
(file-systems (cons* (file-system (file-systems (cons* (file-system
(device "my-root") (device "my-root")
@ -384,7 +384,7 @@ partition. In particular, home directories must be correctly created (see
(timezone "Europe/Paris") (timezone "Europe/Paris")
(locale "en_US.UTF-8") (locale "en_US.UTF-8")
(bootloader (grub-configuration (device "/dev/vdb"))) (bootloader (grub-configuration (target "/dev/vdb")))
(kernel-arguments '("console=ttyS0")) (kernel-arguments '("console=ttyS0"))
(file-systems (cons* (file-system (file-systems (cons* (file-system
(device "root-fs") (device "root-fs")
@ -460,7 +460,7 @@ where /gnu lives on a separate partition.")
(timezone "Europe/Paris") (timezone "Europe/Paris")
(locale "en_US.utf8") (locale "en_US.utf8")
(bootloader (grub-configuration (device "/dev/vdb"))) (bootloader (grub-configuration (target "/dev/vdb")))
(kernel-arguments '("console=ttyS0")) (kernel-arguments '("console=ttyS0"))
(initrd (lambda (file-systems . rest) (initrd (lambda (file-systems . rest)
;; Add a kernel module for RAID-0 (aka. "stripe"). ;; Add a kernel module for RAID-0 (aka. "stripe").
@ -543,7 +543,7 @@ by 'mdadm'.")
(timezone "Europe/Paris") (timezone "Europe/Paris")
(locale "en_US.UTF-8") (locale "en_US.UTF-8")
(bootloader (grub-configuration (device "/dev/vdb"))) (bootloader (grub-configuration (target "/dev/vdb")))
;; Note: Do not pass "console=ttyS0" so we can use our passphrase prompt ;; Note: Do not pass "console=ttyS0" so we can use our passphrase prompt
;; detection logic in 'enter-luks-passphrase'. ;; detection logic in 'enter-luks-passphrase'.
@ -670,7 +670,7 @@ build (current-guix) and then store a couple of full system images.")
(timezone "Europe/Paris") (timezone "Europe/Paris")
(locale "en_US.UTF-8") (locale "en_US.UTF-8")
(bootloader (grub-configuration (device "/dev/vdb"))) (bootloader (grub-configuration (target "/dev/vdb")))
(kernel-arguments '("console=ttyS0")) (kernel-arguments '("console=ttyS0"))
(file-systems (cons (file-system (file-systems (cons (file-system
(device "my-root") (device "my-root")

View File

@ -41,7 +41,7 @@
(timezone "Europe/Berlin") (timezone "Europe/Berlin")
(locale "en_US.UTF-8") (locale "en_US.UTF-8")
(bootloader (grub-configuration (device "/dev/sdX"))) (bootloader (grub-configuration (target "/dev/sdX")))
(file-systems %base-file-systems) (file-systems %base-file-systems)
(users %base-user-accounts) (users %base-user-accounts)
(packages (cons* (packages (cons*

View File

@ -612,17 +612,16 @@ and TARGET arguments."
(define* (perform-action action os (define* (perform-action action os
#:key install-bootloader? #:key install-bootloader?
dry-run? derivations-only? dry-run? derivations-only?
use-substitutes? device target use-substitutes? bootloader-target target
image-size file-system-type full-boot? image-size file-system-type full-boot?
(mappings '()) (mappings '())
(gc-root #f)) (gc-root #f))
"Perform ACTION for OS. INSTALL-BOOTLOADER? specifies whether to install "Perform ACTION for OS. INSTALL-BOOTLOADER? specifies whether to install
bootloader; DEVICE is the target devices for bootloader; TARGET is the target bootloader; BOOTLOADER-TAGET is the target for the bootloader; TARGET is the
root directory; IMAGE-SIZE is the size of the image to be built, for the target root directory; IMAGE-SIZE is the size of the image to be built, for
'vm-image' and 'disk-image' actions. the 'vm-image' and 'disk-image' actions. The root filesystem is created as a
The root filesystem is created as a FILE-SYSTEM-TYPE filesystem. FILE-SYSTEM-TYPE filesystem. FULL-BOOT? is used for the 'vm' action; it
FULL-BOOT? is used for the 'vm' action; determines whether to boot directly to the kernel or to the bootloader.
it determines whether to boot directly to the kernel or to the bootloader.
When DERIVATIONS-ONLY? is true, print the derivation file name(s) without When DERIVATIONS-ONLY? is true, print the derivation file name(s) without
building anything. building anything.
@ -662,7 +661,7 @@ output when building a system derivation, such as a disk image."
(target (or target "/"))) (target (or target "/")))
(bootloader-installer-derivation installer (bootloader-installer-derivation installer
bootloader-package bootloader-package
device target))) bootloader-target target)))
;; For 'init' and 'reconfigure', always build BOOTCFG, even if ;; For 'init' and 'reconfigure', always build BOOTCFG, even if
;; --no-bootloader is passed, because we then use it as a GC root. ;; --no-bootloader is passed, because we then use it as a GC root.
@ -895,8 +894,9 @@ resulting from command-line parsing."
(target (match args (target (match args
((first second) second) ((first second) second)
(_ #f))) (_ #f)))
(device (and bootloader? (bootloader-target
(bootloader-configuration-device (and bootloader?
(bootloader-configuration-target
(operating-system-bootloader os))))) (operating-system-bootloader os)))))
(with-store store (with-store store
@ -929,7 +929,8 @@ resulting from command-line parsing."
(_ #f)) (_ #f))
opts) opts)
#:install-bootloader? bootloader? #:install-bootloader? bootloader?
#:target target #:device device #:target target
#:bootloader-target bootloader-target
#:gc-root (assoc-ref opts 'gc-root))))) #:gc-root (assoc-ref opts 'gc-root)))))
#:system system)))) #:system system))))

View File

@ -36,7 +36,7 @@
(host-name "komputilo") (host-name "komputilo")
(timezone "Europe/Berlin") (timezone "Europe/Berlin")
(locale "en_US.utf8") (locale "en_US.utf8")
(bootloader (grub-configuration (device "/dev/sdX"))) (bootloader (grub-configuration (target "/dev/sdX")))
(file-systems (cons %root-fs %base-file-systems)) (file-systems (cons %root-fs %base-file-systems))
(users %base-user-accounts))) (users %base-user-accounts)))
@ -51,7 +51,7 @@
(host-name "komputilo") (host-name "komputilo")
(timezone "Europe/Berlin") (timezone "Europe/Berlin")
(locale "en_US.utf8") (locale "en_US.utf8")
(bootloader (grub-configuration (device "/dev/sdX"))) (bootloader (grub-configuration (target "/dev/sdX")))
(mapped-devices (list %luks-device)) (mapped-devices (list %luks-device))
(file-systems (cons (file-system (file-systems (cons (file-system
(inherit %root-fs) (inherit %root-fs)