qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] linux-user: enabling binfmt P flag


From: Joakim Tjernlund
Subject: Re: [Qemu-devel] linux-user: enabling binfmt P flag
Date: Mon, 25 Aug 2014 15:39:19 +0200

Riku Voipio <address@hidden> wrote on 2014/08/25 14:42:57:
> 
> On Mon, Aug 25, 2014 at 11:14:58AM +0200, Alexander Graf wrote:
> > 
> > 
> > On 25.08.14 11:09, Riku Voipio wrote:
> > > Hi,
> > > 
> > > After weekend, I think the solution to using the P flag is to
> > > go back to Joakim's original patch:
> > > 
> > > http://lists.gnu.org/archive/html/qemu-devel/2014-07/msg02269.html
> > > 
> > > With this, we get:
> > > 
> > > If you continue to use qemu-x-static in your binfmt_misc 
registration,
> > > nothing changes - both old and new qemu work using the old binfmt
> > > registration.
> > > 
> > > If you rename the binary qemu-x-binfmt, you need to update the
> > > binfmt_misc register to have P flag and new binary  - you get 
correct
> > > argv with new qemu. Any old qemu you still have around, will stop
> > > working. But with "file not found" error rather than obscurely 
eating
> > > one of the arguments and running regardless.
> > > 
> > > This leaves us with one case - people who are used to running
> > > qemu-x-static ./binary to test single binaries. Distro's will need
> > > leave a symlink from qemu-x-binfmt qemu-x-static. The "-binfmt" 
string
> > > check doesn't trigger, and qemu works as before.
> > > 
> > > The key point: this way nobody's working setup will break, unless 
they
> > > update binfmt registration. As long as the change is done by users
> > > them self (I need correct argv0 -> I will update binfmt), there is 
very
> > > little surprise for anyone. 
> > > 
> > > There will be some fallout once *distributions* change the binfmt - 
users
> > > will notice their existing qemu chroots stop working with a "file 
not
> > > found" error for any binary they try to run.
> > > 
> > > If we find even this breakage too much, I'm not sure this can be 
fixed.
> 
> > I would very much prefer if we could stick with only a single binary.
> > And yes, switching semantics when you use binfmt wrappers will hurt 
for
> > a short while, but after that everyone will have their setups changed
> > and we're safe for the future.
> 
> I don't really the unpredictable nature of the breakage. Take 
> $ rm a b c
> 
> With P flag:    /bin/rm rm a b c
> Without P flag: /bin/rm a b c
> 
> If we use old qemu with P flag: qemu will run /bin/rm with argv: 
"/bin/rm rm a b c"
>  -> tries to delete "rm"
> If we use new qemu without P flag, qemu will run /bin/rm with argv: "a b 
c" 
>  -> fails to delete "a"
> 
> This is the black magic errors that drive users nuts when they try to 
debug what
> is happening... "File not found" when the qemu binary is not in the
> right place is confusing enough.

Then consider when you run a LXC without P flag. bash expects argv0=-bash 
to be a 
login shell and source "profile" files. This can result in even worse 
"black magic errors"

Either way stuff may break :(
Oh well, perhaps the binfmt wrapper is the best although then you
will be stuck with the -binfmt magic handling in QEMU for a long time.

 Jocke



reply via email to

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