Se o terminal virtual ativo for diferente daquele que o servidor X executa (por exemplo, o que parece ser o seu caso: Você está testando no mesmo computador, mas seu visualizador vnc é executado em uma sessão em outro VT do que o servidor X você deseja se conectar) não funciona. (Acabei de ter problemas semelhantes, não conseguindo mudar mais o VT, mas querendo interagir com a minha sessão X em execução.)
É explicado lá: link . Citação:
Q-108: Eu uso Terminais Virtuais Linux (VT's) para implementar 'Troca Rápida de Usuário' entre sessões de usuários (por exemplo, Betty está em Ctrl-Alt-F7, Bobby está em Ctrl-Alt -F8, e Sid está no Ctrl-Alt-F1: eles usam esses pressionamentos de tecla para alternar entre suas sessões.) Como a visão em um visualizador VNC conectando ao x11vnc é completamente preto, não é atualizado, ou os pixels são confundidos a menos que a sessão X x11vnc está anexada está no VT ativo?
Isto parece ter a ver com a forma como as aplicações (o servidor X processa neste caso) devem "funcionar bem" se não estiverem no VT activo (por vezes chamado VC para consola virtual). Isto é, não devem ler a partir do teclado ou mouse ou gerenciar a exibição de vídeo, a menos que eles tenham o VT ativo. Dado que parece que a chamada XGetImage () deve recuperar os dados do framebuffer do próprio hardware de vídeo, faria sentido que o polling do x11vnc não funcionasse a menos que a sessão X tivesse controle ativo do VT.
Não parece ser uma maneira fácil de contornar isso. Mesmo o xwd (1) não funciona neste caso (tente.) Algo precisaria ser feito em um nível mais baixo, digamos, no servidor XFree86 / Xorg X. Além disso, usar o Shadow Framebuffer (uma cópia do framebuffer de vídeo é mantido na memória principal) não parece corrigir o problema (última verificação em 2007).
Se ninguém estiver sentado na estação de trabalho e você quiser apenas alternar remotamente o VT para aquele associado à sua sessão X (então o x11vnc pode pesquisar corretamente), pode-se usar o comando chvt (1), por exemplo. "chvt 7" para VT # 7.