= A micro FreeBSD environment in the jailed Debian GNU/kFreeBSD = 最近、何人かでjail上でDebian GNU/kFreeBSDを動かす実験をしているが、プリミティブな環境でpingすら入っておらずにトラブルシューティングができなかった。インストールしようにもネットワークまわりのトラブルなのでaptからインストールできずに面倒くさい。 そうだ。FreeBSD環境を作ってしまえばいいじゃない。FreeBSD環境からpingコマンドと必要なファイルを一式jail内にコピーする。 {{{ [ytoku@core /jail/js]$ ldd /sbin/ping /sbin/ping: libm.so.5 => /lib/libm.so.5 (0x80064c000) libipsec.so.4 => /lib/libipsec.so.4 (0x80076c000) libc.so.7 => /lib/libc.so.7 (0x800873000) [ytoku@core /jail/js]$ sudo mkdir root/bsd [ytoku@core /jail/js]$ sudo cp /lib/libm.so.5 root/bsd [ytoku@core /jail/js]$ sudo cp /lib/libipsec.so.4 root/bsd [ytoku@core /jail/js]$ sudo cp /lib/libc.so.7 root/bsd }}} 早速jail内で実行してみる。 {{{ root@js:~/bsd# ./ping ELF interpreter /libexec/ld-elf.so.1 not found }}} おおっと、実行時リンカがない。 {{{ [ytoku@core /jail/js]$ sudo cp /libexec/ld-elf.so.1 root/bsd }}} 絶対パスで読み込んでいるのでchroot環境で動かすことにする。 {{{ root@js:~/bsd# mkdir libexec root@js:~/bsd# mv ld-elf.so.1 libexec/ root@js:~/bsd# mkdir lib root@js:~/bsd# mv lib*so* lib root@js:~/bsd# chroot . /ping usage: ping [-AaDdfnoQqRrv] [-c count] [-G sweepmaxsize] [-g sweepminsize] [-h sweepincrsize] [-i wait] [-l preload] [-M mask | time] [-m ttl] [-P policy] [-p pattern] [-S src_addr] [-s packetsize] [-t timeout] [-W waittime] [-z tos] host ping [-AaDdfLnoQqRrv] [-c count] [-I iface] [-i wait] [-l preload] [-M mask | time] [-m ttl] [-P policy] [-p pattern] [-S src_addr] [-s packetsize] [-T ttl] [-t timeout] [-W waittime] [-z tos] mcast-group }}} やったぁ {{{ root@js:~/bsd# chroot . /ping proxy-east.uec.ac.jp ping: cannot resolve proxy-east.uec.ac.jp: Host name lookup failure }}} おおっと、名前が引けない。 {{{ root@js:~/bsd# cat > etc/resolv.conf nameserver 192.168.0.254 root@js:~/bsd# chroot . /ping proxy-east.uec.ac.jp PING proxy-east.uec.ac.jp (130.153.26.5): 56 data bytes }}} わぁい