GNU/Linux Change root (chroot)

From WikiOD

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.

Syntax[edit | edit source]

  • chroot [destination path] [shell or command]

Manually changing root in a directory[edit | edit source]

Ensure you met all requirements, as per Requirements

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)

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

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

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

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

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

source /etc/profile
source ~/.bashrc

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

export PS1="(chroot) $PS1"

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

exit

Unmount the temporary file systems:

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

Requirements[edit | edit source]

  • 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)

Reasons to use chroot[edit | edit source]

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

Credit:Stack_Overflow_Documentation