This repository was archived by the owner on Oct 9, 2020. It is now read-only.
v5.0.0
============== Highlight --------- PRoot used to rely on the ELF loader embedded in the ELF interpreter from the GNU libc. Sadly this latter suffers from many issues: * programs that use constructors or destructors might crash: a typical example is C++ programs. * programs that rely on the "rpath" mechanism and that are invoked through a symlink might not start: a typical example is the JVM on Debian. * programs that read processes command-line migth be confused because initial argv[0] is replaced: typical examples are ps and top. Moreover not all ELF interpreters provide this feature. For instance, ELF interpreters shipped with Bionic (Android) and some versions of the uClibC can't be used as ELF loaders. As a consequence it was not possible to proot into a rootfs that uses such C library. Now PRoot has its own loader, that means all the limitations above doesn't exist anymore. Fixes ----- * Most bugs related to shebang support -- ie. "#!" at the beginning of a program -- were fixed. Command-line interface changes ------------------------------ * PRoot now starts a login shell when no command is specified; this makes the shell read profile files from the guest rootfs, as expected by some guest programs. To get the old behavior, launch "/bin/sh" explicitly: proot -r whatever /bin/sh * The -R option now binds "/run" and "/var/run/dbus/system_bus_socket" too. This is useful for guest programs that need to communicate with host services. Validation ---------- ==================== ================= ============== ================= ========= testsuite host distro guest distro configurations comments ==================== ================= ============== ================= ========= proot-v4.0 OBS */x86_64 none N/A a proot-v4.0 OBS */x86 none N/A b proot-v4.0 STLinux-2.4/arm none N/A c proot-v4.0 Slack-14.1/x86_64 none N/A a proot-v4.0/memcheck Slack-14.1/x86_64 none N/A a proot-v4.0/asan Slack-14.1/x86_64 none N/A a proot-v4.0/talleak Slack-14.1/x86_64 none N/A a libuv-0.10.27 Slack-14.1/x86_64 same as host none a libuv-0.10.27 Slack-14.1/x86_64 same as host kompat, fake_id0 h libuv-0.10.27 Slack-14.1/x86_64 Slack-14.0/x86 none a libuv-0.10.27 Slack-14.1/x86_64 Slack-14.0/x86 kompat, fake_id0 h ltp-syscall-20130904 Slack-14.1/x86_64 same as host none d ltp-syscall-20130904 Slack-14.1/x86_64 same as host kompat, fake_id0 i ltp-syscall-20130904 Slack-14.1/x86_64 Slack-14.0/x86 none q ltp-syscall-20130904 Slack-14.1/x86_64 Slack-14.0/x86 kompat, fake_id0 i ltp-opt-20130904 Slack-14.1/x86_64 same as host none g ltp-opt-20130904 Slack-14.1/x86_64 same as host kompat, fake_id0 k, g ltp-opt-20130904 Slack-14.1/x86_64 Slack-14.0/x86 none r ltp-opt-20130904 Slack-14.1/x86_64 Slack-14.0/x86 kompat, fake_id0 u, r, g perl-5.18.1 Slack-14.1/x86_64 same as host none a perl-5.18.1 Slack-14.1/x86_64 same as host kompat, fake_id0 j perl-5.18.1 Slack-14.1/x86_64 Slack-14.0/x86 none a perl-5.18.1 Slack-14.1/x86_64 Slack-14.0/x86 kompat, fake_id0 j gdb-7.6.1 Slack-14.1/x86_64 same as host none f gdb-7.6.1 Slack-14.1/x86_64 same as host kompat, fake_id0 l gdb-7.6.1 Slack-14.1/x86_64 Slack-14.0/x86 none c gdb-7.6.1 Slack-14.1/x86_64 Slack-14.0/x86 kompat, fake_id0 c coreutils-8.21* Slack-14.1/x86_64 same as host none e coreutils-8.21* Slack-14.1/x86_64 same as host kompat, fake_id0 m, s coreutils-8.21* Slack-14.1/x86_64 Slack-14.0/x86 none p coreutils-8.21* Slack-14.1/x86_64 Slack-14.0/x86 kompat, fake_id0 s proot-v3.2.2 Slack-14.1/x86_64 same as host none a proot-v3.2.2 Slack-14.1/x86_64 same as host fake_id0 a proot-v3.2.2 Slack-14.1/x86_64 Slack-14.0/x86 none c proot-v3.2.2 Slack-14.1/x86_64 Slack-14.0/x86 fake_id0 c perl-5.16.1 Slack-14.1/x86_64 Slack-14.1/ARM qemu-2.1.2 o coreutils-8.19 Slack-14.1/x86_64 Slack-14.1/ARM qemu-2.1.2 n performance Slack-14.1/x86_64 none none t Coverity Scan Travis-CI N/A N/A a Clang 3.3 Slack-14.1/x86_64 N/A N/A a ==================== ================= ============== ================= ========= a: is OK or nothing special to report. b: fails on some AMD CPUs. No explanations yet. c: ptrace emulation doesn't work. d: failures = brk01, creat07, execve04, mremap03, msync03, pwrite03, pwrite03_64, rmdir02 e: failures = rm/deep-2 misc/cut-huge-to-eol-range misc/csplit-heap du/long-from-unreadable install/basic-1 mkdir/p-3 f: failures = break-interp, foll-exec, info-os, pie-execl*, restore*, store*, valgrind-db-attach* g: failures = timer_getoverrun_2-3 h: failures = signal_multiple_loops, fs_chown i: too many failures to be listed here. These failures are mostly related to the fake_id0 extensions but are not unexpected. j: failures = Path.t, 110_icmp_inst.t, 500_ping_icmp.t, 520_icmp_ttl.t k: failures = fork_1-1, sem_unlink_3-1, timer_getoverrun_2-2 l: failures = attach-pie-noexec, break-interp, fileio, foll-exec, info-os, longjmp, morestack m: failures = misc/cut-huge-to-eol-range, misc/csplit-heap, ls/no-cap, ls/stat-free-color, ls/stat-free-symlinks, mv/atomic2, misc/id-setgid, misc/xattr, du/long-from-unreadable, ls/file-type, chown/basic, cp/preserve-gid, cp/special-bits, install/install-C-root, ls/capability, ls/nameless-uid, misc/chroot-credentials, mv/sticky-to-xpart, rm/fail-2eperm, rm/no-give-up n: failures = rm/deep-2, misc/env, misc/printenv, split/fail, misc/stty*, dd/skip-seek, dd/skip-seek-past-file, du/long-from-unreadable, install/basic-1, mkdir/p-3 o: failures = op/magic.t p: failures = rm/deep-2, du/long-from-unreadable, install/basic-1, mkdir/p-3 q: failures = bdflush01, creat07, execve04, modify_ldt01, mremap03, msync03, pwrite03, pwrite03_64, rmdir02, socketcall01 r: failures = mmap_31-1 s: failures = misc/id-setgid, misc/xattr, du/long-from-unreadable, ls/file-type, chown/basic, cp/preserve-gid, cp/special-bits, install/install-C-root, ls/capability, ls/nameless-uid, misc/chroot-credentials, mv/sticky-to-xpart, rm/fail-2eperm, rm/no-give-up t: the loader has introduced a small overhead < 2% u: failures = fork_1-1 sem_unlink_3-1 timer_getoverrun_2-3 * new