如何chroot进入busybox环境?

如何chroot进入busybox环境?

我有一个使用 buildroot 构建的文件系统,用于使用旧内核和 uClibc 为设备编译代码。

现在我想chroot进fs。问题是,我没有/bin/bash,只是/bin/busybox
我怎么说要使用 chroot 来busybox ash代替?

我已经尝试创建到 的链接busybox ash,但 chroot 仍然显示failed to run command /bin/bash. no such file or directory.

答案1

chroot /path/to/fs /bin/ash

有关详细信息,请参阅chroot手册页。

答案2

Busybox 不包含 ldd 脚本。相反,你可以像这样运行它。

LD_TRACE_LOADED_OBJECTS=1 /bin/busybox
            libresolv.so.2 => /lib/libresolv.so.2 (0xb6ece000)
            libc.so.6 => /lib/libc.so.6 (0xb6d8c000)
            /lib/ld-linux-armhf.so.3 (0xb6ef2000)

正如您所看到的,在这种情况下,busybox 依赖于几个库。所以我创建了如下所示的目录结构并能够运行 ls 命令。

# pwd
/home/<jail>

# ls -R
.:
bin   lib   sbin

./bin:
busybox  login    ls       sh

./lib:
ld-linux-armhf.so.3  libc.so.6            libresolv.so.2

...
# chroot /home/<jail>/ ls
bin   lib   sbin

答案3

您需要“ldd busybox”并将其链接到的共享库复制到 chroot 中。在库上使用“cp -L src dst”,因为它们通常是模拟链接的。

相关内容