unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Guix System on RockPro64
@ 2022-05-03 18:53 Tobias Platen
  2022-05-04 12:34 ` Tom Fitzhenry
  0 siblings, 1 reply; 4+ messages in thread
From: Tobias Platen @ 2022-05-03 18:53 UTC (permalink / raw)
  To: guix-devel

Hello,

I had a look at the guix page, there is a latest version image for the
PineBook Pro, which uses the same SoC. Unfortunately I was unable to
find the reciepe to build that image. The guix page is currently down,
I will try again tomorrow. Today I was able to install guix on top of
Debian which I have installed on my RockPro64.

Tobias



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Guix System on RockPro64
  2022-05-03 18:53 Guix System on RockPro64 Tobias Platen
@ 2022-05-04 12:34 ` Tom Fitzhenry
  2022-05-04 16:14   ` Vagrant Cascadian
  0 siblings, 1 reply; 4+ messages in thread
From: Tom Fitzhenry @ 2022-05-04 12:34 UTC (permalink / raw)
  To: Tobias Platen, guix-devel

[-- Attachment #1: Type: text/plain, Size: 1229 bytes --]

On 4/5/22 04:53, Tobias Platen wrote:
> I had a look at the guix page, there is a latest version image for the
> PineBook Pro, which uses the same SoC.
The SoC is the same, but the PineBook Pro and RockPro64 have different 
u-boot bootloaders: u-boot-rockpro64-rk3399-bootloader and 
u-boot-pinebook-pro-rk3399-bootloader, both in gnu/bootloader/u-boot.scm .

I have attached the image config that I used to build a RockPro64 image 
last week. See below for my plans to upstream.

> Unfortunately I was unable to
> find the reciepe to build that image. The guix page is currently down,
> I will try again tomorrow.

FWIW, the PineBook Pro image is at gnu/system/images/pinebook-pro.scm

> Today I was able to install guix on top of
> Debian which I have installed on my RockPro64.

That should be useful, to be able to build aarch64 images without having 
to do cross-compilation.


However, it's inconvenient that each aarch64 platform needs its own 
aarch64 image. To improve on this, I'm working on Tow-Boot[0] support 
for Guix. The result is that a single generic aarch64 image will work 
across all Tow-Boot supported devices[1], including the RockPro64.

0. https://tow-boot.org/
1. https://tow-boot.org/devices/index.html

[-- Attachment #2: rockpro64-image.patch --]
[-- Type: text/x-patch, Size: 2923 bytes --]

commit 397ee4242238905c8c1071aff6d345c600a709d6
Author: Tom Fitzhenry <tom@tom-fitzhenry.me.uk>
Date:   Mon Apr 25 16:51:52 2022 +1000

    add rockpro64 image

diff --git a/gnu/system/images/rockpro64.scm b/gnu/system/images/rockpro64.scm
new file mode 100644
index 0000000000..d03b4b90de
--- /dev/null
+++ b/gnu/system/images/rockpro64.scm
@@ -0,0 +1,69 @@
+
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Marius Bakke <marius@gnu.org>
+;;;
+;;; 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 rockpro64)
+  #:use-module (gnu bootloader)
+  #:use-module (gnu bootloader u-boot)
+  #:use-module (gnu image)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu 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 (rockpro64-barebones-os
+            rockpro64-image-type
+            rockpro64-barebones-raw-image))
+
+(define rockpro64-barebones-os
+  (operating-system
+    (host-name "jiehkkevarri")
+    (timezone "Europe/Oslo")
+    (locale "en_US.utf8")
+    (bootloader (bootloader-configuration
+                 (bootloader u-boot-rockpro64-rk3399-bootloader)
+                 (targets '("/dev/sda"))))
+    (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 (append (list (service dhcp-client-service-type))
+                      %base-services))))
+
+(define rockpro64-image-type
+  (image-type
+   (name 'rockpro64-raw)
+   (constructor (cut image-with-os
+                     (raw-with-offset-disk-image (expt 2 24))
+                     <>))))
+
+(define rockpro64-barebones-raw-image
+  (image
+   (inherit
+    (os+platform->image rockpro64-barebones-os aarch64-linux
+                        #:type rockpro64-image-type))
+   (name 'rockpro64-barebones-raw-image)))
+
+rockpro64-barebones-raw-image

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: Guix System on RockPro64
  2022-05-04 12:34 ` Tom Fitzhenry
@ 2022-05-04 16:14   ` Vagrant Cascadian
  2022-05-05  2:48     ` Tom Fitzhenry
  0 siblings, 1 reply; 4+ messages in thread
From: Vagrant Cascadian @ 2022-05-04 16:14 UTC (permalink / raw)
  To: Tom Fitzhenry, Tobias Platen, guix-devel

[-- Attachment #1: Type: text/plain, Size: 3403 bytes --]

On 2022-05-04, Tom Fitzhenry wrote:
> On 4/5/22 04:53, Tobias Platen wrote:
>> I had a look at the guix page, there is a latest version image for the
>> PineBook Pro, which uses the same SoC.
> The SoC is the same, but the PineBook Pro and RockPro64 have different 
> u-boot bootloaders: u-boot-rockpro64-rk3399-bootloader and 
> u-boot-pinebook-pro-rk3399-bootloader, both in gnu/bootloader/u-boot.scm .
...
> However, it's inconvenient that each aarch64 platform needs its own 
> aarch64 image.

You could create a "generic" image that supports UEFI or standard u-boot
methods, and the user can bring-their-own UEFI implementation
(e.g. tianocore, recent versions of u-boot with EFI) or install u-boot
or barebox or whatever manually.

Another approach used by debian-installer images is to ship the image
that is used by all the platforms, and then a small firmware portion
that is device-specific:

  https://d-i.debian.org/daily-images/arm64/daily/netboot/SD-card-images/README.concatenateable_images

It's a little more cumbersome to download two images and dump them onto
the media, although I imagine guix could implement this part and make it
relatively simple, while still having a shared substitute for the bulk
of the image.


> To improve on this, I'm working on Tow-Boot[0] support 
> for Guix. The result is that a single generic aarch64 image will work 
> across all Tow-Boot supported devices[1], including the RockPro64.
>
> 0. https://tow-boot.org/
> 1. https://tow-boot.org/devices/index.html

My understanding was tow-boot was mostly, at this point, something to
avoid installing as part of the distro image. You can basically do the
same thing with mainline u-boot, if you install u-boot to media other
than the distro media. Or does tow-boot have fancier features working
yet (e.g. menu interfaces from the firmware) ?


> +    (initrd-modules '())
> +    (kernel linux-libre-arm64-generic)

I've managed to get the default linux-libre working, installed with
rootfs on SATA. It does require a fairly extensive list of modules to
load in the initrd:

  (kernel linux-libre-5.17) ;; from before it was default
  (initrd-modules
   (append                                                                                                                                  (list
     ;; scsi modules
     "ahci"
     "libata"
     "sd_mod"
     "scsi_common"
     "t10_pi"
     ;; regulators and clocks
     "rk808-regulator"
     "clk-rk808"
     "fixed"
     "fan53555"
     "rk808"
     "i2c-rk3x"
     "pl330"
     "dwc3"
     "rtc-rk808"
     "sdhci"
     "sdhci-pltfm"
     "dw_mmc"
     "dw_mmc-pltfm"
     ;; "dw_mmc-rockchip"
     "phy_rockchip_pcie"
     "pcie_rockchip_host"
     "nvme")))

I've recently noticed it taking a long time on shutdown or reboot with
"dw_mmc_rockchip" still loaded, but I don't use the mmc bus for anything
other than the bootloader itself installed on microSD. If you're using
microSD or eMMC I'd be curious if that still happened.


Although using the generic kernel, with guix's primitive module handling
from the initrd (essentially looping through the list and manually
loading each one), it might be easier to support a single image with
linux-libre-arm64-generic kernel, where most features are built-in
rather than modular.


live well,
  vagrant

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Guix System on RockPro64
  2022-05-04 16:14   ` Vagrant Cascadian
@ 2022-05-05  2:48     ` Tom Fitzhenry
  0 siblings, 0 replies; 4+ messages in thread
From: Tom Fitzhenry @ 2022-05-05  2:48 UTC (permalink / raw)
  To: Vagrant Cascadian, Tobias Platen, guix-devel

On Thu, 5 May 2022, at 2:14 AM, Vagrant Cascadian wrote:
> You could create a "generic" image that supports UEFI or standard u-boot
> methods, and the user can bring-their-own UEFI implementation
> (e.g. tianocore, recent versions of u-boot with EFI) or install u-boot
> or barebox or whatever manually.

Yes, this is the idea behind Tow-Boot. Tow-Boot is an opinionated build of u-boot that implements enough of EFI to be able to boot a generic UEFI image.

The same image would work for any aarch64 device supporting EFI: via Tianocore, via Tow-Boot, via ARM BBR, ...

I intend to write this up in more detail with my patches.

> My understanding was tow-boot was mostly, at this point, something to
> avoid installing as part of the distro image. You can basically do the
> same thing with mainline u-boot, if you install u-boot to media other
> than the distro media. Or does tow-boot have fancier features working
> yet (e.g. menu interfaces from the firmware) ?

Yes, the distro is not responsible for installing Tow-Boot on the SPI. If a user's device doesn't support EFI, and they want to install Tow-Boot on SPI, they would need to do that themselves (by following Tow-Boot's installation instructions). PostmarketOS are working on delivering Tow-Boot updates via LVFS: https://github.com/fwupd/fwupd/issues/4294

The only thing Guix needs to do is provide a generic aarch64 image that supports UEFI. I have something WIP for that.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-05-05  3:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-05-03 18:53 Guix System on RockPro64 Tobias Platen
2022-05-04 12:34 ` Tom Fitzhenry
2022-05-04 16:14   ` Vagrant Cascadian
2022-05-05  2:48     ` Tom Fitzhenry

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).