必要な Shared Libraries を調べます。
# ldd ./bash libdl.so.2 => /lib/libdl.so.2 (0x4001e000) libc.so.6 => /lib/libc.so.6 (0x40021000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
/dev/ram7 は マウント されているので
# df | sed 2,3d Filesystem 1k-blocks Used Available Use% Mounted on /dev/ram7 3963 13 3950 1% /mnt
bash のコピーをします。
# mkdir /mnt/bin # cp bash /mnt/bin/ # ls /mnt/bin/ bash* # ln -s bash /mnt/bin/sh # ls -l /mnt/bin/ | sed 1d -rwxr-xr-x 1 root root 299440 Aug 23 09:22 bash* lrwxrwxrwx 1 root root 4 Aug 23 09:22 sh -> bash*
ライブラリ も コピーしていきますが strip の man の抜粋
-o file
strip 処理を行った結果を元のファイルと置き換えるの
ではなく、 file に書き出す。この引数が用いられた場
合には objfile に指定できる引数はひとつだけである。
--strip-unneeded
リロケーション処理に不必要なシンボルを全て削除す
る。
# mkdir /mnt/lib # ls -a /mnt/lib/ ./ ../ # strip --strip-unneeded -o /mnt/lib/libdl.so.2 /lib/libdl.so.2 # strip --strip-unneeded -o /mnt/lib/libc.so.6 /lib/libc.so.6 # strip --strip-unneeded -o /mnt/lib/ld-linux.so.2 /lib/ld-linux.so.2 # ls -l /mnt/lib/ | sed 1d -rw-r--r-- 1 root root 82604 Aug 23 09:29 ld-linux.so.2 -rw-r--r-- 1 root root 1163260 Aug 23 09:28 libc.so.6 -rw-r--r-- 1 root root 9092 Aug 23 09:28 libdl.so.2
このままでは かなり大きなものになります。
元々の ファイルは全て実行属性が ついていたのですが これが落ちています。 本来全てに つける必要が有るんではないか と考えられるのですが ”Pocket Linux Guide”では ld-linux.so.2 につけるだけにしています。 今回はそれに合わせておきます。
# chmod +x /mnt/lib/ld-linux.so.2 # ls -l /mnt/lib/ | sed 1d -rwxr-xr-x 1 root root 82604 Aug 23 09:29 ld-linux.so.2* -rw-r--r-- 1 root root 1163260 Aug 23 09:28 libc.so.6 -rw-r--r-- 1 root root 9092 Aug 23 09:28 libdl.so.2
にゃんたろう 拝!
2010年 8月23日 (月) 21:02:10 JST 作成