Linux 커널(버전 3.19.0)에서 흥미로운 동작을 발견했습니다. 네트워크 드라이버를 테스트하고 있었는데 시스템이 완전히 중단되었으며 SysRq 명령에도 응답하지 않았습니다. 재부팅 후에도 테스트 중인 드라이버는 시작 시 로드되도록 구성되지 않았음에도 불구하고 여전히 로드된 것으로 표시되었습니다. 더 나쁜 것은 modprobe -r
또는 로 제거할 수 없다는 것입니다 rmmod -f
. 커널 로그에는 유용한 정보가 표시되지 않습니다.
우리는 계속해서 재시작을 시도했고 심지어 모듈을 블랙리스트에 추가하려고 시도했지만 항상 로드된 모듈로 표시되었습니다. 우리가 찾은 유일한 해결책은 커널( apt-get remove/install linux-image-$(uname-r)
)을 다시 설치하는 것이었습니다. 그러다가 사라지고 모든 것이 다시 완벽하게 작동하기 시작했습니다.
여기에서 무슨 일이 일어나고 있는지, 그리고 명시적으로 하지 말라고 지시했는데도 커널이 모듈을 로드하는 이유를 아는 사람이 있습니까?
편집하다:재구성해도 문제가 해결되지 않아 커널 패키지를 다시 설치해야 했습니다.
답변1
어쩌면 모듈이 initrd 단계에서 로드되었을 수도 있습니다. 이 단계에서 부트로더는 특수 파일을 로드하고 이를 커널에 전달합니다. 커널은 이를 파일 시스템으로 마운트하고 여기에서 다양한 모듈을 로드합니다. 원래 목적은 가능한 모든 드라이버를 커널로 컴파일하지 않고 루트 파일 시스템을 읽는 데 필요한 드라이버를 로드하는 것이었습니다. 다양한 배포판은 일반적으로 커널 업데이트 시 다양한 방식으로 initrd 파일을 재생성합니다. 데비안 기반 배포판을 사용하고 계시다면 다음을 시도하여 도움을 받으십시오:https://wiki.debian.org/KernelModule블랙리스트 작성.