diff mbox series

[bug#67261,3/3] images: Add orangepi-r1-plus-lts image.

Message ID 04c59bffe5d465cb17c0b7e8159642f910ce3f35.1700321434.git.herman@rimm.ee
State New
Headers show
Series Update u-boot to 2023.10. | expand

Commit Message

Herman Rimm Nov. 18, 2023, 4:01 p.m. UTC
* gnu/local.mk: Register image.
* gnu/system/images/orangepi-r1-plus-lts-rk3328.scm: New file.
* gnu/system/install.scm (orangepi-r1-plus-lts-rk3328-installation-os):
  New variable.
---
 gnu/local.mk                                  |  1 +
 .../images/orangepi-r1-plus-lts-rk3328.scm    | 76 +++++++++++++++++++
 gnu/system/install.scm                        |  7 ++
 3 files changed, 84 insertions(+)
 create mode 100644 gnu/system/images/orangepi-r1-plus-lts-rk3328.scm

Comments

Vagrant Cascadian Dec. 1, 2023, 7:58 p.m. UTC | #1
On 2023-11-18, Herman Rimm wrote:
> * gnu/local.mk: Register image.
> * gnu/system/images/orangepi-r1-plus-lts-rk3328.scm: New file.
> * gnu/system/install.scm (orangepi-r1-plus-lts-rk3328-installation-os):
>   New variable.

I guess this opens in my mind a larger question of how many images do we
want to build out-of-the-box?

Building images for every (ARM) board variant possibly supported in guix
might not be sustainable in the long term... this could easily become
hundreds of images. How big is each image?

On the other hand, most of the images for a given architecture will
share much of the work between them, as most of the individual packages
used to build each image are the same.

Not having CI build each and every image is one approach... although
then you might not notice when an individual image breaks.

live well,
  vagrant
Efraim Flashner Dec. 3, 2023, 10:22 a.m. UTC | #2
On Fri, Dec 01, 2023 at 11:58:57AM -0800, Vagrant Cascadian wrote:
> On 2023-11-18, Herman Rimm wrote:
> > * gnu/local.mk: Register image.
> > * gnu/system/images/orangepi-r1-plus-lts-rk3328.scm: New file.
> > * gnu/system/install.scm (orangepi-r1-plus-lts-rk3328-installation-os):
> >   New variable.
> 
> I guess this opens in my mind a larger question of how many images do we
> want to build out-of-the-box?
> 
> Building images for every (ARM) board variant possibly supported in guix
> might not be sustainable in the long term... this could easily become
> hundreds of images. How big is each image?
> 
> On the other hand, most of the images for a given architecture will
> share much of the work between them, as most of the individual packages
> used to build each image are the same.
> 
> Not having CI build each and every image is one approach... although
> then you might not notice when an individual image breaks.

Do we normally build all the images in (gnu system images)? There seems
to be a large number of different file-system offsets needed for
different boards.  I suppose we could standardize on a larger size that
would take care of most of them, but until something is setup to make it
possible I'm not sure it's possible to support them for Guix System
without also adding an OS config for the offsets for the root file
system.
Vagrant Cascadian Dec. 22, 2023, 11:59 p.m. UTC | #3
On 2023-12-03, Efraim Flashner wrote:
> On Fri, Dec 01, 2023 at 11:58:57AM -0800, Vagrant Cascadian wrote:
>> On 2023-11-18, Herman Rimm wrote:
>> > * gnu/local.mk: Register image.
>> > * gnu/system/images/orangepi-r1-plus-lts-rk3328.scm: New file.
>> > * gnu/system/install.scm (orangepi-r1-plus-lts-rk3328-installation-os):
>> >   New variable.
>> 
>> I guess this opens in my mind a larger question of how many images do we
>> want to build out-of-the-box?
>> 
>> Building images for every (ARM) board variant possibly supported in guix
>> might not be sustainable in the long term... this could easily become
>> hundreds of images. How big is each image?
>> 
>> On the other hand, most of the images for a given architecture will
>> share much of the work between them, as most of the individual packages
>> used to build each image are the same.
>> 
>> Not having CI build each and every image is one approach... although
>> then you might not notice when an individual image breaks.
>
> Do we normally build all the images in (gnu system images)? There seems
> to be a large number of different file-system offsets needed for
> different boards.  I suppose we could standardize on a larger size that
> would take care of most of them, but until something is setup to make it
> possible I'm not sure it's possible to support them for Guix System
> without also adding an OS config for the offsets for the root file
> system.

From a quick look, ci.guix.gnu.org builds
pinebook-pro-barebones-raw-image, pine64-barebones-raw-image,
novena-barebones-raw-image ... but I could not find an image for rock64
... so I am not sure what is built by CI out of the box.


live well,
  vagrant
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 84fcb9c54e..428dc20969 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -749,6 +749,7 @@  GNU_SYSTEM_MODULES =				\
 						\
   %D%/system/images/hurd.scm			\
   %D%/system/images/novena.scm			\
+  %D%/system/images/orangepi-r1-plus-lts-rk3328.scm	\
   %D%/system/images/pine64.scm			\
   %D%/system/images/pinebook-pro.scm		\
   %D%/system/images/rock64.scm			\
diff --git a/gnu/system/images/orangepi-r1-plus-lts-rk3328.scm b/gnu/system/images/orangepi-r1-plus-lts-rk3328.scm
new file mode 100644
index 0000000000..eaaa12ba78
--- /dev/null
+++ b/gnu/system/images/orangepi-r1-plus-lts-rk3328.scm
@@ -0,0 +1,76 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2023 Herman Rimm <herman@rimm.ee>
+;;;
+;;; 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 system images orangepi-r1-plus-lts-rk3328)
+  #:use-module (gnu bootloader)
+  #:use-module (gnu bootloader u-boot)
+  #:use-module (gnu image)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages certs)
+  #:use-module (guix platforms arm)
+  #:use-module (gnu services)
+  #:use-module (gnu services base)
+  #:use-module (gnu services networking)
+  #:use-module (gnu system)
+  #:use-module (gnu system file-systems)
+  #:use-module (gnu system image)
+  #:use-module (srfi srfi-26)
+  #:export (orangepi-r1-plus-lts-rk3328-barebones-os
+            orangepi-r1-plus-lts-rk3328-image-type
+            orangepi-r1-plus-lts-rk3328-barebones-raw-image))
+
+(define orangepi-r1-plus-lts-rk3328-barebones-os
+  (operating-system
+    (host-name "windmolen")
+    (timezone "Europe/Amsterdam")
+    (locale "en_US.utf8")
+    (bootloader (bootloader-configuration
+                  (bootloader u-boot-orangepi-r1-plus-lts-rk3328-bootloader)
+                  (targets '("/dev/mmcblk0"))))
+    (initrd-modules '())
+    (kernel linux-libre-arm64-generic)
+    (file-systems (cons (file-system
+                          (device (file-system-label "my-root"))
+                          (mount-point "/")
+                          (type "ext4")) %base-file-systems))
+    (services
+     (cons* (service agetty-service-type
+                     (agetty-configuration (extra-options '("-L")) ;no carrier detect
+                                           (baud-rate "1500000")
+                                           (term "vt100")
+                                           (tty "ttyS2")))
+            (service dhcp-client-service-type)
+            (service ntp-service-type) %base-services))
+    (packages (cons nss-certs %base-packages))))
+
+(define orangepi-r1-plus-lts-rk3328-image-type
+  (image-type (name 'orangepi-r1-plus-lts-rk3328-raw)
+              (constructor (lambda (os)
+                             (image (inherit (raw-with-offset-disk-image (expt
+                                                                          2 24)))
+                                    (operating-system
+                                      os)
+                                    (platform aarch64-linux))))))
+
+(define orangepi-r1-plus-lts-rk3328-barebones-raw-image
+  (image (inherit (os+platform->image orangepi-r1-plus-lts-rk3328-barebones-os
+                   aarch64-linux
+                   #:type orangepi-r1-plus-lts-rk3328-image-type))
+         (name 'orangepi-r1-plus-lts-rk3328-barebones-raw-image)))
+
+orangepi-r1-plus-lts-rk3328-barebones-raw-image
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 28161de153..03d2b0b2f4 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -7,6 +7,7 @@ 
 ;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2022 Josselin Poiret <dev@jpoiret.xyz>
+;;; Copyright © 2023 Herman Rimm <herman@rimm.ee>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -69,6 +70,7 @@  (define-module (gnu system install)
             mx6cuboxi-installation-os
             nintendo-nes-classic-edition-installation-os
             novena-installation-os
+            orangepi-r1-plus-lts-rk3328-installation-os
             firefly-rk3399-installation-os
             pine64-plus-installation-os
             pinebook-installation-os
@@ -633,6 +635,11 @@  (define nintendo-nes-classic-edition-installation-os
                             "/dev/mmcblk0" ; SD card (solder it yourself)
                             "ttyS0"))
 
+(define orangepi-r1-plus-lts-rk3328-installation-os
+  (embedded-installation-os u-boot-orangepi-r1-plus-lts-rk3328-bootloader
+                            "/dev/mmcblk0" ; SD card storage
+                            "ttyS0"))
+
 (define pine64-plus-installation-os
   (embedded-installation-os u-boot-pine64-plus-bootloader
                             "/dev/mmcblk0" ; SD card storage