Pos*_*elf 12 linux chroot ubuntu find shared-library
我想创建一个 chroot 环境,它可以访问精心挑选的程序,但与系统的其余部分完全隔离。
我在这个 chroot 文件夹中创建了三个文件夹:bin
, lib
, lib64
. 然后我复制了一个可执行文件,在这种情况下复制/bin/bash
到bin
. ldd /bin/bash
显示此输出:
linux-vdso.so.1 => (0x00007ffff01f6000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f35ed501000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f35ed2fd000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f35ecf33000)
/lib64/ld-linux-x86-64.so.2 (0x00007f35ed72a000)
Run Code Online (Sandbox Code Playgroud)
我可以复制所有这些库,除了linux-vdso.so.1
. 如果我sudo find / -name "linux-vdso.so.1"
没有输出。
我现在该怎么办?
Sim*_*ter 12
VDSO 比较特殊,它由内核直接提供。
你会看到它有地址,即使它没有文件名,所以它映射得很好。您无需执行任何操作即可在 chroot 中获取 VDSO。
内核 VDSO 是内核函数的集合,这些函数并不总是需要模式切换,例如读取精确计时器由rdtsc
支持它的处理器上的汇编指令处理,而在不支持的处理器上由内核系统调用处理。如果这是一个普通的系统调用,现代处理器将不得不处理单个非特权汇编指令的系统调用开销,如果rdtsc
始终内联,程序将不再在旧机器上运行。