====== сhroot из установочного носителя ======
В Slackware полно инструментов, способных помочь, когда система отказывается грузиться. Например, когда обновили файл ядра, но забыли выполнить после этого ''lilo''.
Для доступа к системе помимо непосредственной загрузки в нее возможно использовать установочный носитель Slackware, например, первый из CD или DVD. После загрузки с установочного носителя, корневой каталог установочного носителя возможно сменить на примонтированный корневой раздел диска с установленной системой, а затем выполнить команды, изменяющие установленную систему.
===== Подготовка томов =====
Примеры ниже сильно упрощены и предполагают, что система установлена на единственный раздел. Если используется более сложный вариант, тщательно убедитесь, что смонтировали все необходимые разделы.
Простейший пример -- одиночный локальный жёсткий диск без какого-либо шифрования. В этом случае всё, что необходимо сделать,-- определить имя раздела и перейти к монтированию.
Иначе, если используется //LVM/EVMS// или шифрованный том, необходимо подготовить их для монтирования и смены корня.
Для разблокирования раздела LUKS необходимо открыть его ('open') и дать ему имя при помощи команды (здесь sdXN -- пример имени раздела):
cryptsetup luksOpen /dev/sdXN crypted (произвольное имя)
Теперь по запросу нужно ввести парольную фразу для разблокировки тома. Этот раздел будет сопоставлен с '/dev/mapper/crypted'.
Для томов LVM нужно убедиться, что система способна их распознать и активировать. Для этого используем команды:
* ''vgscan %%--%%mknodes'' // : ищет логические тома, может потребовать времени//
* ''vgchange -ay'' // : активирует обнаруженные тома//\\
* Если обнаружено более одной группы, выберите нужную при помощи ''vgchange -ay имяГруппы''
===== Монтирование томов =====
После подготовки можно перейти к монтированию томов. Использование в качестве точки монтирования ''/mnt'' обязательно, если только планируете запускать ''setup''.
Определившись с именем раздела, нужно примонтировать его:
mount /dev/ИмяТома /mnt
Ниже три распространённых примера.
1. Всё установлено на корневой (/) раздел /dev/sda1. LVM или дополнительные драйверы не используются.
mount /dev/sda1 /mnt
2. Два жёстких диска, /dev/sdb1 используется для /home, /dev/sda1 для всего остального в корне (/).
mount /dev/sda1 /mnt
mount /dev/sdb1 /mnt/home
3. В третьем примере используется LVM, группа томов уже подготовлена и известна ядру. Используются логические тома "root, usr, home, opt, var, srv" в группе томов "myvg". Также используется шифрование LUKS, поэтому небольшой раздел для /boot расположен на /dev/sda1.
mount /dev/myvg/root /mnt
mount /dev/myvg/usr /mnt/usr
mount /dev/myvg/home /mnt/home
mount /dev/myvg/opt /mnt/opt
mount /dev/myvg/var /mnt/var
mount /dev/myvg/srv /mnt/srv
mount /dev/sda1 /mnt/boot
Пример возможно упростить при помощи цикла for для всего, кроме /boot (/dev/sda1) и / (/dev/myvg/root):
for dir in usr home opt var srv; do
mount /dev/myvg/$dir /mnt/$dir
done
Далее необходимо подготовить три виртуальных каталога для использования внутри нового корня. Это ''/dev'' -- каталог с файлами, представляющими аппаратные устройства; ''/proc'' -- каталог с виртуальными файлами, представляющими процессы и ''/sys'' -- каталог с различными системными файлами ядра:
mount -o bind /dev /mnt/dev
mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
Тут тоже возможно использовать цикл for:
for dir in dev proc sys; do
mount -o bind /$dir /mnt/$dir
done
===== Смена корня =====
Теперь, когда разделы смонтированы, можно сменить корень (chroot) на ''/mnt'':
chroot /mnt /bin/bash
Если подготавливались тома LVM может потребоваться вновь запустить ''vgscan %%--%%mknodes'' и ''vgchange -ay'', поскольку ранее они изменяли RAM-диск установочного носителя, а не смонтированные разделы.
Полученное приглашение bash от оболочки, запущенной на установленной системе. Теперь можно работать с установленной системой как если бы она была загружена обычным образом. Например, редактирование ''/etc/lilo.conf'' и выполнение ''/sbin/lilo'' воздействуют на установленную систему, а не на систему установочного носителя.
====== Источники ======
* Исходный текст написан [[wiki:user:cmyster | cmyster]].\\
* Информация по LVM и LUKS в основном из файлов README от [[wiki:user:alienbob | Eric]]-а на установочном диске.\\
* Перевод [[wiki:user:bormant|Serg Bormant]]
{{tag>howtos slackware_administration chroot recovery author_cmyster translator_bormant}}