제가 이해한 바에 따르면 커널은 특정 장치 트리를 통해 시스템의 다양한 하드웨어와 통신하는 방법을 이해하고 있습니다.
Ubuntu의 한 버전을 다운로드하여 하드웨어가 다를 수 있는 시스템에 설치할 수 있는 이유는 무엇입니까?
BeagleBone 임베디드 보드도 마찬가지입니다. 다양한 주변 장치를 사용하여 다양한 유형의 BeagleBone 보드에 플래시할 수 있는 기본 Debian 이미지가 있습니다. 동일한 이미지가 모든 사람에게 작동할 때 어떤 장치 트리/장치 트리 오버레이를 사용할지 어떻게 알 수 있나요?
답변1
장치 드라이버(즉, 하드웨어와 직접 상호 작용하는 커널 부분)는 커널 모듈로 컴파일될 수 있습니다. 이는 시스템의 하드웨어에 따라 필요에 따라 커널에 의해 로드되거나 언로드될 수 있는 별도의 파일입니다.
주류 Linux 배포판과 함께 제공되는 일반 커널에는 생각할 수 있는 모든 하드웨어에 대한 모듈로 컴파일된 모든 드라이버가 함께 제공되는 경향이 있습니다. 따라서 커널이 특정 시스템에서 시작되면 시스템에 어떤 하드웨어가 있는지 조사하고 감지한 다음 사용자 공간 프로그램에 udev
특정 하드웨어에 필요한 커널 모듈을 로드하도록 지시합니다.
답변2
이것Linux 커널 다이어그램장치 제어에 대한 일부 세부정보를 표시합니다. 여기에는 "드라이버"와 "기준 치수”는 “로드 가능한 커널 모듈”을 통해 확장될 수 있습니다.
예: USB 장치에는 일반적으로 장치가 연결될 때 로드되는 모듈이 있는 반면, USB 루트 허브는 커널에 정적으로 연결되며 nVidia 카드에는 nVidia에서 드라이버를 다운로드해야 합니다.
이것이 대부분의 배포판이 다양한 하드웨어에서 실행되지만 반드시 모든 하드웨어에서 실행되는 것은 아닙니다.아주 새로운하드웨어에는 별도의 모듈이나 드라이버가 필요할 수 있습니다.
드라이버와 모듈의 차이점에 대한 추가 정보이봐
커널이 로드할 모듈을 아는 방법은 하드웨어 계층에 깊이 들어가며 열거형을 통해 이를 수행합니다.
- PCI 버스
- SCSI 버스
- USB 허브
- DSP...