unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
* Bootstrapping on a new platform
@ 2017-12-02 23:17 Paul Boddie
  2017-12-03  6:46 ` Manolis Ragkousis
  0 siblings, 1 reply; 11+ messages in thread
From: Paul Boddie @ 2017-12-02 23:17 UTC (permalink / raw)
  To: help-guix

Hello,

I finally got round to trying to build Guix again, this time doing a native 
build rather than a cross-build. However, I'm attempting this on an 
unsupported platform (mipsel), and it isn't clear what I need to do to make 
the bootstrap binaries and thus attempt a source build.

What I've figured out so far is this:

tar zxf guix-0.13.0.tar.gz
cd guix-0.13.0
./bootstrap
./configure --with-courage
make
make install

This gets me the guix-daemon, but upon trying to do anything, I get the 
following:

guix build: error: could not find bootstrap binary 'tar' for system 'mipsel-
linux'

I understand that I need some bootstrap binaries, and the bootstrapping 
documentation indicates that these can indeed be generated as follows:

guix build --target=mipsel-linux-gnu bootstrap-tarballs

But this just gives the same error. And I am actually running on mipsel-linux-
gnu, so I suppose it might be different if I were try this on a supported 
system - i386-linux-gnu, for instance - and thus generate the binaries that 
way.

Maybe I have just missed the part of the manual that talks about these source 
builds, but it really doesn't seem obvious to me. Another thing, which I've 
seen mentioned on this list is reproducible builds. Might it be possible to 
have architecture-independent source archives that reproducibly build the 
binaries?

Sorry not to be able to figure this out for myself!

Paul

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Bootstrapping on a new platform
  2017-12-02 23:17 Bootstrapping on a new platform Paul Boddie
@ 2017-12-03  6:46 ` Manolis Ragkousis
  2017-12-03  9:54   ` Efraim Flashner
  2017-12-04 18:24   ` Paul Boddie
  0 siblings, 2 replies; 11+ messages in thread
From: Manolis Ragkousis @ 2017-12-03  6:46 UTC (permalink / raw)
  To: Paul Boddie, help-guix

Hello Paul,

On 12/03/17 01:17, Paul Boddie wrote:
> I finally got round to trying to build Guix again, this time doing a native 
> build rather than a cross-build. However, I'm attempting this on an 
> unsupported platform (mipsel), and it isn't clear what I need to do to make 
> the bootstrap binaries and thus attempt a source build.
> 
> What I've figured out so far is this:
> 
> tar zxf guix-0.13.0.tar.gz
> cd guix-0.13.0
> ./bootstrap
> ./configure --with-courage
> make
> make install
> 
> This gets me the guix-daemon, but upon trying to do anything, I get the 
> following:
> 
> guix build: error: could not find bootstrap binary 'tar' for system 'mipsel-
> linux'
> 

You need to cross-build those binaries from a system that is supported,
like x86_64-linux for example.
> I understand that I need some bootstrap binaries, and the bootstrapping 
> documentation indicates that these can indeed be generated as follows:
> 
> guix build --target=mipsel-linux-gnu bootstrap-tarballs
> 
> But this just gives the same error. And I am actually running on mipsel-linux-
> gnu, so I suppose it might be different if I were try this on a supported 
> system - i386-linux-gnu, for instance - and thus generate the binaries that 
> way.
> 
> Maybe I have just missed the part of the manual that talks about these source 
> builds, but it really doesn't seem obvious to me. Another thing, which I've 
> seen mentioned on this list is reproducible builds. Might it be possible to 
> have architecture-independent source archives that reproducibly build the 
> binaries?
> 

First I would suggest checking out my talk in FOSDEM 17 which I tried to
explain how bootstrapping in Guix works, along with how I did it for
Hurd. [1]

The simplified steps are the following:
1) Cross-build those binaries from a supported system
2) Add the new binaries to Guix (check gnu/packages/bootstrap.scm)
3) Copy the Guix source which now has the new binaries to the system you
are trying to port it to. I suggest working on the git version of Guix
for this. It's good to have the updated version.
4) ./boostrap && ./configure --with-courage && make
5) work out issues and enjoy.

Does this make sense? I have spent a lot of time on this so please ask
and I can help you :).

Manolis

[1] https://archive.fosdem.org/2017/schedule/event/guixhurd/

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Bootstrapping on a new platform
  2017-12-03  6:46 ` Manolis Ragkousis
@ 2017-12-03  9:54   ` Efraim Flashner
  2017-12-04 18:24   ` Paul Boddie
  1 sibling, 0 replies; 11+ messages in thread
From: Efraim Flashner @ 2017-12-03  9:54 UTC (permalink / raw)
  To: Manolis Ragkousis; +Cc: help-guix

[-- Attachment #1: Type: text/plain, Size: 2984 bytes --]

On Sun, Dec 03, 2017 at 08:46:56AM +0200, Manolis Ragkousis wrote:
> Hello Paul,
> 
> On 12/03/17 01:17, Paul Boddie wrote:
> > I finally got round to trying to build Guix again, this time doing a native 
> > build rather than a cross-build. However, I'm attempting this on an 
> > unsupported platform (mipsel), and it isn't clear what I need to do to make 
> > the bootstrap binaries and thus attempt a source build.
> > 
> > What I've figured out so far is this:
> > 
> > tar zxf guix-0.13.0.tar.gz
> > cd guix-0.13.0
> > ./bootstrap
> > ./configure --with-courage
> > make
> > make install
> > 
> > This gets me the guix-daemon, but upon trying to do anything, I get the 
> > following:
> > 
> > guix build: error: could not find bootstrap binary 'tar' for system 'mipsel-
> > linux'
> > 
> 
> You need to cross-build those binaries from a system that is supported,
> like x86_64-linux for example.
> > I understand that I need some bootstrap binaries, and the bootstrapping 
> > documentation indicates that these can indeed be generated as follows:
> > 
> > guix build --target=mipsel-linux-gnu bootstrap-tarballs
> > 
> > But this just gives the same error. And I am actually running on mipsel-linux-
> > gnu, so I suppose it might be different if I were try this on a supported 
> > system - i386-linux-gnu, for instance - and thus generate the binaries that 
> > way.
> > 
> > Maybe I have just missed the part of the manual that talks about these source 
> > builds, but it really doesn't seem obvious to me. Another thing, which I've 
> > seen mentioned on this list is reproducible builds. Might it be possible to 
> > have architecture-independent source archives that reproducibly build the 
> > binaries?
> > 
> 
> First I would suggest checking out my talk in FOSDEM 17 which I tried to
> explain how bootstrapping in Guix works, along with how I did it for
> Hurd. [1]
> 
> The simplified steps are the following:
> 1) Cross-build those binaries from a supported system
> 2) Add the new binaries to Guix (check gnu/packages/bootstrap.scm)
> 3) Copy the Guix source which now has the new binaries to the system you
> are trying to port it to. I suggest working on the git version of Guix
> for this. It's good to have the updated version.
> 4) ./boostrap && ./configure --with-courage && make
> 5) work out issues and enjoy.
> 
> Does this make sense? I have spent a lot of time on this so please ask
> and I can help you :).
> 
> Manolis
> 
> [1] https://archive.fosdem.org/2017/schedule/event/guixhurd/
> 

I also spent a lot of time getting the aarch64-linux port working, and
I'd be happy to help. Also you should post this to guix-devel also to
make sure there are more eyes on it.

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Bootstrapping on a new platform
  2017-12-03  6:46 ` Manolis Ragkousis
  2017-12-03  9:54   ` Efraim Flashner
@ 2017-12-04 18:24   ` Paul Boddie
  2017-12-08 10:28     ` Ludovic Courtès
  1 sibling, 1 reply; 11+ messages in thread
From: Paul Boddie @ 2017-12-04 18:24 UTC (permalink / raw)
  To: help-guix

On Sunday 3. December 2017 07.46.56 Manolis Ragkousis wrote:
> 
> First I would suggest checking out my talk in FOSDEM 17 which I tried to
> explain how bootstrapping in Guix works, along with how I did it for
> Hurd. [1]

I'll have a look at that, thanks! Thanks also to Efraim for some other advice 
and encouragement. I'll post this here first for continuity and to the 
development list later if this is more complicated than I hope it is.

> The simplified steps are the following:
> 1) Cross-build those binaries from a supported system
> 2) Add the new binaries to Guix (check gnu/packages/bootstrap.scm)
> 3) Copy the Guix source which now has the new binaries to the system you
> are trying to port it to. I suggest working on the git version of Guix
> for this. It's good to have the updated version.
> 4) ./boostrap && ./configure --with-courage && make
> 5) work out issues and enjoy.
> 
> Does this make sense? I have spent a lot of time on this so please ask
> and I can help you :).

These steps are what I thought might be needed. So, I did the following on my 
i386-linux-gnu system:

tar zxf guix-0.13.0.tar.gz
cd guix-0.13.0
./bootstrap
./configure
# Add to gnu/packages/bootstrap.scm:
# ((string=? system "mipsel-linux") "/lib/ld.so.1")
make
sudo make install

This got me the daemon again. Having set up the build users and group, I then 
started the daemon...

sudo /usr/local/bin/guix-daemon --build-users-group=guixbuild

...and ran the build command for the binaries:

guix build --target=mipsel-linux-gnu bootstrap-tarballs

I then got a couple of errors that halted the build process. Here's the start 
of the first error:

output path `/gnu/store/1j3mqrcp3y4xlb9jl5d0ri5aszn8mfii-gcc-4.9.4.tar.bz2' 
should have sha256 hash 
`14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc', instead has 
`1z91vb2i4d61fbrz7hdrsxiw3ksdzf372bgdzwsn75b72ndbi6lg'

And the next line with the immediate consequence:

@ build-failed /gnu/store/i966bhvp4jc0g42dl9vp6wyy9rsgrq5n-
gcc-4.9.4.tar.bz2.drv - 1 output path 
`/gnu/store/1j3mqrcp3y4xlb9jl5d0ri5aszn8mfii-gcc-4.9.4.tar.bz2' should have 
sha256 hash `14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc', instead 
has `1z91vb2i4d61fbrz7hdrsxiw3ksdzf372bgdzwsn75b72ndbi6lg'
cannot build derivation `/gnu/store/wxpq66chx58c69hz5qhqi34259mg1h9v-
gcc-4.9.4.tar.xz.drv': 1 dependencies couldn't be built

And here's the ultimate consequence:

guix build: error: build failed: build of 
`/gnu/store/b30f33jsg0dv6ipymbhgpbyg5v6bagnv-bootstrap-tarballs-0.drv' failed

Running the build command again seems to either resolve this problem or make 
it go away somehow. However, I then get a persistent error:

guix build: error: build failed: cloning builder process: Invalid argument

Looking at the archives, I see that this happened before (reported by Efraim):

https://lists.gnu.org/archive/html/guix-devel/2016-07/msg00144.html

I didn't see any obvious conclusion. So, I ran the daemon using strace and 
looked at the clone system call that supposedly causes this problem:

clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0x404c5f28) = 25426
close(4)                                = 0
accept(3, 0xbf8d5854, [110])            = ? ERESTARTSYS (To be restarted if 
SA_RESTART is set)
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=25426, si_uid=0, 
si_status=0, si_utime=137, si_stime=8} ---
waitpid(-1, NULL, WNOHANG)              = 25426
waitpid(-1, NULL, WNOHANG)              = -1 ECHILD (No child processes)
sigreturn() (mask [])                   = -1 EINTR (Interrupted system call)

For the record, I'm running all this in a User Mode Linux instance, mostly 
because my main system doesn't support the prerequisites for building Guix. 
Last year, I attempted to run things in a chroot to satisfy the prerequisites, 
but this seemed to make the tools unhappy. Generally, I haven't had problems 
running software with UML whereas chroot doesn't attempt to virtualise 
everything and can therefore cause certain kinds of problems.

I'm not sure what I need to do at this point. Did I miss something obvious?

Paul

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Bootstrapping on a new platform
  2017-12-04 18:24   ` Paul Boddie
@ 2017-12-08 10:28     ` Ludovic Courtès
  2017-12-08 13:40       ` Paul Boddie
  0 siblings, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2017-12-08 10:28 UTC (permalink / raw)
  To: Paul Boddie; +Cc: help-guix

Hi Paul

Paul Boddie <paul@boddie.org.uk> skribis:

> These steps are what I thought might be needed. So, I did the following on my 
> i386-linux-gnu system:
>
> tar zxf guix-0.13.0.tar.gz

0.14.0 was released yesterday, I’d suggest starting from that.

> # Add to gnu/packages/bootstrap.scm:
> # ((string=? system "mipsel-linux") "/lib/ld.so.1")
> make
> sudo make install
>
> This got me the daemon again. Having set up the build users and group, I then 
> started the daemon...
>
> sudo /usr/local/bin/guix-daemon --build-users-group=guixbuild
>
> ...and ran the build command for the binaries:

I’d suggest enabling substitutes if you don’t want to build everything
locally:

  https://www.gnu.org/software/guix/manual/html_node/Substitutes.html

> guix build --target=mipsel-linux-gnu bootstrap-tarballs
>
> I then got a couple of errors that halted the build process. Here's the start 
> of the first error:
>
> output path `/gnu/store/1j3mqrcp3y4xlb9jl5d0ri5aszn8mfii-gcc-4.9.4.tar.bz2' 
> should have sha256 hash 
> `14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc', instead has 
> `1z91vb2i4d61fbrz7hdrsxiw3ksdzf372bgdzwsn75b72ndbi6lg'

That would suggest either that gcc-4.9.4.tar.bz2 was modified on
ftp.gnu.org (unlikely), or that there’s something fishy going on on the
network (captive portal, DNS hijacking, etc.)  Ideas?

> Running the build command again seems to either resolve this problem or make 
> it go away somehow. However, I then get a persistent error:
>
> guix build: error: build failed: cloning builder process: Invalid argument
>
> Looking at the archives, I see that this happened before (reported by Efraim):
>
> https://lists.gnu.org/archive/html/guix-devel/2016-07/msg00144.html
>
> I didn't see any obvious conclusion. So, I ran the daemon using strace and 
> looked at the clone system call that supposedly causes this problem:
>
> clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
> child_tidptr=0x404c5f28) = 25426

Could you search in the strace output for the ‘clone’ call that failed
with EINVAL?  It’s probably the one from nix/libstore/build.cc.

> For the record, I'm running all this in a User Mode Linux instance, mostly 
> because my main system doesn't support the prerequisites for building Guix. 

What kernel version do you use?  guix-daemon requires namespace support,
but this is a relatively old feature.

Otherwise it might be some limitation of User Mode Linux; I’ve never
tried.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Bootstrapping on a new platform
  2017-12-08 10:28     ` Ludovic Courtès
@ 2017-12-08 13:40       ` Paul Boddie
  2017-12-08 16:19         ` Paul Boddie
  0 siblings, 1 reply; 11+ messages in thread
From: Paul Boddie @ 2017-12-08 13:40 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: help-guix

On Friday 8. December 2017 11.28.38 Ludovic Courtès wrote:
> 
> Paul Boddie <paul@boddie.org.uk> skribis:
> > These steps are what I thought might be needed. So, I did the following
> > on my i386-linux-gnu system:
> > 
> > tar zxf guix-0.13.0.tar.gz
> 
> 0.14.0 was released yesterday, I’d suggest starting from that.

I was actually drafting a mail about that yesterday, but that is another story 
with different complications (building Guile-Git, scheme-bytestructures).

> > # Add to gnu/packages/bootstrap.scm:
> > # ((string=? system "mipsel-linux") "/lib/ld.so.1")
> > make
> > sudo make install
> > 
> > This got me the daemon again. Having set up the build users and group, I
> > then started the daemon...
> > 
> > sudo /usr/local/bin/guix-daemon --build-users-group=guixbuild
> 
> > ...and ran the build command for the binaries:
> I’d suggest enabling substitutes if you don’t want to build everything
> locally:
> 
>   https://www.gnu.org/software/guix/manual/html_node/Substitutes.html

I wouldn't mind building things locally, though. Previously, I wanted to avoid 
building cross-compilers, but this time I'm trying to do the whole thing.

> > guix build --target=mipsel-linux-gnu bootstrap-tarballs
> > 
> > I then got a couple of errors that halted the build process. Here's the
> > start of the first error:
> > 
> > output path
> > `/gnu/store/1j3mqrcp3y4xlb9jl5d0ri5aszn8mfii-gcc-4.9.4.tar.bz2' should
> > have sha256 hash
> > `14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc', instead has
> > `1z91vb2i4d61fbrz7hdrsxiw3ksdzf372bgdzwsn75b72ndbi6lg'
> 
> That would suggest either that gcc-4.9.4.tar.bz2 was modified on
> ftp.gnu.org (unlikely), or that there’s something fishy going on on the
> network (captive portal, DNS hijacking, etc.)  Ideas?

I do wonder about this kind of thing, but I'm using fibre-based broadband. 
Could it be mirroring issues? I tend to get checksum issues when updating 
recent Debian releases that are resolved when retrying and that I've regarded 
as being related to files being updated when apt tries to read them all, but I 
suppose there could be other things happening. (I also used to get this on a 
previous cable-based broadband provider, though.)

Actually, running sha256sum yields this:

sha256sum /gnu/store/1j3mqrcp3y4xlb9jl5d0ri5aszn8mfii-gcc-4.9.4.tar.bz2 
326efcf243fd917d5e57b930cc8b51c79260176099fd4f5cbc38b1473bd246a3  
/gnu/store/1j3mqrcp3y4xlb9jl5d0ri5aszn8mfii-gcc-4.9.4.tar.bz2

Is this the right way of generating the hash?

> > Running the build command again seems to either resolve this problem or
> > make it go away somehow. However, I then get a persistent error:
> > 
> > guix build: error: build failed: cloning builder process: Invalid
> > argument
> > 
> > Looking at the archives, I see that this happened before (reported by
> > Efraim):
> > 
> > https://lists.gnu.org/archive/html/guix-devel/2016-07/msg00144.html
> > 
> > I didn't see any obvious conclusion. So, I ran the daemon using strace
> > and looked at the clone system call that supposedly causes this problem:
> > 
> > clone(child_stack=0,
> > flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
> > child_tidptr=0x404c5f28) = 25426
> 
> Could you search in the strace output for the ‘clone’ call that failed
> with EINVAL?  It’s probably the one from nix/libstore/build.cc.

There isn't one that I can find. All I get is this:

write(2, "accepted connection from pid 157"..., 46accepted connection from pid 
1570, user paulb
) = 46
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0x404c5f28) = 1572
close(4)                                = 0
accept(3, 0xbfb09d84, [110])            = ? ERESTARTSYS (To be restarted if 
SA_RESTART is set)
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1572, si_uid=0, 
si_status=0, si_utime=61, si_stime=6} ---
waitpid(-1, NULL, WNOHANG)              = 1572
waitpid(-1, NULL, WNOHANG)              = -1 ECHILD (No child processes)
sigreturn() (mask [])                   = -1 EINTR (Interrupted system call)

> > For the record, I'm running all this in a User Mode Linux instance,
> > mostly because my main system doesn't support the prerequisites for
> > building Guix.
> 
> What kernel version do you use?  guix-daemon requires namespace support,
> but this is a relatively old feature.

This is an older kernel: 3.2.62. I chose this a while ago when setting up 
various instances, and this was something that I knew worked with the Debian 
versions I wanted to run.

> Otherwise it might be some limitation of User Mode Linux; I’ve never
> tried.

I tried UML with a 4.9.67 kernel (and CONFIG_NAMESPACES=y) but still got the 
error. There's still only one clone system call:

write(2, "accepted connection from pid 721"..., 45accepted connection from pid 
721, user paulb
) = 45
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0x404c5f28) = 723
close(4)                                = 0
accept(3, 0xbf8bc244, [110])            = ? ERESTARTSYS (To be restarted if 
SA_RESTART is set)
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=723, si_uid=0, 
si_status=0, si_utime=4, si_stime=252} ---
waitpid(-1, NULL, WNOHANG)              = 723
waitpid(-1, NULL, WNOHANG)              = -1 ECHILD (No child processes)
sigreturn() (mask [RT_2])               = -1 EINTR (Interrupted system call)

I'm tracing the daemon here. Should I also be tracing something else?

Thanks for the help!

Paul

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Bootstrapping on a new platform
  2017-12-08 13:40       ` Paul Boddie
@ 2017-12-08 16:19         ` Paul Boddie
  2017-12-11 11:03           ` Ludovic Courtès
  0 siblings, 1 reply; 11+ messages in thread
From: Paul Boddie @ 2017-12-08 16:19 UTC (permalink / raw)
  To: help-guix

On Friday 8. December 2017 14.40.14 Paul Boddie wrote:
> On Friday 8. December 2017 11.28.38 Ludovic Courtès wrote:
> > 
> > Could you search in the strace output for the ‘clone’ call that failed
> > with EINVAL?  It’s probably the one from nix/libstore/build.cc.

[...]

> I'm tracing the daemon here. Should I also be tracing something else?

Sorry, I found that I should be running strace using the -o, -f and -ff 
options:

strace -o /tmp/guix -f -ff /usr/local/bin/guix-daemon \
       --build-users-group=guixbuild

This gave me the following in the parent process log (/tmp/guix.793):

clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0x404c5f28) = 797
close(4)                                = 0
accept(3, 0xbfff7224, [110])            = ? ERESTARTSYS (To be restarted if 
SA_RESTART is set)
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=797, si_uid=0, 
si_status=0, si_utime=51, si_stime=524} ---
waitpid(-1, NULL, WNOHANG)              = 797

This resembling what I showed before. Meanwhile in the child process log 
(/tmp/guix.797) the clone call with EINVAL is this one:

clone(child_stack=0xbffedfa4, flags=CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|
CLONE_NEWPID|CLONE_NEWNET|SIGCHLD) = -1 EINVAL (Invalid argument)

Again, this is using the 4.9.67 kernel.

Paul

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Bootstrapping on a new platform
  2017-12-08 16:19         ` Paul Boddie
@ 2017-12-11 11:03           ` Ludovic Courtès
  2017-12-11 16:36             ` Paul Boddie
  0 siblings, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2017-12-11 11:03 UTC (permalink / raw)
  To: Paul Boddie; +Cc: help-guix

Hi Paul,

Paul Boddie <paul@boddie.org.uk> skribis:

> This resembling what I showed before. Meanwhile in the child process log 
> (/tmp/guix.797) the clone call with EINVAL is this one:
>
> clone(child_stack=0xbffedfa4, flags=CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|
> CLONE_NEWPID|CLONE_NEWNET|SIGCHLD) = -1 EINVAL (Invalid argument)
>
> Again, this is using the 4.9.67 kernel.

This suggests that namespaces are not fully supported with this kernel.
The clone(2) page has this:

   EINVAL CLONE_NEWIPC  was specified in flags, but the kernel was not configured with the CONFIG_SYSVIPC and
          CONFIG_IPC_NS options.

   EINVAL CLONE_NEWNET was specified in flags, but the kernel  was  not  configured  with  the  CONFIG_NET_NS
          option.

   EINVAL CLONE_NEWPID  was  specified  in  flags,  but  the kernel was not configured with the CONFIG_PID_NS
          option.

   EINVAL CLONE_NEWUTS was specified in flags, but the kernel was not configured with the CONFIG_UTS option.

Could it be one of these?

HTH,
Ludo’.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Bootstrapping on a new platform
  2017-12-11 11:03           ` Ludovic Courtès
@ 2017-12-11 16:36             ` Paul Boddie
  2017-12-12 16:10               ` Ludovic Courtès
  0 siblings, 1 reply; 11+ messages in thread
From: Paul Boddie @ 2017-12-11 16:36 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: help-guix

On Monday 11. December 2017 12.03.56 Ludovic Courtès wrote:
> 
> Paul Boddie <paul@boddie.org.uk> skribis:
> > This resembling what I showed before. Meanwhile in the child process log
> > (/tmp/guix.797) the clone call with EINVAL is this one:
> > 
> > clone(child_stack=0xbffedfa4,
> > flags=CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|
> > CLONE_NEWPID|CLONE_NEWNET|SIGCHLD) = -1 EINVAL (Invalid argument)
> > 
> > Again, this is using the 4.9.67 kernel.
> 
> This suggests that namespaces are not fully supported with this kernel.
> The clone(2) page has this:
> 
>    EINVAL CLONE_NEWIPC  was specified in flags, but the kernel was not
> configured with the CONFIG_SYSVIPC and CONFIG_IPC_NS options.
> 
>    EINVAL CLONE_NEWNET was specified in flags, but the kernel  was  not 
> configured  with  the  CONFIG_NET_NS option.
> 
>    EINVAL CLONE_NEWPID  was  specified  in  flags,  but  the kernel was not
> configured with the CONFIG_PID_NS option.
> 
>    EINVAL CLONE_NEWUTS was specified in flags, but the kernel was not
> configured with the CONFIG_UTS option.
> 
> Could it be one of these?

I ran "make menuconfig ARCH=um" and saw that "User namespace" and "PID 
Namespaces" were not enabled. So I enabled them, rebuilt the kernel, and then 
ran the User Mode Linux instance again.

This time, it would appear that running the daemon and then running a build 
command gets the daemon to do some work. There have been some problems with 
hashes, as reported before, but the problem with clone seems to have been 
solved.

Sorry for the noise, but I guess this is what happens when someone tries to do 
things the hard way. Thanks for identifying the cause of the problem!

Paul

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Bootstrapping on a new platform
  2017-12-11 16:36             ` Paul Boddie
@ 2017-12-12 16:10               ` Ludovic Courtès
  2017-12-12 16:29                 ` Paul Boddie
  0 siblings, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2017-12-12 16:10 UTC (permalink / raw)
  To: Paul Boddie; +Cc: help-guix

Paul Boddie <paul@boddie.org.uk> skribis:

> On Monday 11. December 2017 12.03.56 Ludovic Courtès wrote:
>> 
>> Paul Boddie <paul@boddie.org.uk> skribis:
>> > This resembling what I showed before. Meanwhile in the child process log
>> > (/tmp/guix.797) the clone call with EINVAL is this one:
>> > 
>> > clone(child_stack=0xbffedfa4,
>> > flags=CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|
>> > CLONE_NEWPID|CLONE_NEWNET|SIGCHLD) = -1 EINVAL (Invalid argument)
>> > 
>> > Again, this is using the 4.9.67 kernel.
>> 
>> This suggests that namespaces are not fully supported with this kernel.
>> The clone(2) page has this:
>> 
>>    EINVAL CLONE_NEWIPC  was specified in flags, but the kernel was not
>> configured with the CONFIG_SYSVIPC and CONFIG_IPC_NS options.
>> 
>>    EINVAL CLONE_NEWNET was specified in flags, but the kernel  was  not 
>> configured  with  the  CONFIG_NET_NS option.
>> 
>>    EINVAL CLONE_NEWPID  was  specified  in  flags,  but  the kernel was not
>> configured with the CONFIG_PID_NS option.
>> 
>>    EINVAL CLONE_NEWUTS was specified in flags, but the kernel was not
>> configured with the CONFIG_UTS option.
>> 
>> Could it be one of these?
>
> I ran "make menuconfig ARCH=um" and saw that "User namespace" and "PID 
> Namespaces" were not enabled. So I enabled them, rebuilt the kernel, and then 
> ran the User Mode Linux instance again.
>
> This time, it would appear that running the daemon and then running a build 
> command gets the daemon to do some work. There have been some problems with 
> hashes, as reported before, but the problem with clone seems to have been 
> solved.
>
> Sorry for the noise, but I guess this is what happens when someone tries to do 
> things the hard way. Thanks for identifying the cause of the problem!

Great that you found out!

Ludo’.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: Bootstrapping on a new platform
  2017-12-12 16:10               ` Ludovic Courtès
@ 2017-12-12 16:29                 ` Paul Boddie
  0 siblings, 0 replies; 11+ messages in thread
From: Paul Boddie @ 2017-12-12 16:29 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: help-guix

On Tuesday 12. December 2017 17.10.59 Ludovic Courtès wrote:
> Paul Boddie <paul@boddie.org.uk> skribis:
> > 
> > Sorry for the noise, but I guess this is what happens when someone tries
> > to do things the hard way. Thanks for identifying the cause of the
> > problem!
> 
> Great that you found out!

I'll keep you posted about the end result. I managed to encounter a problem 
with User Mode Linux that is known:

do_syscall_stub : ret = -12, offset = 1052680, data = 09b80008
do_syscall_stub: syscall 192 failed, return value = 0xfffffff4, expected 
return value = 0x1cff8000
    syscall parameters: 0x1cff8000 0x1000 0x7 0x11 0x3 0xd464
Failed to flush page for address 0x1cff8000

Apparently, this scary error, which causes the offending process to terminate, 
is the result of an insufficiently large value in /proc/sys/vm/max_map_count. 
Since I don't have huge amounts of memory by modern standards, I'm used to 
occasional problems with UML, and I guess that some of the build tasks are 
quite demanding.

Hopefully, I'll be able to complete the build of GCC 5.4, which is the thing 
that repeatably causes this. Then we'll see what happens.

Thanks once again!

Paul

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2017-12-12 16:29 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-02 23:17 Bootstrapping on a new platform Paul Boddie
2017-12-03  6:46 ` Manolis Ragkousis
2017-12-03  9:54   ` Efraim Flashner
2017-12-04 18:24   ` Paul Boddie
2017-12-08 10:28     ` Ludovic Courtès
2017-12-08 13:40       ` Paul Boddie
2017-12-08 16:19         ` Paul Boddie
2017-12-11 11:03           ` Ludovic Courtès
2017-12-11 16:36             ` Paul Boddie
2017-12-12 16:10               ` Ludovic Courtès
2017-12-12 16:29                 ` Paul Boddie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).