장치별로 식별되는 펌웨어 바이너리

장치별로 식별되는 펌웨어 바이너리

바이너리 파일과 같은 장치에서 펌웨어 바이너리 파일을 식별하는 방법은 해당 장치를 의미합니다. 여기서 커널의 역할은 무엇입니까?

답변1

하드웨어 장치는 펌웨어 파일의 이름을 지정하지 않습니다. 장치 드라이버가 그렇게 합니다.

일반적으로 커널은 표준화된 식별자(예: PCI/PCIe 또는 USB 버스의 공급업체/제품 ID 또는 DMI 정보)를 기반으로 하드웨어를 감지하거나 장치가 거기에 있어야 한다는 것을 이미 알고 있을 수 있습니다(플랫폼 장치, 기반 ARM과 같은 일부 아키텍처의 장치 트리 정보) 또는 관리자 또는 시스템 시작 스크립트가 커널에 특정 드라이버를 로드하도록 명시적으로 지시할 수 있습니다(완전 자동이 아닌 이전 ISA 아키텍처 기반의 일부 x86 레거시 장치에서 여전히 사용됨). -감지 가능).

그러면 드라이버는 하드웨어 공급업체에서 문서화하거나 리버스 엔지니어링한 방법을 사용하여 장치가 존재하는지 확인하고 장치 상태를 확인하려고 시도합니다. 장치에 펌웨어가 필요한 경우 드라이버에는 적절한 펌웨어 파일을 로드하는 데 필요한 커널 호출이 포함됩니다. 펌웨어 데이터가 메모리에 로드되면 드라이버는 해당 특정 하드웨어에 적합한 방법을 사용하여 이를 하드웨어 장치로 보냅니다.

하드웨어 장치 자체는 펌웨어 데이터가 올바른지 검증할 수도 있고 그렇지 않을 수도 있습니다. 가장 단순한 하드웨어 설계는 단순히 드라이버가 제공하는 펌웨어가 정확하다고 믿을 수 있으며, 이것이 사실이 아닌 경우 중단될 수 있으며, 장치를 다시 사용할 수 있도록 하려면 장치별 재설정 시퀀스나 전원 끄기/플러그 분리가 필요할 수도 있습니다. 다른 극단적인 경우, 펌웨어는 장치 하드웨어에 내장된 확인/암호 해독을 위한 적절한 키와 기능을 사용하여 암호화 방식으로 서명되거나 암호화될 수도 있습니다.

하드웨어 자체에 펌웨어 확인/암호 해독 논리를 추가하면 하드웨어 장치의 가격과 복잡성이 증가하므로 일반적으로 제조업체는 비표준 펌웨어를 사용하여 장치 자체가 작동하지 않는 것보다 더 심각한 문제가 발생할 수 있는 경우에만 그렇게 합니다. 예를 들어 WiFi 장치 펌웨어는 사용되는 주파수와 전력 수준을 조절할 수 있으므로 잘못된 펌웨어로 인해 장치가 금지된 주파수로 전송하게 되어 잠재적으로 항공 교통 관제 레이더(민간 또는 군사)에 간섭을 일으킬 수 있습니다. 이는 매우 심각한 결과를 초래할 수 있으므로 하드웨어 제조업체는 해당 규정을 준수하도록 인증된 펌웨어 버전만 사용할 수 있도록 하는 인센티브를 갖습니다.

관련 정보