Riku Voipio <riku.voi...@iki.fi> 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