unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* 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 public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).