Por que um servidor Ubuntu tem graphical.target como o destino padrão do systemd?

20

Sou usuário do Ubuntu há algum tempo e, no trabalho, temos muitos servidores VM do Ubuntu , todos executados Ubuntu 14.04 LTSpara implantar nossos aplicativos web, bancos de dados e outras ferramentas.

Atualmente Ubuntu 16.04 LTS, estou estudando , desktop e servidor, para poder atualizar nossos servidores de produção em um futuro próximo sem causar problemas.

Desde o Ubuntu 15.04, inite upstartfui substituído por Systemd, também estou estudando o Systemd.

Percebi que meu computador de desenvolvimento executando o Ubuntu 16.04 Desktop edition tem graphical.targetcomo destino padrão o systemd, o que é lógico.

Mas então notei que o servidor de teste executando o Ubuntu 16.04 Server edition também usa graphical.targetcomo o destino padrão do systemd.

$ systemctl get-default
graphical.target

Então, eu estou confuso. O servidor não possui nenhuma camada gráfica. Como é o destino padrão graphical.target?

Editar # 0

Como Rinzwind sugeriu nos comentários, olhei para o alvo para ver se ele está ativo ou não ...

e a resposta é SIM:

admin@server1604:~$ systemctl get-default
graphical.target

admin@server1604:~$ systemctl status graphical.target
● graphical.target - Graphical Interface
Loaded: loaded (/lib/systemd/system/graphical.target; static; vendor preset: enabled)
Active: active since jeu. 2016-10-13 16:03:18 CEST; 46min ago
Docs: man:systemd.special(7)

oct. 13 16:03:18 fdea systemd[1]: Reached target Graphical Interface.

Então, eu estou um pouco mais confuso.

Editar # 1

A resposta de Mark Stosberg aponta o fato de fazer display-manager.serviceparte da árvore de dependências do graphical.targetservidor 16.04, e ele acrescenta que nenhum gerenciador de tela está instalado ou em execução em sua máquina. Eu olhei para isso também e, de fato, no meu servidor, essa dependência existe:

admin@server1604:~$ systemctl list-dependencies graphical.target 
graphical.target
● ├─accounts-daemon.service
● ├─apache2.service
● ├─apport.service
● ├─display-manager.service

...

E esse alvo tem um círculo vermelho à esquerda, onde a maioria das outras dependências tem um verde.

E desta vez o resultado é consistente:

[email protected]:~$ systemctl status display-manager.service 
● display-manager.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

Mas aqui está outra coisa estranha: na minha edição para desktop, display-manager.servicenão é uma dependência de graphical.target:

[email protected]:~ $ systemctl list-dependencies graphical.target | grep display
[email protected]:~ $ 

Mas eu até encontrei uma alternativa porque corro Ubuntu-Gnomecom a lightdmsubstituição do gerenciador de janelas padrão:

[email protected]:~ $ systemctl list-dependencies graphical.target | grep lightdm
● ├─lightdm.service
Rémi B.
fonte
Está faltando uma informação vital: está graphical.targetativo?
Rinzwind
Obrigado por seu comentário. Mas, de fato, sim, é ativo! O que isso significa ?
Rémi B.
Hmm encontrou algo relevante.
Rinzwind
a parte que pode fazer sentido: "... or accounts-daemon.service" O servidor precisará disso também, eu diria. Confuso, para dizer o mínimo.
Rinzwind 13/10/16

Respostas:

10

Apesar do nome do destino, não há nada gráfico em execução no Ubuntu Server 16.04. Você pode este comando para verificar e comparar com a área de trabalho, se desejar:

systemctl list-dependencies graphical.target 

No meu servidor Ubuntu 16.04, vejo que os destinos dependem de "display-manager.service", mas nenhum gerenciador de exibição está instalado ou em execução.

Espero que os servidores Ubuntu sejam configurados dessa maneira para algum tipo de consistência, embora eu concorde que é confuso.

Mark Stosberg
fonte
Concordou com a parte confusa. Alguém provavelmente não pensa estabelecendo um de é suficiente
Rinzwind
@Rinzwind, eu não entendo a sua frase "não estabelecendo um de é suficiente" (o Inglês não é minha língua materna)
Rémi B.
Você provavelmente está certo sobre a necessidade de consistência. A edição do servidor é construída a partir da área de trabalho, e não de uma maneira alternativa do debian?
Rémi B. 14/10
'de' significa ambiente de desktop. Lembro-me de um aviso de alguns anos atrás, onde dizia que o Ubuntu começou a usar o sistema base1; mas não sei se eles usam um servidor para criar a área de trabalho ou se eles usam uma área de trabalho para criar um servidor. "graphical.target" define o serviço da área de trabalho; ele pode ter um valor de "" e, em seguida, não iniciar um DE mas confuso que é (eu esperaria que para manter um valor eo servidor para uso "multi-user.target"
Rinzwind
8

No manual redhat :

Por exemplo, a unidade graphical.target, usada para iniciar uma sessão gráfica, inicia serviços do sistema como o GNOME Display Manager (gdm.service) ou Accounts Service (accounts-daemon.service) e também ativa o multiusuário. unidade alvo. Da mesma forma, a unidade multiusuário.target inicia outros serviços essenciais do sistema, como NetworkManager (NetworkManager.service) ou D-Bus (dbus.service), e ativa outra unidade de destino chamada basic.target.

Portanto, não é errado defini-lo, pois não ativa o gerenciador de exibição quando o serviço que lida com o serviço de exibição não está definido.

Para um servidor, você pode configurá-lo como, multi-user.targetmas não é necessário. Parece que você acaba no nível de execução 4 se o fizer e no nível 5 quando não o fizer.

Runlevel    Target Units    Description
0   runlevel0.target, poweroff.target   Shut down and power off the system.
1   runlevel1.target, rescue.target     Set up a rescue shell.
2   runlevel2.target, multi-user.target     Set up a non-graphical multi-user system.
3   runlevel3.target, multi-user.target     Set up a non-graphical multi-user system.
4   runlevel4.target, multi-user.target     Set up a non-graphical multi-user system.
5   runlevel5.target, graphical.target  Set up a graphical multi-user system.
6   runlevel6.target, reboot.target     Shut down and reboot the system. 
Rinzwind
fonte
Eu gostaria de receber feedback sobre o voto negativo.
Rinzwind
1

Inspecionando mais detalhadamente o primeiro nível da dependência em árvore do destino graphical.target:

admin@server1604:~$ systemctl list-dependencies graphical.target 
graphical.target
● ├─accounts-daemon.service
● ├─apache2.service
● ├─apport.service
● ├─display-manager.service              (disabled)
● ├─grub-common.service
● ├─irqbalance.service
● ├─mdadm.service
● ├─ondemand.service
● ├─sysstat.service
● ├─systemd-update-utmp-runlevel.service (disabled)
● ├─ureadahead.service                   (disabled)
● └─multi-user.target

uma comparação com o primeiro nível do multi-user.target:

[email protected]:~$ systemctl list-dependencies multi-user.target
multi-user.target
● ├─apache2.service
● ├─apport.service
● ├─atd.service
● ├─cron.service
● ├─dbus.service
● ├─grub-common.service
● ├─irqbalance.service
● ├─lxcfs.service
● ├─lxd-containers.service
● ├─mdadm.service
● ├─networking.service
● ├─ondemand.service
● ├─open-vm-tools.service

...

Eu aviso que, se remover os alvos deficientes na graphical.targetárvore ( display-manager.service, systemd-update-utmp-runlevel.service, ureadahead.service), quase todos os demais:

  • apache2.service
  • apport.service
  • grub-common.service
  • grub-common.service
  • irqbalance.service
  • mdadm.service
  • ondemand.service
  • e sysstat.service

já estão incluídos no primeiro nível da árvore de dependência do multi-user.target.

Embora, devamos perguntar novamente sobre esse fato, porque graphical.targetdepende do multi-user.target, não há necessidade de todas essas coisas. Parece bastante estranho.

Mas, após essa redução, ele continua sendo um serviço accounts-daemon.service, como Rinzwind apontou em seu comentário .

Portanto, podemos assumir que o graphical.targetnecessário para carregar o arquivo accounts-daemon.service.

No entanto, nesse caso, é novamente estranho, porque eu acho que faria mais sentido criar um alvo dedicado para esse fim, talvez algo como accounts.targetou qualquer termo correto para descrevê-lo. De qualquer forma, provavelmente os desenvolvedores da Canonical tiveram suas razões para pensar assim.

Mas fico curioso para saber suas razões.

Rémi B.
fonte