· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Modules

<!doctype linuxdoc system>
 <article>
<title>
                  리눅스 모듈 인스톨 미니-HOWTO
<author> <url url="mailto: rhw@bigfoot.com" name="rhw@bigfoot.com" >
<toc>
<sect> 이 문서의 목적
<p>리눅스와 모듈에 대한 필자의 경험에 의하면, 지금 있는 문서들로는 
리눅스에서 모듈을 설정하고 작동시키는 방법에 대해 충분한 설명을 얻을 
수 없다.  이 문서에서 설명하고 있는 절차는 필자의 시스템에서나, 모듈 
형태로만 제공되는 드라이버가 필요한 기능을 쓰려고 하는 다른 
사람들에게 인터넷을 통해 방향을 제시했던 경우에서나, 여러 차례 
사용되어 성공했던 것들이다.

필자의 시스템은 레드햇 4.1로 운영되고 있으며, 이 문서에서 설명되는 
절차는 이 시스템에서 개발된 것이다.  필자는 지금까지 다양한 슬랙웨어 
배포본으로 운영되는 시스템들과 데비안 배포본으로 운영되는 시스템 
하나에서 이 문서의 절차에 따라 모듈을 설치하여 성공했다.  이 
문서에서는 이 세 가지 배포본의 리눅스에서 모듈을 제대로 설정하기 위해 
필수적인 절차를 정리하고자 한다.
</p>

<sect> 경고<p>
필자는 최근 같은 절차를 레드햇 4.2에서 사용했으나, 완전히 같은 
시스템들에서 서로 다른 결과를 얻었다.  무엇이 문제인지 아직 확실히 
알지 못하며, 따라서 현 시점에서는 이 절차가 각자의 시스템에서 제대로 
적용될지 장담할 수 없다.
</p>

<sect> 사전 준비 사항
<p>
<itemize>
<item> 이 문서에서 다루는 단계들을 적용하기 전에, 독자들은 루트로서 사용할 
수 있는 리눅스 시스템을 가지고 있어야 한다.  여기 포함된 절차들의 
대부분은 루트 만이 수행할 수 있는 것이기 때문이다.

<item> 지금 가지고 있는 커널은 모듈을 쓰도록 컴파일 되었을 수도 있고, 
그렇지 않을 수도 있다.  혹은 모듈을 쓰도록 컴파일 되었지만, 사용할 수 
없는 것을 설정에 포함시켜서 부팅 때 에러 메시지를 낼 수도 있다.

<item> 현재 사용하는 커널의 소스 구조의 최상위는 /usr/src/linux라고 
가정한다.  아울러 이 문서 안에서 어떤 일련의 명령들에 대해 언급할 
경우, 최초에 위치한 디렉터리는 항상 /usr/src/linux라고 가정한다.
</itemize>
</p>

<sect> 컴파일러 속도를 빠르게 하는 방법
<p>
16메가 이상의 램이 장착되어 있다면, 커널로 하여금 여러 개의 모듈을 
병렬적으로 컴파일 하도록 함으로써, 컴파일 속도를 빠르게 하는 유용한 
방법을 쓸 수 있다.  이렇게 하면 커널이 재컴파일되는 동안 컴퓨터가 
받는 부담이 커지지만, 컴파일에 걸리는 시간을 단축할 수 있다.
이 방법을 쓰기 전에 자신의 컴퓨터에 램이 얼마나 있는지 확인해 보아야 
한다.  램의 크기를 너무 크게 설정하면 컴파일이 느려진다.  경험에 
의하면 최적의 값은 시스템에 있는 램이 32메가 이하인 경우에는 아래의 
공식에 의해 결정된다.

        N = [RAM in Megabytes] / 8 + 1

32메가 이상의 램이 있다면 이 공식은 지나치게 조심스러운 것이 될 수도 
있다.

숫자 계산을 싫어하는 사람들을 위해 흔히 쓰는 램 크기에 따른 값들을 
들자면 아래와 같다.

(램 크기, 사용할 값) : (16, 3), (24, 4), (32, 5), (40, 6), (48, 7), (56, 8), 
                (64, 9), (80, 11), (96, 13), (112, 15), (128, 17)

적당한 값을 결정했다면, /usr/src/linux/Makefile을 편집해서 아래의 줄을

        MAKE=make

다음과 같이 고치도록 한다.

        MAKE=make -j N

N은 위에서 결정한 숫자이다.
</p>

<sect> 모듈 사용을 위한 커널 재 컴파일
<p>커널은 루트로 마운트될 파일 시스템(대부분 ext2 파일 시스템이다)을 
제외하고는 모두 모듈을 사용하기 위해 다시 설정될 수 있다.
하지만 모듈로서 적절히 설정되기 어려워 보이는 항목들이 있으므로, 
아래의 항목들은 커널 자체에 컴파일해 넣도록 권한다.
<itemize>
    <item> 이더넷 하드웨어 드라이버
     <item> 스카시 시디롬 드라이버
</itemize>
반면 모듈로서만 제대로 작동하는 드라이버 조합이 있다.  특히 아래의 
것들을 두 개 이상 조합할 경우에는 모듈로 만들어야 한다.
<itemize>
     <item> 병렬 프린터 드라이버
      <item> 아이오메가의 집드라이브나 재즈드라이브, BackPack의 시디롬 
          드라이브 같은 병렬 포트 드라이브
      <item>  PLIP 데몬
</itemize>
무엇을 커널 안에 컴파일해 넣고, 무엇을 모듈로 만들 것인지 결정할 때, 
위의 사항들을 감안하기 바란다.  실제의 선택은 컴파일하는 동안 다음과 
같은 일련의 지시에 의해 이루어진다.
<verb>
        cd /usr/src/linux
        make menuconfig
        make dep clean modules modules_install zImage
</verb>
위의 명령이 수행된 다음에는, 모듈의 의존관계를 맞추어야 한다.  이를 
위해서는 다음 명령을 내린다.

        depmod -a

이제는 새 커널을 부팅 과정에 삽입해야 한다.  필자는 이런 목적으로는 
LILO밖에 써 본 적이 없으므로, 독자도 LILO를 쓴다고 가정하도록 
하겠다.

무작정 새로 컴파일한 커널을 리눅스의 기본 커널로 집어넣어서는 안 
된다.  그랬다가는 커널이 잘못되었을 경우에 완전히 설치를 다시 하지 
않고서 리눅스 설정을 복구하기란 지극히 어렵기 때문이다.  물론 설치를 
다시 하는 것도 권장할 만한 일이 아니다.  이런 까닭으로 필자는 아래의 
몇 행을 /etc/lilo.conf 파일에 넣어두었다.
<verb>
        image=/usr/src/linux/arch/i386/boot/zImage
        label=new
        alias=n
        read-only
        vga=ask
        optional
</verb>
위의 내용은 (요청된 이미지가 없으면 무시될) 조건부 부팅 옵션이 있다는 
것을 말해주고 있다.  선택되었을 경우에는 /boot/newlinux 파일로 
부팅하며, 부팅 시 사용될 비디오 모드를 선택할 수 있다.
위의 내용이 /etc/lilo.conf에 있다고 가정하면, 다시 만든 커널이 컴파일 
과정이 끝난 뒤 올바른 위치에 있을 때 아래의 명령으로 커널을 설치할 수 
있다.

        lilo

여기까지 마쳤다면, 각자 선택한 배포본에 따라 아래와 같이 몇 단계를 더 
밟아야 한다.
<itemize>
    <item>  데비안, 레드햇에서의 모듈 사용을 위한 설정
     <item> 슬랙웨어에서의 모듈 사용을 위한 설정
    <item>  다른 배포본에서의 모듈 사용을 위한 설정
</itemize>
</p>

<sect>데비안, 레드햇에서의 모듈 사용을 위한 설정
<p>이 절에서 열거될 단계들을 수행하기에 앞서, 앞 절에 나온 단계들이 모두 
수행되었다고 가정한다.
데비안과 레드햇 배포본의 부팅 절차는 똑같기 때문에 모듈을 설정하는 
과정도 똑같다.
<enum>
 <item> 루트로 로그인해서 좋아하는 에디터로 /etc/rc.d/init.d/modules.init   
      라는 파일을 만들고 아래의 내용을 써넣는다.
<verb>
        # 모듈 초기화
        #
        # 모듈 자동적재 데몬을 시작한다.
        /sbin/kerneld
        # 자동으로 마운트되는 파티션 가운데 현재 마운트되지 않은 
        # 것들을 마운트한다.
        /sbin/mount -a
</verb>
   <item> 위의 파일을 만든 다음에는 역시 루트로 로그인한 상태에서 아래   
      단계를 수행한다.
<verb>
        cd /etc/rc.d
        chmod 755 init.d/*
        cd rc3.d
        ln -s ../init.d/modules.init 05modules.init
</verb>
이제 시스템을 다시 부팅하면 모듈들이 모두 실행되는 것을 발견할 수 
있을 것이다.
</enum>
</p>

<sect> 슬랙웨어에서의 모듈 사용을 위한 설정
<p>이 절에서 열거될 단계들을 수행하기에 앞서, 앞 절에 나온 단계들이 모두 
수행되었다고 가정한다.

    1. /etc/rc.d/rc.M 파일을 아래와 같이 편집한다.
            <enum>
        <item>18행 쯤에 아래와 같은 부분이 있다.

            # Screen blanks after 15 minutes idle time.
            /bin/setterm -blank 15
          이 바로 뒤에 아래의 내용을 삽입한다.  물론 앞뒤에 빈 줄을 
          넣어 구분하도록 한다.

            # Load the kernel module auto-loader.
            /sbin/kerneld
        
        <item> 12줄 정도 더 내려가면 아래와 같은 부분이 있다.

            # if there is no /etc/HOSTNAME, fall back on this default:
          바로 앞에 아래 내용을 넣는다.  역시 앞뒤에 빈 줄을 둔다.

            # Mount remaining unmounted auto-mount drives.
            /sbin/mount -a
          </enum>
     모두 고친 다음에는 파일을 저장한다.
슬랙웨어에서는 이 정도만 고치면 된다.
</p>

<sect> 다른 배포본에서의 모듈 사용을 위한 설정
<p>이 절에서 열거될 단계들을 수행하기에 앞서, 앞 절에 나온 단계들이 모두 
수행되었다고 가정한다.

다른 배포본에서의 절차가 정확히 어떨지는 확실하지 않지만, 아마 위의 
절차 가운데 하나일 것이다.  어느 절차인지 결정하기 위해 아래와 같이 
하여 /etc/rc.d 디렉터리의 내용을 보도록 하자.

        cd /etc/rc.d
        ls -l *.d rc.*
디렉터리 내용을 통해, 다음과 같은 세 가지 옵션 가운데 하나를 고를 수 
있다.
<enum>
   <item> init.d라는 디렉터리가 있고, rc?.d라는 디렉터리들이 여러 개        
     있으며 ('?'는 숫자 하나로 대치됨), rc.M이라는 파일이 _없다면_, 그  
     배포본에서는 위에서 데비안 및 레드햇에 대하여 나열한 절차를 따라  
     모듈 설정을 할 수 있다.
   <item> init.d 디렉터리가 없고 rc.M 파일이 있다면, 위에서 슬랙웨어에     
      대하여 나열한 절차를 따라 모듈 설정을 할 수 있다.
   <item> 위의 어느 경우도 아니라면, 그 배포본은 이 HOWTO로 다룰 수    
      없는 부팅 스크립트를 가지고 있는 것이다.  그런 경우에는         
      필자에게 조언을 구하기를 권한다.
</enum>
</p>

<sect> 저작권 및 기타 법적 사항
<p>이 문서의 저작권은 GNU General Public Licence(GPL)의 규정을 따르며, 
GPL의 모든 항목과 제한이 적용된다.
저자에게는 <url url="mailto: rhw@bigfoot.com" name="rhw@bigfoot.com" >으로 email을 통해 연락할 수 있다.
</p>
 </article>


ID
Password
Join
Today is a good day to bribe a high ranking public official.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:30
Processing time 0.0083 sec