Содержание
с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
vgscan --mknodes
и vgchange -ay
, поскольку ранее они изменяли RAM-диск установочного носителя, а не смонтированные разделы.
Полученное приглашение bash от оболочки, запущенной на установленной системе. Теперь можно работать с установленной системой как если бы она была загружена обычным образом. Например, редактирование /etc/lilo.conf
и выполнение /sbin/lilo
воздействуют на установленную систему, а не на систему установочного носителя.
Источники
* Исходный текст написан cmyster.
* Информация по LVM и LUKS в основном из файлов README от Eric-а на установочном диске.
* Перевод Serg Bormant