Вот некоторые ресурсы:
- ArchLinux вики на "Смена рута"
- ArchLinux Wiki о переустановке GRUB
- Gentoo Wiki на тему "Chroot из livecd"
«Изменение корня» или «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, и система не будет знать о том, как размонтировать их при завершении работы. Это может повредить эти файловые системы.)
Если вы настроили свою сеть и хотите использовать ее в изолированной системе, скопируйте ее, /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) и пытаетесь выполнить переход на другую (например, x86_64). Решение состоит в том, чтобы использовать LiveCD, который имеет ту же архитектуру, что и система, которую вы хотите Chroot в.)
На этом этапе вы все еще используете ядро, с которым загрузились, но все пути /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/
Наконец попытайтесь размонтировать ваш жесткий диск:
umount /mnt
Если вы получаете сообщение о том, что / mnt (или любой другой раздел) занят, это может означать одно из двух:
Программа была запущена внутри chroot.
Или более часто: точка монтирования все еще существует на этом монтировании. Например, / mnt / usr все еще монтируется при попытке размонтировать / mnt.
В последнем случае сначала просто отключите точку монтирования. Чтобы получить напоминание обо всех текущих точках монтирования, запустите mount
без параметров.
В заключение:
reboot