Что надлежащий путь состоит в том, чтобы подготовить chroot для восстановления поврежденной установки Linux?

Этот вопрос касается вопросов, которые часто задают. Процедура часто упоминается или связывается с прилегающим объектом, но не часто ясно и правильно указывается. В цели сконцентрировать полезную информацию в одном месте, этот вопрос стремится обеспечить ясную, корректную ссылку для этой процедуры.


Что надлежащие шаги должны подготовить chroot среду к процедуре восстановления?

В многие ситуации, восстанавливая поврежденную установку Linux лучше всего сделан из установки. Но если система не загрузится, как Вы фиксируете ее из?

Давайте предположим, что Вам удается загрузиться в альтернативную систему. Однажды там, необходимо получить доступ поврежденной установке для фиксации ее. Многие восстановление Практические руководства рекомендует использовать chroot для запущения программ, как будто Вы на самом деле загружаетесь в поврежденную установку.

  • Какова основная процедура?
  • Существуют ли принятые лучшие практики для следования?
  • Какие переменные нужно рассмотреть для адаптации, основная подготовка ступает в конкретную задачу восстановления?

Поскольку это - Общественная Wiki, не стесняйтесь редактировать этот вопрос улучшить ее также.

54
задан 08.04.2017, 13:57

1 ответ

Вот некоторые ресурсы:

"Изменение корня" или "chrooting" является методом для того, чтобы увеличить масштаб части Вашей файловой системы, так, чтобы, например, /path будет относиться к тому, что было раньше доступно в /mnt/path. "Корень" в выражении "chroot" относится к корневой файловой системе /, не пользователю root. (Хотя обычно Вам будут нужны полномочия пользователя root чтобы к chroot.)

Подготовка

  • Все шаги в этом руководстве должны будут быть выполнены как пользователь root.

  • Мы предполагаем, что Ваш жесткий диск в/dev/sda1, и его тип файла является ext3. Если Вы не знаете местоположение и тип файла Вашего диска, считайте вывод fdisk -l.

  • Убедитесь, что архитектура системы, в которую Вы загрузились (например, это - LiveCD на 32 бита), и система, которую Вы хотите ввести (например, это - установка на 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) это находится на отдельных разделах, но к которому Вы нуждаетесь в доступе. Обычно, когда Вы - 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

Сделайте свою грязную работу

На данном этапе можно выполнить любой поиск и устранение неисправностей, необходимо сделать:

  • resintall 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
74
ответ дан 07.12.2019, 08:25

Теги

Похожие вопросы