다음 이전 차례

7. 리눅스 커널의 설정

PPP를 쓰려면 리눅스 커널이 PPP를 포함하도록 컴파일해야 한다. 리눅스 소스코드를 갖고 있지 않다면 - 리눅스 표준 파일 체계에서 /usr/src/linux에 들어 있다. - 리눅스 소스 코드를 구해야 한다.

이 디렉토리를 확인해보라 - 많은 리눅스 배포본들이 설치 과정의 일부로서 이 자리에 소스를 깔아준다(파일과 부디렉토리).

처음 부팅할 때, 리눅스 커널은 많은 양의 정보를 내보낸다. 커널 안에 PPP가 포함되어 있으면 그 정보가 이 때 나타난다. 이 정보를 보려면 syslog 파일을 열어보거나, dmesg |less 명령을 써서 화면에 정보를 나타낼 수 있다. 커널이 PPP 지원을 포함할 경우 아래와 같은 행을 볼 수 있다.


PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
PPP line discipline registered.

(리눅스 2.0.x 커널 시리즈의 경우).

리눅스 커널 소스은 sunsite.unc.edu나 미러사이트에서 ftp로 구할 수 있다.

7.1 리눅스 커널 소스 깔기

다음은 리눅스 커널 소스를 구하고 까는데 대한 간략한 소개이다. 완전한 정보는 The Linux Kernel HOWTO에서 얻을 수 있다.

리눅스 커널을 구하고 컴파일하려면, 루트로 로긴해야 한다.

  1. /usr/src디렉토리로 옮긴다.
    cd /usr/src
  2. /usr/src/linux를 열어서 소스가 이미 깔려있는지 확인한다.
  3. 소스가 들어있지 않으면 Linux kernel source directory나 가장 가까운 미러 사이트에서 구한다.
    커널의 이전 버젼을 구하고 싶을 경우(1.2.X같은) Old Linux kernel source directory에서 찾으면 된다.
  4. 적당한 커널을 고른다 - 보통 가장 최신 버젼이 적당할 것이다. 이것을 받아다가 /usr/src에 넣어두면 된다.
    주의:'tar'는 파일묶음이다. - 몇개의 디렉토리에 많은 파일이 압축되어 있을 것이다(리눅스 커널 소스 tar 파일처럼). 이것은 도스의 다중-디렉토리 zip 파일과 꼭같다.
  5. 이미 리눅스 소스가 깔려 있는 상태에서 최신 커널로 바꾸려고 하면 옛날 소스를 지워야 한다.다음 명령을 쓴다.
    rm -rf /usr/src/linux
  6. 이제 다음 명령을 써서 압축을 푼다.
    tar xzf linux-2.0.XX.tar.gz
  7. 이제 cd /usr/src/linux해서 README 파일을 읽는다. 여기에는 설정 및 컴파일을 어떻게 하는지 잘 설명되어 있다. 이 파일을 읽는다.(컴파일 하는 동안 어떻게 하는지 잘 알 수 있는 충분한 시간을 갖고 다 끝낼 때까지 출력을 해서 사본을 갖고 있는 것이 좋다.).

7.2 하드웨어 알기

커널을 다시 컴파일 하려면 반드시 PC 안에 있는 카드/장치가 어떤 건지 알아야만 한다!!! 몇몇 장치에 대해서는 몇가지 설정에 대해서도 알아둬야 한다. (예를 들어 사운드 카드의 IRQ, I/O 주소 등등)

7.3 커널 컴파일 - 리눅스 1.2.13 커널

설정 과정을 시작하려면, README 파일의 안내에 따라서 적절하게 소스를 설치해야 한다. 커널 설정 과정은 이렇게 시작한다.

make config

PPP를 쓰려면 커널을 설정해서 PPP 지원을 넣어야 한다.(PPP는 pppd와 PPP 커널 지원을 모두 요구한다)


  PPP (point-to-point) support (CONFIG_PPP) [n] y

다른 make config 선택사항을 PC의 하드웨어와 원하는 리눅스 운영체제의 형태에 맞게 선택한다. 그런 다음 README에 따라 새 커널을 컴파일하고 설치한다.

1.2.13 커널은 PPP장치를 네개만 만든다. 다중 직렬 포트 카드를 쓰려면 커널 PPP 선택사항을 고쳐서 더 많은 포트를 만들어야 한다. (편집해야 할 간략한 내용에 대해 자세하게 알고 싶으면 PPP-2.1.2 배포본에 따라오는 README.linux를 본다.)

주의: 1.2.13 설정 대화창은 뒤로 돌아가는 게 불가능하다. - 그러니까 make config에 답하다가 실수하면, CTRL C를 입력해서 설정을 중지한 다음 처음부터 다시 시작해야 한다.

7.4 커널 컴파일 - 리눅스 1.3.x와 2.0.x 커널

리눅스 1.3.x와 2.0.x에서 리눅스 1.2.13과 비슷한 과정을 쓸 수 있다. 역시 README 파일의 안내에 따라 정확히 소스를 설치한다. 커널 설정 과정은 다음과 같이 시작한다.

make config

하지만 이렇게 할 수도 있다.

make menuconfig

이렇게 하면 설정 과정 내애서 앞뒤로 움직이는 것이 가능하며 도움말도 있는 메뉴기반의 설정 체계가 나온다.

또한 X윈도우 기반의 설정 인터페이스를 쓰도록 추천한다.

make xconfig

PPP 지원은 커널에 직접 컴파일할 수도 있고, 장전식 모듈로 컴파일할 수도 있다.

리눅스 기계가 동작하는 시간 중 약간만 PPP를 쓸 경우라면, PPP 지원을 장전식 모듈로 하는 것을 추천한다. 'kerneld'를 쓰면, PPP 연결 과정이 시작할 때 PPP 지원에 요구되는 모듈을 커널이 자동으로 장전한다. 이것은 사용가능한 메모리 공간을 확보한다: 커널은 메모리에서 빠져나올 수 없지만 장전식 모듈은 사용되지 않을 때 자동적으로 제거된다.

이렇게 하려면 장전식 모듈 지원을 사용가능하게 해야 한다:-


        Enable loadable module support (CONFIG_MODULES) [Y/n/?] y

PPP 지원을 추가할 때 다음 물음에 답해야 한다:-


        PPP (point-to-point) support (CONFIG_PPP) [M/n/y/?]

PPP 장전식 모듈을 선택하려면 M이라고 답하고, PPP를 커널 일부로 컴파일하려면 Y이라고 답하면 된다.

1.2.13 커널과 달리 2.0.x는 PPP 장치를 필요한 만큼 '비행' 중에 만든다. 사용가능한 PPP 장치 주소를 늘리기 위해 소스를 두들겨 고칠 필요가 전혀 없다.

7.5 PPP-2.2와 /proc/net/dev 에 대한 주의

PPP-2.2를 쓸 경우, PPP 장치를 '비행 중에' 만드는 데 따른 부수 효과로서 pppd를 시작해서 장치가 만들어지기 전까지는 /proc/net을 열어봐도 아무 장치도 찾을 수 없다:-


[hartr@archenland hartr]$ cat /proc/net/dev
Inter-|   Receive                  |  Transmit
 face |packets errs drop fifo frame|packets errs drop fifo colls carrier
    lo:  92792    0    0    0    0    92792    0    0    0     0    0
  eth0: 621737   13   13    0   23   501621    0    0    0  1309    0

ppp 서비스를 시작하자마자 (ppp 서버에서) 다음과 같은 결과를 볼 수 있다.:-


[root@kepler /root]# cat /proc/net/dev
Inter-|   Receive                  |  Transmit
 face |packets errs drop fifo frame|packets errs drop fifo colls carrier
    lo: 428021    0    0    0    0   428021    0    0    0     0    0
  eth0:4788257  648  648  319  650  1423836    0    0    0  4623    5
  ppp0:   2103    3    3    0    0     2017    0    0    0     0    0
  ppp1:  10008    0    0    0    0     8782    0    0    0     0    0
  ppp2:    305    0    0    0    0      297    0    0    0     0    0
  ppp3:   6720    7    7    0    0     7498    0    0    0     0    0
  ppp4: 118231  725  725    0    0   117791    0    0    0     0    0
  ppp5:  38915    5    5    0    0    28309    0    0    0     0    0

7.6 PPP에 대한 일반적인 커널 설정시 고려해야 할 사항

리눅스 PC를 PPP 서버로 설정할 경우, IP 보내기 (forwarding) 지원을 컴파일해 넣어야 한다. 리눅스를 랜과 연결할 때나 랜을 인터넷에 연결시킬 때도 필요하다.

랜을 인터넷에 연결시킬 때(또는 두개의 랜을 연결시킬 때), 보안에 대해 고려해야 한다. IP 방호벽 역시 커널에 지원해 넣는 것이 필수적이다!

위에서 말한 바 '비연결용' IP 네트워크 주소 중 어느하나를 쓰는 랜을 연결하기 위해 IP 메스커레이드기능을 쓰고자 할 때 이것도 지원해 넣어야 한다.

IP 메스커레이드와 IP 방호벽을 쓰려면 반드시 make config 과정에서 첫번째 질문에 Yes라고 답해야 한다:-


Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL)?

처음 쓰는 사람들은 이게 불필요하다고 생각될 지 모르지만, 많은 사용자들은 실제로 아무 문제 없이 리눅스 2.0.XX커널의 IP 메스커레이드와 IP 방호벽 기능을 쓰고 있다.

일단 커널을 깔고 새 커널을 다시 부팅하게 되면, PPP 링크를 설정하고 시험해볼 수 있다.


다음 이전 차례