마치 바이너리가 해당 장치에 특정한 것처럼 장치에서 펌웨어 바이너리를 인식하는 방법입니다. 여기서 커널의 역할은 무엇입니까?
답변1
하드웨어 장치는 펌웨어 파일의 이름을 지정하지 않습니다. 장치 드라이버가 이를 지정합니다.
일반적으로 커널은 표준화된 식별자(예: PCI/PCIe 또는 USB 버스의 공급업체/제품 ID 또는 DMI 정보)를 기반으로 하드웨어를 감지할 수 있거나 장치가 존재해야 한다는 것을 이미 알고 있을 수 있습니다(플랫폼 장치; 기반 일부 아키텍처(예: ARM의 장치 트리 정보)에서 또는 관리자 또는 시스템 시작 스크립트가 커널에 특정 드라이버를 로드하도록 명시적으로 지시할 수 있습니다(완전 자동이 아닌 이전 ISA 아키텍처를 기반으로 하는 일부 이전 x86 장치에서는 여전히 작동함). - 감지 가능).
그런 다음 드라이버는 하드웨어 공급업체가 문서화하거나 리버스 엔지니어링한 방법을 사용하여 장치의 존재를 확인하고 장치의 상태를 확인하려고 시도합니다. 장치에 펌웨어가 필요한 경우 드라이버에는 적절한 펌웨어 파일을 로드하는 데 필요한 커널 호출이 포함됩니다. 펌웨어 데이터가 메모리에 로드되면 드라이버는 해당 특정 하드웨어에 적합한 방법을 사용하여 이를 하드웨어 장치로 보냅니다.
하드웨어 장치 자체는 펌웨어 데이터가 올바른지 확인할 수도 있고 그렇지 않을 수도 있습니다. 가장 단순한 하드웨어 설계는 드라이버가 제공하는 펌웨어가 정확하다고 믿을 수 있으며, 그렇지 않은 경우 작동이 중단되거나 장치별 재설정 시퀀스가 필요할 수도 있고 장치를 다시 사용할 수 있도록 전원을 끄거나 플러그를 뽑아야 할 수도 있습니다. . 다른 극단적인 경우, 펌웨어는 장치 하드웨어에 내장된 펌웨어를 확인/암호 해독하는 데 사용되는 적절한 키와 기능을 사용하여 암호화 서명되거나 암호화될 수도 있습니다.
하드웨어 자체에 펌웨어 확인/암호 해독 로직을 추가하면 하드웨어 장치의 가격과 복잡성이 증가하므로 제조업체는 일반적으로 비표준 펌웨어를 사용할 경우 장치 자체가 작동하지 않는 것보다 더 심각한 문제를 일으킬 수 있는 경우에만 이를 수행합니다. 따라서 잘못된 펌웨어로 인해 장치가 금지된 주파수로 전송되어 잠재적으로 항공 교통 관제 레이더(민간 또는 군대)에 간섭을 일으킬 수 있습니다. 이는 매우 심각한 결과를 초래할 수 있으므로 하드웨어 제조업체는 적절한 규정을 준수하도록 인증된 펌웨어 버전만 사용하도록 하는 인센티브를 갖습니다.