Capítulo 11. O sistema X Window e consoles virtuais

11.1. O que é o sistema X Window?
11.2. Eu quero rodar o Xorg, como faço para isso?
11.3. Eu tentei executar o X, mas eu recebo um erro No devices detected. quando eu digito startx. O que eu faço agora?
11.4. Por que meu mouse não funciona com o X?
11.5. Meu mouse tem uma fancy wheel. Posso usá-lo no X?
11.6. Meu laptop tem um touchpad Synaptics. Posso usá-lo no X?
11.7. Como eu uso displays X remotos?
11.8. O que é um console virtual e como faço outros?
11.9. Como eu acesso os consoles virtuais a partir do X?
11.10. Como faço para carregar o XDM na inicialização?
11.11. Por que eu obtenho o erro Couldn't open console quando executo o xconsole?
11.12. Por que meu mouse PS/2 não funciona direito no X?
11.13. Como eu inverto os botões do mouse?
11.14. Como faço para instalar uma splash screen e onde posso encontrá-las?
11.15. Posso usar as teclas do Windows do meu teclado no X?
11.16. Como posso obter aceleração de hardware 3D para o OpenGL ®?

11.1.

O que é o sistema X Window?

O sistema de janelas X (comumente chamado de X11) é o sistema de janelas mais amplamente disponível capaz de executar em Sistemas UNIX® e sistemas UNIX®-Like, incluindo o FreeBSD. A Fundação X.Org administra os padrões de protocolo X, sendo que a implementação de referência atual é a versão 11 release 7.7, então as referências são frequentemente encurtadas para X11.

Muitas implementações estão disponíveis para diferentes arquiteturas e sistemas operacionais. Uma implementação do código do lado do servidor é conhecida como um Servidor X.

11.2.

Eu quero rodar o Xorg, como faço para isso?

Para instalar o Xorg, siga um destes procedimentos:

Use o meta-port x11/xorg, que constrói e instala todos os componentes do Xorg.

Use x11/xorg-minimal, que constrói e instala apenas os componentes Xorg necessários.

Instale o Xorg a partir de pacotes do FreeBSD:

# pkg install xorg

Após a instalação do Xorg, siga as instruções da seção Configuração X11 do Handbook do FreeBSD.

11.3.

Eu tentei executar o X, mas eu recebo um erro No devices detected. quando eu digito startx. O que eu faço agora?

O sistema provavelmente está sendo executado em um securelevel alto. Não é possível iniciar o X em securelevel alto porque o X requer acesso de ao io(4). Para obter mais informações, consulte a página de manual do init(8).

Existem duas soluções para o problema: definir o securelevel novamente a zero ou executar xdm(1) (ou um gerenciador de exibição alternativo) no momento da inicialização antes que o securelevel seja elevado.

Veja P: 11.10 para mais informações sobre como executar o xdm(1) no momento da inicialização.

11.4.

Por que meu mouse não funciona com o X?

Ao usar vt(4), o driver de console padrão, o FreeBSD pode ser configurado para suportar um ponteiro de mouse em cada tela virtual. Para evitar conflito com o X, o vt(4) suporta um dispositivo virtual chamado /dev/sysmouse. Todos os eventos de mouse recebidos do dispositivo de mouse real são gravados no dispositivo via sysmouse(4) moused (8). Para usar o mouse em um ou mais consoles virtuais, e usar X, veja P: 4.4.1 e configure o moused(8).

Em seguida, edite o arquivo /etc/X11/xorg.conf e verifique se as seguintes linhas existem:

Section "InputDevice"
   Option          "Protocol" "SysMouse"
   Option          "Device" "/dev/sysmouse"
.....

Começando com a versão 7.4 do Xorg, as seções InputDevice no xorg.conf são ignoradas em favor dos dispositivos autodetectados. Para restaurar o comportamento antigo, adicione a seguinte linha à seção ServerLayout ou ServerFlags:

Option "AutoAddDevices" "false"

Algumas pessoas preferem usar o /dev/mouse com o X. Para fazer esse trabalho, /dev/mouse deve estar vinculado a /dev/sysmouse (veja sysmouse(4)) adicionando a seguinte linha ao /etc/devfs.conf (veja devfs.conf(5)):

link    sysmouse    mouse

Este link pode ser criado reiniciando o devfs(5) com o seguinte comando (executado como root ):

# service devfs restart

11.5.

Meu mouse tem uma fancy wheel. Posso usá-lo no X?

Sim, se o X estiver configurado para um mouse de 5 botões. Para fazer isso, adicione as linhas Buttons 5 e ZAxisMapping 4 5 na seção InputDevice do arquivo /etc/X11/xorg.conf, como visto neste exemplo:

Section "InputDevice"
   Identifier      "Mouse1"
   Driver          "mouse"
   Option          "Protocol" "auto"
   Option          "Device" "/dev/sysmouse"
   Option          "Buttons" "5"
   Option          "ZAxisMapping" "4 5"
EndSection

O mouse pode ser habilitado no Emacs adicionando estas linhas ao ~/.emacs:

;; wheel mouse
(global-set-key [mouse-4] 'scroll-down)
(global-set-key [mouse-5] 'scroll-up)

11.6.

Meu laptop tem um touchpad Synaptics. Posso usá-lo no X?

Sim, depois de configurar algumas coisas para que funcione.

Para usar o driver synaptics do Xorg, primeiro remova moused_enable do rc.conf .

Para habilitar a synaptics, adicione a seguinte linha ao /boot/loader.conf :

hw.psm.synaptics_support="1"

Adicione o seguinte ao /etc/X11/xorg.conf :

Section "InputDevice"
Identifier  "Touchpad0"
Driver      "synaptics"
Option      "Protocol" "psm"
Option      "Device" "/dev/psm0"
EndSection

E não se esqueça de adicionar o seguinte na seção ServerLayout :

InputDevice    "Touchpad0" "SendCoreEvents"

11.7.

Como eu uso displays X remotos?

Por motivos de segurança, a configuração padrão é não permitir que uma máquina abra remotamente uma janela.

Para ativar esse recurso, inicie o X com o argumento opcional -listen_tcp :

% startx -listen_tcp

11.8.

O que é um console virtual e como faço outros?

Os consoles virtuais fornecem várias sessões simultâneas na mesma máquina sem fazer nada complicado, como configurar uma rede ou executar o X.

Quando o sistema iniciar, ele exibirá um prompt de login no monitor depois de exibir todas as mensagens de inicialização. Digite seu nome de login e senha para começar a trabalhar no primeiro console virtual.

Para iniciar outra sessão, talvez para examinar a documentação de um programa ou para ler mensagens enquanto aguarda a conclusão de uma transferência por FTP, pressione Alt e pressione F2. Isso exibirá o prompt de login do segundo console virtual. Para voltar à sessão original, pressione Alt+F1.

A instalação padrão do FreeBSD possui oito consoles virtuais habilitados. A combinação de teclas Alt + F1 , Alt + F2 , Alt + F3 , e assim por diante alternará entre esses consoles virtuais.

Para habilitar mais consoles virtuais, edite /etc/ttys (veja ttys(5)) e adicione entradas do ttyv8 até o ttyvc , após os comentários na seção Virtual terminals:

# Edit the existing entry for ttyv8 in /etc/ttys and change
# "off" to "on".
ttyv8   "/usr/libexec/getty Pc"         xterm  on secure
ttyv9   "/usr/libexec/getty Pc"         xterm  on secure
ttyva   "/usr/libexec/getty Pc"         xterm  on secure
ttyvb   "/usr/libexec/getty Pc"         xterm  on secure

Quanto mais terminais virtuais estiverem ativos, mais recursos serão usados. Isso pode ser um problema em sistemas com 8 MB de RAM ou menos. Considere mudar a opção secure para insecure.

Importante:

Para executar um servidor X, pelo menos um terminal virtual deverá ser deixado como off para ele usar. Isso significa que apenas onze das teclas de função Alt podem ser usadas como consoles virtuais, de modo que uma deverá ser deixada livre para uso do servidor X.

Por exemplo, para executar o X e onze consoles virtuais, a configuração para o terminal virtual 12 deve ser:

ttyvb   "/usr/libexec/getty Pc"         xterm  off secure

A maneira mais fácil de ativar os consoles virtuais é reinicializar.

11.9.

Como eu acesso os consoles virtuais a partir do X?

Utilize Ctrl+Alt+Fn para voltar a um console virtual. Pressione Ctrl + Alt + F1 para retornar ao primeiro console virtual.

Uma vez em um console de texto, use Alt + F n para mover-se entre eles.

Para retornar à sessão X, mude para o console virtual que está executando o X. Se o X foi iniciado a partir da linha de comando usando startx , a sessão X será anexada ao próximo console virtual não utilizado, e não ao console de texto no qual foi invocado. Para oito terminais virtuais ativos, o X será executado no nono, portanto use Alt + F9 .

11.10.

Como faço para carregar o XDM na inicialização?

Existem duas escolas de pensamento sobre como iniciar o xdm(1). Uma escola inicia o xdm a partir do /etc/ttys (veja ttys(5)) usando o exemplo fornecido, enquanto o outro executa o xdm a partir do rc.local (veja rc(8)) ou de um script X localizado em /usr/local/etc/rc.d. Ambos são igualmente válidos, e um pode funcionar em situações em que o outro não funciona. Em ambos os casos, o resultado é o mesmo: O X mostrará um prompt de login gráfico.

O método ttys(5) tem a vantagem de documentar qual vty X iniciará e passando a responsabilidade de reiniciar o servidor X no logout para o init(8). O método rc(8) facilita o kill xdm se houver um problema ao iniciar o servidor X.

Se carregado pelo rc(8), o xdm deve ser iniciado sem nenhum argumento. xdm deve iniciar após o getty(8) ser executado, ou então getty e xdm entrarão em conflito, bloqueando o console. A melhor maneira de contornar isso é fazer com que o script espere 10 segundos ou mais e, em seguida, iniciar o xdm.

Ao iniciar o xdm pelo /etc/ttys, ainda há uma chance de conflito entre xdm e getty(8). Uma maneira de evitar isso é adicionar o número vt no arquivo /usr/local/lib/X11/xdm/Xservers:

:0 local /usr/local/bin/X vt4

O exemplo acima irá direcionar o servidor X para ser executado em /dev/ttyv3. Observe que o número é compensado por um. O servidor X conta a vty a partir de 1, enquanto o kernel do FreeBSD numera a vty a partir de zero.

11.11.

Por que eu obtenho o erro Couldn't open console quando executo o xconsole?

Quando o X é iniciado com o comando startx, as permissões em /dev/console não serão alteradas, o que resultará um comportamento errático de algumas coisas tais como o não funcionamento do xterm -C e do xconsole.

Isso ocorre devido à maneira como as permissões do console são definidas por padrão. Em um sistema multiusuário, não é necessário que qualquer usuário possa escrever no console do sistema. Para os usuários que estão logando diretamente em uma máquina com um VTY, existe o arquivo fbtab() para resolver tais problemas.

Em poucas palavras, certifique-se de que uma linha não comentada do formulário esteja no /etc/fbtab (veja fbtab(5)):

/dev/ttyv0 0600 /dev/console

Ele irá garantir que quem fizer o login em /dev/ttyv0 será o dono do console.

11.12.

Por que meu mouse PS/2 não funciona direito no X?

O mouse e o driver do mouse podem estar fora de sincronização. Em casos raros, o driver também pode relatar erroneamente erros de sincronização:

psmintr: out of sync (xxxx != yyyy)

Se isso acontecer, desative o código de verificação de sincronização definindo as flags de driver para o driver de mouse PS/2 como 0x100. Isto pode ser mais facilmente alcançado adicionando hint.psm.0.flags="0x100" ao arquivo /boot/loader.conf e reiniciando.

11.13.

Como eu inverto os botões do mouse?

Digite xmodmap -e "pointer = 3 2 1". Adicione este comando ao ~/.xinitrc ou ~/.xsession para que isso aconteça automaticamente.

11.14.

Como faço para instalar uma splash screen e onde posso encontrá-las?

A resposta detalhada para essa pergunta pode ser encontrada na seção Telas de inicialização do tempo de inicialização do FreeBSD Handbook.

11.15.

Posso usar as teclas do Windows do meu teclado no X?

Sim. Use o xmodmap(1) para definir quais funções as teclas devem executar.

Supondo que todos os teclados Windows sigam um padrão, os códigos de teclas para essas três teclas são os seguintes:

  • 115 - tecla Windows , entre as teclas Ctrl e Alt do lado esquerdo

  • 116 - tecla Windows , à direita de AltGr

  • 117 - Menu , à esquerda da tecla Ctrl da direita

Para que a tecla Windows da esquerda imprima uma vírgula, tente isto.

# xmodmap -e "keycode 115 = comma"

Para que os mapeamentos de teclas Windows sejam ativados automaticamente toda vez que X for iniciado, coloque os comandos xmodmap em ~/.xinitrc ou, preferencialmente, crie um ~/.xmodmaprc e inclua as opções xmodmap, uma por linha, e adicione a seguinte linha ao ~/.xinitrc:

xmodmap $HOME/.xmodmaprc

Por exemplo, para mapear as 3 chaves para serem F13, F14 e F15, respectivamente. Isso facilitaria mapeá-los para funções úteis em aplicativos ou no gerenciador de janelas.

Para fazer isto, coloque o seguinte em ~/.xmodmaprc.

keycode 115 = F13
keycode 116 = F14
keycode 117 = F15

Para o gerenciador da área de trabalho x11-wm/fvwm2, pode-se mapear as chaves para que F13 seja minimizada a janela em que o cursor está ou a maximize, F14 traz a janela em que o cursor está para a frente ou, se já estiver na frente, a coloca em background F15 aparece no menu principal do Workplace mesmo que o cursor não esteja a área de trabalho, o que é útil quando nenhuma parte da área de trabalho está visível.

As seguintes entradas em ~/.fvwmrc implementam a configuração acima mencionada:

Key F13        FTIWS    A        Iconify
Key F14        FTIWS    A        RaiseLower
Key F15        A        A        Menu Workplace Nop

11.16.

Como posso obter aceleração de hardware 3D para o OpenGL ®?

A disponibilidade da aceleração 3D depende da versão do Xorg e do tipo de chip de vídeo. Para um chip da nVidia, use os drivers binários fornecidos para o FreeBSD instalando um dos seguintes ports:

As versões mais recentes das placas nVidia são suportadas pelo port x11/nvidia-driver .

Drivers mais antigos estão disponíveis como x11/nvidia-driver- ###

A nVidia fornece informações detalhadas sobre qual placa é suportada por qual driver em seu site: http://www.nvidia.com /object/IO_32667.html.

Para a Matrox G200/G400, verifique o port x11-drivers/xf86-video-mga.

Para a ATI Rage 128 e Radeon, consulte ati(4), r128(4) and radeon(4).

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.