From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id gOhxIPse82axOQAAqHPOHw:P1 (envelope-from ) for ; Tue, 24 Sep 2024 20:20:11 +0000 Received: from aspmx1.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0.migadu.com with LMTPS id gOhxIPse82axOQAAqHPOHw (envelope-from ) for ; Tue, 24 Sep 2024 22:20:11 +0200 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=Js6McPv6; dkim=fail ("headers rsa verify failed") header.d=rimm.ee header.s=herman header.b=nMwa7FBV; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gnu.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1727209211; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=6rUhTQ2O6uXS+XaOEAC/PQ/WgLhKAEVFAZJ5EQIqi4E=; b=eoq3x07CLk09gSTQ4sVhSdXyUYahIk0w5HO2XQarFdkeYh4Ho+/qeDOjZshIHfs6HqbAE3 8EdWhpE61KGKQwzs1gQ5dChTJGDuFdMvaWh/IYRgfPwNP734JhCrcugFYsIjSxID0qYPwy YNjKhQSmFjIpiwU9NMdWN4HCFuJIarqAvPNpgddWN2fltQad75OrojJh0jwwABcK/ugjJG JKChrfQVVpiGDedEyrRL17ZqQINYe2S6sECsBEaJbb3Y9lpG5Fkj4zi3MTbtezI9E/CKMs Hru1EeLSGAJRaTF8Q6/u9Ij/470hNNSIEd3q1rHzvkZQ4l9tiHM9RuJ4YmA1lQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=Js6McPv6; dkim=fail ("headers rsa verify failed") header.d=rimm.ee header.s=herman header.b=nMwa7FBV; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gnu.org ARC-Seal: i=1; s=key1; d=yhetil.org; t=1727209211; a=rsa-sha256; cv=none; b=rVvX5Dcd5RHrBPwpy57Wv0LoPhBapmAvyOvS2+uT/DzIhBPCFQavOOwa6EDlQimSQ+MgJJ +jStGL/lDyFsNEcqNN2+9wymrb5eVsEtogSAwIsCmsxrmubYTEtJ8H0fOa/bEI5UOCZuOJ DJaSa6C7+mmTJVcjyPGJdyst9My/2pPas9sePh80+EwPdgJXzbcL68XHip2/5RjbjKiUJN Xm87FzWviG333TX4tGK4+hx385DXBZ5QdpFTmuVWd9VcBuqUo8Q+zbw8fUnjdcOoyl8s1G gKDvd+kJDtzDPPnBgaW0PY0/6WcXKSap9S5xYrql3C/Xdn7XcIu2/ariFhGZBA== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id F14916816B for ; Tue, 24 Sep 2024 22:20:10 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1stBzi-0004OU-Gv; Tue, 24 Sep 2024 16:18:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1stBzg-0004FO-56 for guix-patches@gnu.org; Tue, 24 Sep 2024 16:18:44 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1stBzf-0002kb-RY; Tue, 24 Sep 2024 16:18:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=b0etzW5Px+0oesNxSdrltTNbL7Vmuq/ChAl9Q3hGIko=; b=Js6McPv60Lx+pyMkwwhvkXr+cC8vt7lhxTEzcjpETZGsr9nZS8PnPv2mFEMcsKXRZy+3f/i5Myop86ciziGeeCIw90ClcHVlD4a1gr7R/ogelIaLNt/3o5naJaqk9hB4ghzW0Gc0aXe/+N1zz8WB8Sl5joWLCuRKwxMI5tCnSS/DC6JjeQm4TO2QRYsVbMNzJFpXJKTI+JCnkXoLNdO9jqPYkF9k4duGh5Kpww2+fI9z6APEBShhPVjvlvfmXyEVhVc0DYE1Cb2VX2P5SzdPPtZtQHRF/UvOpX0ExeQXKRxfhsAegywclTxjYGY3KnEBu8ikfS6BhFu74h4d+2OFfg==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1stC04-0004nI-HH; Tue, 24 Sep 2024 16:19:08 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#72457] [PATCH v6 08/12] gnu: bootloader: u-boot: Rewrite completely. Resent-From: Herman Rimm Original-Sender: "Debbugs-submit" Resent-CC: pelzflorian@pelzflorian.de, lilah@lunabee.space, ludo@gnu.org, maxim.cournoyer@gmail.com, guix-patches@gnu.org Resent-Date: Tue, 24 Sep 2024 20:19:08 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72457 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 72457@debbugs.gnu.org Cc: Lilah Tascheter , Florian Pelz , Lilah Tascheter , Ludovic =?UTF-8?Q?Court=C3=A8s?= , Maxim Cournoyer X-Debbugs-Original-Xcc: Florian Pelz , Lilah Tascheter , Ludovic =?UTF-8?Q?Court=C3=A8s?= , Maxim Cournoyer Received: via spool by 72457-submit@debbugs.gnu.org id=B72457.172720914718413 (code B ref 72457); Tue, 24 Sep 2024 20:19:08 +0000 Received: (at 72457) by debbugs.gnu.org; 24 Sep 2024 20:19:07 +0000 Received: from localhost ([127.0.0.1]:38443 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1stC01-0004mL-9g for submit@debbugs.gnu.org; Tue, 24 Sep 2024 16:19:07 -0400 Received: from 81-205-150-117.fixed.kpn.net ([81.205.150.117]:39007 helo=email.rimm.ee) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1stBzd-0004iX-Uw for 72457@debbugs.gnu.org; Tue, 24 Sep 2024 16:18:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rimm.ee; s=herman; t=1727202615; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6rUhTQ2O6uXS+XaOEAC/PQ/WgLhKAEVFAZJ5EQIqi4E=; b=nMwa7FBVRulylfb4VBFDGmVADfWDBnEhkvXmtDtzkRnfYeG/Pd/gxSkb8IWqGUEFzLwHoz +4ES3sO3ojh02d1CRpuIaR8rdlivlJ6ea3Q+Xv87z4EBGSDkNoMZQo4IjJrUSy7jmzZ5bu IxXXGIdsfSpnWXwOgWOuU07aZ3qA3dUFTML1DDZcZCE0ojfhRuwCPkmQbzolA+7WSzFHms KMXcaVWzxDdiz0KAfTUnFJzaDKCDH1f7xqFnKVDHRNBpyBLEUv/DW200rJKpq7eoSDau35 wskkDk36BBkwifRkGdME9ISLz9oxW5CxD0q2L8aR6R0jT4VJ22nfB/MHanhJ5w== Received: by 81-205-150-117.fixed.kpn.net (OpenSMTPD) with ESMTPSA id 6214b8dc (TLSv1.3:TLS_CHACHA20_POLY1305_SHA256:256:NO); Tue, 24 Sep 2024 18:30:15 +0000 (UTC) Date: Tue, 24 Sep 2024 20:29:15 +0200 Message-ID: <3626dc2a7da509eddac416ae644a45e7af202adb.1727201267.git.herman@rimm.ee> X-Mailer: git-send-email 2.45.2 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Herman Rimm X-ACL-Warn: , Herman Rimm via Guix-patches From: Herman Rimm via Guix-patches via Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Queue-Id: F14916816B X-Migadu-Scanner: mx11.migadu.com X-Spam-Score: -5.52 X-Migadu-Spam-Score: -5.52 X-TUID: TXrVXBTGO8p8 From: Lilah Tascheter * gnu/bootloader/u-boot.scm (u-boot-bootloader): Delete variable. (make-install-u-boot): Add procedure. (define-u-bootloader): Add macro. (u-boot-*-bootloader): Use define-u-bootloader. (install-*u-boot): Remove variables. * gnu/system/install.scm (os-with-u-boot): Remove procedure. * doc/guix.texi (System Installation)[Building the Installation Image]: Use beaglebone as the example. Change-Id: I3654d160f7306bb45a78b82ea6b249ff4281f739 --- doc/guix.texi | 8 +- gnu/bootloader/u-boot.scm | 466 +++++++++++++------------------------- gnu/system/install.scm | 16 +- 3 files changed, 168 insertions(+), 322 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 4168310135..a3338b098a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2666,11 +2666,13 @@ Building the Installation Image includes the bootloader, specifically: @example -guix system image --system=armhf-linux -e '((@@ (gnu system install) os-with-u-boot) (@@ (gnu system install) installation-os) "A20-OLinuXino-Lime2")' +guix system image --system=armhf-linux -e '(@ (gnu system install) beaglebone-black-installation-os)' @end example -@code{A20-OLinuXino-Lime2} is the name of the board. If you specify an invalid -board, a list of possible boards will be printed. +@code{beaglebone-black} is the name of the board. Similar +@code{installation-os} variables exist for most other supported boards. +Otherwise, you can use @code{embedded-installation-os}, passing it a u-boot +bootloader and the desired console tty. @c ********************************************************************* diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm index 7fd7288854..2d351c9dc2 100644 --- a/gnu/bootloader/u-boot.scm +++ b/gnu/bootloader/u-boot.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2023 Efraim Flashner ;;; Copyright © 2023-2024 Herman Rimm ;;; Copyright © 2024 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2024 Lilah Tascheter ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,12 +25,11 @@ ;;; along with GNU Guix. If not, see . (define-module (gnu bootloader u-boot) - #:use-module (gnu bootloader extlinux) #:use-module (gnu bootloader) + #:use-module (gnu bootloader extlinux) #:use-module (gnu packages bootloaders) #:use-module (guix gexp) - #:export (u-boot-bootloader - u-boot-a20-olinuxino-lime-bootloader + #:export (u-boot-a20-olinuxino-lime-bootloader u-boot-a20-olinuxino-lime2-bootloader u-boot-a20-olinuxino-micro-bootloader u-boot-bananapi-m2-ultra-bootloader @@ -55,321 +55,179 @@ (define-module (gnu bootloader u-boot) u-boot-ts7970-q-2g-1000mhz-c-bootloader u-boot-wandboard-bootloader)) -(define install-u-boot - #~(lambda (bootloader root-index image) - (if bootloader - (error "Failed to install U-Boot")))) +(define (make-install-u-boot firmware installers) + (lambda* (#:key bootloader-config #:allow-other-keys . args) + (with-targets (bootloader-configuration-targets bootloader-config) + ('extlinux (apply install-extlinux-config args)) + (('install => (path :path)) #~(let ((path #$path)) #$firmware)) + (('disk => (disk :device)) #~(let ((disk #$disk)) #f #$@installers))))) + +(define-syntax-rule (define-u-bootloader def-name package firmware + (file size doffset) ...) + "Defines a U-Boot installer DEF-NAME, using u-boot PACKAGE. Installs +each given FILE of SIZE (or #f to autodetect) to the targeted disk at +OFFSET. FIRMWARE is ran on the U-Boot firmware directory to install +supporting files, with the directory path as the local variable 'path'." + (define def-name + (bootloader + (name 'u-boot) + (default-targets (list (bootloader-target + (type 'install) + (offset 'root) + (path "boot")) + (bootloader-target + (type 'extlinux) + (offset 'install) + (path "extlinux")))) + (installer + (make-install-u-boot + firmware + (list #~(let ((fw #$(file-append package "/libexec/" file))) + (write-file-on-device fw + #$(or size #~(stat:size (stat fw))) + disk #$doffset)) ...)))))) + + +;;; +;;; Bootloader definitions. +;;; -(define install-beaglebone-black-u-boot +(define-u-bootloader u-boot-beaglebone-black-bootloader + u-boot-am335x-boneblack #f ;; 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 root-index image) - (let ((mlo (string-append bootloader "/libexec/MLO")) - (u-boot (string-append bootloader "/libexec/u-boot.img"))) - (write-file-on-device mlo (* 256 512) - image (* 256 512)) - (write-file-on-device u-boot (* 1024 512) - image (* 768 512))))) - -(define install-allwinner-u-boot - #~(lambda (bootloader root-index image) - (let ((u-boot (string-append bootloader - "/libexec/u-boot-sunxi-with-spl.bin"))) - (write-file-on-device u-boot (stat:size (stat u-boot)) - image (* 8 1024))))) - -(define install-allwinner64-u-boot - #~(lambda (bootloader root-index image) - (let ((spl (string-append bootloader "/libexec/u-boot-sunxi-with-spl.bin")) - (u-boot (string-append bootloader "/libexec/u-boot-sunxi-with-spl.fit.itb"))) - (write-file-on-device spl (stat:size (stat spl)) - image (* 8 1024)) - (write-file-on-device u-boot (stat:size (stat u-boot)) - image (* 40 1024))))) - -(define install-imx-u-boot - #~(lambda (bootloader root-index image) - (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)) - image (* 1 1024)) - (write-file-on-device u-boot (stat:size (stat u-boot)) - image (* 69 1024))))) - -(define install-nanopi-r4s-rk3399-u-boot - #~(lambda (bootloader root-index image) - (let ((spl (string-append bootloader "/libexec/idbloader.img")) - (u-boot (string-append bootloader "/libexec/u-boot.itb"))) - (write-file-on-device spl (stat:size (stat spl)) - image (* 64 512)) - (write-file-on-device u-boot (stat:size (stat u-boot)) - image (* 16384 512))))) - -(define install-orangepi-r1-plus-lts-rk3328-u-boot - #~(lambda (bootloader root-index image) - (let ((idb (string-append bootloader "/libexec/idbloader.img")) - (u-boot (string-append bootloader "/libexec/u-boot.itb"))) - (write-file-on-device idb (stat:size (stat idb)) - image (* 64 512)) - (write-file-on-device u-boot (stat:size (stat u-boot)) - image (* 16384 512))))) - -(define install-puma-rk3399-u-boot - #~(lambda (bootloader root-index image) - (let ((spl (string-append bootloader "/libexec/idbloader.img")) - (u-boot (string-append bootloader "/libexec/u-boot.itb"))) - (write-file-on-device spl (stat:size (stat spl)) - image (* 64 512)) - (write-file-on-device u-boot (stat:size (stat u-boot)) - image (* 512 512))))) - -(define install-firefly-rk3399-u-boot - #~(lambda (bootloader root-index image) - (let ((idb (string-append bootloader "/libexec/idbloader.img")) - (u-boot (string-append bootloader "/libexec/u-boot.itb"))) - (write-file-on-device idb (stat:size (stat idb)) - image (* 64 512)) - (write-file-on-device u-boot (stat:size (stat u-boot)) - image (* 16384 512))))) - -(define install-rock64-rk3328-u-boot - #~(lambda (bootloader root-index image) - (let ((idb (string-append bootloader "/libexec/idbloader.img")) - (u-boot (string-append bootloader "/libexec/u-boot.itb"))) - (write-file-on-device idb (stat:size (stat idb)) - image (* 64 512)) - (write-file-on-device u-boot (stat:size (stat u-boot)) - image (* 16384 512))))) - -(define install-rockpro64-rk3399-u-boot - #~(lambda (bootloader root-index image) - (let ((idb (string-append bootloader "/libexec/idbloader.img")) - (u-boot (string-append bootloader "/libexec/u-boot.itb"))) - (write-file-on-device idb (stat:size (stat idb)) - image (* 64 512)) - (write-file-on-device u-boot (stat:size (stat u-boot)) - image (* 16384 512))))) - -(define install-pinebook-pro-rk3399-u-boot install-rockpro64-rk3399-u-boot) - -(define install-u-boot-ts7970-q-2g-1000mhz-c-u-boot - #~(lambda (bootloader device mount-point) - (let ((u-boot.imx (string-append bootloader "/libexec/u-boot.imx")) - (install-dir (string-append mount-point "/boot"))) - (install-file u-boot.imx install-dir)))) - -(define install-sifive-unmatched-u-boot - #~(lambda (bootloader root-index image) - (let ((spl (string-append bootloader "/libexec/spl/u-boot-spl.bin")) - (u-boot (string-append bootloader "/libexec/u-boot.itb"))) - (write-file-on-device spl (stat:size (stat spl)) - image (* 34 512)) - (write-file-on-device u-boot (stat:size (stat u-boot)) - image (* 2082 512))))) - -(define install-starfive-visionfive2-u-boot - #~(lambda (bootloader root-index image) - (let ((spl (string-append - bootloader "/libexec/spl/u-boot-spl.bin.normal.out")) - (u-boot (string-append bootloader "/libexec/u-boot.itb"))) - (write-file-on-device spl (stat:size (stat spl)) - image (* 34 512)) - (write-file-on-device u-boot (stat:size (stat u-boot)) - image (* 2082 512))))) - -(define install-starfive-visionfive2-uEnv.txt - #~(lambda (bootloader device mount-point) - (mkdir-p (string-append mount-point "/boot")) - (call-with-output-file (string-append mount-point "/boot/uEnv.txt") + ;; second stage ("u-boot.img") images to the target. + ("MLO" (* 256 512) (* 256 512)) + ("u-boot.img" (* 1024 512) (* 768 512))) + +(define-u-bootloader u-boot-sifive-unmatched-bootloader + u-boot-sifive-unmatched #f + ("spl/u-boot-spl.bin" #f (* 34 512)) + ("u-boot.itb" #f (* 2082 512))) + +(define-u-bootloader u-boot-starfive-visionfive2-bootloader + u-boot-starfive-visionfive2 + #~(begin (mkdir-p path) + (call-with-output-file (string-append path "/uEnv.txt") (lambda (port) (format port - ;; if board SPI use vender's u-boot, will find - ;; ""starfive/starfive_visionfive2.dtb"", We cannot guarantee - ;; that users will update this u-boot, so set it. - "fdtfile=starfive/jh7110-starfive-visionfive-2-v1.3b.dtb~%"))))) + ;; if board SPI use vender's u-boot, will find + ;; ""starfive/starfive_visionfive2.dtb"", We cannot guarantee + ;; that users will update this u-boot, so set it. + "fdtfile=starfive/jh7110-starfive-visionfive-2-v1.3b.dtb~%")))) + ("spl/u-boot-spl.bin.normal.out" #f (* 34 512)) + ("u-boot.itb" #f (* 2082 512))) + + +;;; +;;; Allwinner bootloader definitions. +;;; +(define-syntax-rule (define-u-bootloader-allwinner def-name package) + (define-u-bootloader def-name package #f + ("u-boot-sunxi-with-spl.bin" #f (* 8 1024)))) + -(define install-qemu-riscv64-u-boot - #~(lambda (bootloader device mount-point) - (let ((u-boot.bin (string-append bootloader "/libexec/u-boot.bin")) - (install-dir (string-append mount-point "/boot"))) - (install-file u-boot.bin install-dir)))) +(define-u-bootloader-allwinner u-boot-nintendo-nes-classic-edition-bootloader + u-boot-nintendo-nes-classic-edition) + +(define-u-bootloader-allwinner u-boot-a20-olinuxino-lime-bootloader + u-boot-a20-olinuxino-lime) + +(define-u-bootloader-allwinner u-boot-a20-olinuxino-lime2-bootloader + u-boot-a20-olinuxino-lime2) + +(define-u-bootloader-allwinner u-boot-a20-olinuxino-micro-bootloader + u-boot-a20-olinuxino-micro) + +(define-u-bootloader-allwinner u-boot-bananapi-m2-ultra-bootloader + u-boot-bananapi-m2-ultra) + +(define-u-bootloader-allwinner u-boot-cubietruck-bootloader u-boot-cubietruck) + +(define-u-bootloader-allwinner u-boot-pine64-lts-bootloader u-boot-pine64-lts) + +(define-u-bootloader-allwinner u-boot-orangepi-zero2w-bootloader + u-boot-orangepi-zero2w) +;;; +;;; Allwinner64 bootloader definitions. +;;; +(define-syntax-rule (define-u-bootloader-allwinner64 def-name package) + (define-u-bootloader def-name package #f + ("u-boot-sunxi-with-spl.bin" #f (* 8 1024)) + ("u-boot-sunxi-with-spl.fit.itb" #f (* 40 1024)))) +(define-u-bootloader-allwinner64 u-boot-pine64-plus-bootloader + u-boot-pine64-plus) + +(define-u-bootloader-allwinner64 u-boot-pinebook-bootloader u-boot-pinebook) + + ;;; -;;; Bootloader definitions. +;;; IMX bootloader definitions. ;;; +(define-syntax-rule (define-u-bootloader-imx def-name package) + (define-u-bootloader def-name package #f + ("SPL" #f (* 8 1024)) + ("u-boot.img" #f (* 40 1024)))) -(define u-boot-bootloader - (bootloader - (inherit extlinux-bootloader) - (name 'u-boot) - (package #f) - (installer #f) - (disk-image-installer install-u-boot))) - -(define u-boot-beaglebone-black-bootloader - (bootloader - (inherit u-boot-bootloader) - (package u-boot-am335x-boneblack) - (disk-image-installer install-beaglebone-black-u-boot))) - -(define u-boot-allwinner-bootloader - (bootloader - (inherit u-boot-bootloader) - (disk-image-installer install-allwinner-u-boot))) - -(define u-boot-allwinner64-bootloader - (bootloader - (inherit u-boot-bootloader) - (disk-image-installer install-allwinner64-u-boot))) - -(define u-boot-imx-bootloader - (bootloader - (inherit u-boot-bootloader) - (disk-image-installer install-imx-u-boot))) - -(define u-boot-nintendo-nes-classic-edition-bootloader - (bootloader - (inherit u-boot-allwinner-bootloader) - (package u-boot-nintendo-nes-classic-edition))) - -(define u-boot-a20-olinuxino-lime-bootloader - (bootloader - (inherit u-boot-allwinner-bootloader) - (package u-boot-a20-olinuxino-lime))) - -(define u-boot-a20-olinuxino-lime2-bootloader - (bootloader - (inherit u-boot-allwinner-bootloader) - (package u-boot-a20-olinuxino-lime2))) - -(define u-boot-a20-olinuxino-micro-bootloader - (bootloader - (inherit u-boot-allwinner-bootloader) - (package u-boot-a20-olinuxino-micro))) - -(define u-boot-bananapi-m2-ultra-bootloader - (bootloader - (inherit u-boot-allwinner-bootloader) - (package u-boot-bananapi-m2-ultra))) - -(define u-boot-cubietruck-bootloader - (bootloader - (inherit u-boot-allwinner-bootloader) - (package u-boot-cubietruck))) - -(define u-boot-firefly-rk3399-bootloader - ;; SD and eMMC use the same format - (bootloader - (inherit u-boot-bootloader) - (package u-boot-firefly-rk3399) - (disk-image-installer install-firefly-rk3399-u-boot))) - -(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-nanopi-r4s-rk3399-bootloader - (bootloader - (inherit u-boot-bootloader) - (package u-boot-nanopi-r4s-rk3399) - (disk-image-installer install-nanopi-r4s-rk3399-u-boot))) - -(define u-boot-orangepi-r1-plus-lts-rk3328-bootloader - (bootloader - (inherit u-boot-bootloader) - (package u-boot-orangepi-r1-plus-lts-rk3328) - (disk-image-installer install-orangepi-r1-plus-lts-rk3328-u-boot))) - -(define u-boot-orangepi-zero2w-bootloader - (bootloader - (inherit u-boot-allwinner-bootloader) - (package u-boot-orangepi-zero2w))) - -(define u-boot-pine64-plus-bootloader - (bootloader - (inherit u-boot-allwinner64-bootloader) - (package u-boot-pine64-plus))) - -(define u-boot-pine64-lts-bootloader - (bootloader - (inherit u-boot-allwinner-bootloader) - (package u-boot-pine64-lts))) - -(define u-boot-pinebook-bootloader - (bootloader - (inherit u-boot-allwinner64-bootloader) - (package u-boot-pinebook))) - -(define u-boot-puma-rk3399-bootloader - (bootloader - (inherit u-boot-bootloader) - (package u-boot-puma-rk3399) - (disk-image-installer install-puma-rk3399-u-boot))) - -(define u-boot-rock64-rk3328-bootloader - ;; SD and eMMC use the same format - (bootloader - (inherit u-boot-bootloader) - (package u-boot-rock64-rk3328) - (disk-image-installer install-rock64-rk3328-u-boot))) -(define u-boot-rockpro64-rk3399-bootloader - ;; SD and eMMC use the same format - (bootloader - (inherit u-boot-bootloader) - (package u-boot-rockpro64-rk3399) - (disk-image-installer install-rockpro64-rk3399-u-boot))) +(define-u-bootloader-imx u-boot-mx6cuboxi-bootloader u-boot-mx6cuboxi) + +(define-u-bootloader-imx u-boot-wandboard-bootloader u-boot-wandboard) + +(define-u-bootloader-imx u-boot-novena-bootloader u-boot-novena) -(define u-boot-pinebook-pro-rk3399-bootloader + +;;; +;;; Rockchip bootloader definitions. +;;; +(define-syntax-rule (define-u-bootloader-rockchip def-name package) ;; SD and eMMC use the same format - (bootloader - (inherit u-boot-bootloader) - (package u-boot-pinebook-pro-rk3399) - (disk-image-installer install-pinebook-pro-rk3399-u-boot))) - -(define u-boot-ts7970-q-2g-1000mhz-c-bootloader - ;; This bootloader doesn't really need to be installed, as it is read from - ;; an SPI memory chip, not the SD card. It is copied to /boot/u-boot.imx - ;; for convenience and should be manually flashed at the U-Boot prompt. - (bootloader - (inherit u-boot-bootloader) - (package u-boot-ts7970-q-2g-1000mhz-c) - (installer install-u-boot-ts7970-q-2g-1000mhz-c-u-boot) - (disk-image-installer #f))) - -(define u-boot-sifive-unmatched-bootloader - (bootloader - (inherit u-boot-bootloader) - (package u-boot-sifive-unmatched) - (disk-image-installer install-sifive-unmatched-u-boot))) - -(define u-boot-starfive-visionfive2-bootloader - (bootloader - (inherit u-boot-bootloader) - (package u-boot-starfive-visionfive2) - (installer install-starfive-visionfive2-uEnv.txt) - (disk-image-installer install-starfive-visionfive2-u-boot))) - -(define u-boot-qemu-riscv64-bootloader - (bootloader - (inherit u-boot-bootloader) - (package u-boot-qemu-riscv64) - (installer install-qemu-riscv64-u-boot) - (disk-image-installer #f))) + (define-u-bootloader def-name package #f + ("idbloader.img" #f (* 64 512)) + ("u-boot.itb" #f (* 16384 512)))) + +(define-u-bootloader-rockchip u-boot-firefly-rk3399-bootloader + u-boot-firefly-rk3399) + +(define-u-bootloader-rockchip u-boot-nanopi-r4s-rk3399-bootloader + u-boot-nanopi-r4s-rk3399) + +(define-u-bootloader-rockchip u-boot-orangepi-r1-plus-lts-rk3328-bootloader + u-boot-orangepi-r1-plus-lts-rk3328) + +(define-u-bootloader-rockchip u-boot-rock64-rk3328-bootloader + u-boot-rock64-rk3328) + +(define-u-bootloader-rockchip u-boot-rockpro64-rk3399-bootloader + u-boot-rockpro64-rk3399) + +(define-u-bootloader-rockchip u-boot-pinebook-pro-rk3399-bootloader + u-boot-pinebook-pro-rk3399) + +(define-u-bootloader u-boot-puma-rk3399-bootloader u-boot-puma-rk3399 #f + ("idbloader.img" #f (* 64 512)) + ("u-boot.itb" #f (* 512 512))) + + +;;; +;;; Copy-only bootloader definitions. +;;; + +;; These bootloaders don't really need to be installed, as they are read from +;; an SPI memory chip or directly from the FS, not the disk. +(define-syntax-rule (define-u-bootloader-copy def-name package file) + (define-u-bootloader def-name package + #~(install-file #$(file-append package "/libexec/" file) path))) + +;; user should manually install this to SPI flash +;; TODO: write directly to SPI flash? unless wear issues are a problem. +(define-u-bootloader-copy u-boot-ts7970-q-2g-1000mhz-c-bootloader + u-boot-ts7970-q-2g-1000mhz-c "u-boot.imx") + +(define-u-bootloader-copy u-boot-qemu-riscv64-bootloader + u-boot-qemu-riscv64 "u-boot.bin") diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 2d0c9875fb..82f2c451dd 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -78,8 +78,7 @@ (define-module (gnu system install) rock64-installation-os rockpro64-installation-os rk3399-puma-installation-os - wandboard-installation-os - os-with-u-boot)) + wandboard-installation-os)) ;;; Commentary: ;;; @@ -555,19 +554,6 @@ (define installation-os %installer-disk-utilities %base-packages)))) -(define* (os-with-u-boot os board #:key (bootloader-target "/dev/mmcblk0") - (triplet "arm-linux-gnueabihf")) - "Given OS, amend it with the u-boot bootloader for BOARD, -installed to BOOTLOADER-TARGET (a drive), compiled for TRIPLET. - -If you want a serial console, make sure to specify one in your -operating-system's kernel-arguments (\"console=ttyS0\" or similar)." - (operating-system (inherit os) - (bootloader (bootloader-configuration - (bootloader (bootloader (inherit u-boot-bootloader) - (package (make-u-boot-package board triplet)))) - (targets (list bootloader-target)))))) - (define* (embedded-installation-os bootloader #:optional (tty "ttyS0") (extra-modules '()) -- 2.45.2