다음 이전 차례

9. Modules

적재가능한 커널 모듈들은 구성하기 쉽고 메모리를 절약할 수 있다. 모듈의 범위는 파일 시스템들, 이더넷 카드 드라이버들, 테이프 드라이버들, 프린터 드라이버들과 더욱 많은 것들을 포함해 가고 있다.

9.1 모듈 유틸리티 설치

모듈 유틸리티는 여러분이 커널 소스를 가져온 곳이면 어디든지 modules-x.y.z.tar.gz 을 가져오는 것이 가능하다. 가장 높은 패치로 여러분의 현재 커널보다 낮거나 같은 x.y.z를 선택한다. `tar zxvf modules-x.y.z.tar.gz' 으로 풀고, 그것이 만든 디렉토리(modules-x.y.z)로 들어가서 README 파일을 읽고, 그 설치 설명(보통 make install 처럼 매우 간단한)대로 따른다. 여러분 은 이제 /sbininsmod, rmmod, ksyms, lsmod, genksyms, modprobe, 그리고 depmod 라는 프로그램들을 가지게 되었을 것이다. 여러분이 원한다면, insmod 에 있는 ``hw''라는 예제 드라이버로 유틸리티를 테스트해 볼 수 있다. 자세한 것은 그 서브디렉토리에 있는 INSTALL이라는 파일을 보아라.

insmod는 모듈을 현재 실행중인 커널안에 삽입하는 것이다. 모듈들은 보통 .o 확장자를 갖는다. 위에서 언급한 예제 드라이버는 drv_hello.o 이므로, 그것을 삽입하기 위해서는, `insmod drv_hello.o'라고 해야한다. 커널이 현재 사용중인 모듈을 보기 위해서는 lsmod를 사용한다. 그 결과는 다음과 같다.

    blah# lsmod
    Module:        #pages:  Used by:
    drv_hello          1

`drv_hello'는 모듈의 이름이고, 메모리의 한 페이지(4k)를 사용하고 있다. 그 리고 그 순간에는 다른 커널 모듈은 없다. 이 모듈을 제거하기 위해서는 `rmmod drv_hello'를 사용한다. rmmod 다음에는 파일 이름이 아니라 모듈이름 을 사용함을 주의하라. 여러분의 이것을 lsmod의 목록으로부터 얻을 수 있다. 다른 모듈 유틸리티의 목적은 그들의 매뉴얼 페이지에 적혀있다.

9.2 커넬과 같이 배포되는 모듈들

버전 2.0.30의 예를 들자면, 많은 파일 시스템들과, 약간의 SCSI 드라이버들, 몇개의 이더넷 아답터 드라이버들, 그리고 나머지 다른것들은 모듈로서 적재할 수 있는 것이다. 그들을 사용하기 위해서는, 우선 우선 그들을 현재 커널에 구 성하여 넣지 않았는지 확인하라. 이것은 `make config'하는 동안에 y라고 하지 않은 것을 말한다. 새 커널을 컴파일하고 재부팅하라. 그리고 나서, 다시 /usr/src/linux로 들어가서, `make modules'를 친다. 이것은 여러분이 커널안 에 구성하여 집어넣지 않은 모듈들을 모두 컴파일하고,/usr/src/linux/modules 안에 링크시키는 것이다. 여러분은 그 디렉토리에서 직접 사용할 수 도 있고, `make modules_install'을 실행하여 /lib/modules/x.y.z에 설치할 수 있다. 여기서 x.y.z는 커널 버전 번호이다.

이것은 특히 파일 시스템들에 알맞다. 여러분은 아마 minix나 msdos 파일 시스 템은 자주 사용하지 않을 것이다. 예를 들면, 만약 내가 msdos 플로피를 사용하 게 된다면, 나는 /usr/src/linux/modules/msdos.o를 커널로 집어넣고(insmod), 끝나면 rmmod msdos하면 된다. 이 과정은 보통때 커널의 RAM 사용량을 50k정도 줄여준다. minix 파일 시스템을 사용할 때 알아두어야 할 것은, 이것을 ``긴급 복구'' 디스크에 사용하기 위해서는 항상 커널에 직접 구성하여 넣야 한다.


다음 이전 차례