Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot run Debian in Termux #62

Open
oxr463 opened this issue Aug 21, 2021 · 1 comment
Open

Cannot run Debian in Termux #62

oxr463 opened this issue Aug 21, 2021 · 1 comment
Labels

Comments

@oxr463
Copy link
Contributor

oxr463 commented Aug 21, 2021

curl -LO https://github.com/proot-me/proot-rs/releases/download/v0.1.0/proot-rs-v0.1.0-aarch64-linux-android.tar.gz
tar -xf proot-rs-v0.1.0-aarch64-linux-android.tar.gz
curl -LO https://us.images.linuxcontainers.org/images/debian/sid/arm64/default/20210821_05:28/rootfs.tar.xz
mkdir debian
cd debian
tar -xf ../rootfs.tar.xz
cd ..
./proot-rs -r debian /bin/sh
echo $?
159
@oxr463 oxr463 added the bug label Aug 21, 2021
@imlk0
Copy link
Collaborator

imlk0 commented Aug 21, 2021

Just to summarize what is known so far. proot-rs does not currently work in termux (but can run proot-rs in the adb shell).

Two errors have been found so far.

  1. Bad address
    The error is exactly the one you mentioned here:
    Add support for Android platform and other architectures (e.g. arm, aarch64) #35 (comment)

    I tried testing in Termux on my Motorola G7, Android 10, and here is what I got:

    ./proot-rs --rootfs=./alpine --bind /dev:/dev --bind /proc:/proc
    bash: ./proot-rs: Bad address
    echo $?
    126

    The characteristic is that echo $? results in 126

    The strange thing is that once I run again with RUST_LOG=trace (which will generate more log):

    RUST_LOG=trace ./proot-rs --rootfs=./alpine --bind /dev:/dev --bind /proc:/proc

    This error disappears and does not appear anymore, even after restarting termux. I no longer see any Bad address, and the exit code is no longer 126.

    So I think it's a bug of termux.

  2. Exit with code 159

    This is the main error mentioned in current issue.

    By setting RUST_LOG=trace, we could get more logs:

    image

    The logs show that the first tracee process was successfully loaded by our loader-shim, but was killed by a SIGSYS signal shortly after leaving from the loader-shim.

    By analyzing the generated core dump file, it was found that the tracee was calling system call setgid32().

    Since the problem did not occur when testing proot-rs in the adb shell, I think it may be related to seccomp.

    ➜  ~ adb shell
    enchilada:/ $ whoami
    shell
    enchilada:/ $ cat /proc/self/status | grep Seccomp
    Seccomp:        0
    enchilada:/ $ cat /proc/`pidof com.termux`/status | grep Seccomp                                                                                                              
    Seccomp:        2
    

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants