Cheating BIOS POST falsificando um dispositivo PCIe

0

Eu quero que o processo POST do Bios acredite que uma placa gráfica esteja instalada. A necessidade surge porque alguém não tão inteligente decidiu que as placas sem placa de vídeo ativa não devem ser inicializadas. Isso foi abordado em outras questões antes, mais aprofundadas: Um PC moderno requer que uma placa gráfica seja executada?

Meu entendimento da interação BIOS / Hardware é tal que o Bios identifica as espécies de hardware em um nível muito rudimentar de comunicação, além disso não há muitos canais onde tal comunicação poderia ocorrer (suspeito pin 7 A-side contra ground ). Enquanto para dispositivos USB os códigos que identificam a natureza do dispositivo são fáceis de encontrar na web para dispositivos PCIe, este parece ser um segredo bem guardado ou um pouco ofuscado por trivialidades. No entanto, isso deve ser conhecimento de livro-texto, então eu ficaria feliz se alguém sabe onde isso é especificado ou melhor como isso funciona na prática.

Eu sei que posso inicializar a placa além da BIOS, puxar a placa gráfica para fora e conectar um adaptador SATA. Afinal PCIe é capaz de hot plug, então é assim que deve funcionar. Mas fazer isso torna a reinicialização uma tarefa às vezes fazendo com que eu atrase as atualizações até o ponto em que eu precisei reiniciar de qualquer maneira por algum outro motivo.

    
por nonsense 29.09.2015 / 00:38

1 resposta

2

A identificação do dispositivo USB e PCI é realmente muito semelhante. No caso do PCI (PCIe é o mesmo) a informação está no cabeçalho de configuração PCI. Eles aparecem no espaço de endereço físico em locais previsíveis e, portanto, inumeráveis.

O formato do cabeçalho de configuração é muito público. Existe um código do fornecedor, um ID do produto, um ID do subsistema e um número de revisão. Há também um código de "classe". As placas gráficas são da classe 030000. USB e PCI até usam o mesmo conjunto de códigos de fornecedores - por exemplo, o fornecedor 0x8086 é a Intel.

Isto é o que o firmware procura. Você não será capaz de enganá-lo conectando alguns pinos juntos. Você precisará do esqueleto de um dispositivo de destino PCIe padrão que responda às consultas com um cabeçalho de configuração preenchido.

Pior: não creio que criar um dispositivo PCIe "simples" que se encontre na ID do dispositivo e no código de classe seja suficiente. Seu firmware vai querer conversar com essa placa gráfica com a interface padrão de registro VGA, e isso não vai funcionar.

    
por 29.09.2015 / 02:37