어떤 모듈을 올리시는지 모르겠습니다만,
/etc/modprobe.d/ 에 conf를 생성하시면 됩니다.
예를 들어, RTL8168B 라는 랜카드 모듈을 올리신다면,
/etc/modprobe.d/RTL8168B.conf 와 같은 비슷한 이름의 파일(단 .conf 확장자는 맞춰주시면)을 만드시고 모듈 추가 명령어를 써주시면 됩니다.
그리고 이미 이전 드라이버가 존재한다면, /etc/modprobe.d/blacklist.conf 에 명시해서 새 드라이버와 충돌나지 않게 해주시구요.
man modprobe.conf
설명에 의하면 아직까지는 /etc/modprobe.conf 파일도 존재할 경우에 해당 내용을 인식하지만, 곧 이 기능은 삭제될 거라고 하네요.
CentOS 6.3 버전에서 확인했습니다.
/etc/modprobe.d/ 에 conf를 생성
어떤 모듈을 올리시는지 모르겠습니다만,
/etc/modprobe.d/ 에 conf를 생성하시면 됩니다.
예를 들어, RTL8168B 라는 랜카드 모듈을 올리신다면,
/etc/modprobe.d/RTL8168B.conf 와 같은 비슷한 이름의 파일(단 .conf 확장자는 맞춰주시면)을 만드시고 모듈 추가 명령어를 써주시면 됩니다.
그리고 이미 이전 드라이버가 존재한다면, /etc/modprobe.d/blacklist.conf 에 명시해서 새 드라이버와 충돌나지 않게 해주시구요.
man modprobe.conf
설명에 의하면 아직까지는 /etc/modprobe.conf 파일도 존재할 경우에 해당 내용을 인식하지만, 곧 이 기능은 삭제될 거라고 하네요.
CentOS 6.3 버전에서 확인했습니다.
/etc/modprobe.d/ 에 conf를 생성
제가 만든 모듈을 올릴려고 하는데요
제가 만든 모듈이 module_a.c, module_b.c 이렇게 두개의 소스파일로 만들어서 my_module.ko로 컴파일을 했는데
그렇다면 /etc/modprobe.d/에 my_module.conf를 생성해서 alias my_mod my_module 이렇게 작성을 하면 되나요?
alias 말고 다른 명령(install, options)도 적어줘야 되나요?
그리고 제가 만든 모듈 컴파일된 .ko파일이 /home/user/workspace/my_module/ 디렉터리 아래에 있는데 경로도 따로 지정을 해줘야 되나요?
마지막으로 conf 파일을 다 작성하고 터미널에서 modprobe my_module라고 명령어 입력을 하면 되는건가요?
제가 처음 해보는거라서 질문이 많은데 알고 계신다면 알려주시면 감사하겠습니다. ㅠ
그리고 참고할 수 있는 사이트나 블로그, 책이 있으시면 좀 알려주세요 ㅠ
modprobe 명령어만 써도 됩니다.
사실 저도 직접적으로 conf 파일을 만들어서 등록하기보다.
modprobe [module name]
으로 등록을 합니다.
이렇게 하시면, /lib/modules/$(uname -r) 경로에 해당 ko 파일이 설치됩니다.
참고할 수 있는 사이트나 블로그는 따로 알고 있는 건 없습니다만... 저는 구글 검색을 합니다.
한가지 팁을 드리면 구글 검색창에서 특정 사이트만 검색하기 위해서
검색어 site:centos.org
검색어 site:stackoverflow.com
로 찾아보시면 대충 사람들이 어떤 명령어를 쓰는구나 파악하시고 man 페이지를 열어서 자세한 내용을 보시면 될 것 같습니다.
감사합니다.
덕분에 modprobe는 해결했습니다.
정확한 방법인지는 모르겠지만 modprobe로 해결이 되니 된거겠죠 ㅋ;
제가 사용한 방법은
1. ~/workspace/ 디렉터리에 모듈 소스파일 module_a.c module_b.c를 작성
2. Makefile에 모듈 컴파일과 아래 코드 작성
install:
$(MAKE) -C $(KDIR) M=$(PWD) INSTALL_MOD_PATH=$(INSTALL_ROOT) modules_install
3. 모듈 컴파일(make)을 해서 module.ko 파일 생성 후 sudo make install을 수행
4. sudo modprobe module을 하면 모듈이 올라감
5. 모듈 소스를 수정하면 3번부터 다시 수행
저는 위에 방법을 사용하니 해결이 되었습니다.
문제는 부팅시 모듈이 자동으로 올라가게 해야 된다는건데..
검색을 해보니까 /etc/rc.d/rc.local 스크립트가 부팅시 한번 수행이 된다고 rc.local에
# Update kernel-module dependencies file
[ -x /sbin/depmod ] &
# Start kerneld
[ -x /sbin/kerneld ] &
추가를 하면 된다고 해서 제가 필요한 방향으로 수정을 해서
# Update kernel-module dependencies file
[ -x /sbin/depmod ] &
# Start Module modprobe
[ -x /sbin/modprobe ] &
이렇게 추가를 했는데 모듈이 자동으로 올라가진 않네요 ㅠ
혹시 부팅 때 모듈이 자동으로 올라가게 하는 방법은 아시나요?
음.. 이상하군요?
지금 제가 직접 모듈 추가/삭제 테스트해보진 않았지만,
제 기억으론 modprobe 또는 insmod 하면, 부팅시 올라오는 걸로 기억합니다.
혹시 다른 모듈이랑 충돌나는게 아닐까요?
예를 들면 r8168 모듈을 추가하셨는데 커널에 r8169 모듈도 등록되어있으면 제대로 동작하지 않더군요.
modprobe -r 또는 rmmod로 충돌날만한 다른 버전의 모듈을 제거하셨는지요?
이건 여담으로 insmod/rmmod 대신에 modprobe 을 쓰시는게 좋습니다.
댓글 달기