debian GNU Linux chroot Memo

出典: 有限会社クラフト 技術情報

目次

chrootとは

  • chrootは、任意のディレクトリに、もうひとつのシステム環境を構築すること。
  • アプリケーション専用のシステム環境や、試験環境を用意したい場合に使用する。
  • chroot配下では、ファイルは共有しないが、プロセスやネットワークは共有するので注意すること。以下一例。
    • 権限があれば(例えばroot)、他のchroot配下のプロセスがkillできるので注意する必要がある。
    • ネットワークアプリケーション(例えばapache)で、待ち受けポート番号(apacheだとデフォルト80)が、他のchroot配下のアプリケーションと衝突する場合があるので、ポート番号の変更が必要な場合がある。

設定手順

sudoについて

sudoの設定を行っていない場合は、"su -"でスーパーユーザー(root)になっておけば、以下で出てくる"sudo"は入力は必要はない。(事後でも構わないのでsudoの設定をされることを強く勧める)

cdebootstrapインストール

cdebootstrapインストールする

sudo apt-get install cdebootstrap

chroot別の専用ユーザー作成

必要に応じてchroot別に専用ユーザーを作成する

sudo addusr 追加ユーザ名
sudo password 追加ユーザ名

chroot用ディレクトリ準備

chroot環境を作成するディレクトリを作成する

sudo mkdir -p chroot用ディレクトリ
sudo chown chrootユーザ名:chrootグループ chroot用ディレクトリ

debootstrapで初期化する

debootstrapで初期設定する(10分ぐらい必要で、最初の数分は何も表示されないので注意。待つこと。) 今回はターゲットを"sarge"とした。woody/sid等も指定できる。指定可能なターゲット一覧は、/usr/share/cdebootstrapにある。

sudo cdebootstrap sarge chroot用ディレクトリ

初期設定

親から子へ必要なファイルのコピー

cp /etc/resolv.conf       chroot用ディレクトリ/etc/
cp /etc/hosts             chroot用ディレクトリ/etc/hosts
cp /etc/apt/sources.list  chroot用ディレクトリ/etc/apt/sources.list

chroot配下で初期設定作業実施

chroot chroot用ディレクトリ /bin/sh  <== chroot配下に入る
mount -t proc none /proc
su -
export TERM=vt100
apt-setup                     <== apt-line の設定
apt-get update
apt-get upgrade
shadowconfig on               <== shadow パスワードを有効に
passwd                        <== root パスワードをつけておく
tzsetup                       <== タイムゾーンの設定
apt-get install locales <== ロカール関連の調整をする
                        <== (再度実行する場合はdpkg-reconfigure locales)
dpkg-reconfigure exim4-config <== メールサーバの再設定
umount /proc                  <== ログアウト準備
exit                          <== ログアウト

使用例

親環境からchroot内の/bin/echoを実行する

root=chroot用ディレクトリ
chroot $root mount -t devfs devfs /dev
chroot $root /bin/echo hello
adsense
位置情報とアクセス解析
なかのひと