Trapacear o BIOS POST falsificando um dispositivo PCIe

Trapacear o BIOS POST falsificando um dispositivo PCIe

Quero deixar o processo Bios POST acreditar que uma placa gráfica está instalada. A necessidade surge porque alguém não tão inteligente decidiu que placas sem placa de vídeo ativa não deveriam inicializar. Isso já foi abordado em outras questões anteriores, mais aprofundadas:Um PC moderno requer uma placa gráfica para funcionar?

Meu entendimento da interação BIOS/Hardware é tal que o Bios identifica as espécies de hardware em um nível de comunicação muito rudimentar; além disso, não há muitos canais onde tal comunicação possa ocorrer (suspeito do pino 7 do lado A contra o terra). Embora para dispositivos USB os códigos que identificam a natureza do dispositivo sejam fáceis de encontrar na web para dispositivos PCIe, este parece ser um segredo bem guardado ou melhor, ofuscado por curiosidades. No entanto, isso deve ser um conhecimento didático, então ficaria feliz se alguém soubesse onde isso é especificado ou melhor como funciona na prática.

Eu sei que posso inicializar a placa além do BIOS, retirar a placa gráfica e conectar um adaptador SATA. Afinal, o PCIe é compatível com hot-plug, então é assim que deve funcionar. Mas fazer isso torna a reinicialização uma espécie de tarefa árdua, às vezes me fazendo atrasar as atualizações a ponto de precisar reiniciar de qualquer maneira por algum outro motivo.

Responder1

A identificação de dispositivos USB e PCI são, na verdade, muito semelhantes. No caso do PCI (PCIe é o mesmo) as informações estão no cabeçalho de configuração do PCI. Eles aparecem no espaço de endereço físico em locais previsíveis e, portanto, enumeráveis.

O formato do cabeçalho de configuração é muito público. Há 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 usam até o mesmo conjunto de códigos de fornecedor - por exemplo, o fornecedor 0x8086 é Intel.

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

Pior: não acho que criar um dispositivo PCIe "simples" que menta sobre seu ID de dispositivo e código de classe seja suficiente. Seu firmware vai quererfalar comaquela placa gráfica com interface de registro VGA padrão, e isso não vai funcionar.

informação relacionada