On Apr 20, 2012, at 10:29 AM, ext tuxor1...@web.de wrote:

>> Anyway, .54 seems to run most (if not all?) postinstall steps, but I
>> get some failures to the log. I'm not sure if those are fatal or
>> not, and don't have more time for debugging today, sorry.
> 
> I'm trying to sum up, what's still missing for the
> second-stage of debootstrap.
> 
> ###########
> 
> There are mainly two critical errors:
> 
> 1. libuuid1 and other packages can't be configured because useradd and
> groupadd commands are corrupt. They report "failure while writing
> changes to /etc/passwd" and "[...] /etc/group" respectively.
> 
> 2. The following problem is with "sysvinit":
> rm: cannot remove `/dev/initctl': Permission denied
> 
> ###########
> 
> For the first error there is an obvious workaround:
> 
> echo "libuuid:*:101:" >> etc/group
> echo "libuuid:*:101:101:libuuid:/var/lib/libuuid:/bin/sh" >> etc/passwd
> 
> For now it's only a workaround. In the long term we will need an
> improved behaviour of the groupadd and useradd commands.

useradd seems to work for me, I have libuuid in /etc/passwd of the 
debootstrapped thing and I'm also able to run useradd manually.

How does it fail for you?

> The second error is more problematic. Looks like we need a new
> scratchbox2 mapping rule for this.

Well, I didn't have /dev/initctl in the first place, so it didn't fail for me 
(I tested that debootstrapping problem on debian wheezy, where the sysvinit 
installation is already compatible and the postinstall script doesn't have to 
do the cleanup step, which currently isn't working for you in the "emulate" 
mode).

I wouldn't create any initctl-specific mapping rules. Instead I'd like to have 
a generic solution; in the long run it is clearly possible that someone invents 
more postinstall scripts etc. which will try to do similar actions.

So "rm /dev/xyzzy" should at least pretend to be usable when SB2 is simulating 
root privileges. There are several ways how that can be faked/simulated.

One is that SB2 could make unlink(), remove(), etc. override EPERM and return 
success status when root simulation is active (e.g. SB2's geteuid()==0, but 
real geteuid()!=0).

The second way would be otherwise similar, but limited to specific file system 
locations. In practise that would mean that the /dev mapping rules would have 
an additional flag indicating that unlink() etc shall never return EPERM from 
there.

The third option would be a more comprehensive /dev simulation subsystem.

At least options one and two would be easy to implement. But I'm not yet sure 
which is the right way to go, all of these solutions have pros and cons => must 
think a bit more about it.

> 
> ###########
> 
> There is a kind of "warning", when "initscripts" tries to link /run/ to
> /var/run. I'm not entirely sure how to fix this though:
> 
> guest environment detected: Linking /run to /var/run
> rmdir: failed to remove `/run': Directory not empty
> Can't symlink /run to /var/run; please fix manually.
> 
> This seems to be non-critical though.

/var/run was initially redirected to a session-specific location, because we 
wanted to have several parallel sessions for one target. That way it is 
possible to run e.g. several dbus instances in parallel.

Now when someone has decided to replace /var/run, and the same things must go 
to /run, maybe SB2 should do the same thing for /run? (i.e. to create 
session-specific copy of /run, too?)

        Lauri
_______________________________________________
Scratchbox-users mailing list
Scratchbox-users@lists.scratchbox.org
http://lists.scratchbox.org/cgi-bin/mailman/listinfo/scratchbox-users

Reply via email to