Como o X11 funciona?

2

Estou tentando fazer com que o X11 funcione no meu mac ao conectar a uma máquina remota e ter muitos problemas. Passei o dia todo pesquisando sem sucesso. Aqui estão minhas principais perguntas:

  1. Qual é a diferença entre ssh -X, ssh -Y, e quando eu faço isso, qual computador (local ou remoto) tem o servidor x e qual tem os clientes?

  2. O comando startx inicia o servidor x? Então, se eu for ao meu terminal e clicar em startx, tudo que eu fiz será iniciar o xserver?

  3. Por que eu iria querer ssh em um computador remoto e usar startx? Eu precisaria de -X ou -Y para usar o startx? Parece que tudo que eu li sobre como colocar o desktop no gnome / kde em uma máquina remota exige que você use o startx. Se eu usar startx nesse cenário, quem é o xserver e quem é o xclient?

  4. Os gerenciadores de janela do gnome / kde de usar startx na máquina remota interferem na implementação do mac de seu próprio gerenciador de janelas x11? Existe alguma maneira de corrigir isso?

  5. Como algo como o VNC funciona em tudo isso? Existe uma diferença entre uma sessão X remota e apenas sshing na máquina remota e usando startx?

  6. Qual é a maneira correta / comando para obter o gnome / kde para executar uma área de trabalho GUI na minha máquina remota do servidor? (então a área de trabalho exibida no meu computador é a área de trabalho do servidor)? E na área de trabalho, quero dizer que eu quero papel de parede, pastas, lixeira, etc.

  7. Se NX / VNC são as únicas maneiras de ter um verdadeiro desktop remoto no sentido de # 6, por que os comandos $ gnome-session ou $ startkde trazem a área de trabalho que eu quero com ssh -X? embora eles não funcionem corretamente?

Seria útil se cada um deles fosse tratado individualmente, mas se você puder me levar a uma documentação clara que seria útil também!

    
por hatorade 20.08.2009 / 18:06

3 respostas

2
  1. Se bem me lembro, o ssh -X mapeia o servidor X para a máquina de destino e, em seguida, roteia conexões através do canal criado pelo SSH para o terminal (ou seja, sua máquina). O "servidor X" é o software que desenha a janela para os "clientes X", que são os programas que usam essas janelas.

  2. Sim, startx inicia o servidor X. Mas no Mac OS X você inicia o servidor X iniciando o X11.app em Utilitários.

  3. Você realmente não desejaria isso, a menos que esteja tentando reiniciar o servidor X no computador em que você está usando o SSH. Mas isso não teria nada a ver com sua conexão com esse computador ou com os programas que você deseja executar por meio dessa conexão.

  4. Não tenho certeza se entendi a pergunta. O gerenciador de janelas executado pelo servidor remoto é irrelevante para sua conexão. Os gerenciadores de janelas são executados em servidores X (eles são clientes X especiais) e o servidor X em seu Mac e o servidor X na máquina remota são dois animais separados.

  5. O VNC é uma solução diferente para o problema de exibir aplicativos GUI remotamente. Você pode combinar os dois, mas eu recomendo que você tente entendê-los separadamente.

  6. Deixe que o Paul seja o seu Mac e o Peter seja a máquina (Linux) à qual você se conecta:

Paul: startx (ou melhor, inicie o X11.app e use a janela do terminal criada para o seguinte)

Paul: xhost + Peter

Paul: ssh -X Peter

Peter: xlogo & (isso deve agora aparecer na tela de Paul, se não, continue)

Peter: export DISPLAY = Paul: 0

Peter: xlogo & (isso deve agora ser exibido na tela de Paul)

    
por 20.08.2009 / 17:29
2

Why would I ever want to ssh into a remote computer and use startx? Would I need -X or -Y to use startx? It seems everything I've read about getting the desktop up for gnome/kde on a remote machine calls for you ro use startx. If I use startx in this scenario, who is the xserver, and who is the xclient?

X tem uma definição ligeiramente 'incomum' de cliente / servidor.
A máquina com a tela gráfica é o servidor, os aplicativos são os clientes. Então você inicia o XServer localmente (com startx) e executa clientes (o aplicativo) possivelmente remotamente.

Se você estiver executando apenas aplicativos locais, nada disso importa. Antigamente, quando sua aplicação precisava do poder de processamento de números de um 'servidor' (ou seja, uma máquina GRANDE no porão), você poderia executar o trabalho em uma máquina sem exibição e fazer com que ela aparecesse no terminal em seu escritório.

O gerenciador de janelas é um caso interessante. É apenas uma aplicação X como qualquer outra coisa. É perfeitamente possível iniciar um Xserver localmente em um Mac, então ter um gerenciador de janelas Motif rodando em um Sun gerenciando suas janelas locais enquanto trabalha em um aplicativo X que está rodando em uma máquina Linux em algum outro lugar.

ps. irá responder em sep respostas para que as pessoas possam comentar / editá-los.

    
por 20.08.2009 / 17:05
1

How does something like VNC play into all of this? Is there a difference between a remote X session and just sshing into the remote machine and using startx?

O VNC faz um trabalho semelhante de maneira um pouco diferente. VNC simplesmente leva uma tela inteira ou uma única janela e envia o vídeo através da rede para um aplicativo VNC sua máquina local. X executa um aplicativo na máquina remota, mas envia todos os comandos de exibição pela rede para o seu monitor X local. X realmente faz isso mesmo quando está rodando localmente, mas uma chamada de rede para a mesma máquina pode ser atalho e é muito rápida.

ps. Você não faz o ssh em uma máquina remota e startx - você inicia o servidor X localmente, em seguida, o ssh em uma máquina remota e inicia uma aplicação X (office / gimp / xeyes / etc) e o X o manipula localmente.

    
por 20.08.2009 / 17:11