[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: boot guixsd
From: |
Danny Milosavljevic |
Subject: |
Re: boot guixsd |
Date: |
Sat, 3 Mar 2018 12:42:14 +0100 |
Hi Rene,
On Fri, 02 Mar 2018 23:41:48 -0500
Rene <address@hidden> wrote:
> ?: 3 [primitive-load
> "/gnu/store/rjp22rca3gv8lrrbb9j4sry9i3n1bvlp-activate"]
> In ice-9/eval.scm:
> 432: 2 [eval # ()]
> In
> /gnu/store/6dvydkcda77dxkpbn5jsj4vsmr19gb7v-module-import/gnu/build/activatio
> n.scm:
> 449: 1 [activate-current-system #f]
> In unknown file:
> ?: 0 [symlink #f "/run/current-system.new"]
>
> ERROR: In procedure symlink:
> ERROR: Wrong type (expecting string): #f
>
> a) In GNU Hurd, how should activation be done?
> b) Regarding the error assuming that I start reading from the bottom up
> 'ERROR: In procedure symlink',
> in GNU Hurd I guess I should try 'symlink' through guile to see if the
> procedure exists.
I think the procedure was found alright, but the first argument is #f:
> ?: 0 [symlink #f "/run/current-system.new"]
Checking gnu/build/activation.scm, there is this:
(define* (activate-current-system
#:optional (system (or (getenv "GUIX_NEW_SYSTEM")
(boot-time-system))))
"Atomically make SYSTEM the current system."
;; The 'GUIX_NEW_SYSTEM' environment variable is used as a way for 'guix
;; system reconfigure' to pass the file name of the new system.
(format #t "making '~a' the current system...~%" system)
;; Atomically make SYSTEM current.
(let ((new (string-append %current-system ".new")))
(symlink system new)
(rename-file new %current-system)))
(define (boot-time-system)
"Return the '--system' argument passed on the kernel command line."
(find-long-option "--system" (linux-command-line)))
So it's trying to find the system via an environment variable or via
the "--system" option of the Linux kernel command line.
As a quick check, try setting GUIX_NEW_SYSTEM before you run guile:
(setenv "GUIX_NEW_SYSTEM" "/var/guix/profiles/system-1-link")
In the long run it would be nice to have the system reference stored in
the Hurd (or GNU Mach) command line. I wonder whether there are any
downsides to just using a new regular file, maybe even /proc/cmdline
without /proc being special.
On the other hand, having the environment variable is fine I guess.
pgpJVYCv_sDIy.pgp
Description: OpenPGP digital signature