Change root (chroot)

What is chroot?

Change root (chroot) is an operation that changes the apparent root directory for the current running process and their children. A program that is run in such a modified environment cannot access files and commands outside that environmental directory tree.

chroot Installation Requirements

  • root privileges
  • another working Linux environment,such as Live CD boot or an existing distribution
  • matching environment architectures of chroot source and destination (check current environment architecture with uname -m)
  • kernel modules which you may need in chroot environment must be loaded (for example, with modprobe)

Manually changing root in a directory

1. Ensure you met all requirements, as per Requirements

2. Mount the temporary API filesystems:

cd /location/of/new/root
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/
mount --rbind /run run/     (optionally)

3. If you need to use an internet connection in the chroot environment, copy over the DNS details:

cp /etc/resolv.conf etc/resolv.conf

4. Change root into /location/of/new/root, specifying the shell (/bin/bash in this example):

chroot /location/of/new/root /bin/bash

5. After chrooting it may be necessary to load the local bash configuration:

source /etc/profile
source ~/.bashrc

6. Optionally, create a unique prompt to be able to differentiate your chroot environment:

export PS1="(chroot) $PS1"

7. When finished with the chroot, you can exit it via:

exit

8. Unmount the temporary file systems:

cd /
umount --recursive /location/of/new/root

Reasons to use chroot

Changing root is commonly done for performing system maintenance on systems where booting and/or logging in is no longer possible.

Common examples are:

  • reinstalling the bootloader
  • rebuilding the initramfs image
  • upgrading or downgrading packages
  • resetting a forgotten password
  • building software in a clean root environment

Licenses and Attributions


Speak Your Mind