Изменение корня это процесс изменения видимой на диске корневой директории (и текущего запуска процессов) на другую корневую директорию. Когда вы изменили корневую директорию на другую, вы больше не имеете доступа к файлам и командам за пределами этой директории. Эта директория становится подобна заключению пользователя в клетку. Изменение корневой директории обычно нужно для таких задач как переустановка GRUB или сброс забытого пароля и чаще осуществляется при помощи LiveCD или LiveUSB в монтируемый раздел, содержащий установленную систему.

Вы должны загрузиться с любой работающей среды Linux (например, с LiveCD или USB flash disk). Для работы с chroot потребуются привилегии суперпользователя.

Убедитесь, что архитектура среды Linux, с которой вы загрузились соответствует архитектуре системы, с которой вы будете работать (т.e. i686, x86_64). Вы можете просмотреть архитектуру среды командой: uname -m

Монтирование каталогов

Чтобы просмотреть все имеющиеся дисковые разделы и их типы введите:

# fdisk -l

Создайте директорию, куда вы хотели бы подмонтировать устройство или раздел:

# mkdir /mnt/arch
# mount /dev/sda3 /mnt/arch

Изменение корневой директории

Подмонтируйте временные файловые системы:

# mount -t proc none /mnt/arch/proc
# mount -t sysfs sys /mnt/arch/sys
# mount -o bind /dev /mnt/arch/dev

Монтируйте другие разделы, если нуждаетесь в них (такие как /boot, /var, /usr). Например:

# mount /dev/sda1 /mnt/arch/boot

После выхода из изолированной среды, вы сможете отмонтировать все разделы одной командой. Это позволит безопасно отключить систему.

Если при нахождении в среде chroot вам нужна будет работа в сети, скопируйте информацию о DNS в новый корневой каталог:

# cp -L /etc/resolv.conf etc/resolv.conf

Переходим в новую среду:

# chroot /mnt/arch /bin/bash

Если вы увидите ошибку "chroot: cannot run command '/bin/bash': Exec format error" это может означать, что архитектуры не совпадают.

При работе с GRUB в изолированной среде нужно быть уверенным, что каталог /etc/mtab содержит актуальную информацию:

# grep -v rootfs /proc/mounts > /etc/mtab

Следующие шаги:

# source /etc/profile
# export PS1="(chroot) $PS1"

Обслуживание системы:

  • Вот то, что вы можете сделать в изолированной среде:
    • Обновить или откатить пакеты
    • Пересобрать образ initcpio
    • Сбросить забытый пароль
    • Исправить /etc/fstab
    • Переустановить GRUB

Выход из chroot окружения:

Когда вы закончите работу, выйдите из chroot, введя команду exit.

Теперь отмонтируйте устройства и каталоги, которые вам больше не нужны:

# umount {proc,sys,dev,boot...}

Наконец отмонтируйте ваш жёсткий диск:

# cd /
# umount /mnt/arch

Если вы видите ошибку подобную этой: "/mnt (или другой каталог) is busy", вы можете узнать причину (используя lsof) или принудительно отмонтировать каталог:

# umount -f /mnt

После этого вы сможете безопасно отключить систему. ⤧  Следующая запись Переносим linux на внешний HDD