help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Building installation image for ROCK64


From: Vagrant Cascadian
Subject: Re: Building installation image for ROCK64
Date: Sat, 11 Apr 2020 14:12:03 -0700

On 2020-04-11, Simon South wrote:
> Has anyone successfully built an installation image for a PINE64 ROCK64
> ARM SBC?

I haven't tested it yet...

>
> There's a definition for it in gnu/system/install.scm, but building the
> image with
>
>   guix system disk-image --system=aarch64-linux \
>     -e "(@ (gnu system install) rock64-installation-os)"
>
> and writing it to a microSD card fails to boot completely as the root
> filesystem can't be mounted:

Sounds like the bootloader actually works, so not *completely* ! :)

>   GC Warning: pthread_getattr_np or pthread_attr_getstack failed for main 
> thread
>   GC Warning: Couldn't read /proc/stat
>   Welcome, this is GNU's early boot Guile.
>   Use '--repl' for an initrd REPL.
>
>   loading kernel modules...
>   waiting for partition '416bf41b-f6b1-2062-6e00-1979416bf41b' to appear...
>   waiting for partition '416bf41b-f6b1-2062-6e00-1979416bf41b' to appear...
>   (...)
>   waiting for partition '416bf41b-f6b1-2062-6e00-1979416bf41b' to appear...
>   ERROR: In procedure scm-error:
>   failed to resolve partition "416bf41b-f6b1-2062-6e00-1979416bf41b"
>   
> (I've checked and the GUID above does match the root partition.) I
> understand this often means a necessary kernel module is missing from
> initrd
...
>    (kernel linux-libre)
>    (kernel-arguments
>     (cons "console=ttyS2"
>           (operating-system-user-kernel-arguments installation-os)))
>    (initrd-modules (append '("dw_mmc" "dw_mmc-rockchip") 
> %base-initrd-modules)))

You're probably missing some voltage regulators and a handful of other
things...

This might avoid playing whack-a-mole with arbitrarily complex sets of drivers:

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

I've been using the linux-libre-arm*-generic* kernels for precisely this
reason; they tend to have the drivers built-in and the configs are
maintained upstream reasonably well. Also happen to be the first
platforms supporting linux-libre 5.6.x in guix master... :)


The *-generic kernels won't work for complex setups (e.g. encrypted
rootfs), so at some point it might be good to try and figure out a
helper or something to parse one or more relevent device-tree and kernel
config to generate the right set of modules. So I'd lean towards some
way to include more modules in the initrd by default, while handling
that some might be built-ins or not present for certain architectures,
etc...


I have a single rootfs that boots on both the pinebook and pinebook-pro
(switching out the boot firmware only), which are pretty different under
the hood, so it would be nice to not have to make an image that was
device-specific.


live well,
  vagrant

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]