Arch Linux를 새로 설치했습니다. modprobe
.dll을 사용하여 커널 모듈을 설정할 수 없습니다 . 예를 들어 실행하면 sudo modprobe r8169
오류가 발생합니다 modprobe: FATAL: Module r8169 not found in directory /lib/modules/4.8.13-1-ARCH
.
콘텐츠 /lib/modules
:
$ ls -1 /lib/modules
4.10.8-1-ARCH
extramodules-4.10-ARCH
결과 uname -r
:
$ uname -r
4.8.13-1-ARCH
단순히 일치하도록 모듈 디렉토리의 이름을 바꾸는 것이 안전합니까 uname -r
?
답변1
/lib/modules
설치된 각 커널 버전에 대한 하위 디렉터리가 있습니다. 분명히 마지막 재부팅 이후 커널을 업그레이드했으며 4.8.13-1을 실행 중이고 4.10.8-1로 업그레이드했습니다. 커널 업그레이드는 재부팅 후에만 적용됩니다.
모듈은 정확히 동일한 커널 버전에 로드되고 동일한 옵션으로 컴파일되어야 합니다. (예외도 있지만 이를 위해 모듈을 신중하게 설계해야 합니다. 커널 자체와 함께 제공되는 모듈은 다른 커널에서 작동할 수 있도록 허용하는 고리를 뛰어넘지 않습니다.)
따라서 아직 실행 중인 커널 버전을 제거해서는 안 됩니다. 실행 중인 커널이 포함된 파일을 제거하는 것은 해롭지 않습니다. 파일은 시작 시에만 사용됩니다. 그러나 커널 패키지를 제거하면 모듈도 제거됩니다. 즉, 새 드라이버를 로드할 수 없습니다.
실행 중인 커널 버전을 제거하지 말아야 하는 또 다른 이유는 설치한 새 커널에 버그가 있는 경우 테스트를 거친 이전 커널을 사용하면 계속 부팅할 수 있다는 점입니다. 분명히 커널은 배포되기 전에 테스트되지만 때로는 하드웨어 관련 버그로 인해 커널이 빠져나갈 수 있습니다.
자동 업그레이드 스크립트가 포함된 배포판은 일반적으로 실행 중인 커널을 제거하지 않도록 주의합니다. 이것이 Arch에서 어떻게 작동하는지 모르겠지만 Arch는 매우 실용적이므로 수동으로 처리해야 합니다. 올바른 커널 버전을 다시 설치해도 여전히 모듈을 로드할 수 있습니다.