Изменение корня это процесс изменения видимой на диске корневой директории (и текущего запуска процессов) на другую корневую директорию. Когда вы изменили корневую директорию на другую, вы больше не имеете доступа к файлам и командам за пределами этой директории. Эта директория становится подобна заключению пользователя в клетку.
Изменение корневой директории обычно нужно для таких задач как переустановка 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
После этого вы сможете безопасно отключить систему.