Eu pensei que o /usr/bin/startx
script é usado para iniciar o servidor X, mas parece que não é verdade. Qual processo ou script inicia o servidor X? O servidor X precisa ser iniciado antes que o lightdm greeter seja visível, mas quando exatamente?
/etc/init.d/lightdm inicia o Xserver. O Lightdm é iniciado primeiro e depois inicia o Xserver. O processo pai do Xserver (Xorg) é lightdm (PID 25600, como mostrado no exemplo abaixo). Você pode ver isso executando:
ps -ef | grep lightdm.
root 25600 1 0 00:50 ? 00:00:00 /usr/sbin/lightdm
root 25608 25600 2 00:50 tty7 00:00:35 /usr/lib/xorg/Xorg -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
root 25686 25600 0 00:50 ? 00:00:00 lightdm --session-child 12 19
A execução dos seguintes comandos irá parar e iniciar o lightdm e o Xserver de acordo:
sudo /etc/init.d/lightdm stop
sudo /etc/init.d/lightdm start
startx
Se o seu sistema Ubuntu inicializar em uma tela de texto, por exemplo, um sistema mínimo ou um servidor, você poderá usar o startx para iniciar o xserver (e um gerenciador de janelas simples como openbox ou fluxbox ou um ambiente de desktop como gnome, kde, lxde, .. xfce).
Por exemplo, basta iniciar e usar uma área de trabalho gráfica simples (em um sistema mínimo ou servidor) após a instalação de três pacotes de programas,
sudo apt update
sudo apt install fluxbox xinit xterm
com o comando
startx
Se você possui um sistema de desktop Ubuntu (Ubuntu padrão ou um dos sabores da comunidade Kubuntu, Lubuntu, ... Xubuntu), não precisa usar o startx, o ambiente gráfico da área de trabalho é iniciado automaticamente (e você não precisa executar startx
). Se bem entendi, é iniciado via systemd
. Veja, por exemplo, os seguintes links,
wiki.archlinux.org/index.php/Systemd/User#Xorg_and_systemd
wiki.archlinux.org/index.php/xorg
A alternância entre o modo de texto e o modo gráfico é descrita na resposta aceita no seguinte link
Inicializando no modo de texto no 16.04
Para inicializar o Ubuntu 16.04 Desktop sem o X uma vez, adicione systemd.unit = multi-user.target à linha de comando do linux no GRUB.
Para tornar isso o padrão, use
sudo systemctl set-default multi-user.target
Para retornar à inicialização padrão no X, use
sudo systemctl set-default graphical.target
Para ver o destino padrão atual,
sudo systemctl get-default
Você pode ler sobre o processo de inicialização aqui: http://manpages.ubuntu.com/manpages/xenial/man7/boot.7.html
Embora o manual não mencione o Xserver (ou X11), o processo init é responsável por iniciar o Xserver.
Processo inicial (PID = 1) gerando tudo, geralmente incluindo x11
No 16.04 é
/sbin/init
do systemd-sysvfonte