Chroot/zh-cn

Chroot (Change Root) 是一个Unix系统应用，用来改变根目录来创建一个与主系统隔离的新环境. 这个新环境就是著名的“Chroot监狱(chroot jail)”. 用户在这个“监狱”中进行的操作，不能访问和读写此环境之外的数据文件.

One of the main uses for chrooting is to create a separate Linux system on top of a the current one for the purpose of testing or software compatibility. It is often seen as a lightweight alternative to virtualization because it is able to run without the overhead of a hypervisor.

Setting up the environment
The first thing that you need to do when you create a new installation is create a directory for your chroot to reside, for example in :

If you want to mount an existing installation from a partition, you can do:

Replace DEVICE by the partition with your existing installation.

If you already have an installation in a sub directory of the root you are currently in, you don't need to do the above steps.

Unpacking system files & portage tree for a new installation
If you're building a new install, the next step is to download the stage3 and portage tarballs and set them up in the chroot location. For more information on this process please see sections 5a and 5b in the Gentoo Handbook.

Configuration
Before entering the chroot we need to mount a number of directories.

And will also need to copy over some basic configuration file from the host, do not copy over if you're using an existing installation.

Once done we can then enter the chroot environment.

When creating a new installation, you can sync portage to make sure everything is up to date.

The system is now ready. You can install software, mess with settings, test experimental packages and configurations without having any effect on your main system. To leave the chroot simply type "exit" or press +, this will return you back to your normal environment. Don't forget to umount directories you've mounted.

Init scripts
If you need to do this often, you can speed up the mounting of the directories needed for a chroot by using an init script:

If you use a different directory or partition, add the necessary mounting commands in start and change if you use a different name.