* bug#27327: [PATCH] bootloader: Add u-boot.
@ 2017-06-11 10:58 Danny Milosavljevic
2017-06-16 8:40 ` [bug#27327] " Ludovic Courtès
0 siblings, 1 reply; 4+ messages in thread
From: Danny Milosavljevic @ 2017-06-11 10:58 UTC (permalink / raw)
To: 27327
* gnu/bootloader/u-boot.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* doc/guix.texi: Document it.
---
doc/guix.texi | 8 ++++----
gnu/bootloader/u-boot.scm | 42 ++++++++++++++++++++++++++++++++++++++++++
gnu/local.mk | 1 +
3 files changed, 47 insertions(+), 4 deletions(-)
create mode 100644 gnu/bootloader/u-boot.scm
diff --git a/doc/guix.texi b/doc/guix.texi
index 87aaae854..b47701d66 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -15740,10 +15740,10 @@ The type of a bootloader configuration declaration.
@cindex UEFI, bootloader
@cindex BIOS, bootloader
The bootloader to use, as a @code{bootloader} object. For now
-@code{grub-bootloader}, @code{grub-efi-bootloader} and
-@code{extlinux-bootloader} are supported. @code{grub-efi-bootloader},
-allows to boot on modern systems using the @dfn{Unified Extensible
-Firmware Interface} (UEFI).
+@code{grub-bootloader}, @code{grub-efi-bootloader},
+@code{extlinux-bootloader} and @code{u-boot-bootloader} are supported.
+@code{grub-efi-bootloader} allows to boot on modern systems using the
+@dfn{Unified Extensible Firmware Interface} (UEFI).
Available bootloaders are described in @code{(gnu bootloader @dots{})}
modules.
diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm
new file mode 100644
index 000000000..64cbd5c14
--- /dev/null
+++ b/gnu/bootloader/u-boot.scm
@@ -0,0 +1,42 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 David Craven <david@craven.ch>
+;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu bootloader u-boot)
+ #:use-module (gnu bootloader extlinux)
+ #:use-module (gnu bootloader)
+ #:use-module (gnu system)
+ #:use-module (gnu packages bootloaders)
+ #:use-module (guix gexp)
+ #:use-module (guix monads)
+ #:use-module (guix records)
+ #:use-module (guix utils)
+ #:export (u-boot-bootloader))
+
+\f
+
+;;;
+;;; Bootloader definitions.
+;;;
+
+(define u-boot-bootloader
+ (bootloader
+ (inherit extlinux-bootloader)
+ (name 'u-boot)
+ (package #f)
+ (installer #f)))
diff --git a/gnu/local.mk b/gnu/local.mk
index 70b4a44a1..a890a9c9e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -39,6 +39,7 @@ GNU_SYSTEM_MODULES = \
%D%/bootloader.scm \
%D%/bootloader/grub.scm \
%D%/bootloader/extlinux.scm \
+ %D%/bootloader/u-boot.scm \
%D%/packages.scm \
%D%/packages/abduco.scm \
%D%/packages/abiword.scm \
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [bug#27327] [PATCH] bootloader: Add u-boot.
2017-06-11 10:58 bug#27327: [PATCH] bootloader: Add u-boot Danny Milosavljevic
@ 2017-06-16 8:40 ` Ludovic Courtès
2017-06-16 9:04 ` Danny Milosavljevic
0 siblings, 1 reply; 4+ messages in thread
From: Ludovic Courtès @ 2017-06-16 8:40 UTC (permalink / raw)
To: Danny Milosavljevic; +Cc: 27327
Hello,
(+Cc: Mathieu.)
Danny Milosavljevic <dannym@scratchpost.org> skribis:
> * gnu/bootloader/u-boot.scm: New file.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
> * doc/guix.texi: Document it.
[...]
> +;;;
> +;;; Bootloader definitions.
> +;;;
> +
> +(define u-boot-bootloader
> + (bootloader
> + (inherit extlinux-bootloader)
> + (name 'u-boot)
> + (package #f)
> + (installer #f)))
I still find it weird to use #f for these two fields.
I would find it more reasonable to have, say, a ‘make-u-boot-bootloader’
that returns a <bootloader> with all the fields appropriately set (not
#f). Otherwise it sounds like we’re going to have to deal with support
requests #about “wrong type to apply: #f”, and I’d like to avoid that.
:-)
Can’t we just say that ‘package’ is always a <package> and that
‘installer’ is always a procedure? Eventually we’ll hopefully arrange
to check that at macro-expansion time and/or via contracts.
WDYT?
Apart from that, pretty happy to see U-Boot finally making it into
GuixSD!
Ludo’.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [bug#27327] [PATCH] bootloader: Add u-boot.
2017-06-16 8:40 ` [bug#27327] " Ludovic Courtès
@ 2017-06-16 9:04 ` Danny Milosavljevic
2017-06-16 12:37 ` Ludovic Courtès
0 siblings, 1 reply; 4+ messages in thread
From: Danny Milosavljevic @ 2017-06-16 9:04 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 27327
Hi Ludo,
On Fri, 16 Jun 2017 10:40:39 +0200
ludo@gnu.org (Ludovic Courtès) wrote:
> > + (package #f)
> > + (installer #f)))
>
> I still find it weird to use #f for these two fields.
>
> I would find it more reasonable to have, say, a ‘make-u-boot-bootloader’
> that returns a <bootloader> with all the fields appropriately set (not
> #f). Otherwise it sounds like we’re going to have to deal with support
> requests #about “wrong type to apply: #f”, and I’d like to avoid that.
> :-)
Yeah, but I think Mathieu added explicit support for leaving those #f.
> Can’t we just say that ‘package’ is always a <package>
Difficult. U-Boot is more like a BIOS is on PCs. That means in normal operation you'd not flash it. If there was a mistake in the flashed U-Boot often you can't fix it again without electronics knowledge and gear (if at all - serial pads must be available on the board). There's no extra BIOS. U-Boot does it all: RAM initialization, keyboard initialization, display initialization etcetc.
Sometimes flashing is only possible via serial cable (or worse) from an external machine.
Also, there are lots of forks of U-Boot. Since U-Boot is licensed under GPL the package should be available somewhere - but not necessarily in the U-Boot master branch (and often it's in fact not available there).
In short, we should add U-Boot packages gradually, and only after testing each U-Boot package on the hardware.
That means in the beginning we'd have a LOT of (package #f) - but that's still preferrable to bricking.
>and that
> ‘installer’ is always a procedure?
Yeah, the installation procedure could probably check (if package (invoke "...")).
I've submitted this minimal patch mostly to make clear how U-Boot would extend extlinux. I think it's good to have it in place as a guard against too-much-syslinux-bias :)
That said, it should actually make GuixSD boot on a machine with U-Boot already installed.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [bug#27327] [PATCH] bootloader: Add u-boot.
2017-06-16 9:04 ` Danny Milosavljevic
@ 2017-06-16 12:37 ` Ludovic Courtès
0 siblings, 0 replies; 4+ messages in thread
From: Ludovic Courtès @ 2017-06-16 12:37 UTC (permalink / raw)
To: Danny Milosavljevic; +Cc: 27327
Hello,
Danny Milosavljevic <dannym@scratchpost.org> skribis:
> On Fri, 16 Jun 2017 10:40:39 +0200
> ludo@gnu.org (Ludovic Courtès) wrote:
>
>> > + (package #f)
>> > + (installer #f)))
>>
>> I still find it weird to use #f for these two fields.
>>
>> I would find it more reasonable to have, say, a ‘make-u-boot-bootloader’
>> that returns a <bootloader> with all the fields appropriately set (not
>> #f). Otherwise it sounds like we’re going to have to deal with support
>> requests #about “wrong type to apply: #f”, and I’d like to avoid that.
>> :-)
>
> Yeah, but I think Mathieu added explicit support for leaving those #f.
>
>> Can’t we just say that ‘package’ is always a <package>
>
> Difficult. U-Boot is more like a BIOS is on PCs. That means in normal operation you'd not flash it. If there was a mistake in the flashed U-Boot often you can't fix it again without electronics knowledge and gear (if at all - serial pads must be available on the board). There's no extra BIOS. U-Boot does it all: RAM initialization, keyboard initialization, display initialization etcetc.
>
> Sometimes flashing is only possible via serial cable (or worse) from an external machine.
>
> Also, there are lots of forks of U-Boot. Since U-Boot is licensed under GPL the package should be available somewhere - but not necessarily in the U-Boot master branch (and often it's in fact not available there).
>
> In short, we should add U-Boot packages gradually, and only after testing each U-Boot package on the hardware.
>
> That means in the beginning we'd have a LOT of (package #f) - but that's still preferrable to bricking.
>
>>and that
>> ‘installer’ is always a procedure?
>
> Yeah, the installation procedure could probably check (if package (invoke "...")).
Yeah, I think so.
I mean, you could run “guix system reconfigure --no-bootloader” or, if
you want to be sure you don’t flash your device inadvertently, you could
use ‘u-boot-noop-bootloader’ or similar, which is like
‘u-boot-bootloader’ except that it never installs anything beyond its
config file.
> I've submitted this minimal patch mostly to make clear how U-Boot would extend extlinux. I think it's good to have it in place as a guard against too-much-syslinux-bias :)
Yup, makes sense!
> That said, it should actually make GuixSD boot on a machine with U-Boot already installed.
That’s pretty cool. Looking forward to GuixSD on ARM!
Ludo’.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-06-16 12:38 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-11 10:58 bug#27327: [PATCH] bootloader: Add u-boot Danny Milosavljevic
2017-06-16 8:40 ` [bug#27327] " Ludovic Courtès
2017-06-16 9:04 ` Danny Milosavljevic
2017-06-16 12:37 ` Ludovic Courtès
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.