Open ghost opened 4 years ago
oh and also
$ LD_PRELOAD= proot -0 -r . -b /dev -b /proc -b /sys -w / -q qemu-x86_64 /bin/su -lc 'ls -alh /'
ls: /: Function not implemented
ls: /sys: Function not implemented
ls: /bin: Function not implemented
ls: /host-rootfs: Function not implemented
ls: /opt: Function not implemented
ls: /dev: Function not implemented
ls: /var: Function not implemented
ls: /proc: Function not implemented
ls: /home: Function not implemented
total 140K
drwx------ 18 root root 4.0K Jan 22 03:11 .
drwx------ 18 root root 4.0K Jan 22 03:11 ..
lrwx------ 1 root root 18 Jan 17 13:49 bin -> usr/bin
drwx------ 2 root root 4.0K Oct 14 14:35 boot
drwxr-xr-x 21 root root 6.9K Jan 21 23:22 dev
drwx------ 30 root root 4.0K Jan 22 03:11 etc
drwx------ 2 root root 4.0K Oct 14 14:35 home
drwxr-xr-x 27 root root 4.0K Dec 31 2008 host-rootfs
lrwx------ 1 root root 18 Jan 17 13:49 lib -> usr/lib
lrwx------ 1 root root 18 Jan 17 13:49 lib32 -> usr/lib32
lrwx------ 1 root root 18 Jan 17 13:49 lib64 -> usr/lib64
lrwx------ 1 root root 18 Jan 17 13:49 libx32 -> usr/libx32
drwx------ 2 root root 4.0K Jan 17 13:49 media
drwx------ 2 root root 4.0K Jan 17 13:49 mnt
drwx------ 2 root root 4.0K Jan 17 13:49 opt
dr-xr-xr-x 645 root root 0 Jan 1 1970 proc
drwx------ 2 root root 4.0K Jan 17 13:50 root
drwx------ 4 root root 4.0K Jan 17 13:49 run
lrwx------ 1 root root 18 Jan 17 13:49 sbin -> usr/sbin
drwx------ 2 root root 4.0K Jan 17 13:49 srv
dr-xr-xr-x 17 root root 0 Jan 21 23:22 sys
drwx------ 2 root root 4.0K Jan 17 13:50 tmp
drwx------ 13 root root 4.0K Jan 17 13:49 usr
drwx------ 11 root root 4.0K Jan 17 13:50 var
Where is that qemu binary from?
Using qemu-user-static from unstable-packages repository (I couldn't find build script for it) I've got /usr/bin/gzip: Invalid argument
error, however this happens without proot as well:
$ qemu-x86_64 usr/bin/gzip
usr/bin/gzip: Invalid argument
$ qemu-x86_64 usr/bin/ls
/lib64/ld-linux-x86-64.so.2: No such file or directory
(The second is expected error as path to linker is not valid in host system, however for gzip
qemu failed with Invalid argument
and didn't try to load linker (gzip
also specifies /lib64/ld-linux-x86-64.so.2
as its linker))
With qemu-user-x86_64
package from main Termux repo problem does not occur, however it is neccessary to add -b /data
switch to proot
as proot couldn't guess correct LD_LIBRARY_PATH
for qemu.
hmm, using qemu-user-x86_64 proot does this
proot error: execve("/usr/bin/sh"): Function not implemented
proot info: possible causes:
* the program is a script but its interpreter (eg. /bin/sh) was not found;
* the program is an ELF but its interpreter (eg. ld-linux.so) was not found;
* the program is a foreign binary but qemu was not specified;
* qemu does not work correctly (if specified);
* the loader was not found or doesn't work.
fatal error: see `proot --help`.
proot error: trying to remove a directory outside of '/data/data/com.termux/files/usr/tmp', please report this error.
proot error: cant remove '/data/data/com.termux/files/usr/tmp/proot-9437-bVvsho': Directory not empty
/data
, /system
, and /vendor
are -b
'd
That error indicates that proot wasn't even able to start qemu in first place. using qemu-x86_64
from qemu-user-x86_64
works on my device so I'd need trace from your device in order to see whats going on:
LD_PRELOAD= PROOT_VERBOSE=9 strace -vs5000 -o trace.txt proot -0 -r . -b /dev -b /proc -b /sys -b /data -b /system -w / -q qemu-x86_64 /bin/su -lc 'gzip --help'
proot info: Checking for f2fs case sensitivity bug
proot info: f2fs bug not present on device
proot info: binding = /dev/null:/etc/ld.so.preload
proot info: binding = /:/host-rootfs
proot info: binding = /system
proot info: binding = /data
proot info: binding = /sys
proot info: binding = /proc
proot info: binding = /dev
proot info: binding = /data/data/com.termux/files/home/tmp:/
proot info: vpid 1: translate("/" + "/bin/su")
proot info: vpid 1: -> "/data/data/com.termux/files/home/tmp/usr/bin/su"
proot info: vpid 1: translate("/" + "/bin/su")
proot info: vpid 1: -> "/data/data/com.termux/files/home/tmp/usr/bin/su"
proot info: host rootfs = /host-rootfs
proot info: glue rootfs = /data/data/com.termux/files/usr/tmp/proot-5848-CAsihR
proot info: exe = /usr/bin/su
proot info: argv = /bin/su -lc gzip --help
proot info: qemu = /data/data/com.termux/files/usr/bin/qemu-x86_64
proot info: initial cwd = /
proot info: verbose level = 9
proot info: pid 5848: access to "/dev/pts/0" (fd 0) won't be translated until closed
proot info: pid 5848: access to "/proc/5848/fd" (fd 3) won't be translated until closed
proot info: vpid 1: sysenter start: prctl(0x26, 0x1, 0x0, 0x0, 0x0, 0x0) = 0x26 [0x7ffa1d3340, 0]
proot info: vpid 1: sysenter end: prctl(0x26, 0x1, 0x0, 0x0, 0x0, 0x0) = 0x26 [0x7ffa1d3340, 0]
proot info: vpid 1: sysexit start: prctl(0x0, 0x1, 0x0, 0x0, 0x0, 0x0) = 0x0 [0x7ffa1d3340, 0]
proot info: vpid 1: sysexit end: prctl(0x0, 0x1, 0x0, 0x0, 0x0, 0x0) = 0x0 [0x7ffa1d3340, 0]
proot info: vpid 1: sysenter start: prctl(0x16, 0x2, 0x7ffa1d3360, 0x0, 0x0, 0x0) = 0x16 [0x7ffa1d3340, 0]
proot info: vpid 1: sysenter end: prctl(0x16, 0x2, 0x7ffa1d3360, 0x0, 0x0, 0x0) = 0x16 [0x7ffa1d3340, 0]
proot info: vpid 1: sysexit start: prctl(0x0, 0x2, 0x7ffa1d3360, 0x0, 0x0, 0x0) = 0x0 [0x7ffa1d3340, 0]
proot info: vpid 1: sysexit end: prctl(0x0, 0x2, 0x7ffa1d3360, 0x0, 0x0, 0x0) = 0x0 [0x7ffa1d3340, 0]
proot info: vpid 1: sysenter start: execve(0x7bcb6150d0, 0x7ffa1d55e8, 0x7ffa1d5608, 0x20, 0x40100401, 0xaa810101aaaaaaaa) = 0x7bcb6150d0 [0x7ffa1d3390, 0]
proot info: vpid 1: translate("/" + "/usr/bin/su")
proot info: vpid 1: -> "/data/data/com.termux/files/home/tmp/usr/bin/su"
proot info: vpid 1: translate("/" + "/host-rootfs/system/bin/linker64")
proot info: vpid 1: sysenter end: void(0xfffffffffffffffe, 0x7ffa1d32cf, 0x7ffa1d23f7, 0x20, 0x40100401, 0xaa810101aaaaaaaa) = 0xfffffffffffffffe [0x7ffa1d23f7, 0]
proot info: vpid 1: sysexit start: void(0x7bcb6150d0, 0x7ffa1d32cf, 0x7ffa1d23f7, 0x20, 0x40100401, 0xaa810101aaaaaaaa) = 0x7bcb6150d0 [0x7ffa1d23f7, 0]
proot info: vpid 1: sysexit end: execve(0xfffffffffffffffe, 0x7ffa1d55e8, 0x7ffa1d5608, 0x20, 0x40100401, 0xaa810101aaaaaaaa) = 0xfffffffffffffffe [0x7ffa1d3390, 0]
proot info: vpid 1: seccomp SIGSYS: execve(0xfffffffffffffffe, 0x7ffa1d55e8, 0x7ffa1d5608, 0x20, 0x40100401, 0xaa810101aaaaaaaa) = 0xfffffffffffffffe [0x7ffa1d3390, 0]
proot info: vpid 1: sysenter start: write(0x2, 0x7ffa1d2c50, 0xd, 0x6f72686300302e31, 0x58a70df895, 0x7ffa1d2c5d) = 0x2 [0x7ffa1d29e0, 0]
proot info: vpid 1: sysenter end: write(0x2, 0x7ffa1d2c50, 0xd, 0x6f72686300302e31, 0x58a70df895, 0x7ffa1d2c5d) = 0x2 [0x7ffa1d29e0, 0]
proot error: proot info: vpid 1: sysexit start: write(0xd, 0x7ffa1d2c50, 0xd, 0x6f72686300302e31, 0x58a70df895, 0x7ffa1d2c5d) = 0xd [0x7ffa1d29e0, 0]
proot info: vpid 1: sysexit end: write(0xd, 0x7ffa1d2c50, 0xd, 0x6f72686300302e31, 0x58a70df895, 0x7ffa1d2c5d) = 0xd [0x7ffa1d29e0, 0]
proot info: vpid 1: sysenter start: write(0x2, 0x7ffa1d2d40, 0x15, 0x75732f, 0x58a70ddc39, 0x7ffa1d2d55) = 0x2 [0x7ffa1d2ad0, 0]
proot info: vpid 1: sysenter end: write(0x2, 0x7ffa1d2d40, 0x15, 0x75732f, 0x58a70ddc39, 0x7ffa1d2d55) = 0x2 [0x7ffa1d2ad0, 0]
execve("/usr/bin/su")proot info: vpid 1: sysexit start: write(0x15, 0x7ffa1d2d40, 0x15, 0x75732f, 0x58a70ddc39, 0x7ffa1d2d55) = 0x15 [0x7ffa1d2ad0, 0]
proot info: vpid 1: sysexit end: write(0x15, 0x7ffa1d2d40, 0x15, 0x75732f, 0x58a70ddc39, 0x7ffa1d2d55) = 0x15 [0x7ffa1d2ad0, 0]
proot info: vpid 1: sysenter start: write(0x2, 0x58a70df8a9, 0x2, 0x7bcbc12580, 0x58a70ddc39, 0x7ffa1d2d55) = 0x2 [0x7ffa1d3230, 0]
proot info: vpid 1: sysenter end: write(0x2, 0x58a70df8a9, 0x2, 0x7bcbc12580, 0x58a70ddc39, 0x7ffa1d2d55) = 0x2 [0x7ffa1d3230, 0]
: proot info: vpid 1: sysexit start: write(0x2, 0x58a70df8a9, 0x2, 0x7bcbc12580, 0x58a70ddc39, 0x7ffa1d2d55) = 0x2 [0x7ffa1d3230, 0]
proot info: vpid 1: sysexit end: write(0x2, 0x58a70df8a9, 0x2, 0x7bcbc12580, 0x58a70ddc39, 0x7ffa1d2d55) = 0x2 [0x7ffa1d3230, 0]
proot info: vpid 1: sysenter start: write(0x2, 0x7ffa1d2c50, 0x19, 0x7571696e7520746f, 0x7bcbb432a0, 0x7ffa1d2c69) = 0x2 [0x7ffa1d29e0, 0]
proot info: vpid 1: sysenter end: write(0x2, 0x7ffa1d2c50, 0x19, 0x7571696e7520746f, 0x7bcbb432a0, 0x7ffa1d2c69) = 0x2 [0x7ffa1d29e0, 0]
Function not implemented
proot info: vpid 1: sysexit start: write(0x19, 0x7ffa1d2c50, 0x19, 0x7571696e7520746f, 0x7bcbb432a0, 0x7ffa1d2c69) = 0x19 [0x7ffa1d29e0, 0]
proot info: vpid 1: sysexit end: write(0x19, 0x7ffa1d2c50, 0x19, 0x7571696e7520746f, 0x7bcbb432a0, 0x7ffa1d2c69) = 0x19 [0x7ffa1d29e0, 0]
proot info: vpid 1: sysenter start: write(0x2, 0x7ffa1d2c50, 0xc, 0x6f72686300302e31, 0x58a70df89f, 0x7ffa1d2c5c) = 0x2 [0x7ffa1d29e0, 0]
proot info: vpid 1: sysenter end: write(0x2, 0x7ffa1d2c50, 0xc, 0x6f72686300302e31, 0x58a70df89f, 0x7ffa1d2c5c) = 0x2 [0x7ffa1d29e0, 0]
proot info: proot info: vpid 1: sysexit start: write(0xc, 0x7ffa1d2c50, 0xc, 0x6f72686300302e31, 0x58a70df89f, 0x7ffa1d2c5c) = 0xc [0x7ffa1d29e0, 0]
proot info: vpid 1: sysexit end: write(0xc, 0x7ffa1d2c50, 0xc, 0x6f72686300302e31, 0x58a70df89f, 0x7ffa1d2c5c) = 0xc [0x7ffa1d29e0, 0]
proot info: vpid 1: sysenter start: write(0x2, 0x7ffa1d2d40, 0x14b, 0x7ffa1d2e00, 0x58a70ddf04, 0x7ffa1d2e8b) = 0x2 [0x7ffa1d2ad0, 0]
proot info: vpid 1: sysenter end: write(0x2, 0x7ffa1d2d40, 0x14b, 0x7ffa1d2e00, 0x58a70ddf04, 0x7ffa1d2e8b) = 0x2 [0x7ffa1d2ad0, 0]
possible causes:
* the program is a script but its interpreter (eg. /bin/sh) was not found;
* the program is an ELF but its interpreter (eg. ld-linux.so) was not found;
* the program is a foreign binary but qemu was not specified;
* qemu does not work correctly (if specified);
* the loader was not found or doesn't work.proot info: vpid 1: sysexit start: write(0x14b, 0x7ffa1d2d40, 0x14b, 0x7ffa1d2e00, 0x58a70ddf04, 0x7ffa1d2e8b) = 0x14b [0x7ffa1d2ad0, 0]
proot info: vpid 1: sysexit end: write(0x14b, 0x7ffa1d2d40, 0x14b, 0x7ffa1d2e00, 0x58a70ddf04, 0x7ffa1d2e8b) = 0x14b [0x7ffa1d2ad0, 0]
proot info: vpid 1: sysenter start: write(0x2, 0x7bcbc125f7, 0x1, 0x7bcbc12580, 0x58a70ddf04, 0x7ffa1d2e8b) = 0x2 [0x7ffa1d3280, 0]
proot info: vpid 1: sysenter end: write(0x2, 0x7bcbc125f7, 0x1, 0x7bcbc12580, 0x58a70ddf04, 0x7ffa1d2e8b) = 0x2 [0x7ffa1d3280, 0]
proot info: vpid 1: sysexit start: write(0x1, 0x7bcbc125f7, 0x1, 0x7bcbc12580, 0x58a70ddf04, 0x7ffa1d2e8b) = 0x1 [0x7ffa1d3280, 0]
proot info: vpid 1: sysexit end: write(0x1, 0x7bcbc125f7, 0x1, 0x7bcbc12580, 0x58a70ddf04, 0x7ffa1d2e8b) = 0x1 [0x7ffa1d3280, 0]
proot info: vpid 1: sysenter start: write(0x2, 0x7ffa1d2d90, 0x21, 0x0, 0x58a70dda36, 0x7ffa1d2db1) = 0x2 [0x7ffa1d2b20, 0]
proot info: vpid 1: sysenter end: write(0x2, 0x7ffa1d2d90, 0x21, 0x0, 0x58a70dda36, 0x7ffa1d2db1) = 0x2 [0x7ffa1d2b20, 0]
fatal error: see `proot --help`.
proot info: vpid 1: sysexit start: write(0x21, 0x7ffa1d2d90, 0x21, 0x0, 0x58a70dda36, 0x7ffa1d2db1) = 0x21 [0x7ffa1d2b20, 0]
proot info: vpid 1: sysexit end: write(0x21, 0x7ffa1d2d90, 0x21, 0x0, 0x58a70dda36, 0x7ffa1d2db1) = 0x21 [0x7ffa1d2b20, 0]
proot info: vpid 1: sysenter start: mprotect(0x7bcd167000, 0x1000, 0x3, 0x0, 0x58a70dda36, 0x7ffa1d2db1) = 0x7bcd167000 [0x7ffa1d33e0, 0]
proot info: vpid 1: sysenter end: mprotect(0x7bcd167000, 0x1000, 0x3, 0x0, 0x58a70dda36, 0x7ffa1d2db1) = 0x7bcd167000 [0x7ffa1d33e0, 0]
proot info: vpid 1: sysexit start: mprotect(0x0, 0x1000, 0x3, 0x0, 0x58a70dda36, 0x7ffa1d2db1) = 0x0 [0x7ffa1d33e0, 0]
proot info: vpid 1: sysexit end: mprotect(0x0, 0x1000, 0x3, 0x0, 0x58a70dda36, 0x7ffa1d2db1) = 0x0 [0x7ffa1d33e0, 0]
proot info: vpid 1: sysenter start: mprotect(0x7bcd167000, 0x1000, 0x1, 0x0, 0x58a70dda36, 0x7ffa1d2db1) = 0x7bcd167000 [0x7ffa1d33e0, 0]
proot info: vpid 1: sysenter end: mprotect(0x7bcd167000, 0x1000, 0x1, 0x0, 0x58a70dda36, 0x7ffa1d2db1) = 0x7bcd167000 [0x7ffa1d33e0, 0]
proot info: vpid 1: sysexit start: mprotect(0x0, 0x1000, 0x1, 0x0, 0x58a70dda36, 0x7ffa1d2db1) = 0x0 [0x7ffa1d33e0, 0]
proot info: vpid 1: sysexit end: mprotect(0x0, 0x1000, 0x1, 0x0, 0x58a70dda36, 0x7ffa1d2db1) = 0x0 [0x7ffa1d33e0, 0]
proot info: vpid 1: sysenter start: fstatat64(0xffffff9c, 0x7bcb61c4c0, 0x7ffa1d3278, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0xffffff9c [0x7ffa1d3270, 0]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/home/tmp/etc/ld.so.preload")
proot info: vpid 1: -> "/data/data/com.termux/files/home/tmp/etc/ld.so.preload"
proot info: vpid 1: sysenter end: fstatat64(0xffffff9c, 0x7ffa1d3239, 0x7ffa1d3278, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0xffffff9c [0x7ffa1d3239, 0]
proot info: ptrace acceleration (seccomp mode 2, new syscall order) enabled
proot info: skipping PTRACE_EVENT_SECCOMP for already handled sysenter
proot info: vpid 1: sysexit start: fstatat64(0x0, 0x7ffa1d3239, 0x7ffa1d3278, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0x0 [0x7ffa1d3239, 0]
proot info: vpid 1: sysexit end: fstatat64(0x0, 0x7bcb61c4c0, 0x7ffa1d3278, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0x0 [0x7ffa1d3270, 0]
proot info: vpid 1: sysenter start: unlinkat(0xffffff9c, 0x7bcb61c4c0, 0x0, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0xffffff9c [0x7ffa1d3270, 0]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/home/tmp/etc/ld.so.preload")
proot info: vpid 1: -> "/data/data/com.termux/files/home/tmp/etc/ld.so.preload"
proot info: vpid 1: sysenter end: unlinkat(0xffffff9c, 0x7ffa1d3239, 0x0, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0xffffff9c [0x7ffa1d3270, 0]
proot info: vpid 1: sysenter start: fstatat64(0xffffff9c, 0x7bcb61c420, 0x7ffa1d3278, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0xffffff9c [0x7ffa1d3270, 0]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/home/tmp/host-rootfs")
proot info: vpid 1: -> "/data/data/com.termux/files/home/tmp/host-rootfs"
proot info: vpid 1: sysenter end: fstatat64(0xffffff9c, 0x7ffa1d323f, 0x7ffa1d3278, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0xffffff9c [0x7ffa1d323f, 0]
proot info: vpid 1: sysexit start: fstatat64(0x0, 0x7ffa1d323f, 0x7ffa1d3278, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0x0 [0x7ffa1d323f, 0]
proot info: vpid 1: sysexit end: fstatat64(0x0, 0x7bcb61c420, 0x7ffa1d3278, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0x0 [0x7ffa1d3270, 0]
proot info: vpid 1: sysenter start: unlinkat(0xffffff9c, 0x7bcb61c420, 0x200, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0xffffff9c [0x7ffa1d3270, 0]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/home/tmp/host-rootfs")
proot info: vpid 1: -> "/data/data/com.termux/files/home/tmp/host-rootfs"
proot info: vpid 1: sysenter end: unlinkat(0xffffff9c, 0x7ffa1d323f, 0x200, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0xffffff9c [0x7ffa1d3270, 0]
proot info: vpid 1: sysenter start: fstatat64(0xffffff9c, 0x7bcb61c380, 0x7ffa1d3278, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0xffffff9c [0x7ffa1d3270, 0]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/home/tmp/system")
proot info: vpid 1: -> "/data/data/com.termux/files/home/tmp/system"
proot info: vpid 1: sysenter end: fstatat64(0xffffff9c, 0x7ffa1d3244, 0x7ffa1d3278, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0xffffff9c [0x7ffa1d3244, 0]
proot info: vpid 1: sysexit start: fstatat64(0x0, 0x7ffa1d3244, 0x7ffa1d3278, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0x0 [0x7ffa1d3244, 0]
proot info: vpid 1: sysexit end: fstatat64(0x0, 0x7bcb61c380, 0x7ffa1d3278, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0x0 [0x7ffa1d3270, 0]
proot info: vpid 1: sysenter start: unlinkat(0xffffff9c, 0x7bcb61c380, 0x200, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0xffffff9c [0x7ffa1d3270, 0]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/home/tmp/system")
proot info: vpid 1: -> "/data/data/com.termux/files/home/tmp/system"
proot info: vpid 1: sysenter end: unlinkat(0xffffff9c, 0x7ffa1d3244, 0x200, 0x100, 0x58a70dda36, 0x7ffa1d2db1) = 0xffffff9c [0x7ffa1d3270, 0]
proot info: vpid 1: sysenter start: fstatat64(0xffffff9c, 0x7bcb61c2e0, 0x7ffa1d3278, 0x100, 0x7bcb600260, 0x7bcb600280) = 0xffffff9c [0x7ffa1d3270, 0]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/home/tmp/data")
proot info: vpid 1: -> "/data/data/com.termux/files/home/tmp/data"
proot info: vpid 1: sysenter end: fstatat64(0xffffff9c, 0x7ffa1d3246, 0x7ffa1d3278, 0x100, 0x7bcb600260, 0x7bcb600280) = 0xffffff9c [0x7ffa1d3246, 0]
proot info: vpid 1: sysexit start: fstatat64(0x0, 0x7ffa1d3246, 0x7ffa1d3278, 0x100, 0x7bcb600260, 0x7bcb600280) = 0x0 [0x7ffa1d3246, 0]
proot info: vpid 1: sysexit end: fstatat64(0x0, 0x7bcb61c2e0, 0x7ffa1d3278, 0x100, 0x7bcb600260, 0x7bcb600280) = 0x0 [0x7ffa1d3270, 0]
proot info: vpid 1: sysenter start: unlinkat(0xffffff9c, 0x7bcb61c2e0, 0x200, 0x100, 0x7bcb600260, 0x7bcb600280) = 0xffffff9c [0x7ffa1d3270, 0]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/home/tmp/data")
proot info: vpid 1: -> "/data/data/com.termux/files/home/tmp/data"
proot info: vpid 1: sysenter end: unlinkat(0xffffff9c, 0x7ffa1d3246, 0x200, 0x100, 0x7bcb600260, 0x7bcb600280) = 0xffffff9c [0x7ffa1d3270, 0]
proot info: vpid 1: sysenter start: getcwd(0x7bcb63a000, 0x1000, 0x1000, 0x9, 0x7bcb600260, 0x7bcb600280) = 0x7bcb63a000 [0x7ffa1d32d0, 0]
proot info: vpid 1: sysenter end: void(0x7bcb63a000, 0x1000, 0x1000, 0x9, 0x7bcb600260, 0x7bcb600280) = 0x7bcb63a000 [0x7ffa1d32d0, 0]
proot info: vpid 1: sysexit start: void(0x7bcb63a000, 0x1000, 0x1000, 0x9, 0x7bcb600260, 0x7bcb600280) = 0x7bcb63a000 [0x7ffa1d32d0, 0]
proot info: vpid 1: translate("/" + ".")
proot info: vpid 1: -> "/data/data/com.termux/files/home/tmp/."
proot info: vpid 1: sysexit end: getcwd(0x2, 0x1000, 0x1000, 0x9, 0x7bcb600260, 0x7bcb600280) = 0x2 [0x7ffa1d32d0, 0]
proot info: vpid 1: sysenter start: fchmodat(0xffffff9c, 0x7bcb61c240, 0x1c0, 0x0, 0x7bcb600260, 0x7bcb600280) = 0xffffff9c [0x7ffa1d3300, 0]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/usr/tmp/proot-5848-CAsihR")
proot info: vpid 1: -> "/data/data/com.termux/files/usr/tmp/proot-5848-CAsihR"
proot info: vpid 1: sysenter end: fchmodat(0xffffff9c, 0x7ffa1d32ca, 0x1c0, 0x0, 0x7bcb600260, 0x7bcb600280) = 0xffffff9c [0x7ffa1d32ca, 0]
proot info: vpid 1: sysexit start: fchmodat(0x0, 0x7ffa1d32ca, 0x1c0, 0x0, 0x7bcb600260, 0x7bcb600280) = 0x0 [0x7ffa1d32ca, 0]
proot info: vpid 1: sysexit end: fchmodat(0x0, 0x7bcb61c240, 0x1c0, 0x0, 0x7bcb600260, 0x7bcb600280) = 0x0 [0x7ffa1d3300, 0]
proot info: vpid 1: sysenter start: chdir(0x7bcb61c240, 0x7bcb61c240, 0x1c0, 0x0, 0x7bcb600260, 0x7bcb600280) = 0x7bcb61c240 [0x7ffa1d3300, 0]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/usr/tmp/proot-5848-CAsihR/.")
proot info: vpid 1: -> "/data/data/com.termux/files/usr/tmp/proot-5848-CAsihR/."
proot info: vpid 1: sysenter end: void(0x7bcb61c240, 0x7bcb61c240, 0x1c0, 0x0, 0x7bcb600260, 0x7bcb600280) = 0x7bcb61c240 [0x7ffa1d3300, 0]
proot info: vpid 1: sysexit start: void(0x7bcb61c240, 0x7bcb61c240, 0x1c0, 0x0, 0x7bcb600260, 0x7bcb600280) = 0x7bcb61c240 [0x7ffa1d3300, 0]
proot info: vpid 1: sysexit end: chdir(0x0, 0x7bcb61c240, 0x1c0, 0x0, 0x7bcb600260, 0x7bcb600280) = 0x0 [0x7ffa1d3300, 0]
proot info: vpid 1: sysenter start: readlinkat(0xffffff9c, 0x58a70e12c2, 0x7bcb61c2e0, 0x23, 0x18, 0x28) = 0xffffff9c [0x7ffa1d32a0, 0]
proot info: vpid 1: translate("/" + "/proc/self/cwd")
proot info: vpid 1: -> "/proc/5852/cwd"
proot info: vpid 1: sysenter end: readlinkat(0xffffff9c, 0x7ffa1d3291, 0x7bcb61c2e0, 0x23, 0x18, 0x28) = 0xffffff9c [0x7ffa1d3291, 0]
proot info: vpid 1: sysexit start: readlinkat(0x23, 0x7ffa1d3291, 0x7bcb61c2e0, 0x23, 0x18, 0x28) = 0x23 [0x7ffa1d3291, 0]
proot info: vpid 1: sysexit end: readlinkat(0x23, 0x58a70e12c2, 0x7bcb61c2e0, 0x23, 0x18, 0x28) = 0x23 [0x7ffa1d32a0, 0]
proot info: vpid 1: sysenter start: openat(0xffffff9c, 0x58a70ddb48, 0x84000, 0x0, 0x0, 0xffffffffff000000) = 0xffffff9c [0x7ffa1d3280, 0]
proot info: vpid 1: translate("/data/data/com.termux/files/usr/tmp/proot-5848-CAsihR" + ".")
proot info: vpid 1: -> "/data/data/com.termux/files/usr/tmp/proot-5848-CAsihR/."
proot info: vpid 1: sysenter end: openat(0xffffff9c, 0x7ffa1d3248, 0x84000, 0x0, 0x0, 0xffffffffff000000) = 0xffffff9c [0x7ffa1d3280, 0]
proot info: vpid 1: sysenter start: chdir(0x58a70e08d4, 0x3, 0x58a70e138d, 0x1d, 0x0, 0xffffffffff000000) = 0x58a70e08d4 [0x7ffa1d3300, 0]
proot info: vpid 1: translate("/data/data/com.termux/files/usr/tmp/proot-5848-CAsihR" + "../.")
proot info: vpid 1: -> "/data/data/com.termux/files/usr/tmp/."
proot info: vpid 1: sysenter end: void(0x58a70e08d4, 0x3, 0x58a70e138d, 0x1d, 0x0, 0xffffffffff000000) = 0x58a70e08d4 [0x7ffa1d3300, 0]
proot info: vpid 1: sysexit start: void(0x58a70e08d4, 0x3, 0x58a70e138d, 0x1d, 0x0, 0xffffffffff000000) = 0x58a70e08d4 [0x7ffa1d3300, 0]
proot info: vpid 1: sysexit end: chdir(0x0, 0x3, 0x58a70e138d, 0x1d, 0x0, 0xffffffffff000000) = 0x0 [0x7ffa1d3300, 0]
proot info: vpid 1: sysenter start: unlinkat(0xffffff9c, 0x7bcb61c240, 0x200, 0x1d, 0x0, 0xffffffffff000000) = 0xffffff9c [0x7ffa1d3300, 0]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/usr/tmp/proot-5848-CAsihR")
proot info: vpid 1: -> "/data/data/com.termux/files/usr/tmp/proot-5848-CAsihR"
proot info: vpid 1: sysenter end: unlinkat(0xffffff9c, 0x7ffa1d32ca, 0x200, 0x1d, 0x0, 0xffffffffff000000) = 0xffffff9c [0x7ffa1d3300, 0]
proot info: vpid 1: sysenter start: chdir(0x7bcb63a000, 0x7ffa1d32ca, 0x200, 0x1d, 0x0, 0xffffffffff000000) = 0x7bcb63a000 [0x7ffa1d3300, 0]
proot info: vpid 1: translate("/" + "/.")
proot info: vpid 1: -> "/data/data/com.termux/files/home/tmp/."
proot info: vpid 1: sysenter end: void(0x7bcb63a000, 0x7ffa1d32ca, 0x200, 0x1d, 0x0, 0xffffffffff000000) = 0x7bcb63a000 [0x7ffa1d3300, 0]
proot info: vpid 1: sysexit start: void(0x7bcb63a000, 0x7ffa1d32ca, 0x200, 0x1d, 0x0, 0xffffffffff000000) = 0x7bcb63a000 [0x7ffa1d3300, 0]
proot info: vpid 1: sysexit end: chdir(0x0, 0x7ffa1d32ca, 0x200, 0x1d, 0x0, 0xffffffffff000000) = 0x0 [0x7ffa1d3300, 0]
proot info: vpid 1: exited with status 1
proot error: can't chmod '/data/data/com.termux/files/usr/tmp/proot-5848-CAsihR': No such file or directory
Looks like on Android 10 it's also necessary to add -b /apex
hmm, yeah that seems to work
total 156K
drwx------. 22 root root 4.0K Jan 27 07:00 .
drwx------. 22 root root 4.0K Jan 27 07:00 ..
drwxr-xr-x. 14 root root 280 Jan 26 19:05 apex
lrwx------. 1 root root 18 Jan 17 21:49 bin -> usr/bin
drwx------. 2 root root 4.0K Oct 14 22:35 boot
drwxrwx--x. 69 1000 1000 4.0K Jan 26 19:05 data
drwxr-xr-x. 21 root root 6.9K Jan 26 19:05 dev
drwx------. 60 root root 4.0K Jan 27 07:00 etc
drwx------. 3 root root 4.0K Oct 14 22:35 home
drwxr-xr-x. 27 root root 4.0K Jan 1 2009 host-rootfs
lrwx------. 1 root root 18 Jan 17 21:49 lib -> usr/lib
lrwx------. 1 root root 18 Jan 17 21:49 lib32 -> usr/lib32
lrwx------. 1 root root 18 Jan 17 21:49 lib64 -> usr/lib64
lrwx------. 1 root root 18 Jan 17 21:49 libx32 -> usr/libx32
drwx------. 2 root root 4.0K Jan 17 21:49 media
drwx------. 2 root root 4.0K Jan 17 21:49 mnt
drwx------. 2 root root 4.0K Jan 17 21:49 opt
dr-xr-xr-x. 634 root root 0 Jan 1 1970 proc
drwx------. 3 root root 4.0K Jan 17 21:50 root
drwx------. 3 root root 4.0K Jan 27 06:58 run
lrwx------. 1 root root 18 Jan 17 21:49 sbin -> usr/sbin
drwx------. 2 root root 4.0K Jan 17 21:49 srv
dr-xr-xr-x. 17 root root 0 Jan 26 19:05 sys
drwxr-xr-x. 23 root root 4.0K Jan 1 2009 system
drwx------. 2 root root 4.0K Jan 27 06:58 tmp
drwx------. 14 root root 4.0K Jan 17 21:49 usr
drwx------. 11 root root 4.0K Jan 17 21:50 var
drwxr-xr-x. 15 root 2000 4.0K Jan 1 2009 vendor
another issue is ldconfig
appears to make qemu segfault
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
Segmentation fault
which ends up breaking installation of some packages, lol
Setting up libc-bin (2.30-0ubuntu2) ...
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
Segmentation fault
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
Segmentation fault
dpkg: error processing package libc-bin (--configure):
installed libc-bin package post-installation script subprocess returned error exit status 139
Errors were encountered while processing:
libc-bin
Looks like ldconfig
fails to allocate memory, this happens regardless of proot, there's recent commit in QEMU that appears to be aimed at fixing that, however I haven't tested it and commit didn't make into QEMU release yet.
how do you guys build qemu? i couldnt find the build scripts in any of the repos?? only qemu-headless-x86_64 exists?
@kalmari246 qemu-user-static is custom build. It does not have any build scripts as was compiled manually.
It is provided for specific cases where only static version of qemu is working. It is not needed for use with proot as dynamic one works well (for me at least).
im assuming the dynamic one is also manually built?
yeah it works most of the time, but it does enjoy segfaulting with a fair amount of programs
im assuming the dynamic one is also manually built?
It is subpackage of https://github.com/termux/termux-packages/tree/master/packages/qemu-system-x86_64-headless.
yeah it works most of the time, but it does enjoy segfaulting with a fair amount of programs
Yes, some programs do not work well with it for unknown reason. Also QEMU user mode on Android is a lot slower than system mode.
Maybe something to do with libc or kernel or something else system call related.
My Android version is 8.0.
Ahh, right.
Great.. Oh yeah that's something, unicorn, the emulator lib based on qemu, it segfaults as well.
Mine's 10.0
Commit I've linked above fixes issue related to brk()
syscall, as Unicorn has no own syscall handling crashes of Unicorn are probably unrelated to this issue. Crash here happened inside emulated program (which Qemu-user forwards as own SEGV, but Unicorn would just return error from uc_emu_start
(e.g. UC_ERR_WRITE_UNMAPPED
) and not crash emulator process)
results in
it could have smth to do with
termux-info: