Mac OS X で chroot 環境を作るときのメモ

  1. 配下に chroot 環境を作成するディレクトリを作成する (ここでは仮にそのディレクトリへの絶対パスを $CHROOT_ENV_ROOT とする)
  2. $CHROOT_ENV_ROOT 配下に以下のディレクトリを作る
    • bin
    • usr/bin
    • usr/lib
  3. 以下の必須ライブラリを $CHROOT_ENV_ROOT 配下にコピーする
    • /usr/lib/dyld (→ $CHROOT_ENV_ROOT/usr/lib/dyld)
    • /usr/lib/libSystem.B.dylib (→ $CHROOT_ENV_ROOT/usr/lib/libSystem.B.dylib)
    • /usr/lib/libgcc_s.1.dylib (→ $CHROOT_ENV_ROOT/usr/lib/libgcc_s.1.dylib)
    • /usr/lib/system/libmathCommon.A.dylib (→ $CHROOT_ENV_ROOT/usr/lib/system/libmathCommon.A.dylib)
  4. その他シェルなど chroot 環境で使いたいプログラムもコピーする。そのプログラムが依存するダイナミックライブラリを otool コマンドで調べて、それも合わせて 3. の要領でコピーする。

otool コマンドの使用例

$ otool -L /bin/bash
/bin/bash:
	/usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
	/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)
	/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)

この場合では、必須ライブラリの他に、 libiconv.2.dylib と libncurses.5.4.dylib に依存していることが分かる。