GNU bug report logs -
#46767
/run/booted-system is not protected from GC
Previous Next
Full log
View this message in rfc822 format
Before rebooting, I had:
--8<---------------cut here---------------start------------->8---
$ ls -l /run/{current,booted}-system
lrwxrwxrwx 1 root root 33 Nov 2 16:06 /run/booted-system -> /var/guix/profiles/system-68-link
lrwxrwxrwx 1 root root 50 Feb 21 01:34 /run/current-system -> /gnu/store/qq4rz2fprvnsgqhj24v735hhmp189jl8-system
--8<---------------cut here---------------end--------------->8---
After rebooting:
--8<---------------cut here---------------start------------->8---
$ ls -l /run/{current,booted}-system
lrwxrwxrwx 1 root root 33 Feb 25 10:28 /run/booted-system -> /var/guix/profiles/system-86-link
lrwxrwxrwx 1 root root 33 Feb 25 10:28 /run/current-system -> /var/guix/profiles/system-86-link
--8<---------------cut here---------------end--------------->8---
/run/booted-system is symlinked from /run/current-system in
‘shepherd-boot-gexp’:
--8<---------------cut here---------------start------------->8---
(define (shepherd-boot-gexp config)
"Return a gexp starting the shepherd service."
(let ((shepherd (shepherd-configuration-shepherd config))
(services (shepherd-configuration-services config)))
#~(begin
;; Keep track of the booted system.
(false-if-exception (delete-file "/run/booted-system"))
(symlink (readlink "/run/current-system")
"/run/booted-system")
…)))
--8<---------------cut here---------------end--------------->8---
So the solution is to make sure /run/current-system always points to the
store item rather than to the /var/guix symlink in the first place.
/run/current-system is created from (gnu build activation). When
reconfiguring or deploying, the symlink points to $GUIX_NEW_SYSTEM,
which is set to the store item in (guix scripts system reconfigure).
But when booting, /run/current-system is symlinked to the ‘--system’
kernel command-line argument, which is /var/guix/…. To address that, we
need to throw a ‘canonicalize-path’ call.
Done in 412e4f081e9cdf38db9859e1548ef2362cde678e.
Ludo’.
This bug report was last modified 4 years and 146 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.