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

27

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

/etc/init/rc-sysinit.conf

Ici, j'ai essayé de changer le "DEFAULT_RUNLEVEL" en 3 ou toute 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 quand 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ère ne pas le contourner via grub ou 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 anciennes, est-ce que quelque chose a changé avec 16.04?

rongé
la source
Voulez-vous le changer manuellement après le démarrage ou démarrer automatiquement à un niveau d'exécution différent à chaque fois?
Byte Commander
automatique à chaque fois. Il a été configuré avec ubuntu desktop, mais maintenant je veux baisser le niveau d'exécution et le mettre dans un coin quelque part.
gnomé le
En fait, pourquoi voulez-vous changer le niveau d'exécution? Voulez-vous uniquement démarrer sur une interface de terminal au lieu de charger le bureau? Dans ce cas, vous devez à la place modifier les chargements standard de systemd cible au démarrage et ajouter l'option de noyau "text".
Byte Commander
4
Probablement parce que depuis la version 15.10, Ubuntu utilise à la systemdplace de upstartet ce fichier dont vous parlez est destiné upstart. Si vous lisez des articles encore plus anciens, vous trouverez également des moyens pour les anciens init. Mais avec systemd, vous pouvez simplement basculer entre l'interface graphique et le mode texte en utilisant sudo systemctl start graphical.targetet sudo systemctl start multi-user.target.
Byte Commander
5
À tous les examinateurs C'est une question valide! Il EST un moyen de changer le niveau d' exécution (ou non il est appelé « » ou « les niveaux d' exécution cibles ») en utilisantsystemctl isolate
Ron

Réponses:

50

Ubuntu 16.04 utilise systemd au lieu de init et donc le concept de runlevelsest 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 simplement changer les "niveaux d'exécution" en 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

Jetez également un œil à man systemd.special en savoir plus sur les cibles dans systemd.

Ron
la source
HI @Ron votre réponse est excellente Je l'ai fait pour installer le pilote officiel Nvidia mais maintenant mon écran n'affiche plus qu'un écran bleu. Comment puis-je réparer cela ? Merci d'avance pour votre aide.
Raphael Teubner
Entrez en mode de récupération à partir de Grub, puis en tant que root, revenez au niveau d'exécution précédent.
LottaLava
Ouais. J'allais juste commenter sur la façon dont les gars donnant ces commandes extrêmement agréables de passer du démarrage gui au mode texte ne se soucient pas du tout de nous dire comment revenir du démarrage du texte au démarrage gui.
nyxee
Donc, juste pour noter, je cours sudo systemctl set-default multi-user.targeten mode GUI, au redémarrage, j'ai eu un écran vide, ce qui était un bon signe que l'interface graphique n'avait pas réussi à démarrer, j'ai donc appuyé sur Ctrl-Alt-F3pour entrer dans Runlevel 3, j'ai fait ce dont j'avais besoin (installé NVIDIA- CUDA), exécutez sudo systemctl set-default graphical.targetet revenez à l'écran de connexion de l'interface graphique. Mais, je n'ai pas réussi à me connecter. Est-ce la bonne façon de revenir au niveau d'exécution précédent ?
nyxee
2
@nyxee - Oui, sudo systemctl set-default graphical.targetc'est la bonne façon de revenir à l'environnement de bureau GUI. Votre échec de connexion ne semble pas lié à la commutation entre les niveaux d'exécution - cela ressemble plus au problème de la boucle de démarrage nVidia . Pour le savoir, revenez au niveau d'exécution 3, supprimez les pilotes nVidia et Cuda, installez un pilote nVidia à partir du référentiel, définissez par défaut le niveau d'exécution 5 (graphical.target), puis redémarrez et voyez si vous pouvez vous connecter.
Andy Turfer