guix-devel
[Top][All Lists]
Advanced

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

Attachment: pgpJVYCv_sDIy.pgp
Description: OpenPGP digital signature


reply via email to

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