Como altero o nível de execução no systemd?

27

Muito simples, estou tentando alterar o nível de execução. Tudo o que encontro on-line aponta para o arquivo localizado em:

/etc/init/rc-sysinit.conf

Aqui, tentei alterar o "DEFAULT_RUNLEVEL" para 3 ou qualquer outra coisa e não faz diferença (o valor original era 2, o que também não fazia muito sentido). Não importa o que aconteça, minha máquina é inicializada totalmente e, quando verifico o comando runlevel, vejo "N 5" como resultado todas as vezes.

Como altero o nível de execução? Prefiro não substituí-lo através do grub ou de algum outro mecanismo de solução alternativa. E não estou procurando como desativar o X especificamente.

Todas as instruções que encontrei on-line eram um pouco antigas, algo mudou com o 16.04?

gnomed
fonte
Deseja alterá-lo manualmente após a inicialização ou inicializar automaticamente em um nível de execução diferente a cada vez?
Byte Commander
automático sempre. Foi configurado com a área de trabalho do ubuntu, mas agora eu quero diminuir o nível de execução e colocá-lo em um canto em algum lugar.
usar o seguinte comando
Na verdade, por que você deseja alterar o nível de execução? Deseja inicializar apenas em uma interface de terminal em vez de carregar a área de trabalho? Nesse caso, você deve modificar as cargas padrão do systemd de destino na inicialização e adicionar a opção do kernel "text".
Byte Commander
4
Provavelmente porque desde 15.10, o Ubuntu usa systemdem vez de upstarte esse arquivo que você está falando é para upstart. Se você ler artigos ainda mais antigos, também encontrará maneiras para os antigos init. Mas com systemd, você pode simplesmente alternar entre a GUI e o modo de texto usando sudo systemctl start graphical.targete sudo systemctl start multi-user.target.
Byte Commander
5
Para todos os revisores Esta é uma pergunta válida! Há É uma maneira de mudar o nível de execução (se é ou não é chamado de "níveis de execução" ou "alvos"), utilizandosystemctl isolate
Ron

Respostas:

50

Ubuntu 16.04 usos systemd em vez de inicialização e, portanto, o conceito de runlevelsé substituído pelo termo targets. Portanto, existe realmente um mapeamento entre os níveis de execução baseados em init e os destinos baseados em 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     │
   └─────────┴───────────────────┘

Agora, para alterar apenas os "níveis de execução" na 16.04, você pode usar, por exemplo:

sudo systemctl isolate multi-user.target

Para tornar isso o "nível de execução" padrão, você pode usar:

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

A partir 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

Também dê uma olhada man systemd.specialpara saber mais sobre os destinos no systemd.

Ron
fonte
OI @Ron sua resposta é ótima, eu fiz isso para instalar o driver oficial da Nvidia, mas agora minha tela não mostra nada além de uma tela azul. Como posso consertar isso ? Agradecemos antecipadamente por sua ajuda.
Raphael Teubner
Entre no modo de recuperação do Grub e, como root, volte ao nível de execução anterior.
LottaLava
sim. Eu só ia comentar como os caras que dão esses comandos extremamente legais de ir do gui boot para o modo texto não se importam em nos contar sobre como retornar do text-boot para o gui boot.
precisa saber é
Portanto, apenas para observar, eu corro sudo systemctl set-default multi-user.targetno modo GUI, na reinicialização, recebi uma tela em branco, o que era um bom sinal de que a GUI falhou ao inicializar, então pressionei Ctrl-Alt-F3para entrar no nível de execução 3, fiz o que precisava (NVIDIA- instalado CUDA), execute sudo systemctl set-default graphical.targete retorne à tela de login da GUI. Mas agora não consegui efetuar login. Essa é a maneira correta de reverter para o nível de execução anterior ?
precisa saber é
2
@nyxee - Sim, sudo systemctl set-default graphical.targeté a maneira correta de voltar ao ambiente de desktop da GUI. Sua falha no login não parece relacionada à alternância entre os níveis de execução - parece mais o problema do loop de inicialização da nVidia . Para descobrir com certeza, volte para o nível de execução 3, remova os drivers da nVidia e Cuda, instale um driver da nVidia do repositório, defina o padrão para o nível de execução 5 (graphical.target) e, em seguida, reinicie e verifique se é possível fazer login.
Andy Turfer