Closed cjfh closed 7 years ago
Reboot, reproduce the i386 QEMU chroot error, and post a log of every shell command you ran during repro. What you've posted isn't enough of a reproduction case. Where did you get the libgl_remote 1
command? I've never posted that anywhere. Are you using NOSPAWN? The default mode of libgl remote requires the host command to be executable (it works better with qemu-user LD_PATH than with a full chroot, which is easy to invoke), and the alternate launch mode requires multiple environment variables iirc.
Remote was developed for QEMU and Exagear and tested against both as well as native on both arm and x86.
For Address already in use
, try running strace -ff libgl_remote /glshim.0
. That error implies you already bound to the SHM (likely because another libgl_remote
is running)
Also, make sure the SHM directories are mapped into the chroot - try mount --bind
with /dev/shm
into the chroot (will need to repeat each boot). The file path is a pipe used for synchronization (like a semaphore), while the SHM is used for the actual data transfer.
The default mode of libgl remote requires the host command to be executable (it works better with qemu-user LD_PATH than with a full chroot, which is easy to invoke), and the alternate launch mode requires multiple environment variables iirc.
Yeah, that's probably the problem. I ran i386 glxgears just fine using qemu-i386-static outside of a chroot, but it didn't work in the chroot.
My guess is SHM namespaces then. Try the bind mount from my previous comment, or if your /dev/shm is a symlink to /run or /var/run, try mounting that.
did that fix it?
Yes.
Running glxgears on native ARM:
Terminal 1:
Terminal 2:
Running glxgears in a QEMU i386 chroot, without running libgl_remote on ARM host:
Running glxgears in a QEMU i386 chroot, running libgl_remote on the ARM host:
Terminal 1 (native ARM):
Terminal 2 (QEMU i386 chroot):
libgl_remote /glshim.0
doesn't work: