맞춤 제작 커널이 모듈 지원으로 구축되었는지 감지할 수 있습니까?

맞춤 제작 커널이 모듈 지원으로 구축되었는지 감지할 수 있습니까?

공급업체에서 최소한의 Linux 설치를 제공받았습니다. 이전 질문에 대한 답변에서 나는 모듈 지원 여부에 관계없이 커널을 구축하는 것이 가능하다는 것을 발견했습니다. .ko 파일 형식의 드라이버와 함께 제공되는 CANBUS 장치를 연결해야 합니다. 제공된 설치 스크립트를 사용하여 이를 설치할 수 있기를 원하지만 먼저 내 커널이 모듈 지원으로 구축되었는지 알아야 합니다. 명령줄에서 이를 감지할 수 있습니까??

실행하면 lsmod아무것도 반환되지 않으므로 현재 거기에 .ko 파일이 없다는 것을 알 수 있습니다. 그러나 이는 커널이 .ko 파일 설치를 허용하지 않는다는 의미입니까?

답변1

파일 시스템이 있는 경우 커널이 모듈 지원으로 컴파일된 경우에만 /proc파일이 존재합니다. /proc/modules파일이 존재하지만 비어 있으면 커널이 모듈을 지원하지만 현재 아무 것도 로드되지 않은 것입니다. 파일이 없으면 커널은 모듈을 로드할 수 없습니다.

.NET Framework 없이 로드 가능한 모듈을 지원하는 것은 기술적으로 가능합니다 /proc. 커널 바이너리에 init_module및 시스템 호출 이 있는지 확인할 수 있습니다 . 압축된 바이너리(예: 또는 ) delete_module만 있는 경우 쉽지 않을 수 있습니다 . 보다vmlinuzuImagevmlinuz를 vmlinux로 어떻게 압축 해제합니까?을 위한 vmlinuz. 커널의 대부분을 압축 해제한 후에는 문자열을 검색하세요 sys_init_module.

모듈이 지원되는 경우 어쨌든 자체 모듈을 컴파일하려면 추가 파일이 필요합니다.커널 헤더. 이는 C 헤더 파일( *.h)이며, 그 중 일부는 커널이 컴파일될 때 생성됩니다(그래서 커널 소스에서 가져올 수는 없습니다). 보다커널 소스 트리에는 무엇이 포함되어 있나요? 이것은 Linux 커널 헤더와 관련이 있습니까?

답변2

대부분의 배포판은 어딘가에 커널 구성이 포함된 텍스트 파일을 저장합니다. 데비안 시스템에서는 /boot/config-<kernel_version>.

grep그런 다음 해당 파일에서 간단히 실행할 수 있습니다 .

grep CONFIG_MODULES /boot/config-<kernel_version>

관련 정보