[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: guixsd in lxd container
From: |
Ludovic Courtès |
Subject: |
Re: guixsd in lxd container |
Date: |
Fri, 09 Jun 2017 23:54:23 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
Hi Eddy,
Eddy Pronk <address@hidden> skribis:
> I'm trying to run guixsd in an lxd container.
> My lxd containers run on an Ubuntu server 16.04.
>
> I took the usb-installer image and imported in as an lxd image.
>
> When a container start it runs /sbin/init.
You mean LXD expects to run /sbin/init, right?
> In guixsd /proc/1 is shepherd, but a lot of stuff happens before shepherd
> is started.
>
> I've set a few things in the environment matching values in /proc/1/environ.
> The argument of --load in grub.cfg is a guile program.
>
> I found some details about the kernel loading guile here:
> https://lists.gnu.org/archive/html/guix-devel/2016-12/msg00704.html
>
> To be able to get some logging during startup of guixsd I'm trying to run
> it from a shell script as root.
>
> ====
> cat /sbin/start
> export HOME=/
> export TERM=linux
> export
> BOOT_IMAGE="/gnu/store/fqc2kg4lq1lz1ymk41080jzb5q90icg0-linux-libre-4.11/bzImage
> --root=gnu-disk-image
> --system=/gnu/store/kq71yhydfgc0nksvmmn66cbvbj5a3mvf-system
> --load=/gnu/store/kq71yhydfgc0nksvmmn66cbvbj5a3mvf-system/boot"
> export PATH=/gnu/store/crvb68g89b479n4h44r8l42hy39axhg2-shadow-4.4/sbin/
> cd $HOME
> /gnu/store/sa7zrdfqglnb5rvvr11qdj0rspbs292v-profile/bin/ln -s
> /gnu/store/kq71yhydfgc0nksvmmn66cbvbj5a3mvf-system /run/current-system
> /gnu/store/zk41gmzbibvpx9dpsm5gs8p0liz8shy0-guile-2.0.14/bin/guile
> --no-auto-compile /gnu/store/kq71yhydfgc0nksvmmn66cbvbj5a3mvf-system/boot
> ===
>
> When I run the start script I get the following output.
>
> $ lxc exec guixsd --
> /gnu/store/sa7zrdfqglnb5rvvr11qdj0rspbs292v-profile/bin/bash -c
> "/sbin/start 2>&1"
> /gnu/store/sa7zrdfqglnb5rvvr11qdj0rspbs292v-profile/bin/ln: failed to
> create symbolic link
> '/run/current-system/kq71yhydfgc0nksvmmn66cbvbj5a3mvf-system': File exists
> making '#f' the current system...
[...]
> In ./gnu/build/activation.scm:
> 456: 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
The line that’s printed here comes from (gnu build activation):
https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/build/activation.scm#n442
As you can see, it takes the value of ‘system’ either from the kernel’s
‘--system’ command-line argument (/proc/cmdline), or from the
‘GUIX_NEW_SYSTEM’ environment variable.
So you’d have to set ‘GUIX_NEW_SYSTEM’ in your case to fix this.
> Service file-system-/tmp has been started.
> failed to start service 'file-systems' <<== first problem.
> failed to start service 'file-system-/dev/pts'
What ‘guix system container’ does to work around this is to try to mount
only file systems that can really be mounted inside a container, with
the right options:
https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/system/linux-container.scm#n37
https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/system/file-systems.scm#n325
HTH!
BTW, did you consider using ‘guix system container’ directly instead of
LXC? It’s not perfect but probably worth a try:
https://www.gnu.org/software/guix/manual/html_node/Invoking-guix-system.html
Ludo’.
- guixsd in lxd container, Eddy Pronk, 2017/06/07
- Re: guixsd in lxd container,
Ludovic Courtès <=
- Re: guixsd in lxd container, Eddy Pronk, 2017/06/10
- Re: guixsd in lxd container, Jan Nieuwenhuizen, 2017/06/10
- Re: guixsd in lxd container, Ludovic Courtès, 2017/06/11
- Re: guixsd in lxd container, Eddy Pronk, 2017/06/16
- Re: guixsd in lxd container, Ludovic Courtès, 2017/06/19
- Re: guixsd in lxd container, Eddy Pronk, 2017/06/20