A chroot environment is commonly used for development-related work and is basically an install of build-related software. It is always a good idea to do development work in a chroot environment, as it often requires the installation of development packages (whose main purpose is for building packages). An example is when a certain application requires the headers and development version of a library to build (e.g. libabc-dev). A normal user would not require the development version of libabc. Thus it is better to install such development packages in a chroot, leaving the normal operating environment clean and uncluttered. First, install the required packages:

chroot環境は、開発関係の作業や、それに必要なソフトウェアをインストールするためによく使われます。開発作業ではしばしば(おもにパッケージをビルドする目的のために)開発用のパッケージをインストールする必要があるので、chroot環境内で作業するのは良い考えでしょう。例えば、あるアプリケーションが、ビルドする際にライブラリのヘッダと開発版(libabc-devのような)を要求する場合などです。一般的なユーザは、libabcの開発版を必要とすることはありません。よって、開発用のパッケージはchrootの中にインストールし、いつも使う環境は綺麗に保ち、ちらかさないように心がけた方が良いでしょう。最初に、必要なパッケージをインストールします:

sudo apt-get install dchroot debootstrap
  • attachment:UbuntuPackagingGuideJa/conventions/important.png Make sure to install at least the version of debootstrap that is from the Ubuntu release for which you are trying to create the chroot. You may have to download it from packages.ubuntu.com and manually install it with dpkg -i.

  • attachment:UbuntuPackagingGuideJa/conventions/important.png debootstrapは、作成しようとしているリリースのchroot環境になるよう、最新のバージョンを取得し、インストールするようにしてください。packages.ubuntu.comからパッケージをダウンロードし、dpkg -iを使って手動でインストールすると良いでしょう。

The next steps are to create, configure, and enter the chroot environment.

次に、chroot環境を作成・設定し、chroot環境にログインします。

sudo mkdir /var/chroot
echo "mychroot /var/chroot" | sudo tee -a /etc/dchroot.conf
sudo debootstrap --variant=buildd edgy /var/chroot/ http://archive.ubuntu.com/ubuntu/
  • attachment:UbuntuPackagingGuideJa/conventions/note.png Creating a chroot environment will take some time as debootstrap downloads and configures a minimal Ubuntu installation.

  • attachment:UbuntuPackagingGuideJa/conventions/note.png debootstrapがUbuntuの最小環境をダウンロードし設定を行うために、chroot環境の作成が完了するまでにしばらく時間がかかるかもしれません。

sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf
sudo chroot /var/chroot/ /bin/bash

In order to be able to use apt in the chroot, add Ubuntu sources to the chroot's apt sources. For the moment, ignore any warnings about package authentication:

chroot環境の中でもaptを利用できるように、Ubuntuのソースリストを、chrootのソースリストに追加します。当面は、パッケージの署名に関する警告は無視してください:

echo "deb     http://archive.ubuntu.com/ubuntu edgy main restricted \
        universe multiverse" > /etc/apt/sources.list
echo "deb-src http://archive.ubuntu.com/ubuntu edgy main restricted \
        universe multiverse" >> /etc/apt/sources.list
apt-get update
apt-get install build-essential dh-make automake pbuilder gnupg lintian \
        wget debconf devscripts gnupg sudo

Run the following command to configure locales:

ロケールを設定するために以下のコマンドを実行します:

apt-get update
apt-get install dialog language-pack-en
exit
  • attachment:UbuntuPackagingGuideJa/conventions/note.png If you want support for a language other than English replace en in language-pack-en with the appropriate language code.

  • attachment:UbuntuPackagingGuideJa/conventions/note.png 英語以外の言語サポートが欲しい場合は、language-pack-enenの部分を、適切な言語コードに変えてください。

Next, fix the user and root passwords for the chroot environment. The last line below is to avoid sudo warnings when resolving in the chroot environment:

次に、chroot環境におけるユーザと管理者のパスワードを修正します。最後の行は、chroot環境での名前解決におけるsudoの警告を避けるためのものです:

sudo cp /etc/passwd /var/chroot/etc/
sudo sed 's/\([^:]*\):[^:]*:/\1:*:/' /etc/shadow | sudo tee /var/chroot/etc/shadow
sudo cp /etc/group /var/chroot/etc/
sudo cp /etc/hosts /var/chroot/etc/

To enable sudo, set up your root password and the first sudo user in the admin group (for the chroot environment). In the following commands, substitute "<user>" with the username that will be used in the chroot environment:

sudoを有効にするために、(chroot環境の)管理者とadminグループの最初のsudoユーザのパスワードを設定します。以下のコマンドでは、"<user>"の部分を、chroot環境で利用するユーザ名に置き換えてください。

sudo cp /etc/sudoers /var/chroot/etc/
sudo chroot /var/chroot/
dpkg-reconfigure passwd
passwd <user>
exit

The system fstab needs to be modified so that the chroot environment will have access to the system home directories, temp directory, etc. Note that the actual system home directory is used in the chroot environment.

chroot環境がシステムのホームディレクトリやtempディレクトリなどを利用できるように、システムのfstabを修正する必要があります。これを行うと、chroot環境でも実際のシステムのホームディレクトリを利用することに注意してください。

sudo editor /etc/fstab

Add these lines:

以下の内容を追加します:

/home           /var/chroot/home        none    bind            0       0
/tmp            /var/chroot/tmp         none    bind            0       0 
proc-chroot     /var/chroot/proc        proc    defaults        0       0 
devpts-chroot   /var/chroot/dev/pts     devpts  defaults        0       0 

Mount the new fstab entries

新しいfstabエントリをマウントします

sudo mount -a

The default bash profile includes chroot information in the prompt. To make this visible:

標準のbashプロファイルで、現在のプロンプトにchroot情報を含めるようにします。次のように行います:

sudo chroot /var/chroot/
echo mychroot > /etc/debian_chroot
exit

Now use your chroot (you may omit the -c mychroot if there's only one or you just want the first one in /etc/dchroot.conf). The -d parameter means that your environment will be preserved. This parameter is generally useful if you want chrooted applications to seamlessly use your X server, your session manager, etc.

では、chrootを利用します(もしchroot環境が一つしかなかったり、/etc/dchroot.confで一番最初に書かれている環境を利用したい場合は、-c mychrootを省いても良いでしょう)。-d パラメータはその環境が保護されることを意味します。Xサーバやセッションマネージャで、chroot環境のアプリケーションをシームレスに使いたい場合に便利でしょう。

dchroot -c mychroot -d

UbuntuJapaneseWiki: UbuntuPackagingGuideJa/appendix-chroot (最終更新日時 2012-01-10 11:49:23 更新者 匿名)