chroot sshのときに出てきたので勉強した。んでもってlinuxの共有ライブラリのことも少し学習した。lsとかcdとかのバイナリのコマンドは、それ単体だけで実行できるものだと思ってました。でもそれは大間違いで、色んな共有ライブラリに依存してるようです。
hoge@hoge % ldd /bin/ls linux-gate.so.1 => (0xffffe000) librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7edf000) libacl.so.1 => /lib/libacl.so.1 (0xb7ed6000) libselinux.so.1 => /lib/libselinux.so.1 (0xb7ec3000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d94000) libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7d82000) /lib/ld-linux.so.2 (0xb7efb000) libattr.so.1 => /lib/libattr.so.1 (0xb7d7e000) libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7d7b000) libsepol.so.1 => /lib/libsepol.so.1 (0xb7d42000)
こうするとlsが使ってるライブラリがずらずら出てくる。おー。なのでこの辺のファイル群がないとls出来ないわけですな。
↓詳しくはこの辺参照
UNIXの部屋 検索:ldd
ただ、このページには
もし OS の起動時に何か不具合があってシングルユーザモードで起動したとき、/bin/ls や /bin/mount が/usr/lib/libc.* を必要としたとしたら、/usr がマウントされていないと復旧作業はできなくなってしまう。そのため、/bin、/sbin などのコマンドはランタイムライブラリを必要としないように作られている。