summaryrefslogtreecommitdiff
path: root/gnu/bootloader
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/bootloader')
-rw-r--r--gnu/bootloader/extlinux.scm1
-rw-r--r--gnu/bootloader/grub.scm29
-rw-r--r--gnu/bootloader/u-boot.scm70
3 files changed, 80 insertions, 20 deletions
diff --git a/gnu/bootloader/extlinux.scm b/gnu/bootloader/extlinux.scm
index f7820a37a4..8b7a95a6fc 100644
--- a/gnu/bootloader/extlinux.scm
+++ b/gnu/bootloader/extlinux.scm
@@ -64,6 +64,7 @@ corresponding to old generations of the system."
(format port "# This file was generated from your GuixSD configuration. Any changes
# will be lost upon reconfiguration.
UI menu.c32
+MENU TITLE GuixSD Boot Options
PROMPT ~a
TIMEOUT ~a~%"
(if (> timeout 0) 1 0)
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm
index 3b01125c78..a131f3b506 100644
--- a/gnu/bootloader/grub.scm
+++ b/gnu/bootloader/grub.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -31,6 +31,7 @@
#:use-module (gnu system)
#:use-module (gnu bootloader)
#:use-module (gnu system uuid)
+ #:use-module (gnu system file-systems)
#:autoload (gnu packages bootloaders) (grub)
#:autoload (gnu packages compression) (gzip)
#:autoload (gnu packages gtk) (guile-cairo guile-rsvg)
@@ -120,25 +121,14 @@ otherwise."
(define* (svg->png svg #:key width height)
"Build a PNG of HEIGHT x WIDTH from SVG."
- ;; Note: Guile-RSVG & co. are now built for Guile 2.2, so we use 2.2 here.
- ;; TODO: Remove #:guile-for-build when 2.2 has become the default.
- (mlet %store-monad ((guile (package->derivation guile-2.2 #:graft? #f)))
- (gexp->derivation "grub-image.png"
- (with-imported-modules '((gnu build svg))
+ (gexp->derivation "grub-image.png"
+ (with-imported-modules '((gnu build svg))
+ (with-extensions (list guile-rsvg guile-cairo)
#~(begin
- ;; We need these two libraries.
- (add-to-load-path (string-append #+guile-rsvg
- "/share/guile/site/"
- (effective-version)))
- (add-to-load-path (string-append #+guile-cairo
- "/share/guile/site/"
- (effective-version)))
-
(use-modules (gnu build svg))
(svg->png #+svg #$output
#:width #$width
- #:height #$height)))
- #:guile-for-build guile)))
+ #:height #$height))))))
(define* (grub-background-image config #:key (width 1024) (height 768))
"Return the GRUB background image defined in CONFIG with a ratio of
@@ -303,9 +293,10 @@ code."
((? uuid? uuid)
(format #f "search --fs-uuid --set ~a"
(uuid->string device)))
- ((? string? label)
- (format #f "search --label --set ~a" label))
- (#f
+ ((? file-system-label? label)
+ (format #f "search --label --set ~a"
+ (file-system-label->string label)))
+ ((or #f (? string?))
#~(format #f "search --file --set ~a" #$file)))))
(define* (grub-configuration-file config entries
diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm
index 21d0aecce2..52b38dd1ab 100644
--- a/gnu/bootloader/u-boot.scm
+++ b/gnu/bootloader/u-boot.scm
@@ -33,7 +33,12 @@
u-boot-a20-olinuxino-micro-bootloader
u-boot-banana-pi-m2-ultra-bootloader
u-boot-beaglebone-black-bootloader
- u-boot-nintendo-nes-classic-edition-bootloader))
+ u-boot-mx6cuboxi-bootloader
+ u-boot-nintendo-nes-classic-edition-bootloader
+ u-boot-novena-bootloader
+ u-boot-pine64-plus-bootloader
+ u-boot-puma-rk3399-bootloader
+ u-boot-wandboard-bootloader))
(define install-u-boot
#~(lambda (bootloader device mount-point)
@@ -62,6 +67,33 @@
(write-file-on-device u-boot (stat:size (stat u-boot))
device (* 8 1024)))))
+(define install-allwinner64-u-boot
+ #~(lambda (bootloader device mount-point)
+ (let ((spl (string-append bootloader "/libexec/spl/sunxi-spl.bin"))
+ (u-boot (string-append bootloader "/libexec/u-boot.itb")))
+ (write-file-on-device spl (stat:size (stat spl))
+ device (* 8 1024))
+ (write-file-on-device u-boot (stat:size (stat u-boot))
+ device (* 40 1024)))))
+
+(define install-imx-u-boot
+ #~(lambda (bootloader device mount-point)
+ (let ((spl (string-append bootloader "/libexec/SPL"))
+ (u-boot (string-append bootloader "/libexec/u-boot.img")))
+ (write-file-on-device spl (stat:size (stat spl))
+ device (* 1 1024))
+ (write-file-on-device u-boot (stat:size (stat u-boot))
+ device (* 69 1024)))))
+
+(define install-puma-rk3399-u-boot
+ #~(lambda (bootloader device mount-point)
+ (let ((spl (string-append bootloader "/libexec/u-boot-spl.rksd"))
+ (u-boot (string-append bootloader "/libexec/u-boot.itb")))
+ (write-file-on-device spl (stat:size (stat spl))
+ device (* 64 512))
+ (write-file-on-device u-boot (stat:size (stat u-boot))
+ device (* 512 512)))))
+
;;;
@@ -86,6 +118,16 @@
(inherit u-boot-bootloader)
(installer install-allwinner-u-boot)))
+(define u-boot-allwinner64-bootloader
+ (bootloader
+ (inherit u-boot-bootloader)
+ (installer install-allwinner64-u-boot)))
+
+(define u-boot-imx-bootloader
+ (bootloader
+ (inherit u-boot-bootloader)
+ (installer install-imx-u-boot)))
+
(define u-boot-nintendo-nes-classic-edition-bootloader
(bootloader
(inherit u-boot-allwinner-bootloader)
@@ -110,3 +152,29 @@
(bootloader
(inherit u-boot-allwinner-bootloader)
(package u-boot-banana-pi-m2-ultra)))
+
+(define u-boot-mx6cuboxi-bootloader
+ (bootloader
+ (inherit u-boot-imx-bootloader)
+ (package u-boot-mx6cuboxi)))
+
+(define u-boot-wandboard-bootloader
+ (bootloader
+ (inherit u-boot-imx-bootloader)
+ (package u-boot-wandboard)))
+
+(define u-boot-novena-bootloader
+ (bootloader
+ (inherit u-boot-imx-bootloader)
+ (package u-boot-novena)))
+
+(define u-boot-pine64-plus-bootloader
+ (bootloader
+ (inherit u-boot-allwinner64-bootloader)
+ (package u-boot-pine64-plus)))
+
+(define u-boot-puma-rk3399-bootloader
+ (bootloader
+ (inherit u-boot-bootloader)
+ (package u-boot-puma-rk3399)
+ (installer install-puma-rk3399-u-boot)))