공급업체로부터 최소 Linux 설치를 받았습니다. 이전 질문에 대한 답변을 통해 모듈 지원 여부에 관계없이 커널을 빌드하는 것이 가능하다는 것을 알았습니다. 연결해야 하는 CANBUS 장치가 있고 이 장치에는 .ko 파일 형식의 드라이버가 함께 제공됩니다. 제공된 설치 스크립트를 사용하여 설치하고 싶지만 먼저 내 커널이 모듈 지원으로 빌드되었는지 알아야 합니다. 명령줄에서 이를 감지할 수 있습니까?
실행할 때 lsmod
아무것도 반환하지 않으므로 현재 .ko 파일이 없다는 것을 알고 있습니다. 하지만 이는 커널이 .ko 파일을 설치하도록 허용하지 않는다는 의미입니까?
답변1
파일 시스템이 있는 경우 /proc
커널이 모듈 지원으로 컴파일된 경우에만 파일이 존재합니다. /proc/modules
파일이 존재하지만 비어 있으면 커널이 모듈을 지원하지만 현재 로드된 모듈이 없는 것입니다. 이 파일이 없으면 커널이 어떤 모듈도 로드할 수 없습니다.
기술적으로는 필요하지 않습니다 . /proc
커널 바이너리에서 존재 여부 init_module
와 시스템 호출을 확인할 수 있습니다. 압축된 바이너리(예: 또는 ) delete_module
만 있는 경우 쉽지 않을 수 있습니다 . 바라보다vmlinuz
uImage
vmlinuz를 vmlinux에 압축을 푸는 방법은 무엇입니까?을 위한 vmlinuz
. 대부분의 커널 압축을 성공적으로 풀면 문자열을 검색할 수 있습니다 sys_init_module
.
모듈이 지원되는 경우 자체 모듈을 컴파일하려면 추가 파일이 필요합니다.커널 헤더 파일. 이것들은 C 헤더 파일( *.h
)이며, 그 중 일부는 커널이 컴파일될 때 생성됩니다(그래서 커널 소스에서만 가져올 수는 없습니다). 바라보다커널 소스 트리에는 무엇이 포함되어 있나요? 이것은 Linux 커널 헤더 파일과 관련이 있습니까?
답변2
대부분의 배포판은 어딘가에 커널 구성이 포함된 텍스트 파일을 저장합니다. Debian 시스템에서는 /boot/config-<kernel_version>
.
grep
그런 다음 간단히 파일을 실행할 수 있습니다 .
grep CONFIG_MODULES /boot/config-<kernel_version>