PCIe 장치를 속여 BIOS POST를 속이는 행위

PCIe 장치를 속여 BIOS POST를 속이는 행위

Bios POST 프로세스에서 그래픽 카드가 설치되었다고 믿게 하고 싶습니다. 그렇게 영리하지 못한 누군가가 활성 비디오 카드가 없는 보드는 부팅하지 않기로 결정했기 때문에 이러한 필요성이 발생합니다. 이 문제는 이전에 가장 심층적으로 다른 질문에서 해결되었습니다.최신 PC를 실행하려면 그래픽 카드가 필요합니까?

BIOS/하드웨어 상호 작용에 대한 나의 이해는 Bios가 매우 기본적인 통신 수준에서 하드웨어 종류를 식별하고 더욱이 그러한 통신이 발생할 수 있는 채널이 많지 않다는 것입니다(핀 7 A 측이 접지에 대해 의심됩니다). USB 장치의 경우 장치의 특성을 식별하는 코드는 PCIe 장치의 웹에서 쉽게 찾을 수 있지만 이는 잘 보호된 비밀이거나 오히려 퀴즈로 인해 난독화된 것처럼 보입니다. 그러나 이것은 교과서 지식임에 틀림없기 때문에 이것이 어디에 명시되어 있는지 또는 이것이 실제로 어떻게 작동하는지 더 잘 아는 사람이 있다면 기쁠 것입니다.

BIOS를 거쳐 보드를 부팅하고 그래픽 카드를 빼낸 다음 SATA 어댑터를 연결할 수 있다는 것을 알고 있습니다. 결국 PCIe는 핫 플러그가 가능하므로 이것이 작동하는 방식입니다. 하지만 이렇게 하면 재부팅이 일종의 귀찮은 일이 되어 다른 이유로 재부팅해야 하는 지점까지 업데이트가 지연되는 경우가 있습니다.

답변1

USB와 PCI 장치 식별은 실제로 매우 유사합니다. PCI의 경우(PCIe도 동일) 정보는 PCI 구성 헤더에 있습니다. 이는 예측 가능하고 셀 수 없는 위치의 물리적 주소 공간에 나타납니다.

구성 헤더의 형식은 매우 공개적입니다. 공급업체 코드, 제품 ID, 하위 시스템 ID 및 개정 번호가 있습니다. "클래스" 코드도 있습니다. 그래픽 카드는 클래스 030000입니다. USB와 PCI도 동일한 공급업체 코드 세트를 사용합니다. 예를 들어 공급업체 0x8086은 Intel입니다.

이것이 펌웨어가 찾는 것입니다. 두 개의 핀을 함께 연결하여 속일 수는 없습니다. 채워진 구성 헤더가 있는 쿼리에 응답하는 표준 PCIe 대상 장치의 골격이 필요합니다.

더 나쁜 점은 장치 ID와 클래스 코드에 관한 "간단한" PCIe 장치를 만드는 것만으로는 충분하지 않다고 생각합니다. 귀하의 펌웨어는 다음을 원할 것입니다.이야기하다표준 VGA 레지스터 인터페이스가 있는 그래픽 카드를 사용하면 작동하지 않습니다.

관련 정보