我正在linux中创建chroot监狱,但是我不能访问任何系统文件,比如ls/cd/gcc/g++。我需要把什么必需的libs/bin/systme文件复制到我的chroot监狱?
发布于 2013-08-12 04:19:13
像ls/cd/gcc/g++这样的可执行文件依赖于共享库(除非不是静态构建它们)。因此,您需要做的是将所有这些共享库依赖项复制到适当的位置到chroot监狱中,还需要找到那些共享依赖项是什么。要知道你需要"ldd“的帮助。
要查看gcc的共享依赖项,请执行以下操作:
ldd /usr/bin/gcc在我的系统中,它显示了以下输出:
linux-vdso.so.1 => (0x00007fffd9bff000)
libc.so.6 => /lib64/libc.so.6 (0x00000030c9c00000)
/lib64/ld-linux-x86-64.so.2 (0x00000030c9800000)因此,gcc有着标准c库libc.so的依赖性,它还需要ld (可执行加载程序),将这些共享库与gcc一起放到适当的地方(即/lib64下的libc )到您的chroot监狱中。所以gcc可以在打电话给gcc的时候装载必要的东西。
发布于 2013-08-12 04:27:58
要创建一个基本的基于debian的根文件系统(不一定在基于debian的主机系统上),可以使用debootstrap或multistrap工具。我认为也有一个基于fedora的根文件系统的febootstrap等价。
在debootstrap中,您将完全控制应该安装哪些包,而不是基本必需的包,它们是带有“优先级:必需”和“优先级:重要”标记的包。在初始额外包的情况下,您负责包依赖关系。
multistrap是一个较新的工具,它使用apt,可以利用多个存储库,因此可以处理依赖问题。
您还可以进行交叉引导,这是为另一个体系结构创建根fs。这在创建嵌入式或虚拟化系统时非常有用。
示例debootstrap命令:
debootstrap wheezy rootfs/ http://ftp.us.debian.org/debian然后你可以在里面着色,做任何需要做的事情。
到目前为止,这是创建色度的最简单方法。
https://stackoverflow.com/questions/18179268
复制相似问题