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

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

/etc/init/rc-sysinit.conf

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

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

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

1 ответ

Решение

Ubuntu 16.04 использует systemd вместо init, и, следовательно, концепция runlevels заменяется термином targets, Таким образом, действительно существует соответствие между уровнями запуска на основе init и целями на основе 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     │
   └─────────┴───────────────────┘

Теперь, чтобы просто изменить "уровни запуска" в 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.

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