mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
bootloader: Extend `<menu-entry>' for multiboot.
* gnu/bootloader.scm (<menu-entry>)[multiboot-kernel,multiboot-arguments, multiboot-modules]: New fields. [linux,initrd]: Add default value '#f'. (menu-entry->sexp, sexp->menu-entry): Support multiboot entry. * doc/guix.texi (Bootloader Configuration): Document them.
This commit is contained in:
parent
2018fb2afe
commit
21acd8d6c1
2 changed files with 66 additions and 7 deletions
|
@ -26985,7 +26985,7 @@ The type of an entry in the bootloader menu.
|
||||||
@item @code{label}
|
@item @code{label}
|
||||||
The label to show in the menu---e.g., @code{"GNU"}.
|
The label to show in the menu---e.g., @code{"GNU"}.
|
||||||
|
|
||||||
@item @code{linux}
|
@item @code{linux} (default: @code{#f})
|
||||||
The Linux kernel image to boot, for example:
|
The Linux kernel image to boot, for example:
|
||||||
|
|
||||||
@lisp
|
@lisp
|
||||||
|
@ -27007,9 +27007,10 @@ field is ignored entirely.
|
||||||
The list of extra Linux kernel command-line arguments---e.g.,
|
The list of extra Linux kernel command-line arguments---e.g.,
|
||||||
@code{("console=ttyS0")}.
|
@code{("console=ttyS0")}.
|
||||||
|
|
||||||
@item @code{initrd}
|
@item @code{initrd} (default: @code{#f})
|
||||||
A G-Expression or string denoting the file name of the initial RAM disk
|
A G-Expression or string denoting the file name of the initial RAM disk
|
||||||
to use (@pxref{G-Expressions}).
|
to use (@pxref{G-Expressions}).
|
||||||
|
|
||||||
@item @code{device} (default: @code{#f})
|
@item @code{device} (default: @code{#f})
|
||||||
The device where the kernel and initrd are to be found---i.e., for GRUB,
|
The device where the kernel and initrd are to be found---i.e., for GRUB,
|
||||||
@dfn{root} for this menu entry (@pxref{root,,, grub, GNU GRUB manual}).
|
@dfn{root} for this menu entry (@pxref{root,,, grub, GNU GRUB manual}).
|
||||||
|
@ -27020,6 +27021,28 @@ the bootloader will search the device containing the file specified by
|
||||||
the @code{linux} field (@pxref{search,,, grub, GNU GRUB manual}). It
|
the @code{linux} field (@pxref{search,,, grub, GNU GRUB manual}). It
|
||||||
must @emph{not} be an OS device name such as @file{/dev/sda1}.
|
must @emph{not} be an OS device name such as @file{/dev/sda1}.
|
||||||
|
|
||||||
|
@item @code{multiboot-kernel} (default: @code{#f})
|
||||||
|
The kernel to boot in Multiboot-mode (@pxref{multiboot,,, grub, GNU GRUB
|
||||||
|
manual}). When this field is set, a Multiboot menu-entry is generated.
|
||||||
|
For example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(file-append mach "/boot/gnumach")
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
@item @code{multiboot-arguments} (default: @code{()})
|
||||||
|
The list of extra command-line arguments for the multiboot-kernel.
|
||||||
|
|
||||||
|
@item @code{multiboot-modules} (default: @code{()})
|
||||||
|
The list of commands for loading Multiboot modules. For example:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(list (list (file-append hurd "/hurd/ext2fs.static") "ext2fs"
|
||||||
|
@dots{})
|
||||||
|
(list (file-append libc "/lib/ld.so.1") "exec"
|
||||||
|
@dots{}))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
@end deftp
|
@end deftp
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||||
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
|
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
|
||||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||||
|
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -33,6 +34,9 @@ (define-module (gnu bootloader)
|
||||||
menu-entry-linux-arguments
|
menu-entry-linux-arguments
|
||||||
menu-entry-initrd
|
menu-entry-initrd
|
||||||
menu-entry-device-mount-point
|
menu-entry-device-mount-point
|
||||||
|
menu-entry-multiboot-kernel
|
||||||
|
menu-entry-multiboot-arguments
|
||||||
|
menu-entry-multiboot-modules
|
||||||
|
|
||||||
menu-entry->sexp
|
menu-entry->sexp
|
||||||
sexp->menu-entry
|
sexp->menu-entry
|
||||||
|
@ -77,22 +81,41 @@ (define-record-type* <menu-entry>
|
||||||
(default #f))
|
(default #f))
|
||||||
(device-mount-point menu-entry-device-mount-point
|
(device-mount-point menu-entry-device-mount-point
|
||||||
(default #f))
|
(default #f))
|
||||||
(linux menu-entry-linux)
|
(linux menu-entry-linux
|
||||||
|
(default #f))
|
||||||
(linux-arguments menu-entry-linux-arguments
|
(linux-arguments menu-entry-linux-arguments
|
||||||
(default '())) ; list of string-valued gexps
|
(default '())) ; list of string-valued gexps
|
||||||
(initrd menu-entry-initrd)) ; file name of the initrd as a gexp
|
(initrd menu-entry-initrd ; file name of the initrd as a gexp
|
||||||
|
(default #f))
|
||||||
|
(multiboot-kernel menu-entry-multiboot-kernel
|
||||||
|
(default #f))
|
||||||
|
(multiboot-arguments menu-entry-multiboot-arguments
|
||||||
|
(default '())) ; list of string-valued gexps
|
||||||
|
(multiboot-modules menu-entry-multiboot-modules
|
||||||
|
(default '()))) ; list of multiboot commands, where
|
||||||
|
; a command is a list of <string>
|
||||||
|
|
||||||
(define (menu-entry->sexp entry)
|
(define (menu-entry->sexp entry)
|
||||||
"Return ENTRY serialized as an sexp."
|
"Return ENTRY serialized as an sexp."
|
||||||
(match entry
|
(match entry
|
||||||
(($ <menu-entry> label device mount-point linux linux-arguments initrd)
|
(($ <menu-entry> label device mount-point linux linux-arguments initrd #f
|
||||||
|
())
|
||||||
`(menu-entry (version 0)
|
`(menu-entry (version 0)
|
||||||
(label ,label)
|
(label ,label)
|
||||||
(device ,device)
|
(device ,device)
|
||||||
(device-mount-point ,mount-point)
|
(device-mount-point ,mount-point)
|
||||||
(linux ,linux)
|
(linux ,linux)
|
||||||
(linux-arguments ,linux-arguments)
|
(linux-arguments ,linux-arguments)
|
||||||
(initrd ,initrd)))))
|
(initrd ,initrd)))
|
||||||
|
(($ <menu-entry> label device mount-point #f () #f
|
||||||
|
multiboot-kernel multiboot-arguments multiboot-modules)
|
||||||
|
`(menu-entry (version 0)
|
||||||
|
(label ,label)
|
||||||
|
(device ,device)
|
||||||
|
(device-mount-point ,mount-point)
|
||||||
|
(multiboot-kernel ,multiboot-kernel)
|
||||||
|
(multiboot-arguments ,multiboot-arguments)
|
||||||
|
(multiboot-modules ,multiboot-modules)))))
|
||||||
|
|
||||||
(define (sexp->menu-entry sexp)
|
(define (sexp->menu-entry sexp)
|
||||||
"Turn SEXP, an sexp as returned by 'menu-entry->sexp', into a <menu-entry>
|
"Turn SEXP, an sexp as returned by 'menu-entry->sexp', into a <menu-entry>
|
||||||
|
@ -109,7 +132,20 @@ (define (sexp->menu-entry sexp)
|
||||||
(device-mount-point mount-point)
|
(device-mount-point mount-point)
|
||||||
(linux linux)
|
(linux linux)
|
||||||
(linux-arguments linux-arguments)
|
(linux-arguments linux-arguments)
|
||||||
(initrd initrd)))))
|
(initrd initrd)))
|
||||||
|
(('menu-entry ('version 0)
|
||||||
|
('label label) ('device device)
|
||||||
|
('device-mount-point mount-point)
|
||||||
|
('multiboot-kernel multiboot-kernel)
|
||||||
|
('multiboot-arguments multiboot-arguments)
|
||||||
|
('multiboot-modules multiboot-modules) _ ...)
|
||||||
|
(menu-entry
|
||||||
|
(label label)
|
||||||
|
(device device)
|
||||||
|
(device-mount-point mount-point)
|
||||||
|
(multiboot-kernel multiboot-kernel)
|
||||||
|
(multiboot-arguments multiboot-arguments)
|
||||||
|
(multiboot-modules multiboot-modules)))))
|
||||||
|
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
|
|
Loading…
Reference in a new issue