insmod와 modprobe의 차이점은 무엇입니까?


답변:


28

man insmod:

대부분의 사용자는 대신 modprobe를 사용하려고합니다. 이는보다 영리하며 모듈 종속성을 처리 할 수 ​​있습니다.


2
아 죄송합니다.
NES

39

modprobe모듈을 읽 /lib/modules/$(uname -r)/modules.dep.bin거나 .bin다른 파일을 사용할 수 없는 경우 접미사 없이 모듈을 읽습니다 . 동일한 파일에서 종속성이로드됩니다.

modprobe.ko파일 이름 /lib/modules/$(uname -r)(예 : nvidia-current파일 dkms/nvidia-current.ko)과 별칭 ( modules.alias.bin)을 허용합니다. 내장 ( modules.alias.bin)도 인식되지만 이러한 모듈은 기본적으로로드되므로 이러한 종류의 모듈을 수정하는 데는 아무런 의미가 없습니다.

insmod반면에 파일 경로를 허용합니다. 모듈은에 상주하지 않아도 /lib/modules/$(uname -r)되지만 종속성이 자동으로로드되지는 않습니다. modprobe모듈을로드 하는 데 사용되는 하위 프로그램 입니다.

모듈과 관련된 다른 프로그램은 rmmodmodinfo입니다.

rmmod에서 이름을 기반으로 커널 이름을 제거합니다 /proc/modules. 이 이름은 반드시 전달 된 이름과 동일 할 필요는 없습니다 modprobe( 예를 들어 nvidia-current파일의 경우 nvidia).

modinfo파일 이름 또는에 .ko접미사가 없는 파일 이름을 허용합니다 /lib/modules/$(uname -r).


3

modprobe지능형 명령이며 모듈을로드하는 동안 종속성을 찾습니다. 다른 모듈에 정의 된 기호가있는 모듈을로드 한 경우 (이 모듈 경로는 기본 모듈 내에 제공됨) 따라서 modprobe메인 모듈과 종속 모듈을로드합니다.

그러나 insmod사용되는 경우 종속성을로드하지 않으므로 컴파일 오류가 발생합니다 Unresolved symbols. 이 경우 종속 모듈을 수동으로 찾아 오류를 해결하기 위해로드해야합니다.


0

modprobe 유틸리티는 간단히 언급 할 가치가 있습니다. insmod와 같이 modprobe는 모듈을 커널에로드합니다. 현재 커널에 정의되어 있지 않은 기호를 참조하는지로드하기 위해로드 할 모듈을 볼 수 있다는 점이 다릅니다. 그러한 참조가 있으면 modprobe는 현재 기호를 정의하는 현재 모듈 검색 경로에서 다른 모듈을 찾습니다. modprobe가 (로드 될 모듈에 필요한) 해당 모듈을 찾으면 커널에도로드합니다. 이 상황에서 insmod를 대신 사용하면 시스템 로그 파일에 "unresolved symbols"메시지가 남고 명령이 실패합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.