Como posso mover a posição relativa do framebuffer ou da tela X?

2

Há muito tempo atrás em uma galáxia muito, muito longe

Eu tinha uma tela de boot fixa usando esta boa solução . Desde aquela época eu tenho procurado a maneira de mover o framebuffer no console virtual ligeiramente para a direita e para baixo, relativamente à posição da tela X (ou vice-versa), porque é mostrado na posição errada e parte dos símbolos não pode ser vista . Eu reproduzi a aparência deste problema usando a ferramenta Crop e o comando fbgrab :

OmenuGRUBtambémescondeoladoesquerdoatrásdatela,maseunãoseicomofazercapturadetelasemoVirtualBox(eduvidoqueessacapturadetelasejaútil).Noentanto,atelaXprincipalmostra-senolugarcorreto(comomeparece),emeumonitor(ACERAL1916)sempreseauto-ajustaparaessaposição,mesmoqueoconsolevirtualsejamostrado.

Euolheiemmuitasfontes,incluindoAskUbuntu,masencontreiapenasumasolução:mudardecaboVGAparaDVI,oquenãoéaceitável,porqueminhaplacagráfica(NVIDIA6150SE)temapenasportaVGAonboard.

Tambémdescobriqueocomandofbsetpodeajustarosparâmetrosdatela,masprecisadeajudaparasabercomoissofunciona.Aquiestáasaídadocomandosudofbset:

mode"1280x1024-77"
    # D: 131.096 MHz, H: 80.328 kHz, V: 76.649 Hz
    geometry 1280 1024 1280 1024 32
    timings 7628 160 32 16 4 160 4
    rgba 8/16,8/8,8/0,8/24
endmode

UPD: durante o relato, um bug não afetado encontrou uma linha que diz:

.proc.driver.nvidia.warnings.fbdev:
 Your system is not currently configured to drive a VGA console
 on the primary VGA device. The NVIDIA Linux graphics driver
 requires the use of a text-mode VGA console. Use of other console
 drivers including, but not limited to, vesafb, may result in
 corruption and stability problems, and is not supported.

Então, alguém sabe como ajustar a posição do Virtual Console ou da tela X relativamente um ao outro?

    
por Danatela 12.04.2014 / 04:07

1 resposta

2

Eu tenho medo que o núcleo do seu problema esteja muito relacionado ao uso do VGA. O problema é que a sinalização VGA é analógica. Basicamente, os sinais analógicos emitidos pela placa de vídeo na porta hte VGA servem para acionar as bobinas eletromagnéticas e ajustar a saída da arma de elétrons em um monitor antigo baseado em tubo. Esses monitores antigos não tinham uma grade discreta de pixels e raramente exibiam a exibição de ponta a ponta.

Com um LCD que não é um dispositivo analógico, ao usar VGA o circuito no monitor LCD tem que (basicamente eu estou simplificando os detalhes aqui dramaticamente) basicamente emular como um monitor CRT antigo trabalha para converter os sinais de entrada em dados para cada um dos pixels dos LCDs. Isso não é de forma alguma um processo perfeito e, às vezes, o circuito do LCD terá problemas para sincronizar com o início da linha de varredura do sinal VGA. Muitas vezes, os displays LCD com entradas analógicas terão um botão de "ajuste automático" que acionará um algoritmo de "reconfiguração / ressincronização" dentro do display. Eu recomendo que você verifique o manual do seu LCD para mais detalhes.

Esta situação embaraçosa é a razão pela qual as pessoas que podem ser encorajadas a mudar para DVI onde os dados de pixel são transmitidos da placa de vídeo para o monitor digitalmente.

Em seu tipo de situação, descobri que o problema geralmente pode ser resolvido alterando a resolução e a taxa de atualização usadas pela placa de vídeo. Por exemplo, em um console de texto do Linux, tente o seguinte comando:

sudo fbset -a 1280x1024-60

Se isso funcionar, então isso confirmaria que o seu LCD está com problemas para sincronizar com a saída da sua placa de vídeo.

Gostaria de encorajá-lo a prestar atenção ao aviso do driver NVIDIA Linux e desabilitar os drivers de buffer de quadro do console se você quiser usar o driver proprietário da NVIDIA. Se o suporte ao framebuffer for importante, recomendo que você considere usar o driver nouveau que, dada a idade da sua placa de vídeo, deve funcionar muito bem.

Boa sorte.

    
por 08.05.2014 / 16:36