7.2. Смена уровня выполнения после загрузки
Проблема
Где-то в процессе установки системы Linux вы выбрали «загрузку в текстовом режиме» или «загрузку в графическом режиме». Возможно, вы не до конца понимали, что означают эти режимы — а может, понимали, но теперь вам нужен графический интерфейс вместо скучной текстовой консоли. А может, у вас возникли проблемы с графическим интерфейсом, и теперь вы хотите перейти на уровень с минимальным набором служб для диагностики.
Решение
Используйте init. Сначала проверьте текущий уровень выполнения:
# /sbin/runlevel
N 5
«N» означает, что уровень после загрузки не изменялся. Если бы это произошло, то в выходных данных отображался бы исходный уровень. Для смены уровня выполнения необходимо обладать правами root:
# /sbin/init 3
Команда останавливает все службы уровня 5 и запускает службы уровня 3. Происходящее напоминает «частичную перезагрузку». Все пользователи принудительно выводятся из системы.
При решении особо серьёзных проблем иногда требуется переключиться на уровень 1:
# /sbin/init 1
Команда останавливает X и переводит вас в командный процессор с правами root, с ограниченным набором служб и без X. В Red Hat после спуска на уровень 1 не нужно вводить пароль root, поэтому не предоставляйте доступ к init sudo-пользователям.
Комментарий
В Red Hat, Fedora, Mandrake и Slackware смена уровня выполнения является одним из способов закрытия сеанса X, так как на уровне 3 загружается текстовая консоль. Тем не менее это весьма радикальный способ, поскольку он останавливает и перезапускает все службы и выводит из системы всех текущих пользователей.
Зачем изменять уровень выполнения при помощи init? Возможны разные причины:
- переход на уровень 1 для диагностики и восстановления;
- остановка и перезапуск системы в ситуации, когда обычные способы не работают;
- перезапуск всех служб или переход на другой набор служб.
«Неправильные» причины:
- переход от сеанса текстовой консоли к сеансу X, так как запускать X с правами root не рекомендуется;
- завершение сеанса X.
Для перехода между сеансами X и консольными сеансами существуют другие, более безопасные способы, которые будут рассмотрены в разделе 7.4.
Также можно воспользоваться командой telinit, которая является жёсткой ссылкой на init:
$ ls -al /sbin/telinit
lrwxrwxrwx 1 root root 4 Oct 31 07:51 /sbin/telinit -> init
См. также
init(8); раздел 7.4.