system: Add BeagleBone Black installer.

* gnu/bootloader/u-boot.scm (u-boot-beaglebone-black-bootloader): New exported
  bootloader.
* gnu/system/install.scm (beaglebone-black-installation-os): New exported variable.
This commit is contained in:
Mathieu Othacehe 2017-12-12 16:41:56 +01:00
parent 5a72ddf176
commit ceb3952764
No known key found for this signature in database
GPG Key ID: 8354763531769CA6
2 changed files with 51 additions and 3 deletions

View File

@ -21,18 +21,35 @@
#:use-module (gnu bootloader extlinux)
#:use-module (gnu bootloader)
#:use-module (gnu system)
#:use-module (gnu build bootloader)
#: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))
#:export (u-boot-bootloader
u-boot-beaglebone-black-bootloader))
(define install-u-boot
#~(lambda (bootloader device mount-point)
(if bootloader
(error "Failed to install U-Boot"))))
(define install-beaglebone-black-u-boot
;; http://wiki.beyondlogic.org/index.php?title=BeagleBoneBlack_Upgrading_uBoot
;; This first stage bootloader called MLO (U-Boot SPL) is expected at
;; 0x20000 by BBB ROM code. The second stage bootloader will be loaded by
;; the MLO and is expected at 0x60000. Write both first stage ("MLO") and
;; second stage ("u-boot.img") images, read in BOOTLOADER directory, to the
;; specified DEVICE.
#~(lambda (bootloader device mount-point)
(let ((mlo (string-append bootloader "/libexec/MLO"))
(u-boot (string-append bootloader "/libexec/u-boot.img")))
(write-file-on-device mlo (* 256 512)
device (* 256 512))
(write-file-on-device u-boot (* 1024 512)
device (* 768 512)))))
;;;
@ -45,3 +62,9 @@
(name 'u-boot)
(package #f)
(installer install-u-boot)))
(define u-boot-beaglebone-black-bootloader
(bootloader
(inherit u-boot-bootloader)
(package u-boot-beagle-bone-black)
(installer install-beaglebone-black-u-boot)))

View File

@ -22,6 +22,7 @@
(define-module (gnu system install)
#:use-module (gnu)
#:use-module (gnu bootloader u-boot)
#:use-module (guix gexp)
#:use-module (guix store)
#:use-module (guix monads)
@ -42,7 +43,8 @@
#:use-module (gnu packages nvi)
#:use-module (ice-9 match)
#:use-module (srfi srfi-26)
#:export (installation-os))
#:export (installation-os
beaglebone-black-installation-os))
;;; Commentary:
;;;
@ -372,7 +374,30 @@ You have been warned. Thanks for being so brave.\x1b[0m
nvi ;:wq!
%base-packages))))
;; Return it here so 'guix system' can consume it directly.
(define beaglebone-black-installation-os
(operating-system
(inherit installation-os)
(bootloader (bootloader-configuration
(bootloader u-boot-beaglebone-black-bootloader)
(target "/dev/sda")))
(kernel linux-libre)
(initrd (lambda (fs . rest)
(apply base-initrd fs
;; This module is required to mount the sd card.
#:extra-modules (list "omap_hsmmc")
rest)))
(services (append
;; mingetty does not work on serial lines.
;; Use agetty with board-specific serial parameters.
(list (agetty-service
(agetty-configuration
(extra-options '("-L"))
(baud-rate "115200")
(term "vt100")
(tty "ttyO0"))))
(operating-system-user-services installation-os)))))
;; Return the default os here so 'guix system' can consume it directly.
installation-os
;;; install.scm ends here