Как изменить уровень запуска в 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.