[Índice da FAQ] [Seção 10 - Administração do Sistema] [Seção 12 - Questões Específicas de Hardware e Plataforma]
O X é considerado um protocolo estruturado do tipo "cliente-servidor", no entanto, a terminologia confunde algumas vezes. O computador com os gráficos na tela é o "Servidor X". A aplicação que ordena o que o servidor X deve colocar na tela é chamada de "Cliente X", mesmo se esta é uma máquina potente em um centro de dados. Esse modelo pode ser usado para ter aplicações (clientes X) grandes, que usam muito processamento, em execução em uma máquina muito potente, e usar um Servidor X, em execução em uma máquina pequena e de baixa potência, como sua interface.
É possível executar clientes X em um sistema sem nenhum suporte gráfico. Por exemplo, é possível ter uma aplicação (o cliente X) sendo executada em uma máquina mvme88k, e mostrar sua saída em uma tela gráfica de uma máquina alpha (o servidor X). O X é um protocolo bem definido e multiplataforma, sendo possível ter uma aplicação X em execução (por exemplo) em uma máquina Solaris e usar uma máquina OpenBSD para mostrar a saída.
O cliente e o servidor podem também estar em execução na mesma máquina, e para a maior parte desta seção, isso será assumido.
Dito isso, executar o X é geralmente para executar aplicações X. Algumas aplicações X são leves, outras aparentemente pegam e usam todo o processador e RAM que você tiver. Normalmente, alguns usuários gostam de usar o X apenas para ter um grande número de xterm(1)s, o que pode ser feito em hardware muito modesto.
Várias plataformas requerem o driver de abertura do X xf86(4), que fornece o acesso à memória e às portas de E/S da placa VGA e aos registros de configuração requeridos pelos servidores X. Esse driver precisa ser ativado antes de ser usado, o que pode ser feito respondendo "yes" para esta questão durante a instalação:
ou alterando o valor de machdep.allowaperture para um valor não-nulo, apropriado para sua arquitetura, em /etc/sysctl.conf, e reinicializando a máquina (por razões de segurança, esse valor do sysctl não pode ser modificado após a inicialização estar completa). Existem implicações de segurança nisso, então não faça isso se você não precisa.Do you expect to run the X window System [no]
Defina machdep.allowaperture=1 no /etc/sysctl.conf.
As placas TGA e algumas VGA são suportadas. Nenhuma configuração, além dessa, deve ser necessária.
Defina machdep.allowaperture=2 no /etc/sysctl.conf.
O X na arquitetura amd64 frequentemente configura-se corretamente de forma automática, então nenhuma configuração é necessária em vários casos. Se uma configuração adicional é necessária, use o processo X -configure abaixo.
Defina machdep.allowaperture=2 no /etc/sysctl.conf.
Devido à incrível variedade de placas de vídeo, mouses, teclados e outros periféricos, configurar um sistema i386 para executar o X pode ser excitante. Excitante o bastante, que uma seção separada é fornecida.
Felizmente, as coisas não são sempre tão ruins quanto aparentam -- em muitos casos, o X "Simplesmente Funciona" ao executar o "startx". Nesses casos, seu hardware é detectado e consultado pelas suas capacidades, e o X funciona muito bem.
Defina machdep.allowaperture=2 no /etc/sysctl.conf.
Sistemas Macintosh PPC suportados podem funcionar em um dos dois modos diferentes: "acelerado" e "framebuffer" (não-acelerado).
No modo "framebuffer", o sistema funciona com 8 bits por pixel, e a resolução do vídeo é controlada pelo ambiente Macintosh, então você irá, provavelmente, querer manter uma pequena seção MacOS no seu disco para ajustar essas configurações. Esse modo tem a vantagem de "Simplesmente Funcionar", no entanto pode ser frustrantemente inflexível (por exemplo, alterar a resolução requer a inicialização do MacOS).
Se o seu Macintosh tem um sistema de vídeo da ATI, ele pode ser executado usando um servidor X acelerado, o que gera um melhor desempenho e mais controle no ambiente OpenBSD. As placas de vídeo da NVIDIA, em alguns sistemas macppc, também funcionam em muitos casos. O arquivo README possui detalhes da configuração do driver acelerado, comece usando o arquivo de exemplo de lá.
Embora o arquivo README forneça detalhes sobre o uso do mouse padrão de um botão da Apple no X, a menos que você esteja usando um laptop, é altamente recomendado que você compre de terceiros um mouse USB moderno.
Com um único framebuffer suportado, não precisa de configuração. Se você deseja usar uma configuração com múltiplos monitores, veja o arquivo README acima para obter detalhes.
A resolução é controlada pelo firmware antes do OpenBSD ser inicializado.
Existe um certo número de variações dessas máquinas; você precisa saber que tipo de barramento seu sistema possui (PCI ou SBus), em que tipo de porta seu mouse está ligado (zstty, com, ou USB/PS2) e que tipo de placa de vídeo você tem. Comece com o arquivo xorg.conf de exemplo no arquivo README, então modifique como indicado para seu hardware real e suas necessidades. Não espere que o arquivo de exemplo funcione sem modificações na sua máquina!
Atualmente, o servidor X só funciona em modelos VAXstation 4000, com um framebuffer lcg(4) ou lcspx(4).
Nenhuma configuração é necessária, o X "Simplesmente Funciona".
Existem dois programas que podem ser usados para criar um arquivo de configuração para os servidores X do X.Org para i386. Infelizmente, nenhum deles garante a criação de um arquivo xorg.conf utilizável.
Essa é uma antiga placa de vídeo de alta capacidade, com 16M de RAM, mas hoje não é suportada pelas versões modernas dos sistemas operacionais "principais". A tela ligada no sistema é um monitor CRT Sony Multiscan G400 19", e seria legal usar uma resolução de 1280x1024, com uma frequência de atualização decente e cores de 24 bits.vga1 at pci1 dev 0 function 0 "3DFX Interactive Banshee" rev 0x03
Em primeiro lugar, depois de instalar o OpenBSD com o X (e tendo certeza que o driver de abertura está ativado no kernel), vamos ver o que a detecção automática e a configuração do X.Org nos propõe; depois de tudo nós podemos estar com sorte. Então, simplesmente nos identificamos no sistema e usamos o comando startx(1). A tela fica vazia por alguns momentos, então nós obtemos o fundo de tela em "tabuleiro de xadrez" do X, o cursor "X", e então uma janela xterm.
Funcionou!
Mais ou menos. Embora o sistema esteja completamente funcional, ele aparentemente não selecionou nenhuma das capacidades do monitor, e está funcionando claramente em uma baixa resolução (640x480). Esperamos conseguir algo melhor que isso. Muito melhor, na verdade. Isso significa que nós precisamos fazer nosso próprio arquivo xorg.conf.
Vamos usar o processo "X -configure" para gerar um arquivo xorg.conf como ponto de partida. Você precisa fazer isto como root:
Pelo jeito, a mensagem é séria -- use o caminho completo para seu arquivo xorg.conf.new, mesmo se ele está no seu diretório padrão atual. Ao falhar nessa parte, o resultado é que o X(7) não encontra o arquivo, e ele silenciosamente usa a configuração padrão, que não tem nada a ver com o arquivo que você está trabalhando atualmente. Isso previne você de ter que procurar o porquê de não funcionar. Confie em nós sobre isso.# X -configure [...] Your xorg.conf file is /root/xorg.conf.new To test the server, run 'X -config /root/xorg.conf.new'
Vamos fazer o que ele diz, e vejamos o que acontece:
Agora, tudo que nós recebemos é uma tela preta. As coisas começaram tão bem...# X -config /root/xorg.conf.new
Esta pode ser uma boa hora para falar sobre as formas de sair do X quando ele carrega desse modo. Em ordem de preferência:
Aqui é a parte onde saber sobre o seu hardware é útil. Ao ligar este sistema em um monitor diferente, enquanto ele está mostrando a tela em branco, faz com que a mensagem "Sync. Out of Range" apareça na tela. Então, aparentemente, a configuração do X que nos foi passada não funciona neste monitor, e pode não funcionar em NENHUM monitor se o modo de vídeo selecionado não for possível para esta placa em particular (lembre-se que o X procura nos chips da placa o que eles são potencialmente capazes de fazer, e não como o fabricante integrou todos os elementos). Monitores diferentes fazem coisas diferentes quando a atualização está ruim; alguns tentam mostrar o que eles podem, outros entram em modo de economia de energia, alguns produzem ruídos horríveis, alguns mostram mensagens úteis na tela. Este monitor parece não fazer coisa alguma. Uma anotação é feita para NÃO usar este monitor em alguma configuração inicial do X no futuro.
Olhando o arquivo xorg.conf.new gerado, nós vemos isto:
Section "Monitor"
#DisplaySize 370 270 # mm
Identifier "Monitor0"
VendorName "SNY"
ModelName "SONY CPD-G400"
### Comment all HorizSync and VertSync values to use DDC:
HorizSync 30.0 - 107.0
VertRefresh 48.0 - 120.0
Option "DPMS"
EndSection
Como um teste, vamos tentar usar o DDC ("Data Display Channel", um modo
de fazer com que o monitor diga ao computador e à placa de vídeo quais
são suas capacidades), e ver o que acontece.
Desta vez, nós recebemos o padrão de rede X e um cursor se movendo,
que é tudo que esperamos quando executamos o X dessa forma (nós
encerramos o X usando a dica do CTRL-ALT-Backspace).
Ele está (novamente) em uma resolução baixa, mas está funcionando,
o que significa que certamente o problema é a resolução e a frequência
de atualização.
Nós restauramos as linhas "HorizSync" e "VertRefresh" aos valores
anteriores, como também verificamos as especificações do monitor
através de uma pesquisa na Internet.
Vamos tentar forçar o Xorg para uma resolução em particular, e ver se temos alguma sorte. Na parte Section "Screen" do arquivo xorg.conf, nós adicionamos algumas linhas. As linhas adicionadas são mostradas em negrito:
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 1
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 4
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 8
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 15
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 16
EndSubSection
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1280x1024"
EndSubSection
EndSection
Essas duas mudanças dizem ao X que queremos usar uma profundidade de
tela de 24 bits e, para essa profundidade, queremos a resolução
1280x1024.
Como nenhuma outra resolução está listada para o modo "Depth 24", o
sistema será forçado a utilizar aquela resolução.
Nós testamos as mudanças e... SUCESSO! Nós obtemos o que aparenta ser uma tela em alta resolução. Note que TUDO que você deve ver é um padrão de rede (chamado "root weave", ele é muito bom para ver o quão bom seu monitor REALMENTE é, e também é bom para calibrar telas LCD) e um cursor móvel. Neste ponto, não precisa ser algo funcional.
Agora, instalamos o arquivo xorg.conf para vermos como ele se comporta em um X funcionando de modo usável.
Nós podemos agora tentar carregar o X usando o comando startx(1). Funcionou!# cp xorg.conf.new /etc/X11/xorg.conf
Será, provavelmente, uma boa ideia verificar que estamos na resolução e profundidade de cor desejada, e também que nós estamos em uma frequência de atualização correta. Nós podemos fazer isso com os comandos xrandr(1) e xdpyinfo(1). Entre outras coisas, o xdpyinfo(1) nos informa:
[...]
screen #0:
print screen: no
dimensions: 1280x1024 pixels (433x347 millimeters)
resolution: 75x75 dots per inch
depths (7): 24, 1, 4, 8, 15, 16, 32
root window id: 0x44
depth of root window: 24 planes
[...]
Sim, estamos com a resolução 1280x1024, com uma profundidade de 24
"planes" (bits).
xrandr(4) nos informa:
SZ: Pixels Physical Refresh
*0 1280 x 1024 ( 433mm x 347mm ) *85 75 60
1 1280 x 960 ( 433mm x 347mm ) 85 60
[...]
que significa que estamos em uma frequência de atualização de
85Hz, que deve ser uma configuração confortável para a maioria dos
usuários.
Em algumas plataformas, você precisa desativar o console getty(8) para usar o xdm(1).
O gerenciador de janela padrão no OpenBSD é o fvwm(1). O Fvwm é um bom gerenciador de janela de propósitos gerais, mas ele não é sua única escolha; ele não é o único gerenciador de janela incluído no OpenBSD (veja cwm(1) e twm(1)). Uma grande quantidade de gerenciadores de janela também está disponível através de pacotes.
Similarmente ao script de inicialização do sistema, o X possui um procedimento para configurar o ambiente do usuário. Mais precisamente, ele possui mais de um procedimento, e isso depende de como você inicia o X. Entender como o X inicia ajuda você a entender como personalizar o seu ambiente de trabalho do jeito que você quer.
Note que você pode personalizar o ambiente tanto em nível de sistema quanto de usuário. É, provavelmente, melhor fazer mudanças a nível de usuário em vez de alterar os padrões do sistema, já que os scripts do usuário são guardados no diretório pessoal do usuário, e você terá menos arquivos para instalar quando for atualizar a sua versão do OpenBSD. As configurações do sistema estão em /etc/X11 e são inicialmente instaladas a partir do xetcXX.tgz, que não é reinstalado pelo processo de atualização de versão; então, se você fez mudanças a nível de sistema, elas vão persistir, mas você pode precisar mesclar essas mudanças em futuras versões daqueles arquivos.
Em um caso simplificado, esse arquivo pode conter apenas o nome do gerenciador de janela que você deseja executar:
Ou você pode conseguir algo mais enfeitado com:cwm
Isso carrega o xconsole(1), que fornece uma cópia de todo texto que o kernel envia para o console (que agora está coberto pela tela gráfica), um relógio analógico, oclock(1), e define o fundo para um fundo cinza sólido com o xsetroot(1), tudo isso antes de executar o gerenciador de janela cwm(1). Note que somente o gerenciador de janela não é colocado em segundo plano com o caractere "&". Isso significa que o X continua em execução até que o cwm(1) termine sua execução.xconsole -geometry -0+0 -fn 5x7 & oclock -geometry 75x75-0-0 & xsetroot -solid grey & cwm
Se o diretório pessoal do usuário não possui um arquivo .xinitrc, o arquivo /etc/X11/xinit/xinitrc do sistema é usado. Esse arquivo pode fornecer algumas ideias adicionais para o seu script .xinitrc.
O xdm(1) possui muitas outras funcionalidades que não serão mostradas aqui, mas para nossos propósitos, o xdm mostra ao usuário uma tela de início de sessão, recebe o nome de usuário e senha, e então mostra ao usuário o seu ambiente X. Quando o X é encerrado, propositalmente ou acidentalmente, o xdm é mostrado novamente. Esse é o motivo para se ter certeza de que o X está configurado corretamente antes de usar o xdm(1) e, certamente, antes de colocar o xdm(1) para carregar no momento da inicialização, caso contrário, você pode ter alguma dificuldade para conseguir o controle da sua máquina.
Quando o xdm(1) inicializa, ele executa o /etc/X11/xdm/Xsession, que faz uma verificação para ver se o usuário tem um arquivo .xsession em seu diretório pessoal. Então, se você deseja mudar seu gerenciador de janela padrão, simplesmente execute-o (junto com outras coisas) no .xsession. Novamente, qualquer programa que você deseja que seja carregado com o X (por exemplo, três xterm(1)s) pode ser colocado aqui, mas todos devem executar em segundo plano, exceto o seu gerenciador de janela, que, novamente, quando termina sua execução, sua sessão X é encerrada. Nesse caso, o xdm(1) reinicia o X e mostra novamente a tela de início de sessão.
Diversos gerenciadores de janela (incluindo o cwm(1) e o fvwm(1)) oferecem a capacidade de mudar o gerenciador de janela durante a execução, sem ter que reinicializar o X ou qualquer um dos seus aplicativos. Seu novo gerenciador de janela substitui o antigo; terminar a execução do gerenciador de janela recém-carregado encerra o X, e ele não mostra o seu gerenciador de janela anterior. O fvwm(1) permite que você carregue um gerenciador de janela diferente clicando com o botão esquerdo no fundo da tela ("root window"), escolhendo "(Re)Start", e então selecionando o seu gerenciador de janela preferido (no entanto, note que você precisa adicionar seus gerenciadores de janela alternativos no seu arquivo .fvwmrc (a configuração a nível de sistema é /usr/X11R6/lib/X11/fvwm/.fvwmrc)). O cwm(1) permite que você execute outro gerenciador de janela usando as teclas Ctrl-Alt-w, e então digitando o nome do gerenciador que você deseja usar.$ startx /usr/local/bin/fluxbox
Após encontrar um gerenciador de janela que te agrade, você pode defini-lo como o programa final a ser executado pelos scripts de inicialização, como demonstrado acima.
[Índice da FAQ] [Seção 10 - Administração do Sistema] [Seção 12 - Questões Específicas de Hardware e Plataforma]