BIOS-POST durch Vortäuschen eines PCIe-Geräts manipulieren

BIOS-POST durch Vortäuschen eines PCIe-Geräts manipulieren

Ich möchte, dass der POST-Prozess im Bios davon ausgeht, dass eine Grafikkarte installiert ist. Das ist nötig, weil jemand, der nicht so schlau ist, entschieden hat, dass Karten ohne aktive Grafikkarte nicht booten sollen. Dies wurde bereits in anderen Fragen ausführlich behandelt:Benötigt ein moderner PC zum Betrieb eine Grafikkarte?

Mein Verständnis der BIOS/Hardware-Interaktion ist, dass das BIOS die Hardwareart auf einer sehr rudimentären Kommunikationsebene identifiziert, außerdem gibt es nicht viele Kanäle, auf denen eine solche Kommunikation stattfinden könnte (ich vermute Pin 7 A-Seite gegen Masse). Während bei USB-Geräten die Codes, die die Art des Geräts identifizieren, leicht im Internet zu finden sind, scheint dies bei PCIe-Geräten ein gut gehütetes Geheimnis zu sein oder eher durch Trivialitäten verschleiert zu werden. Dies muss jedoch Lehrbuchwissen sein, daher wäre ich froh, wenn jemand wüsste, wo dies angegeben ist oder besser, wie dies in der Praxis funktioniert.

Ich weiß, dass ich die Karte über das BIOS hinaus booten, die Grafikkarte herausziehen und einen SATA-Adapter anschließen kann. Schließlich ist PCIe Hot-Plug-fähig, also soll es so funktionieren. Aber dadurch wird der Neustart zu einer lästigen Pflicht, was manchmal dazu führt, dass ich Updates so lange verzögere, bis ich aus einem anderen Grund sowieso neu starten muss.

Antwort1

Die Geräteidentifikation von USB und PCI ist eigentlich sehr ähnlich. Im Fall von PCI (bei PCIe ist es dasselbe) befinden sich die Informationen im PCI-Konfigurationsheader. Diese erscheinen im physischen Adressraum an vorhersehbaren und daher aufzählbaren Stellen.

Das Format des Konfigurationsheaders ist sehr öffentlich. Es gibt einen Herstellercode, eine Produkt-ID, eine Subsystem-ID und eine Revisionsnummer. Es gibt auch einen „Klassen“-Code. Grafikkarten sind Klasse 030000. USB und PCI verwenden sogar denselben Satz Herstellercodes – beispielsweise ist Hersteller 0x8086 Intel.

Das ist es, wonach die Firmware sucht. Sie werden sie nicht täuschen können, indem Sie ein paar Pins miteinander verbinden. Sie benötigen das Skelett eines Standard-PCIe-Zielgeräts, das auf Abfragen mit einem ausgefüllten Konfigurationsheader antwortet.

Schlimmer noch: Ich glaube nicht, dass es ausreicht, ein „einfaches“ PCIe-Gerät zu bauen, das seine Geräte-ID und seinen Klassencode lügt. Ihre Firmware wirdreden mitdiese Grafikkarte mit der Standard-VGA-Registerschnittstelle, und das wird nicht funktionieren.

verwandte Informationen