Como detectar se um modo de vídeo da máquina de boot do Linux com UEFI é o protocolo de saída de gráficos (GOP) ou o adaptador universal de gráficos (UGA)?

4

O firmware UEFI parece suportar os protocolos gráficos GOP ou UGA. O GOP é mais novo e substituiu o UGA. Na minha máquina que não tem um adaptador gráfico integrado (apenas um adaptador gráfico discreto NVIDIA GTX 965m), descobri que ao iniciar ao vivo um CD de instalação do Linux, não há nenhum módulo do kernel guiando minha placa gráfica (verifiquei logs lspci e X) .

Depois de fazer algumas pesquisas sobre o UEFI, eu encontrei esses dois tipos de protocolos gráficos, e eu queria saber se havia uma maneira (uma consulta de linha de comando) para descobrir qual dos dois está sendo usado, porque parece que é o firmware UEFI que fornece a capacidade de controlar a exibição da minha máquina (provavelmente através da placa gráfica discreta "compatível com VGA").

Além disso, nas configurações do BIOS (ele ainda é chamado de configurações do BIOS ao usar o firmware UEFI?), também consegui alterar minhas configurações de ROM de vídeo para "Modo de compatibilidade do BIOS". Quando o deixei como "somente UEFI", obtive resolução total nas definições de configuração do BIOS e no visor do POST e na exibição do carregador de inicialização. Ao escolher o "modo de compatibilidade do BIOS", obtive uma resolução muito menor. Isso basicamente significa que o firmware foi capaz de usar o protocolo VGA?

    
por CMCDragonkai 24.01.2016 / 14:20

1 resposta

7

Para elaborar a resposta de Grawity, há várias questões, com vários graus de relevância, para sua pergunta:

  • UGA vs. GOP - Como você disse, existem dois sistemas de vídeo EFI, UGA e GOP. O último foi introduzido com o EFI 2.x (também conhecido como UEFI), IIRC e AFAIK. Todos os sistemas baseados em UEFI usam o GOP. Em princípio, todos os sistemas EFI 1.x devem usar UGA; no entanto, a Apple (que ainda usa o EFI 1.x, mesmo em seus produtos mais recentes) portou o UGA para o EFI, portanto alguns (mas não todos) Macs têm o EFI 1.x com o GOP. Pode haver outras exceções excêntricas. Como diz Grawity, essa distinção é importante no nível do firmware, mas não no nível do SO, pelo menos não no AFAIK.
  • Dispositivos de framebuffer do Linux - Seja UGA ou GOP, o firmware dá ao sistema operacional acesso ao seu hardware de vídeo, que o Linux expõe através de um dispositivo framebuffer - especificamente, efifb . Em sistemas baseados em EFI, isso geralmente é a base para a operação no modo de texto (se você não iniciar o X ou se pressionar Ctrl + Alt + F1 através de Ctrl + Alt + F6). OTOH, também existem dispositivos framebuffer fornecidos por alguns drivers de kernel para chipsets de vídeo específicos, então você pode não acabar usando o dispositivo efifb . Eu não sei de improviso se há alguma diferença na forma como a UGA e o GOP se apresentam para o sistema operacional. Certamente não conheço diferenças em um nível mais alto, como comandos que você usaria no Linux.
  • Drivers do X Window System - Os drivers X podem contar com drivers de vídeo do kernel ou ser basicamente independentes deles. Na maioria dos casos, você usa um driver X escrito para um chipset de vídeo específico (ATI, Nvidia, Intel etc.), e eles não funcionam através do firmware. Assim, esses drivers não devem ser afetados por UGA vs. GOP (ou mesmo BIOS vs. EFI, embora haja algumas ressalvas sobre isso). Dito isso, há um driver X framebuffer que funcionará por meio de qualquer dispositivo framebuffer ativo, incluindo o dispositivo efifb . Assim, você poderia estar dirigindo uma tela através dos modos UGA ou GOP da EFI. No entanto, esta é definitivamente uma maneira insatisfatória de fazê-lo, porque os drivers de framebuffer tendem a ser lentos. Ambientes modernos de janelas, incluindo o Unity, do Ubuntu, estão cada vez mais contando com recursos de aceleração de vídeo que não são acessíveis através de um framebuffer.

Você pode ver um pouco disso trabalhando examinando o buffer de anel do kernel via dmesg , como em:

$ dmesg | grep fb
[    0.625015] efifb: probing for efifb
[    0.625207] efifb: framebuffer at 0xc0000000, mapped to 0xffffc90010880000, using 3072k, total 3072k
[    0.625208] efifb: mode is 1024x768x32, linelength=4096, pages=1
[    0.625209] efifb: scrolling: redraw
[    0.625210] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    0.627994] fb0: EFI VGA frame buffer device
[    6.086695] fb: conflicting fb hw usage radeondrmfb vs EFI VGA - removing generic driver
[    6.689526] [drm] fb mappable at 0xC1488000
[    6.689531] [drm] fb depth is 24
[    6.689610] fbcon: radeondrmfb (fb0) is primary device
[    6.804904] radeon 0000:00:01.0: fb0: radeondrmfb frame buffer device

Este exemplo mostra várias mensagens relacionadas ao framebuffer em um sistema com uma GPU AMD / ATI. Você notará que não há menção de UGA vs. GOP, mas o dispositivo efifb é referenciado, assim como fbcon (o console framebuffer) e radeondrmfb (o dispositivo framebuffer para dispositivos ATI / AMD Radeon). A mensagem removing generic driver indica uma transferência do driver efifb para o driver radeondrmfb . Você também pode examinar /var/log/Xorg.0.log para mensagens relacionadas ao servidor X. No caso do meu sistema, eles são menos interessantes, mas se você está tendo problemas com o X inicial, Xorg.0.log pode ser mais interessante para você.

Mais um ponto: ao pedir ajuda sobre problemas de hardware, geralmente é importante que você especifique qual é o seu hardware - "um adaptador gráfico discreto" é insuficientemente específico ao solicitar ajuda sobre seu problema de vídeo. Por falar nisso, não está claro qual é o seu problema - ou você está simplesmente procurando informações sobre como tudo se encaixa para ampliar sua compreensão?

    
por 25.01.2016 / 00:54