Вот некоторые ресурсы:
"Изменение корня" или "chrooting" - это метод для увеличения части вашей файловой системы, так что, например, /path
будет ссылаться на то, что ранее было доступно в /mnt/path
. "Корень" в выражении "chroot" относится к корневой файловой системе /
, а не к пользователю root. (Хотя, как правило, вам понадобятся привилегии пользователя root, чтобы выполнить chroot.)
подготовка
Все шаги в этом руководстве должны быть выполнены от имени пользователя root.
Мы предполагаем, что ваш жесткий диск находится в /dev /sda1, а его тип файла - ext3.
Если вы не знаете расположение и тип файла вашего диска, прочитайте вывод команды fdisk -l
.
Убедитесь, что архитектура системы, в которую вы загрузились (например, это 32-битный LiveCD), и система, в которую вы хотите войти (например, это 32-битная установка на вашем жестком диске), совпадают. Вы можете определить архитектуру, с которой вы загрузились, используя uname -m
.
Убедитесь, что все модули ядра, которые вам нужны, были загружены.
Настройте свою сеть, если вам это нужно (например, для установки обновленных пакетов).
При необходимости инициализируйте раздел подкачки (например, swapon /dev/sda3
).
Выполнение chroot
cd /
mount -t ext3 /dev/sda1 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
Если ваш каталог /boot
находится в другом разделе, чем ваш /
, и вы хотите манипулировать файлами в нем (например, если вы будете работать с GRUB, выполнять обновление ядра и т.д.), Вам также необходимо смонтировать этот раздел. Если он находится в /dev /sda2, а его тип файла - ext2, выполните:
mount -t ext2 /dev/sda2 /mnt/boot
Аналогично для любых других частей вашей файловой системы (/var
, /usr
), которые находятся на отдельных разделах, но к которым вам необходим доступ. Обычно, когда вы используете chroot для исправления чего-либо, вам не нужен доступ к /home, поэтому вам не нужно беспокоиться об этом.
(Также возможно монтировать файловые системы после того, как вы выполните chroot, но это разумнее сделать заранее. Причина в том, что когда вы делаете это после, внешняя среда / ядро не будет знать о смонтированных файловых системах, поэтому, если вы забудете отключить их перед выходом из chroot, система не будет знать, чтобы отключить их при завершении работы, или. Это может повредить эти файловые системы.)
Если вы настроили свою сеть и хотите использовать ее в chrooted системе, скопируйте /etc/resolv.conf
чтобы вы могли разрешать доменные имена:
cp -L /etc/resolv.conf /mnt/etc/resolv.conf
Теперь вы готовы перейти в смонтированную файловую систему:
chroot /mnt /bin/bash
(Если возвращается ошибка chroot: cannot run command '/bin/bash': Exec format error
, это обычно означает, что вы загрузились с одной архитектурой (например, x86_32) и пытаетесь выполнить chroot с другой (например, x86_64). Решение состоит в том, чтобы использовать LiveCD, который имеет ту же архитектуру, что и система, в которую вы хотите войти.)
На этом этапе вы все еще используете ядро, с которым загрузились, но все пути /path
будут ссылаться на то, что раньше было /mnt/path
.
Если вы будете что-то делать с GRUB, вы должны быть уверены, что ваш файл /etc/mtab
обновлен:
grep -v rootfs /proc/mounts > /etc/mtab
На этом этапе также может быть полезно сделать:
source /etc/profile
export PS1="(chroot) $PS1" # add a reminder to your prompt
Делай свою грязную работу
На этом этапе вы можете выполнить любые необходимые действия по устранению неполадок:
- повторно запустите GRUB на MBR вашего диска
- сбросить забытый пароль
- выполнить обновление ядра (или понижение версии)
- восстановить свой initramdisk
- исправьте ваш /etc /fstab
- переустановите пакеты, используя менеджер пакетов
- без разницы
Убираться
Когда вы закончите, убедитесь, что все запущенные программы остановлены. Затем выйдите из chroot:
exit
Теперь размонтируйте все разделы, которые вы установили:
umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}
Наконец попытайтесь размонтировать ваш жесткий диск:
umount /mnt
Если вы получаете сообщение о том, что /mnt (или любой другой раздел) занят, это может означать одно из двух:
Программа была запущена внутри chroot.
Или более часто: точка монтирования все еще существует на этом монтировании. Например, /mnt /usr все еще монтируется при попытке размонтировать /mnt.
В последнем случае сначала просто отключите точку монтирования. Чтобы получить напоминание обо всех текущих точках монтирования, запустите mount
без параметров.
В заключение:
reboot