Le 26/04/2022 à 21:24, John Paul Adrian Glaubitz a écrit :
Hi!
...
[2] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=974004
Normally, since qemu v6.0.0 you can preserve argv[0]: commit 6e1c0d7b951e19c53b8467e8bc4b71ee73a394ea Author: Laurent Vivier <laur...@vivier.eu> Date: Mon Feb 22 11:50:04 2021 +0100 linux-user: manage binfmt-misc preserve-arg[0] flag Add --preserve-argv0 in qemu-binfmt-conf.sh to configure the preserve-argv0 flag. This patch allows to use new flag in AT_FLAGS to detect if preserve-argv0 is configured for this interpreter: argv[0] (the full pathname provided by binfmt-misc) is removed and replaced by argv[1] (the original argv[0] provided by binfmt-misc when 'P'/preserve-arg[0] is set) For instance with this patch and kernel support for AT_FLAGS: $ sudo chroot m68k-chroot sh -c 'echo $0' sh without this patch: $ sudo chroot m68k-chroot sh -c 'echo $0' /usr/bin/sh The new flag is available in kernel (v5.12) since: 2347961b11d4 ("binfmt_misc: pass binfmt_misc flags to the interpreter") This can be tested with something like: # cp ..../qemu-ppc /chroot/powerpc/jessie # qemu-binfmt-conf.sh --qemu-path / --systemd ppc --credential yes \ --persistent no --preserve-argv0 yes # systemctl restart systemd-binfmt.service # cat /proc/sys/fs/binfmt_misc/qemu-ppc enabled interpreter //qemu-ppc flags: POC offset 0 magic 7f454c4601020100000000000000000000020014 mask ffffffffffffff00fffffffffffffffffffeffff # chroot /chroot/powerpc/jessie sh -c 'echo $0' sh # qemu-binfmt-conf.sh --qemu-path / --systemd ppc --credential yes \ --persistent no --preserve-argv0 no # systemctl restart systemd-binfmt.service # cat /proc/sys/fs/binfmt_misc/qemu-ppc enabled interpreter //qemu-ppc flags: OC offset 0 magic 7f454c4601020100000000000000000000020014 mask ffffffffffffff00fffffffffffffffffffeffff # chroot /chroot/powerpc/jessie sh -c 'echo $0' /bin/sh Signed-off-by: Laurent Vivier <laur...@vivier.eu> Message-Id: <20210222105004.1642234-1-laur...@vivier.eu> You need also kernel v5.12: commit 2347961b11d4079deace3c81dceed460c08a8fc1 Author: Laurent Vivier <laur...@vivier.eu> Date: Tue Jan 28 14:25:39 2020 +0100 binfmt_misc: pass binfmt_misc flags to the interpreter It can be useful to the interpreter to know which flags are in use. For instance, knowing if the preserve-argv[0] is in use would allow to skip the pathname argument. This patch uses an unused auxiliary vector, AT_FLAGS, to add a flag to inform interpreter if the preserve-argv[0] is enabled. Note by Helge Deller: The real-world user of this patch is qemu-user, which needs to know if it has to preserve the argv[0]. See Debian bug #970460. Signed-off-by: Laurent Vivier <laur...@vivier.eu> Reviewed-by: YunQiang Su <y...@wavecomp.com> URL: http://bugs.debian.org/970460 Signed-off-by: Helge Deller <del...@gmx.de> Thanks, Laurent