o que o comando startx faz?

13

Durante a leitura do Ubuntu, encontrei a seguinte declaração ...

  

Se o gerenciador de exibição não for iniciado por padrão no nível de execução padrão, você poderá iniciar o X de uma maneira diferente, após efetuar logon em um console em modo texto, executando startx a partir da linha de comandos.

O que significa ser um nível de execução padrão? E quando eu tentei isso no meu terminal eu tenho isso:

anupam@JAZZ:~$ startx

X: user not authorized to run the X server, aborting.
xinit: giving up
xinit: unable to connect to X server: Connection refused
xinit: server error
    
por jazzz 31.08.2014 / 20:00

5 respostas

20

Era uma vez (1), quando a memória dos computadores era medida em kilobytes e os discos em megabytes, a execução da interface gráfica durante todo o tempo era considerada prejudicial.

A maioria dos computadores Unix, onde costumava fazer cálculos científicos e simulação em ambiente multiusuário, e a interface gráfica rodando neles reduziria a memória e a energia da CPU disponível para eles.

Então, quando você precisou da interface gráfica, acabou de iniciá-la com startx (2).

startx basicamente roda um Xserver (o "driver" gráfico) e um comando que roda nele, que é tipicamente um gerenciador de janelas . Por padrão, os comandos que são executados estão no arquivo ~/.xinitrc em seu diretório pessoal ou em algum outro arquivo de sistema genérico.

Sistemas modernos são pensados de baixo para cima para ter um sistema gráfico rodando o tempo todo, então ninguém provavelmente verificou o funcionamento de startx desde idades --- isso explica um monte de comportamento estranho que você pode ter.

Se você quer experimentar e sentir os bons velhos tempos, a melhor coisa é fazer o seguinte:

A) instale Xnest e fvwm . O Xnest é um servidor gráfico dentro de um servidor, um tipo de servidor que será aberto como uma janela no seu sistema normal. . O Fvwm é um gerenciador de janelas muito simples que era muito popular naquela época. Você também precisará de fontes antigas de pixmap.

sudo apt-get install xnest fvwm 
sudo apt-get install xfonts-100dpi xfonts-100dpi-transcoded xfonts-75dpi-transcoded xfonts-75dpi 

B) escreva este arquivo em algum lugar, por exemplo em seu diretório inicial, e chame-o de ~/test :

#!/bin/bash 
#
xterm & 
exec fvwm2

C) Executar (aviso: startx é normalmente executado primeiro com o comando do cliente, depois um traço duplo e, em seguida, um comando do servidor. Como eu disse, a maioria dos novos sistemas não possui padrões sensatos para startx sozinho. ).

cd ~
startx ~/test -- /usr/bin/Xnest -ac :1 -geometry 800x600

... e você tem uma tela de estação de trabalho 80ies:

(Você pode ter o menu clicando na área de trabalho "Xnest").

... e se você se sentir realmente aventureiro, você pode iniciar uma sessão nativa em outro console virtual (leia as outras respostas) indo a um deles com Ctrl-Alt-F1, loggin in e

startx ~/test 

que normalmente será aberto em Ctrl-Alt-F8.

Aviso : os ambientes de área de trabalho modernos não são projetados para serem executados simultaneamente, para o mesmo usuário, em dois consoles diferentes. Portanto, não use gnome-shell ou unity ou coisas modernas ao fazer esses experimentos ou você poderá alterar sua configuração.

Notas de rodapé:

(1) Falando por volta de 1980-90 aqui.

(2) Por exemplo, eu tinha um laptop com 256k de RAM. Foi dolorosamente lento na interface gráfica (B & amp; W!), Mas ágil no console. Então eu fiz a maior parte do meu trabalho (editando C , LaTeX e arquivos similares) no modo de console, e mudei para o ambiente gráfico somente quando realmente necessário.

    
por Rmano 02.09.2014 / 15:51
9

startx inicia o xsession ou a interface gráfica onde você vê uma tela de login e qualquer coisa mais do que apenas um console ascii (sessão de texto).

Você está recebendo este erro porque o xsession já está iniciado e você está tentando executar o comando dentro do xsession em tty7.

tty7 é a interface do usuário que existe em ctrl + alt + f7 (xsession padrão).

tty1 é a interface de usuário que existe em ctrl + alt + f1 .

tty2 é a interface do usuário que existe em ctrl + alt + f2 . . . e assim por diante.

tty1 - tty6 são sessões de texto e você pode fazer login com seu nome de usuário e senha em uma dessas telas. Após o login, você pode executar o comando startx e o xsession começará em tty7, se ainda não estiver em execução, e em tty8, se tty7 já estiver executando uma xsession.

Níveis de execução:

Nível de execução 0 Parar - Desliga o sistema.

nível de execução 1 Modo de usuário único - Modo para tarefas administrativas.

nível de execução 2 Multi-usuário gráfico com rede - Inicia o sistema normalmente.

nível de execução 3-5 Não usado, mas configurado da mesma forma que o nível de execução 2

run-level 6 Reinicializar - reinicia o sistema.

O termo runlevel refere-se a um modo de operação em um dos sistemas operacionais que implementam a inicialização no estilo Unix System V. Convencionalmente, existem sete níveis de execução, numerados de zero a seis; embora até dez, de zero a nove [citação necessário], pode ser usado. Às vezes, S é usado como sinônimo de um dos níveis. Apenas um "nível de execução" é executado nos níveis de execução de inicialização não são executados sequencialmente, ou seja, o nível de execução 2 OU 3 OU 4 é executado, não 2, depois 3 e depois 4. - en.wikipedia.org/wiki/Runlevel

    
por mchid 31.08.2014 / 20:46
3

Significa simplesmente um diferente tty .

Colocando a pergunta vinculada:

Por padrão, o Ubuntu possui 7 tty's.

1-6 é somente linha de comando, 7 executa sua sessão X (sua área de trabalho gráfica normal).

Para acessá-los, use este atalho de teclado: Ctrl + Alt + F1

(alterando F1 para F1-F6 para acessar o terminal que você precisa)

Para voltar à sua sessão X (a área de trabalho normal), use: Ctrl + Alt + F7

after logging on to a text-mode console significa simplesmente entrar em um tty diferente e digitar o comando:

startx
    
por Parto 31.08.2014 / 20:53
0

Exemplo mínimo de buildroot

Minha maneira favorita de aprender o que algo faz é criar um exemplo mínimo para executá-lo.

No Ubuntu, isso é difícil, pois um segundo startx pode entrar em conflito com a sua área de trabalho atual.

link propõe Xnest , mas com o Buildroot podemos ir ainda mais ao mínimo e criar uma micro distro com apenas X11 instalado.

Desta forma, deve ser mais fácil entender o que está acontecendo.

Descrevi a criação da distribuição em: link

Uma vez que você tenha a imagem rodando no QEMU, você inicia um shell TTY.

Então, quando você faz:

root
startx

inicia uma interface gráfica do X11:

Agora, dê uma olhada na fonte de startx dentro dessa distro, que é apenas um script de shell.

É um wrapper simples sobre /usr/bin/xinit e passa /etc/X11/xinit/xinitrc para xinit .

Se você abrir /etc/X11/xinit/xinitrc , ele contém as seguintes linhas:

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &

vemos que ele é iniciado:

  • twm : um gerenciador de janelas muito simples e antigo
  • xclock e xterm que vemos na tela

Para /usr/bin/xinit , podemos fazer:

man xinit

que diz que:

  

Se nenhum programa cliente específico for fornecido na linha de comando, o xinit procurará um arquivo no diretório pessoal do usuário chamado .xinitrc para ser executado como um script de shell para          iniciar programas clientes. Se não existir tal arquivo, o xinit usará o seguinte como padrão:

xterm  -geometry  +1+1  -n  login  -display  :0
  

Se nenhum programa de servidor específico for fornecido na linha de comando, o xinit procurará um arquivo no diretório inicial do usuário chamado .xserverrc para ser executado como um script de shell para          inicie o servidor. Se não existir tal arquivo, o xinit usará o seguinte como padrão:

X  :0
    
0

Como Rmano observa, o startx é uma abordagem muito antiga. Caminho de volta quando isso foi usado, o binário X11 foi instalado root setuid.

Eu apenas tentei isso em uma VM e, de fato, startx falha como você descreve, por padrão. chmod u+s /usr/lib/xorg/Xorg corrige isso.

Eu não recomendo fazendo com que Xorg seja root setuid. O mundo se afastou disso para a Boa Razão. Mas se você está jogando em uma VM descartável, é como fazer startx funcionar.

    
por Phil P 28.04.2018 / 05:50

Tags