0

私の本当の質問の代わりに:chroot刑務所を作るための簡単なコマンドラインツールを知っている人はいますか?コマンドを実行し、実行するために必要なすべてのものを特定のディレクトリにコピーするものを考えています。ツールのいくつかの指示を見ましたが、構成ファイルがあり、Xから起動することを期待しているようで、どちらも私の場合は機能しません。


そして本当の質問のために:

chroot jailを作成しようとしていますが、機能しません。これは、コマンドをstraceしたときに得られるものです。

bcs@builder:~/dmd$ sudo strace sudo chroot /home/bcs/dmd/ /usr/bin/make -C src linux.mak 
...
chroot("/home/bcs/dmd/")                = 0
chdir("/")                              = 0
execve("/usr/bin/make", ["/usr/bin/make", "-C", "src", "-f", "linux.mak"], [/* 13 vars */]) = -1 ENOENT (No such file or directory)
write(2, "chroot: ", 8chroot: )                 = 8
write(2, "cannot run command `/usr/bin/mak"..., 34cannot run command `/usr/bin/make') = 34
write(2, ": No such file or directory", 27: No such file or directory) = 27
write(2, "\n", 1
)                       = 1
close(1)                                = 0
close(2)                                = 0
exit_group(127)                         = ?
bcs@builder:~/dmd$ ll /home/bcs/dmd/usr/bin/make
-rwxr-xr-x 1 bcs bcs 166112 Sep 17 00:41 /home/bcs/dmd/usr/bin/make*

あるはずなのにchroot見つからないようです。make私が欠けているアイデアはありますか?

ところで:これは最近のUbuntuボックスにあります。

4

2 に答える 2

3

ローダーや共有ライブラリを作成できない可能性があります。たとえば、私のシステム(64ビットDebian sid)では、次のようにする必要があります。

$ ldd /usr/bin/make
    linux-vdso.so.1 =>  (0x00007fff95fff000)
    librt.so.1 => /lib/librt.so.1 (0x00007fc97d557000)
    libc.so.6 => /lib/libc.so.6 (0x00007fc97d1f6000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x00007fc97cfd9000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fc97d761000)

これらのファイル(またはmakeに相当するもの)をすべてchrootで利用できるようにする必要があります。

于 2010-09-17T00:58:50.887 に答える
1

おそらく少し遅れますが、あなたが求めているのはこのようなスクリプトです。たとえば、次のコマンドでテストできます。

mkchroot subdir /bin/sh /bin/ls
sudo chroot subdir /bin/sh

そして、とを使用した最小限の環境が得られshますls。もちろん、実行可能ファイルを追加して、より完全なものにすることもできますrootfs

それはほとんど動作しますが、私はそれをテストしていてmksquashfs、それは盲目であるようlibgcc_s.so.1です。他のライブラリによって動的にリンクされていないため、スクリプトはそれを認識せず、このエラーが発生します。

libgcc_s.so.1 must be installed for pthread_cancel to work
于 2012-10-23T11:13:15.827 に答える