Tags: proot-me/proot
Tags
Release v5.1.0
==============
New features
------------
+ Processes under PRoot now appear with their real names, that is,
they are not renamed "ld-linux.so" or "prooted-..." anymore:
before:
$ proot-v4.0.3 ps
PID TTY TIME CMD
7885 pts/11 00:00:00 bash
8131 pts/11 00:00:00 proot-v4.0.3
8132 pts/11 00:00:00 ld-2.17.so
$ proot-v5.0.0 ps
PID TTY TIME CMD
7885 pts/11 00:00:00 bash
7916 pts/11 00:00:00 proot-v5.0.0
7917 pts/11 00:00:00 prooted-7916-Jb
now:
$ proot-v5.1.0 ps
PID TTY TIME CMD
7885 pts/11 00:00:00 bash
8585 pts/11 00:00:00 proot-v5.1.0
8586 pts/11 00:00:00 ps
Fixes
-----
+ It is now possible to use GDB against multi-threaded programs under
PRoot x86_64 and x86.
+ It is possible to execute x86_64 programs from x86 programs again.
+ It is possible to use x86 ptrace-based programs (strace, gdb, ...)
under PRoot x86_64 again.
+ The loader is now built with the "build-id" linker option explicitly
disabled. This special section might interfere with loaded
programs.
+ The loader can now load relocatable objects that have a predefined
base address.
Acknowledgements
----------------
Thanks to Erwan Gouriou, Sébastien Gandon, Christian milkylainen,
Henrik Wallin, and Frank Teo for their bug reports and tests.
Thanks to Jérôme Audu, Yann Droneaud, and Christophe Monat for their
precious help.
Validation
----------
==================== ================= ============== ================= =========
testsuite host distro guest distro configurations comments
==================== ================= ============== ================= =========
proot-v5.1 Slack-14.1/x86_64 none N/A a
proot-v5.1/memcheck Slack-14.1/x86_64 none N/A a
proot-v5.1/asan Slack-14.1/x86_64 none N/A a
proot-v5.1/talleak Slack-14.1/x86_64 none N/A a
proot-v5.1 OBS */x86_64 none N/A b
proot-v5.1 OBS */x86 none N/A c
proot-v5.1 STLinux-2.4/arm none N/A d
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 l
libuv-0.10.27 Slack-14.1/x86_64 Slack-14.1/x86 none a
libuv-0.10.27 Slack-14.1/x86_64 Slack-14.1/x86 kompat, fake_id0 l
ltp-syscall-20130904 Slack-14.1/x86_64 same as host none f
ltp-syscall-20130904 Slack-14.1/x86_64 same as host kompat, fake_id0 n
ltp-syscall-20130904 Slack-14.1/x86_64 Slack-14.1/x86 none j
ltp-syscall-20130904 Slack-14.1/x86_64 Slack-14.1/x86 kompat, fake_id0 t
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 m
ltp-opt-20130904 Slack-14.1/x86_64 Slack-14.1/x86 none i
ltp-opt-20130904 Slack-14.1/x86_64 Slack-14.1/x86 kompat, fake_id0 u
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 k
perl-5.18.1 Slack-14.1/x86_64 Slack-14.1/x86 none a
perl-5.18.1 Slack-14.1/x86_64 Slack-14.1/x86 kompat, fake_id0 k
gdb-7.6.1 Slack-14.1/x86_64 same as host none r, o
gdb-7.6.1 Slack-14.1/x86_64 same as host kompat, fake_id0 N/A
gdb-7.6.1 Slack-14.1/x86_64 Slack-14.1/x86 none r, p
gdb-7.6.1 Slack-14.1/x86_64 Slack-14.1/x86 kompat, fake_id0 N/A
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 q
coreutils-8.21 Slack-14.1/x86_64 Slack-14.1/x86 none h
coreutils-8.21 Slack-14.1/x86_64 Slack-14.1/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 N/A
proot-v3.2.2 Slack-14.1/x86_64 Slack-14.1/x86 none r, a
proot-v3.2.2 Slack-14.1/x86_64 Slack-14.1/x86 fake_id0 N/A
perl-5.18.1 Slack-14.1/x86_64 Slack-14.1/ARM qemu-2.2.0 w
coreutils-8.21 Slack-14.1/x86_64 Slack-14.1/ARM qemu-2.2.0 v
performance Slack-14.1/x86_64 none none XXX
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: test-ptrace01 fails sometimes on x86_64.
c: fails on some AMD CPUs. No explanations yet.
d: ptrace emulation doesn't work.
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 = brk01, creat07, execve04, mremap03, msync03, pwrite03,
pwrite03_64, rmdir02
g: failures = sigaction_4-40, getoverrun_2-3
h: failures = rm/deep-2, du/long-from-unreadable, install/basic-1,
mkdir/p-3
i: failures = mmap_31-1, timer_getoverrun_2-3
j: failures = bdflush01, creat07, execve04, ftruncate04,
ftruncate04_64, modify_ldt01, mremap03, msync03,
pwrite03, pwrite03_64, rmdir02, socketcall01
k: failures = File-Path/Path, HTTP-Tiny/002_croakage,
HTTP-Tiny/003_agent, Net-Ping/110_icmp_inst,
Net-Ping/500_ping_icmp, Net-Ping/520_icmp_ttl.t
l: failures = signal_multiple_loops, fs_chown
m: failures = fork_1-1, sem_unlink_3-1, timer_getoverrun_2-3
n: failures = 153/1024
o: failures = break-interp, break, checkpoint.exp, foll-exec,
foll-vfork.exp
p: failures = break-interp, call-sc, callfuncs, checkpoint,
find-unmapped, finish, float, foll-exec, foll-vfork,
hbreak2, interrupt
q: failures = chgrp/basic, chgrp/deref, chgrp/recurse,
misc/cut-huge-to-eol-range, misc/csplit-heap,
misc/id-setgid, misc/xattr, du/long-from-unreadable,
ls/file-type, ls/no-cap, ls/stat-free-color,
ls/stat-free-symlinks, mv/atomic, mv/atomic2,
chown/basic, cp/special-bits, cp/preserve-gid,
install/install-C-root, ls/capability, ls/nameless-uid,
misc/chroot-credentials, mv/sticky-to-xpart,
rm/fail-2eperm, rm/no-give-up
r: have to be run in -j1
s: failures = chgrp/basic, chgrp/deref, chgrp/recurse, misc/id-setgid,
misc/xattr, du/long-from-unreadable, ls/file-type,
ls/no-cap, ls/stat-free-color, ls/stat-free-symlinks,
mv/atomic, mv/atomic2, 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: failures = 172/1024
u: failures = fork_1-1, mmap_31-1, sem_unlink_3-1, timer_getoverrun_2-3
v: failures = rm/deep-2, misc/env, misc/printenv, split/fail,
dd/skip-seek, dd/skip-seek-past-file,
du/long-from-unreadable, install/basic, mkdir/p-3
w: failures = HTTP-Tiny/002_croakage, HTTP-Tiny/003_agent, op/magic
Release 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
Release v4.0.3
==============
+ Heap emulation is disabled when a "suspicious" call to brk(2) is
actually legit, as it might be the case when launching the very
first program.
+ The "-0" and "-S" options ("root" identity emulation) now fake
success of mknodat(2), as it was the case for mknod(2) previously.
This missing feature was revealed by the AArch64 port.
+ The "-k" option (kernel compatibility emulation) now works on
Linux/AArch64.
Thanks to Rémi Duraffort for the bug reports and for his LAVA testing
platform!
CARE v2.2 ========= + Special characters in environment variables are now correctly quoted in the generated "re-execute.sh" script. For instance, the value of "COMP_WORDBREAKS" environment variable on Ubuntu used to make CARE generate broken "re-execute.sh" scripts. + It is now possible to deliver CARE as a dynamically linked binary. In this case, the self-extracting format is not supported since one can't assume the re-execution environment contains all the pre-requisites (libtalloc, libarchive, proot). Thus, CARE and PRoot should be deployed independently on the re-execution environment. + Syscall are now emulated only if it is really needed. This release is based on PRoot v4.0.3, so it contains all the following generic fixes too: https://github.com/cedric-vincent/PRoot/releases/tag/v4.0.0 https://github.com/cedric-vincent/PRoot/releases/tag/v4.0.1 https://github.com/cedric-vincent/PRoot/releases/tag/v4.0.2 https://github.com/cedric-vincent/PRoot/releases/tag/v4.0.3
PreviousNext