2007-02/04 Sun

_ chroot 環境作り (準備編)

bash-3.2 をインストールテストするために、chroot環境を作る。

下準備から。 まず、bash本体がリンクしているファイルのパッケージを探す。

$ ldd /bin/bash
linux-gate.so.1 =>  (0x3ffff000)
libtermcap.so.2 => /lib/libtermcap.so.2 (0x40020000)
libdl.so.2 => /lib/libdl.so.2 (0x40024000)
libc.so.6 => /lib/libc.so.6 (0x40028000)
/lib/ld-linux.so.2 (0x40000000)

それぞれのパッケージ調べる。

$ rpm -qf /lib/libtermcap.so.2
libtermcap-2.0.8-43m
$ rpm -qf /lib/libc.so.6
glibc-2.5.90-1m
(この結果はtrunkのもの)

それぞれの依存パッケージを調べる。

$ rpm -q --requires libtermcap
/sbin/ldconfig
/sbin/ldconfig
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.4)
libtermcap.so.2
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
termcap
$ rpm -q --requires glibc
rpmlib(VersionedDependencies) <= 3.0.3-1
glibc-common = 2.5.90-1m
basesystem
libgcc
/usr/sbin/glibc_post_upgrade.i686
/sbin/ldconfig
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
$ rpm -q --requires bash
/bin/bash
/bin/sh
/bin/sh
/bin/sh
config(bash) = 3.1-1m
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.2)
libc.so.6(GLIBC_2.3)
libc.so.6(GLIBC_2.3.4)
libc.so.6(GLIBC_2.4)
libdl.so.2
libdl.so.2(GLIBC_2.0)
libdl.so.2(GLIBC_2.1)
libtermcap
libtermcap.so.2
mktemp
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)

bash, glibc, termcap, mktemp (, rpm) こんなもんかな?

mkdir /tmp/bash
rpm --root=tmp/bash -ivh bash* libtermcap* glibc* coreutils*
chroot /tmp/bash /bin/bash

これでどうや?

念の為screenの中で実行する。(ダメならkillできるように)

Tags: Mo

_ chroot 環境作り (結果編)

で、やってみた結果、かなり見積りが甘かった。

  1. まず sudo rpm --root=/tmp/bash -ivh ほげほげ と sudo での実行が必要
  2. sudo chroot /tmp/bash /bin/bash と chrootの実行も sudo が必要
  3. 依存パッケージがさらに多いので、そのパッケージも追加インストールする必要がある。

結局インストールする必要があったパッケージは以下。

  • bashsystem (noarch)
  • setup (noarch)
  • filesystem (noarch)
  • glibc
  • tzdata (noarch)
  • libgcc
  • mktemp
  • libtermcap
  • bash

ちなみに、容量は上記のセットで155MB程度。

あと chroot 後は何もほとんどできない。

できるのは pwd と cd と echo * くらい。

もちろん、bash の補完でTAB key 押せば使えるコマンドは出てくるけどね。

coreutilsは依存が深いから面倒で入れなかった。

Tags: Mo

«前の日記(2007-01/31 Wed) 最新 次の日記(2007-03/01 Thu)»