web-dev-qa-db-fra.com

Comment changer le niveau d'exécution sur systemd?

Assez simple, j'essaie de changer le niveau d'exécution. Tout ce que je trouve en ligne me dirige vers le fichier situé dans:

/etc/init/rc-sysinit.conf

Ici, j'ai essayé de changer "DEFAULT_RUNLEVEL" en 3 ou autre chose et cela ne fait aucune différence (la valeur d'origine était 2, ce qui n'avait pas beaucoup de sens non plus). Quoi qu'il en soit, ma machine démarre complètement et lorsque je vérifie la commande runlevel, je vois "N 5" comme résultat à chaque fois.

Comment changer le niveau d'exécution? Je préférerais ne pas le remplacer par grub ou par un autre mécanisme de contournement. Et je ne cherche pas comment désactiver X spécifiquement.

Toutes les instructions que je trouvais en ligne étaient un peu vieilles. Quelque chose a changé avec 16.04?

25
gnomed

Ubuntu 16.04 utilise systemd à la place d'init et le concept de runlevels est donc remplacé par le terme targets. Il existe donc bien un mappage entre les niveaux d'exécution basés sur init et les cibles basées sur 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     │
   └─────────┴───────────────────┘

Maintenant, pour changer les "niveaux d'exécution" dans 16.04, vous pouvez utiliser par exemple:

Sudo systemctl isolate multi-user.target

Pour en faire le "niveau d'exécution" par défaut, vous pouvez utiliser:

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

De 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

Consultez également man systemd.special pour en savoir plus sur les cibles dans systemd.

48
Ron