Как изменить уровень запуска в systemd?

Довольно просто, я пытаюсь изменить уровень запуска. Все, что я нахожу в Интернете, указывает на файл, расположенный в:

/etc/init/rc-sysinit.conf

Здесь я попытался изменить «DEFAULT_RUNLEVEL» на 3 или что-то еще, и это не имеет значения (исходное значение было 2, которое не было много смысла тоже). Несмотря ни на что, моя машина загружается полностью, и когда я проверяю команду уровня запуска, я каждый раз вижу «N 5» как результат.

Как мне изменить уровень выполнения? Я бы предпочел не отменять это через grub или какой-либо другой механизм обхода. И я не ищу, как конкретно отключить X.

Все инструкции, которые я нашел в Интернете, были немного устаревшими, что-то изменилось с 16.04?

27
задан 6 July 2018 в 14:34

1 ответ

Ubuntu 16.04 использует systemd вместо init, и следовательно понятие runlevels заменяется термином targets. Таким образом, существует действительно отображение между находящимся в init runlevels и находящимися в systemd целями:

   Mapping between runlevels and systemd targets
   ┌─────────┬───────────────────┐
   │Runlevel │ Target            │
   ├─────────┼───────────────────┤
   │0        │ poweroff.target   │
   ├─────────┼───────────────────┤
   │1        │ rescue.target     │
   ├─────────┼───────────────────┤
   │2, 3, 4  │ multi-user.target │
   ├─────────┼───────────────────┤
   │5        │ graphical.target  │
   ├─────────┼───────────────────┤
   │6        │ reboot.target     │
   └─────────┴───────────────────┘

Теперь, чтобы просто изменить "runlevels" в 16,04 можно использовать для, например:

sudo systemctl isolate multi-user.target

Для создания этого значением по умолчанию "runlevel" можно использовать:

sudo systemctl enable multi-user.target
sudo systemctl set-default multi-user.target

От man systemctl

   isolate NAME
       Start the unit specified on the command line and its dependencies and stop all others. If
       a unit name with no extension is given, an extension of ".target" will be assumed.

       This is similar to changing the runlevel in a traditional init system. The isolate command
       will immediately stop processes that are not enabled in the new unit, possibly including
       the graphical environment or terminal you are currently using

Также взглянули на man systemd.special для знания больше о целях в systemd.

48
ответ дан 6 July 2018 в 14:34

Другие вопросы по тегам:

Похожие вопросы: