Chroot, практикаПодписка на Комментарии к "Chroot, практика"

Аватар 555

chroot - операция изменения корневого каталога в Unix-подобных операционных системах.

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

Для работы с chroot потребуются привилегии суперпользователя.

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

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

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

# fdisk -l

Создайте директорию, куда вы хотели бы cмонтировать устройство или раздел:
# 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 (находящийся на ваших дисковых разделах). Затем мы перезагрузим некоторые настройки, как прописано в /etc/profile в память, используя source. Последним шагом, мы изменим вид приглашения, чтобы он напоминал нам, что мы находимся в новой среде.

# chroot /mnt/arch /bin/bash

# source /etc/profile

# export PS1="(chroot) $PS1"

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

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

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

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

Выход из chroot окружения:
Когда вы закончите работу, выйдите из chroot, введя команду:

# exit

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

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

Наконец отмонтируйте ваш раздел жесткого диска:
# cd /
# umount /mnt/arch

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

# umount -f /mnt

После этого вы сможете безопасно отключить систему.

Примечание - статья в заметки.

Аватар пахом

Установить chroot можно через debootstrap.
Купил слабенькую виртуалку у хостера, все устраивало, кроме места на диске. Дешевле оказалось купить дополнительный диск, чем увеличивать тариф. В результате дополнительный диск смонтировал в /home, и установил в него linux :) Так что chroot можно использовать еще и для вот таких вещей :)

Добавить комментарий