Данный способ довольно универсальный и подойдет для других систем, в частности для Ubuntu.
Случилось так, что я совершил довольно распространенную для новичков гентушников ошибку: обновился, пересобрал мир, и, не просмотрев и не обновив конфиги, перезагрузился.
После данной процедуры сервер перестал отвечать на ping. Ситуация осложнялось еще и тем, что сервер, после загрузки фреймбуфера, отображал темный экран. То есть в стандартную консоль зайти было невозможно — нет изображения. Набирать наугад тоже не хотелось, так как это долго, небезопасно, да и просто глупо. Оставался один вариант — загрузочный диск, там видео работало неплохо, даже с фреймбуфером, что до сих пор мне не понятно.
Вкратце алгоритм действий был таков: загружаем Calculate Linux с Live CD, монтируем раздел с корнем / в mnt, монтируем временные каталоги, заходим в chroot, пишем в консоли все что нам нужно, выходим, отмонтируем разделы, перезагружаемся, смотрим на результат. В консоли выглядит так:
Смотрим список разделов:
1 | sfdisk -l |
у меня raid, там каша, но раздел swap указан, остальное можно методом тыка проверить через mount и ls или mc. Потом вспомнил что раздел с корнем — sda2.
Создаем временные каталоги:
1 | mkdir /mnt/proc |
1 | mkdir /mnt/sys |
1 | mkdir /mnt/dev |
Подключаем диск и каталоги:
1 | mount /dev/sda2 /mnt |
1 | mount -t /proc /mnt/proc |
1 | mount -t /sys /mnt/sys |
1 | mount -t /dev /mnt/dev |
Теперь мы заходим в систему через chroot:
1 | chroot /mnt |
В некоторых системах надо заходить под рутом (sudo su chroot /mnt). А в Calculate Live CD сразу дается рут.
После ввода команды появляется приглашение командной строки. Здесь мы можем управлять системой, как обычно. Все изменения коснутся установленной системы, и останутся в ней.
Мне нужно было починить сеть, в моем случае переустановить сетевые настройки и openrc:
1 | cl-install --startup --ip 192.168.1.100 --route default:192.168.1.1 --dns 192.168.1.1 --netconf openrc |
Команда выполнилась успешно в установленной системе, о чем поведал вывод [OK].
Затем необходимо выйти из системы (из chroot):
1 | exit |
И отмонтировать файловую систему из Live CD*:
1 | umount /mnt/proc |
1 | umount /mnt/sys |
1 | umount /mnt/dev |
1 | umount /dev/sda2 |
Далее перезагружаемся (reboot) и смотрим результат )
* При отмонтировании может возникать ошибка: device is buisy.
это лечится так:
1 | fuser -m /mnt/proc |
эта команда выдаст PID процесса, который работает с файловой системой (можно и через lsof), затем его нужно прибить:
1 | kill -SIGTERM PID_процесса |
Либо попытаться отмонтировать в «lazy» режиме.
1 | umount -l /mnt/proc |