Этот вопрос касается вопросов, которые часто задают. Процедура часто упоминается или связывается с прилегающим объектом, но не часто ясно и правильно указывается. В цели сконцентрировать полезную информацию в одном месте, этот вопрос стремится обеспечить ясную, корректную ссылку для этой процедуры.
Что надлежащие шаги должны подготовить chroot среду к процедуре восстановления?
В многие ситуации, восстанавливая поврежденную установку Linux лучше всего сделан из установки. Но если система не загрузится, как Вы фиксируете ее из?
Давайте предположим, что Вам удается загрузиться в альтернативную систему. Однажды там, необходимо получить доступ поврежденной установке для фиксации ее. Многие восстановление Практические руководства рекомендует использовать chroot для запущения программ, как будто Вы на самом деле загружаетесь в поврежденную установку.
Поскольку это - Общественная Wiki, не стесняйтесь редактировать этот вопрос улучшить ее также.
Вот некоторые ресурсы:
"Изменение корня" или "chrooting" является методом для того, чтобы увеличить масштаб части Вашей файловой системы, так, чтобы, например, /path
будет относиться к тому, что было раньше доступно в /mnt/path
. "Корень" в выражении "chroot" относится к корневой файловой системе /
, не пользователю root. (Хотя обычно Вам будут нужны полномочия пользователя root чтобы к chroot.)
Все шаги в этом руководстве должны будут быть выполнены как пользователь root.
Мы предполагаем, что Ваш жесткий диск в/dev/sda1, и его тип файла является ext3. Если Вы не знаете местоположение и тип файла Вашего диска, считайте вывод fdisk -l
.
Убедитесь, что архитектура системы, в которую Вы загрузились (например, это - LiveCD на 32 бита), и система, которую Вы хотите ввести (например, это - установка на 32 бита на Вашем жестком диске), соответствие. Можно определить архитектуру, которую Вы загрузили с использованием uname -m
.
Убедитесь любые модули ядра, в которых Вы нуждаетесь, были загружены.
Настройте свою сеть при необходимости в ней (например, для установки обновленных пакетов).
Инициализируйте свой раздел подкачки при необходимости (например, swapon /dev/sda3
).
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
) это находится на отдельных разделах, но к которому Вы нуждаетесь в доступе. Обычно, когда Вы - chrooting для фиксации чего-то, что Вам не будет нужен доступ к / домой, таким образом, Вы не должны будете беспокоиться им.
(Также возможно смонтировать файловые системы после того, как у Вас есть chrooted, но более умно сделать так заранее. Причина состоит в том, что, когда Вы делаете это после, среда внешней стороны/ядра не будет знать о смонтированных файловых системах, поэтому если Вы забудете к umount их прежде, чем выйти из chroot, то система не будет знать к umount их, когда это закроется, также. Это могло повредить те файловые системы.)
Если Вы имеете, устанавливают Вашу сеть и хотят использовать его в 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, который имеет ту же архитектуру как система, в которую Вы хотите к 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
На данном этапе можно выполнить любой поиск и устранение неисправностей, необходимо сделать:
Когда Вы закончены, удостоверяетесь, что все запускающие программы остановились. Затем выйдите из 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