Это старая версия документа!
Содержание
с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. For the third example the user has used LVM and has already made their volume group known to the kernel. The user is using the logical volumes «root, usr, home, opt, var, srv» all under one volume group labeled «myvg». In addition, this user has used LUKS encryption and therefore has placed a small /boot under /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
vgscan --mknodes
и vgchange -ay
, поскольку ранее они изменяли RAM-диск установочного носителя, а не смонтированные разделы.
Полученное приглашение bash от оболочки, запущенной на установленной системе. Теперь можно работать с установленной системой как если бы она была загружена обычным образом. Например, редактирование /etc/lilo.conf
и выполнение /sbin/lilo
воздействуют на установленную систему, а не на систему установочного носителя.
Источники
* Исходный текст написан cmyster.
* Информация по LVM и LUKS в основном из файлов README от Eric-а на установочном диске.
* Перевод Serg Bormant