리눅스 커널은 모듈러 방식으로 설계되었습니다. 시스템 부팅시 오직 최소량의 상주 커널만이 메모리에 로드됩니다. 따라서 사용자가 상주 커널 외부의 기능을 요청할 때마다, 가끔씩 드라이버라고도 불리우는 커널 모듈이 동적으로 메모리에 로드됩니다.
설치 과정에서 시스템 상의 하드웨어가 자동 검색됩니다. 이러한 검색 결과와 사용자가 제공한 정보에 기초하여, 설치 프로그램은 부팅시 어떠한 모듈을 로딩할 것인지 결정합니다. 설치 프로그램은 동적 로딩 메커니즘이 '투명하게' (transparently - 사용자가 시스템이나 장치를 사용할 때, 그 존재와 메커니즘을 의식하지 않고도 사용할 수 있는 성격을 가리킵니다) 작동하도록 설정합니다.
설치를 마친 후 새로운 하드웨어가 추가된 경우, 만일 그 하드웨어가 커널 모듈을 필요로 한다면, 새로운 하드웨어에 사용될 적절한 커널 모듈을 로드하도록 시스템을 설정하셔야 합니다. 새로운 하드웨어가 추가된 시스템이 부팅되면, Kudzu 프로그램이 실행됩니다. 이 프로그램은 검색된 지원 가능한 하드웨어에 맞는 모듈을 설정합니다. 또는 여러분이 직접 모듈 설정 파일인 /etc/modules.conf을 편집하여 새로운 드라이버를 지정하시는 방법도 있습니다.
![]() | 알림 |
|---|---|
X 윈도우 시스템 인터페이스를 표시하는데 사용되는 비디오 카드 모듈은 커널 패키지가 아닌 XFree86 패키지의 일부입니다; 따라서, 이 장에서는 비디오 카드 모듈에 대하여 다루고 있지 않습니다. |
예를 들어, SMC EtherPower 10 PCI 네트워크 어댑터를 포함한 시스템의 경우, 모듈 설정 파일에는 다음과 같은 줄이 포함됩니다
alias eth0 tulip |
첫번째 카드와 동일한 두번째 네트워크 카드를 시스템에 추가하시면, 다음과 같은 줄을 /etc/modules.conf 파일에 추가하십시오:
alias eth1 tulip |
알파벳 순서로 구성된 커널 모듈과 모듈이 지원하는 하드웨어의 목록을 보시려면 Red Hat Linux 참조 가이드를 참조하시기 바랍니다.
modutils 패키지가 설치되어 있다면, 커널 모듈을 관리할 수 있는 다양한 명령어를 사용 가능합니다. 다음과 같은 명령어는 모듈이 성공적으로 로드되었는지 확인하거나 새로운 하드웨어에 다른 모듈을 시도할 때 유용합니다.
/sbin/lsmod 명령은 현재 로드된 모듈의 목록을 보여줍니다. 예시:
Module Size Used by Not tainted iptable_filter 2412 0 (autoclean) (unused) ip_tables 15864 1 [iptable_filter] nfs 84632 1 (autoclean) lockd 59536 1 (autoclean) [nfs] sunrpc 87452 1 (autoclean) [nfs lockd] soundcore 7044 0 (autoclean) ide-cd 35836 0 (autoclean) cdrom 34144 0 (autoclean) [ide-cd] parport_pc 19204 1 (autoclean) lp 9188 0 (autoclean) parport 39072 1 (autoclean) [parport_pc lp] autofs 13692 0 (autoclean) (unused) e100 62148 1 microcode 5184 0 (autoclean) keybdev 2976 0 (unused) mousedev 5656 1 hid 22308 0 (unused) input 6208 0 [keybdev mousedev hid] usb-uhci 27468 0 (unused) usbcore 82752 1 [hid usb-uhci] ext3 91464 2 jbd 56336 2 [ext3] |
각 줄마다, 첫번째 행에는 모듈의 이름, 두번째 행에는 모듈의 크기, 그리고 세번째 행에는 사용된 횟수가 나타납니다.
사용된 횟수 다음에 나온 정보는 모듈마다 약간씩 다릅니다. 만일 그 줄에서 모듈이 (unused)로 나타난다면, 그 모듈은 현재 사용되지 않는다는 것을 의미합니다. 만일 (autoclean)이라고 나타난다면, 이 모듈은 rmmod -a 명령에 의해 자동으로 삭제 가능합니다. 이 명령이 실행될 때, autoclean으로 태그(tag)가 붙은 모듈들 중 이전에 autoclean 작업 이후 한번도 사용되지 않은 모듈들은 로드되지 않습니다. Red Hat Linux는 autoclean 작업을 수행하지 않도록 디폴트 설정되어 있습니다.
줄 마지막 괄호안에 모듈 이름이 있다면, 괄호 안의 모듈은 첫 번째 행에 나온 모듈에 의존성을 갖습니다. 예를 들어, 다음 줄에서
usbcore 82752 1 [hid usb-uhci] |
hid와 usb-uhci 커널 모듈은 usbcore 모듈에 의존성을 갖습니다.
/sbin/lsmod 출력 결과는 /proc/modules의 출력 결과와 동일합니다.
커널 모듈을 로드하시려면, /sbin/modprobe 명령 다음에 커널 모듈 이름을 입력하시면 됩니다. 디폴트 값으로, modprobe 명령어는 /lib/modules/<kernel-version>/kernel/drivers/ 하부 디렉토리에서 로드할 모듈을 찾습니다. 각 모듈 유형마다 하부 디렉토리를 갖습니다. 예를 들어 네트워크 인터페이스 드라이버는 net/ 하부 디렉토리를 갖습니다. 일부 커널 모듈은 모듈 의존성을 갖으므로, 즉 해당 모듈이 로드되기 전에 다른 모듈이 먼저 로드되어야 합니다. /sbin/modprobe 명령은 이러한 의존성 문제를 찾아내어 특정 모듈이 로드되기 전에 의존성이 있는 모듈을 먼저 로드합니다.
예로 들면,
/sbin/modprobe hid |
명령은 의존성이 있는 모든 다른 모듈을 로드한 후 hid 모듈을 로드합니다.
/sbin/modprobe가 실행하는 모든 명령어를 화면에서 보시려면, -v 옵션을 사용하시기 바랍니다. 예로 들면:
/sbin/modprobe -v hid |
다음과 유사한 출력 결과가 나타날 것입니다:
/sbin/insmod /lib/modules/2.4.20-2.47.1/kernel/drivers/usb/hid.o Using /lib/modules/2.4.20-2.47.1/kernel/drivers/usb/hid.o Symbol version prefix 'smp_' |
커널 모듈을 로딩하기 위해서 /sbin/insmod 명령을 사용할 수도 있지만; 이 명령은 의존성 문제를 해결하지는 않습니다. 따라서 /sbin/modprobe 명령을 사용하시기를 권장합니다.
커널 모듈을 언로드하시려면, /sbin/rmmod 명령 다음에 모듈 이름을 입력하시면 됩니다. rmmod 유틸리티는 사용되지 않으며 다른 사용중인 모듈이 의존성을 갖지 않는 모듈들만 언로드합니다.
예를 들어,
/sbin/rmmod hid |
명령은 hid 커널 모듈을 언로드합니다.
또 다른 유용한 커널 모듈 유틸리티는 modinfo 입니다. 커널 모듈에 대한 정보를 보시려면, /sbin/modinfo 명령을 사용하시기 바랍니다. 일반적으로 사용되는 구문은 다음과 같습니다:
/sbin/modinfo [options] <module> |
옵션에는 모듈에 대한 간략한 설명을 보여주는 -d 옵션과 모듈이 지원하는 매개 변수의 목록을 보여주는 -p 옵션이 있습니다. 전체 옵션 목록을 보시려면, modinfo 메뉴얼 페이지를 참조하시기 바랍니다 (man modinfo).