[네트워크] 여러개의 이더넷 카드 인식

RedHat6.0기반-여러개의 이더넷카드 인식 및 네트웍 인터페이스 설정

김칠봉 <san2 at urban.suwon.ac.kr>

1999-07-26 : 1차 수정 및 보완

1999-10-08 : 2차 수정 및 보완

————————————————————

이 글은 RedHat6.0을 기반으로 한 배포본을 중심으로, 1대의 리눅스 시스

템에 여러개의 Ethernet Card 인식과 각각 네트웍 인터페이스 설정을 다

루는 초보적이고 기초적인 내용입니다.

1차 수정 및 보완했던 내용은 다음의 내용을 참조했습니다.

제목:Mini-HowTo on using multiple Ethernet adapters with Linux v2.00

저자:Donald Becker, becker at

cesdis.gsfc.nasa.gov

출처:<http://cesdis.gsfc.nasa.gov/linux/misc/multicard.html>

————————————————————

2차 수정 및 보완했던 내용은

두번째 이더넷에 부여한 인터페이스 설정중에서 네트웍주소가 첫번째

이더넷과 다른 경우의 몇가지 설정방법을 추가했습니다.

(6-4, 6-5의 내용)

주) 이 글의 내용은 원론적이고 개념적인 설명은 모두 빠져있습니다.

다음의 HOWTO문서를 먼저 읽어 보시길 바랍니다.

<http://kldp.org/KoreanDoc/html/nag/nag.html>

<http://kldp.org/HOWTO/NET-3-HOWTO>

<http://kldp.org/HOWTO/NET-3-HOWTO> (영문)

이하 ‘경어’ 생략합니다.

————————————————————

목차

1. 시작하기 전에

  1-1. 배경

  1-2. 테스트 환경

2. 모듈과 이더넷카드 그리고 I/O, IRQ

  2-1. 커널에 이더넷 인식시키는 방법

  2-2. PCI 이더넷카드

  2-3. ISA 이더넷카드

  2-4. 이더넷카드의 모듈과 I/O, IRQ정보(부록 첨부)

3. 절대로 그냥 넘어가서는 안될 사항들

  3-1. 마더보드의 CMOS에서 “PNP OS Installed : NO”로 설정했는가?

  3-2. ISA 이더넷카드의 “PNP : Disable”로 설정했는가??

  3-3. ISA 이더넷카드의 PNP제거 및 I/O, IRQ를 설정하자.

4. 아직 끝나지 않았다..커널 컴파일 !!!

  4-1. 해당 모듈이 설치되어 있는지 확인하자

  4-2. 커널 컴파일하기

    4-2-1. 단계1-커널 컴파일 준비작업

    4-2-2. 단계2-커널 컴파일하기

    4-2-3. 단계3-커널 마무리하기

5. 첫번째 이더넷카드 인식 및 네트웍 인터페이스 설정

  5-1. 첫번째 이더넷에 네트웍 설정 및 확인

   5-1-1. 모듈을 메모리에 적재시키자.

   5-1-2. 네트웍 인터페이스 설정 및 확인

  5-2. 네트웍설정 파일들 (예)

    5-2-1. /etc/HOSTNAME

    5-2-2. /etc/host.conf

    5-2-3. /etc/hosts

    5-2-4. /etc/resolve.conf

    5-2-5. /etc/nsswitch.conf

    5-2-6. /etc/conf.modules

    5-2-7. /etc/sysconfig/network

    5-2-8. /etc/sysconfig/static-routes

    5-2-9. /etc/sysconfig/network-scripts/ifcfg-eth0

6. 두번째 이더넷카드 인식 및 네트웍 인터페이스 설정

  6-1. /etc/conf.modules 파일에 추가하기

  6-2. 같은 모듈을 사용할 경우(똑같은 모델의 이더넷카드)

  6-3. PCI와 ISA 이더넷을 같이 사용할 경우

  6-4. 두번째 이더넷 인터페이스 Gateway가 다를 경우

  6-5. 두번째 이더넷 /etc/sysconfig/network-scripts/ifcfg-eth1

7. 충돌이 예상될 경우 확인해야할 것.  

8. 마치며

부록 : 이더넷 카드의 모듈과 I/O, IRQ정보

———————————————————–

1. 시작하기 전에

1-1. 배경

가장 많이 사용하고 있는 ISA 이더넷카드 중에는 RealTek8019 와

Intel Ether Express Pro/10 PNP, 3Com 509(B), 기타 등이다.

대부분 호환성 좋다고 평이난 3Com 계열은 인식시키기 쉬우므로 이 글의

주 내용에서는 제외시켰다. 특히 초보자가 이런 이더넷카드(3Com제외)를

윈도우에서 사용하다가 리눅스를 사용하겠다고 맘먹고 시작할 때에는 넘

어야 할 첫번째 벽이 아닌가 쉽다. 본인(이하 “본인”으로 통일함) 역시 완전

초보 때 넘기 힘든 벽 중에 하나였음을 말하고 싶다. 그리고 지금 와서 생

각하면, 리눅스를 사용함에 있어서 이런 벽은 ‘새발의 피’라는 것이다.

여기에 본인이 그 동안 쌓인 경험과 다른 문서를 토대로 가장 쉽고 이해

하기 쉽도록 초보자 수준에서 몇자 기술하고자 한다.

또한 이 글의 목표는 여러개의 이더넷카드 인식이 주 목표이나, 대부분

1개의 이더넷 카드를 설치하기를 원하므로 이 부분 역시  걱정할 필요없

이 천천히 읽고 해당 부분만 그대로 따라하면 무리가 없을 듯 하다.

1-2. 테스트 환경

-배포본 : 레드햇6.0 기반 알짜리눅스6.0

-테스트한 커널 : 2.2.10(안정)과 2.3.10(개발)

-테스트에 이용한 이더넷카드 :

   PCI 이더넷카드 :

   -3Com 900B-TPO (10Mbps) 1개

   -3Com 905B-TX (10/100Mbps) 1개

   ISA 이더넷카드 :

   -RealTek 8019 ISA PNP Ethernet Card (NE2000호환) 2개

   -Intel Ether Express Pro/10 PNP 1개

-기타

2. 모듈과 이더넷카드 그리고 I/O, IRQ

2-1. 커널에 이더넷카드 인식키시는 방법

이더넷카드를 커널에 인식시키는 방법은 크게 3가지가 있다.

1) 부팅할 때마다 커널에 어떤 Parameter 들을 기입하여 인식키시는 방법

2) 이런 Parameter들을 부트로더(LILO)에 기입하여 계속적으로 인식시키는 방법

3) 커널소스에서 drives/net/Space.c C소스코드를 편집하여 컴파일하는 방법

첫 번째의  방법은

        boot LILO :

        linux   dos

        linux ether=0,0,eth0 ether=0,0,eth1, ether=0,0,eth2

등의 순서로 기입한다.

ether=0,0,eth0 의 의미는 Ethernet, 자동검색IRQ(0), 자동검색I/O(0), 첫

번째 이더넷 카드(eth0)의 순이다. 자동검색(0)대신 해당 IRQ와 I/O주소를

적어줘도 된다. 주의할 점은 컴마(,) 다음에 빈 칸 없이 붙여서 적는다.

두번째의 방법은

첫번째 방법과 동일하게 직접 /etc/lilo.conf 파일에 각각 Parameter들을

기입 하는 방법이다.(IRQ와 I/O를 직접 적어준다.)

        append = “ether=0,0,eth0 ether=0,0,eth1, ether=0,0,eth2”

세번째 방법은

커널소스에 들어있는 drives/net/Space.c C소스코드를 편집 및 커널을 컴

파일하는 방법이며 더 많은 정보를 원한다면 다음의 싸이트를 참고하길

바란다.

http://cesdis.gsfc.nasa.gov/linux/diag/

또한, 위의 첫번째 두번째 방법에 대해서 좀더 많은 정보를 원한다면

Network Administrator Guide 를 참고하기 바란다.

http://kldp.org/KoreanDoc/html/nag/nag.html

에 한글로 번역된(부분) 문서가 있다.

본인은 C언어로 프로그램밍할 정도로 실력이 되지 않는다. 때문에 Space.c

소스코드를 편집하지 않고 커널컴파일과 /etc/conf.modules 파일 편집에

대해서 만 앞으로 다룬다. 그리고 이 방법이 초보자에게 가장 적당하다고

생각된다.

2-2. PCI 이더넷카드

PCI 이더넷카드는 간혹 인식이 잘 되지 않은 경우(아주 드믈게)가 있기는

하지만, 대부분 커널에서 잘 인식한다. 즉, 커널이미지(예:vmlinuz)로 포

함하여 컴파일 하든지 모듈(*.o)로 인스톨하든지 간에 별 무리없이 인식

한다.

아래의 예는 실제로 2개의 PCI 이더넷카드를 리눅스에 장착하여 부팅시

보여주는 메시지이며 이는 커널이미지에 포함시킨 3Com경우이다.

3c59x.c:v0.99H 11/17/98 Donald Becker http://cesdis.gsfc.nasa.gov/

  linux/drivers/vortex.html

eth0: 3Com 3Com Boomerang (unknown version) at 0xe800,

  xx:xx:xx:xx:xx:xx, IRQ 9

  8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate

  interface.

  MII transceiver found at address 24, status 182d.

  Enabling bus-master transmits and whole-frame receives.

eth1: 3Com 3c905B Cyclone 100baseTx at 0xec00,  

  xx:xx:xx:xx:xx:xx, IRQ 9  

  8K byte-wide RAM 5:3 Rx:Tx split, 10baseT interface.

  Enabling bus-master transmits and whole-frame receives.

2-3. ISA 이더넷카드

ISA 이더넷카드(3Com제외)는 대부분 커널에서 잘 인식하지 못하는 경

향이 많다. 때문에 커널이미지로 포함시켰든지 모듈로 인스톨했든지 간에

다음장(3장의 내용)의 사항을 체크 및 수작업을 하지 않고서는 인식시키기

가 좀처럼 힘들다. 이런 수작업이 끝난 상태에서 처음으로 배포본을 설치시

에는 수동으로 해당 ISA 이더넷카드의 I/O주소와 IRQ를 적어주기만 하면

잘 인식한다.

이런 수작업(3장의 내용)이 이루어  지지않고 배포본을 처음으로  설치 및

인식 실패후 해당 이더넷카드에 대한 네트웍 인터페이스설정을 못하는

사례가 유즈넷 등에 자주 질문되곤 한다.

설치후 수작업이 이루어 졌다면 다음과 같이 /etc/conf.modules 파일에

적어준 후 해당 이더넷카드들에 대한 네트웍 인터페이스를 설정하면 되다.

/etc/conf.modules :

        alias   eth0    3c59x

        alias   eth1    ne

        alias   eth2    ne

        alias   eth3    eepro

        options ne      io=0x280,240    irq=5,4

        options eepro   io=0x210        irq=3

(주, PCI 이더넷은 잘 인식하므로 options의 I/O나 IRQ를 적어주지 않아도

된다. 그리고 3c59x, ne, eepro등은 해당 이더넷카드의 모듈이름이다.)

===========================================================

솔직히 이게 전부이며 위의 내용을 이해하고 작성할 줄 아는 리눅서라면

이하 계속되는 다음의 내용을 읽을 필요가 없다고 생각한다.

===========================================================

2-4. 이더넷카드의 모듈과 I/O, IRQ정보

맨 뒤의 부록에 보여주는 내용은 본인의 리눅스 시스템에 있는

/boot/module-info(2.2.5)

/usr/src/linux-2.3.10/Documentation/networking/net-modules.txt

을 혼합해 놓은 것이다. 자신의 이더넷 카드가 어느 모듈에 속하는지 참

고하길 바라며 좀더 자세한 내용을 원한다면 다음의 싸이트를 방문하길

바란다.

http://cesdis.gsfc.nasa.gov/linux/

http://cesdis.gsfc.nasa.gov/linux/drivers/

http://cesdis.gsfc.nasa.gov/linux/misc/modules.html

또는 각자 이더넷카드의 정보를 알고 쉽다고 구입제품 해당 홈페이지나,

/usr/doc/HOWTO/Ethernet-HOWTO

또는

http://kldp.org/HOWTO/NET-3-HOWTO

문서를 읽어보기 바란다.

3. 절대로 그냥 넘어가서는 안될 사항들

3-1.마더보드의 CMOS에서 “PNP OS Installed : NO” 로 설정했는가??

그냥 간과해서는 안될 첫번째 체크사항이다. (특히 ISA 이더넷카드 사용자)

각자 사용하는 CMOS의 바이오스가 틀리므로 꼭 확인하자.

그리고 혹시 갑자스런 정전등으로 CMOS가 기본값으로 복귀되었을지 모르

니 꼭 확인하기 바란다.

본인의 CMOS바이오스는 많이 사용하는 Award 바이오스이다.

Award바이오스 같은 경우

[부팅]….[Del키]….[해당Award Bios Setup]화면에서

[PNP/PCI Configuration]옵션으로 들어가서 맨위의

=============================================

           PNP OS Installed : No

=============================================

로 설정 및 저장하고 다시 부팅한다.

3-2. ISA 이더넷카드의 “PNP : Disable”로 설정했는가??

본인이 사용하는 위의 2가지 종류의 ISA 이더넷카드는 점퍼조작으로

PNP를 제거하는 기능이 없다. 따라서 구입시 제공되는 디스켓이나 CD안에

해당 프로그램으로  PNP를 제거해야 만 했다.

PCI 이더넷카드는 잘 인식하므로 이런 수작업을 덜어준다.

자신의 이더넷카드가 ISA방식이고 해당 프로그램이 제공되지 않았다면,

각자 구입한 제품의 홈페이지를 방문하여 해당 프로그램으로 PNP 기능을

제거하는게 급선무이다.

이더넷카드에 대한 좀더 자세한 정보를 원한다면

/usr/doc/HOWTO/Ethernet-HOWTO

또는

http://kldp.org/KoreanDoc/html/nag/nag.html

문서를 읽어보기 바란다

아래의 싸이트는 본인이 사용하는 2가지 종류의 ISA방식의 이더넷카드

PNP 제거 프로그램을 링크해 놓았다.

(꼭 바이러스 체크 요)

-Intel Ether Express Pro/10 PNP ISA 의 경우

ftp://download.intel.com/enduser_reseller/etherexpress_lan_adapters/e10disk.exe

-RealTek 8019 ISA PNP Ethernet Card (NE2000호환)의 경우

ftp://ftp.realtek.com.tw/LANCARD/drivers/8019/RSET8019.EXE

성공적으로 해당 프로그램을 받았다면  꼭 Clean 부팅(되도록이면 A로)하

여 바이러스를 체크하자. 위의 프로그램은 Dos용 프로그램이다.

3-3. ISA 이더넷카드의 PNP제거 및 I/O, IRQ를 설정하자.

============================================================

   Intel Ether Express Pro/10 ISA PNP(eepro)의 경우는

   softset2.exe 또는 softset3.exe 가 실행파일이다.

============================================================

   RealTek 8019 ISA PNP Ethernet Card (NE2000호환)의 경우는

   rset8019.exe 가 실행파일이다.

============================================================

위의 실행파일들을 현재 이더넷카드가 장착되어 있는  시스템(리눅스나 윈

도우)으로 옮기든지 아니면 간단하게 3.5인치 디스켓으로 복사하자. 만약

현재 리눅스시스템에 해당 이더넷카드가 장착되어 있다면,

Dos용 부팅디스켓으로 부팅하여

A:\\ 에서 해당 프로그램이 들어 있는 디스켓으로 바꾸어

A:\\ rset8019.exe (또는 eepro경우는 softset2.exe)

해당프로그램이 실행되면, setup 부분에서

============================================================

      -Plug and Play : Disable (or Juperless) 로 설정

      -해당 IO포트와 IRQ를 설정

      -저장하고 빠져나온다.

============================================================

특히 싸운드카드를 사용하는 유저는 충돌이 예상되므로

io = 0x220, 0x240, 0x260 등과 irq = 5, 7 등은 피하자.!!!!!!!!!!!!

현재 본인이 사용하는 리눅스시스템에는 사용드카드가 장착되어 있지만

서버로 운영하고 있고 싸운드 카드를 이용할 이유가 전혀 없으므로

/etc/isapnp.conf 파일에서 Sound Card카드 부분의 내용을 전부 주석처

리(#) 해 놓았고, 싸운드 관련 모듈을 메로리에 적재하지 않았다.

아래는 본인이 설정 및 테스트에 성공한 I/O와 IRQ설정값의 예이다.

참고만 하길 바란다.

-RealTek8019    : io=0x280       irq=5

-Intel eepro    : io=0x210       irq=3

각각 이더넷에 대한 I/O 및 IRQ 정보는 맨 뒤의 <부록>을 참조하기 바란다.

3. 아직 끝나지 않았다..커널 컴파일 !!!

이 역시 초보자가 넘어야 할 또 다른 커다란 장벽이다.

본인 역시 제일 처음 커널을 컴파일하는 목적은  ISA 이더넷카드 인식

때문이라는 걸 말하고 싶다.(eepro)

지금와서 생각하면 참 무식한 짓을 했구나 하는 생각이 들지만 어째튼

커널 컴파일하는 것도 리눅스를 알아가는 것중 하나의 방법이 아닌가

쉽다.

대부분이 초보자는 알짜리눅스나 엑셀리눅스 또는 파워리눅스나 기타

한글배포본의 리눅스를 사용하고 있으리라 생각된다.(본인 역시 이런 배

포본을 사용하고 있음)

때문에 현재 99년 7월을 기준으로 한다면 대부분 배포본들은 커널 2.2.x를

기본으로 채택하고 있고 위의 2가지 종류의 이더넷카드의 모듈을 포함하여

이미 설치되어 있을 것이다.

4-1. 해당모듈이 설치되어 있는지 확인하자.

본인은 방금전에 모듈이라고 말했다. 즉 커널이미지(예:vmlinuz)에 포함

되지 않은, 커널 컴파일시 “make modules_install” 으로 설치된 모듈을

말한다. 본인이 여러번 테스트해 본 결과 위의 두가지 ISA 이더넷카드는

커널이미지에 포함시키면 제대로 인식되지 않았고 모듈로 설치해야 만

제대로 인식되었다.

/etc/conf.modules 을 생각하지 않고 무려 하루 저녁에 5번이나 커널 이

미지에 포함시켜 컴파일하는 실수를 저질렀다…꼭 짚고 넘어가길 바란다.

먼저 커널버전부터 확인하자.

# uname -a

Linux xxxxx.xxxxx.xx.xx 2.3.10 #8 SMP  Thu Jul 22 11:50:42 KST

1999 i686 unknown

본인의 커널버전은 2.3.10 이고 이는 개발버전이다.

해당 이더넷카드 모듈이 있는지 확인하자.

# cd /lib/modules/2.3.10/net

# ls -l eepro.o

-rw-r–r– 1  root root 15244 Jul 22 11:51 eepro.o

# ls -l ne.o

-rw-rw-r– 1 root root 10488 Jul 22 11:51 ne.o

본인의 리눅스시스템에는 앞으로 다룰 내용에 포함할 eepro.o 와 ne.o의

모듈이 있다. 즉,

-Intel eepro : eepro.o

-RealTek8019 : ne.o

에 각각 해당된다. 이는 커널 컴파일 옵션시 ‘Y’가 아닌 ‘M’으로 선택해야

한다.

또한, 모듈이 메모리에 적재되어 있나 확인해 보자.

# /lsmod (또는 # /sbin/lsmod )

Module         Size     Used   by

eepro           xxxx     1       (autoclean)

ne              xxxx     1       (autoclean)

xxxx            xxxx     0       (autoclean) [ne]

#

본인의 시스템에는 eepro, ne 모듈이 메모리에 적재되어 있고, 이 모듈을

사용하는 2개의 ISA(eepro, NE2000) 이더넷이 장착되어 있는 경우이다.

<덧붙이말>======================================================

1개의 이더넷카드만 인식시키기를 원한다면 모듈로 설치되어 있지  않아도

된다. 즉, 커널이미지에 포함시켜도 된다는 뜻이다. (커널 컴파일 옵션시

‘Y’ 선택)

================================================================

다행이 자신의 시스템에 해당 이더넷카드의 모듈이 있다면 컴파일 부분을

건너 띄어 다음단계로 넘어가기 바란다.

“전 이런 모듈이 없는데요?????”

라는 질문을 하신다면 어쩔 수 없이 “커널 컴파일” 이라는, 초보자에게

놓인 커다란  장벽을 넘어야 할 운명(?)이 놓은 셈이다.

“그리고, 전 완전 초보라서 커널 컴파일 하는 방법을 모르는데요?”

역시 당신도 같은 운명의 길(비유하자면)을 걷고 있는 셈이다. 걱정할 필

요없다. 다음단계를 주의 깊게 읽어 보기 바란다.

4-2. 커널 컴파일하기

커널 컴파일 !!!!

걱정할 필요 전혀 없습니다.

또 두려워할 필요도 전혀 없습니다.

몇번하고 나면 아주 재미있습니다.(본인도 커널 컴파일 중독자중 하나임)

이 글의 목적상 커널 컴파일을 전부 다룬다는 것은 무리가 있을 듯 싶다.

한번도 커널 컴파일을 하지 못했다면 아래의 문서들을 읽고 정확하게 습

득하자.

http://kldp.org/KoreanDoc/Kernel_Compile-KLDP

http://kldp.org/HOWTO/html/Kernel/Kernel-HOWTO.html

다음의 커널 컴파일은 특히 커널 컴파일시 주의할 점 등을  포함하고 있

으므로 한 두번 커널 컴파일을 해 본 사람이라면 쉽게 이해가 되리라 생

각된다.

커널버전은 2.2.x와 2.3.x의 기능의 차이는 나지만 컴파일 하는 방법은

동일하다. 이하 “2.3.x”로 통일함(커널 패치부분은 생략함)

이 글의 커널 컴파일의 목표

(주: Y=* M=M)

Network device support : Enter

[*] Network device support

[*] Ethernet (10 or 100Mbit)

[*] Other ISA Cards

<M>EtherExpressPro support

<M>NE2000/NE1000 support

나머지는 Network device support에서 <N>으로 체크해도 상관없다.

4-2-1. 단계1-커널 컴파일 준비작업

1) 현재 배포본의 커널인 2.2.x를 유지한 채 컴파일할 경우는,

(이하 컴파일 및 파일 편집시 권한은 root로….)

따로 준비할 것은 없고 아마 해당 모듈이 존재할 것으로 예상되므로 해

당모듈을 확인하고 있다면 컴파일 부분을 건너뛴다. 만약 해당 모듈이

없다면

# cd /usr/src/linux

# make mrproper

(현재의 설정부분을 지우고 처음부터 설정할 경우이므로  완전 초보자는

이 명령을 내리지 않는 것이 좋다.)

그리고 다음 단계인, <단계2-커널 컴파일하기-> 부분으로 건너뛴다.

2) 현재 배포본의 커널인 2.2.x에서 한 단계 위나 2.3.x로 업그레이드 하기

를 원하다면, (이하 예는 : 개발버전 2.3.10)

# rpm -e kernel-source (현재 배포본의 커널소스를 제거한다.)

# cp kernel-2.3.10.tar.gz /usr/src/

# cd /usr/src

# ls -l

lrwxrwxrwx 1 root root 12 Jul 17 04:27 linux -> linux-2.2.9/

drwxr-xr-x 4 root root 1024 Jul 17 04:29 linux-2.2.9/

-rw-r–r– 1 root root 14667465 Jul 17 04:12 linux-2.3.10.tar.gz

drwxr-xr-x 7 root root 1024 Jun 9 23:13 redhat/

#

# rm -f linux

# mkdir linux-2.3.10

# ln -s linux-2.3.10 linux

# ls -l

lrwxrwxrwx 1 root root 12 Jul 17 04:27 linux -> linux-2.3.10/

drwxr-xr-x 4 root root 1024 Jul 17 04:29 linux-2.2.9/

drwxr-xr-x 15 root root 2048 Jul 22 11:51 linux-2.3.10/

-rw-r–r– 1 root root 14667465 Jul 17 04:12 linux-2.3.10.tar.gz

drwxr-xr-x 7 root root 1024 Jun 9 23:13 redhat/

#

# tar zxvf kernel-2.3.10.tar.gz

(linux-2.3.10 디렉토리로 압축해제 된다.)

아직 준비작업은 끝나지 않았다.(귀찮다고 그냥 넘어 가면 꼭 실패할 것임)

# cd linux/include

# ln -s asm-i386 asm

# ls -l asm

lrwxrwxrwx 1 root root 8 Jul 22 11:38 asm -> asm-i386/

#

# cd ../../../include (또는 # cd /usr/include )

# ls -l asm

lrwxrwxrwx 1 root root 24 Jun 13 01:18  asm  ->

../src/linux/include/asm/

(레드햇 6.0은 구지 이 작업을 할 필요는 없다.)

# ls -l linux

lrwxrwxrwx 1 root root 26 Jun 13 01:18 linux  ->

../src/linux/include/linux/

# ls -l scsi

drwxr-xr-x 5 root root 1024 Jun 13 01:18 scsi/

# mv scsi scsi-orgn

# ln -s ../src/linux/include/scsi scsi

# ls -l scsi

lrwxrwxrwx 1 root root 24 Jun 13 01:18 scsi  ->

../src/linux/include/scsi/

(본인은 이렇게 하고 컴파일 함. 레드햇 5.x 는 이렇게 링크해야하나

레드햇 6.x는 구지 링크할 필요가 없다. Documentation/scsi-generic.txt)

이제 준비 작업은 끝났다..(상세한 설명은 다 생략했었음.)

4-2-2. 단계2-커널 컴파일하기

# cd /usr/src/linux

# vi Makefile

(대소문자 구분, vi에 자신없은  분은 mc툴이나 pico,  기타 편집기로 불

러온다. 구지 할 필요는 없지만 본인은 이 작업을 하고 컴파일한다.)

INSTALL_PATH=/boot (맨 앞 부분의 주석(#)을 제거한다.)

:wq! (저장하고 빠져나온다)

# make menuconfig

(개발버전 2.3.10의 예)

Network device support : Enter

  [*] Ethernet (10 or 100Mbit)

  [ ] 3COM cards

  < > 3c501 support

  < > 3c503 support

  < > 3c505 support

  < > 3c507 support

  < > 3c509/3c579 support

  < > 3c515 ISA Fast EtherLink

  < > 3c590/3c900 series (592/595/597/900/905) “Vortex/Boomeriang”

       support

  < > AMD LANCE and PCnet (AT1500 and NE2100) support

  [ ] Western Digital/SMC cards

  [ ] Racal-interlan (Micom) NI cards

  < > RealTek 8129/8139 (not 8019/8029!) support  

  < > Packet Engines Yellowfin Gigabit-Nic support

  [*] Other ISA cards

  < > AT1700/1720 support (EXPERIMENTAL)

  < > Cabletron E21xx support

  < > DEPCA, DE10x, DE200, DE201, DE202, DE422 support

  < > EtherWORKS 3 (DE203, DE204, DE205) support

  < >  EtherExpress 16 support

  <M> EtherExpressPro support

  < > FMV-181/182/184 support

  < > HP PCLAN+ (27247B and 27252A) support

  < > HP PCLAN (27245B and other 27xxx series) support

  < > HP 10/100VG PCLAN (ISA, EISA, PCI) support

  < > ICL EtherTeam 16i/32 support

  <M> NE2000/NE1000 support

  < > SEEQ8005 support

  [ ] SK_G16 support

  [ ] EISA, VLB, PCI and on board controllers

  [ ] Pocket and portable adaptors  

ISA 이더넷 카드는 꼭 <M>으로 체크할 것!!!!!!!!

하나의 이더넷 카드만 인식시키기를 원한다면 꼭 <M>옵션을 주지 않아도

된다. 나머지는 Network device support에서 N으로 체크해도 상관없다.

Save 하고 빠져나온다.

# make dep ; make clean

# make bzImage (L의 소문자 l가 아니고 i의 대문자 I임)

컴파일이 끝나면 마지막에 아무런 “Error”가 없어야 한다.

Error가 발생하는 원인중에 하나가 모듈부분을 <*>로 설정하는 경우이다.

특히 싸운드 옵션은 <M>으로 설정하기를 바라며, 파일시스템(fs)에서는

본인은 vfat관련(umsdos)은 <N>으로 설정하고 컴파일 했다.

# make install

(/usr/src/linux/Makefile 에서 #INSTALL_PATH=/boot 부분에서 #을 제거

했을 경우)

# make modules

# make modules_install

4-2-3. 단계3-커널 마무리하기

# cd /boot

# ls -l System*

lrwxrwxrwx 1 root root 23 Jul 22 14:30 System.map ->

/boot/System.map-2.3.10

-rw-r–r– 1 root root 194249 Jul 22 11:51 System.map-2.3.10

-rw-rw-r– 1 root root 194249 Jul 22 11:12 System.map.old

#

# ls -l vmlinuz*

lrwxrwxrwx 1 root root 14 Jul 22 11:51 vmlinuz -> vmlinuz-2.3.10

-rw-r–r– 1 root root 569392 Jul 22 11:51 vmlinuz-2.3.10

-rw-rw-r– 1 root root 569415 Jul 22 11:12 vmlinuz.old

#

위와 같이 링크되어 있지 않다면 다음 처럼 수작업을 한다.

# pwd

/boot

# cp /usr/src/linux/arch/i386/boot/bzImage vmlinuz-2.3.10

# ln -s vmlinuz-2.3.10 vmlinuz

# cd /etc

# vi lilo.conf (마찬가지로 mc툴이나 자신이 편한 편집기로 lilo.conf파일을

편집한다.)

image=/boot/vmlinuz <—확인 및 고쳐야할 부분(“vmlinux”가 아님)

새로운 커널로 컴파일 했으므로 SCSI-HDD사용자는

해당 스카시컨트롤러에 대한 커널이미지에 포함시켰다면

initrd=/boot/initrd-x.x.x.img 부분이 있다면 지워야 한다.

# lilo (또는 # /sbin/lilo)

Added linux *

# cd /usr/lib/modules/2.3.10/net

# ls -l eepro.o

-rw-r–r– 1 root root 15244 Jul 22 11:51 eepro.o

# ls -l ne.o

-rw-rw-r– 1 root root 10488 Jul 22 11:51 ne.o

위에서 처럼 각자 이더넷카드에 해당하는 모듈이 설치되어나 확인한다.

설치되었다면 당신은 성공한 셈이다………

이제 새로운 커널로 재부팅하자.

5. 첫번째 이더넷카드 인식 및 네트웍 인터페이스 설정

다음에 보여지는 내용은 그저 하나의 예시이다.

좀더 원론적이고 개념적인 정보를 원한다면,

/usr/doc/HOWTO/NET-3-HOWTO (영문)

/usr/doc/HOWTO//translations/korean(ko)/NET-3-HOWTO (한글)

/usr/doc/HOWTO//translations/korean(ko)/docs/NetAdminGuide

또는

http://kldp.org/HOWTO/NET-3-HOWTO

http://kldp.org/KoreanDoc/html/nag/nag.html

에 있다.

아마 “리눅스” 라는 끈적끈적(?)한 놈에게 맛들이기 위해서는 네트웍설

정은 가장 기본적이고 초보자가 넘어야 할 가장 큰 장벽이 아닌가 쉽다.

2개다 한꺼번에 인식시켜도 되지만 대부분 이더넷카드를 하나 더 추가

하는 식으로 진행하기 때문에 이 글 역시 첫 번째 이더넷카드부터 인식

시켜보자.

첫번째 이더넷카드 장치 이름(네트웍 인터페이스)은 “eth0” 이다.

두번째 이더넷카드 장치 이름(네트웍 인터페이스)은 “eth1” 이다.

세번째 이더넷카드 장치 이름(네트웍 인터페이스)은 “eth2” 이다.

(*주, 두 번째 네트웍 인터페이스는 “eth0:0” 가 될 수 있다.)

앞으로 각각의 네트웍 인터페이스에 설정할 내용은 다음으로 가정하겠다.

도메인: linux.ac.kr

네임서버: 192.168.10.3 이고

각각의 네트웍 인터페이스에 설정할 부분은

-RealTek 8019 ISA PNP Ethernet Card (NE2000호환)        <—-eth0

io=0x280 irq=5 (모듈은 ne.o)

IP=192.168.10.5 (www.linux.ac.kr)

GATEWAY=192.168.10.1

NETMASK=255.255.255.0

NETWORK=192.168.10.0

BROADCAST=192.168.10.255

-Intel Ether Express Pro/10 PNP (eepro)         <—-eth1

io=0x210 irq=3 (모듈은 eepro.o)

IP=192.168.10.6 (study.linux.ac.kr)

GATEWAY=192.168.10.1

NETMASK=255.255.255.0

NETWORK=192.168.10.0

BROADCAST=192.168.10.255

따라서 본인이 첫번째로 인식시킬 이더넷카드는 RealTek 8019이고, 현재

본인의 리눅스 시스템에는 RealTek 8019가 이미 장착되어 있으나 인식 및

네트웍 인터페이스 설정이 되어 있지 않은 상태로 가정한다.

5-1. 첫번째 이더넷에 네트웍 설정 및 확인

5-1-1. 모듈을 메모리에 적재(로딩)시키자.

# modprobe ne io=0x280 irq=5

이 명령을 내리면 해당 이더넷카드의 하드웨어 주소, I/O, IRQ 등의 순

서로 메시지가 나타난다. 재부팅 전까지는 모듈은 메모리에 적재되고 있

을 것이다.

제대로 메모리에 적재 되었나 확인 해 보자.

# lsmod (또는 # /sbin/lsmod)

Module     Size     Used   by

ne            xxxx     1         (autoclean)

xxxx         xxxx     0         (autoclean) [ne]

#

이제 부팅할 때마다 모듈을 메모리에 자동으로 적재시키기 위해서

/etc/conf.modules 파일에 다음과 같이 추가한다.

/etc/conf.modules :

        alias  eth0  ne

        options  ne  io=0x280  irq=5

5-1-2. 네트웍 인터페이스 설정 및 확인

각각의 이더넷카드에 네트웍 인터페이스 설정은 그리 어렵지 않다.

다음과 같이 명령을 내리면 재부팅하기 전까지 만 유효하다.

# ifconfig (# /sbin/ifconfig)

lo       Link encap:Local Loopback

          inet addr:127.0.0.1  Mask:255.0.0.0

          UP LOOPBACK RUNNING  MTU:3924  Metric:1

          RX packets:50 errors:0 dropped:0 overruns:0 frame:0

          TX packets:50 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

위의 메시지는 현재 이더넷카드에 네트웍 인터페이스 설정이 되어 있지

않은 상태이다.

# ifconfig eth0 192.168.10.5 netmask 255.255.255.0 up

# route add -net 192.168.10.0 netmask 255.255.255.0 eth0

# route add default gw 192.168.10.1 eth0

제대로 설정되었나 확인해 보자

# ifconfig (# /sbin/ifconfig)

eth0  Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx

        inet addr:192.168.10.5  Bcast:192.168.10.255  Mask:255.255.255.0

        UP BROADCAST RUNNING MULTICAST  MTU:1500

        Metric:1

        RX packets:17612 errors:0 dropped:0 overruns:0 frame:0

        TX packets:140 errors:0 dropped:0 overruns:0 carrier:0

        collisions:1 txqueuelen:100

        Interrupt:5 Base address:0x240

lo     Link encap:Local Loopback

        inet addr:127.0.0.1  Mask:255.0.0.0

        UP LOOPBACK RUNNING  MTU:3924  Metric:1

        RX packets:50 errors:0 dropped:0 overruns:0 frame:0

        TX packets:50 errors:0 dropped:0 overruns:0 carrier:0

        collisions:0 txqueuelen:0

네트웍 인터페이스가 제대로 설정된 경우이다.

라우팅 테이블도 확인해 보자.

# route (# /sbin/route)

Kernel IP routing table

Destination  Gateway  Genmask      Flags  Metric Ref   Use  Iface

192.168.10.5   *    255.255.255.255  UH     0      0     0   eth0

192.168.10.0   *    255.255.255.0     U     0      0     0   eth0

127.0.0.0      *    255.0.0.0         U     0      0     0   lo

default 192.168.10.1 0.0.0.0         UG     0      0     0   eth0

#

다음은 부팅할 때마다 네트웍 인터페이스를 자동으로 활성화하기 위해

다음과  같이 설정한다.

우선 쉬운 방법부터 택하자.

# netcfg (# /usr/bin/netcfg)

or

# linuxconf (# /bin/linuxconf)

둘 방법중 어느 것을 택해도 상관없다.

대화창이 나오면 하나하나씩 정확하게 설정하자.

        Names 부분

        Hostname                : www.linux.ac.kr

        Domain          : linux.ac.kr

        Nameservers     : 192.168.10.3

        

        Hosts 부분

        127.0.0.1               localhost               localhost

        192.168.10.3            ns.linux.ac.kr          ns

        192.168.10.5            www.linux.ac.kr www

        Interfaces 부분

        lo              127.0.0.1       none(proto)  yes(atboot)   active

        eth0    192.168.10.5    none(proto)  yes(atboot)   active

        Routing 부분

        Default Gateway         : 192.168.10.1

        Default Gateway Device  : eth0

        

(이런 대화창으로 설정하기를 원하지 않는 다면 다음의 <5-2. 네트웍설정

파일들>처럼 하나 하나씩 확인 및 추가 편집해 주어야 한다.)

모든 설정이 끝났으면,

# ifup eth0 (# /sbin/ifup eth0)

이 명령을 내린 후 아무런 <에러 메시지>가 없어야 한다.

이제는 부팅할 때 마다 뿌리는 메시지중 다음의 메시지를 확인할 수 있을 것

이다.

        ———-

        ———-

        Bringing up interface lo                [OK]

        Bringing up interface eth0      [OK] <—–추가된 메시지

        ———-

        ———-

5-2. 네트웍설정 파일들 (예)

본인은 이 네트웍 설정 파일들을 “리눅스시스템의 꽃들” 이라고 말하고

싶다. 왜냐하면, 리눅스 시스템이 제기능을 다하기 위해는 특히 네트웍

설정을 빼놓고는 말하기 힘들기 때문이다.

5-2-1. /etc/HOSTNAME

———-/etc/HOSTNAME———————————–

www.linux.ac.kr  

———-end———————————————-

자신의 완전한 호스네임(호스트+네트웍부분)을 기입한다.

5-2-2. /etc/host.conf

———–/etc/host.conf————————————

order hosts,bind

multi on

———–end———————————————

바꾸거나 편집할 내용은 없다.

3-2-3. /etc/hosts

———–/etc/hosts—————————————-

127.0.0.1       localhost               localhost.localdomain

192.168.10.5     www.linux.ac.kr        www

192.168.10.3     ns.linux.ac.kr         ns

———-end———————————————-

3-2-4. /etc/resolve.conf

———–/etc/resolve.conf———————————-

search          linux.ac.kr

nameserver     192.168.10.3

———–end———————————————-

3-2-5. /etc/nsswitch.conf

———–/etc/nsswitch.conf——————————–

중략

hosts: files nisplus nis dns

(dns가 있는지 확인, 솔라리스 같은 경우 초기설치시 빠져있다.)

중략

———-end———————————————-

3-2-6. /etc/conf.modules

———–/etc/conf.modules———————————

alias eth0 ne

options ne io=0x280 irq=5

—————end—————————————–

3-2-7. /etc/sysconfig/network

———–/etc/sysconfig/network—————————-

NETWORKING=yes

FORWARD_IPV4=”no”

HOSTNAME=”www.linux.ac.kr”

DOMAINNAME=linux.ac.kr

GATEWAY=”192.168.10.1″

GATEWAYDEV=”eth0″

—————end—————————————-

5-2-8. /etc/sysconfig/static-routes

———–/etc/sysconfig/static-routes————————–

eth0   net 192.168.10.0   netmask   255.255.255.0   gw   192.168.10.1

—————-end—————————————-

구지 위의 내용을 추가할 필요는 없다. 다만 다음의 두번째 네트웍 인터

페이스 설정을 위한 하나의 예시 일 뿐이다.

5-2-9. /etc/sysconfig/network-scripts/ifcfg-eth0

———–/etc/sysconfig/network-scripts/ifcfg-eth0———–

DEVICE=”eth0″

IPADDR=”192.168.10.5″

NETMASK=”255.255.255.0″

NETWORK=192.168.10.0

BROADCAST=192.168.10.255

ONBOOT=”yes”

BOOTPROTO=”none”

—————-end—————————————-

6. 두번째 이더넷카드 인식 및 네트웍 인터페이스 설정

첫번째 이더넷 카드가 성공적으로 인식 및 설정되어 있다면 두번재 이더넷

카드는 “누워서 떡먹기” 이다.

두번째 이더넷카드에 설정할 네트웍 인터페이스 세부사항 가정 (예)

-Intel Ether Express Pro/10 PNP (eepro)         <—-eth1

io=0x210 irq=3 (모듈은 eepro.o)

IP=192.168.10.6 (study.linux.ac.kr)

GATEWAY=192.168.10.1

NETMASK=255.255.255.0

NETWORK=192.168.10.0

BROADCAST=192.168.10.255

6-1. /etc/conf.modules 파일에 추가하기

———–/etc/conf.modules———————————

alias eth0 ne

alias eth1 eepro                <——두번째 네트웍 인터페이스

options ne io=0x280 irq=5

options eepro io=0x210 irq=3    <——두번째 네트웍 인터페이스

—————end—————————————–

6-2. 같은 모듈을 사용할 경우(똑같은 모델의 이더넷카드)

만약 두번째 이더넷 카드가 eepro가 아니고 똑같은 ne 모듈을 사용

하는 경우라면 다음과 같이 한다.

———–/etc/conf.modules———————————

alias   eth0    ne

alias   eth1    ne

options ne      io=0x280,0x210          irq=5,3

—————end—————————————–

각각의 I/O와 IRQ 나열은 공백없이 컴마(,)로 구분한다.

6-3. PCI와 ISA 이더넷과 같이 사용할 경우

———–/etc/conf.modules———————————

alias eth0 3c59x

alias eth1 3c59x

alias eth2 ne

alias eth3 eepro

options ne io=0x280 irq=5

options eepro io=0x210 irq=3

—————end—————————————–

위의 예는 3Com 900계열의 2개의 PCI, NE2000호환 ISA 1개, 그리고 Intel

Ether Express Pro/10 ISA PNP 1개를 사용하는 예이다.

특히 PCI 이더넷은 커널에서 잘 인식하기 때문에 따로 options에

Parameter 들을 적어줄 필요가 없다. 그리고 커널 컴파일시, 커널에 이

미지로(vmlinuz)에 포함하여 컴파일 하든지 모듈로 인스톨하든지 상관

없다. 각자 환경에 맞추어 선택하기 바란다.

ISA 이더넷은 앞부분에서 얘기했듯이 리눅스시스템에 1개만 사용할때는

커널이미지에 포함하든지 모듈로 인스톨하든지 상관없다.

다만, ISA 이더넷은 자신의 리눅스 시스템에 2개 이상의 이더넷, 즉 PCI나

같은 모델의 ISA, 또는 다른 모델의 ISA와 같이 사용할 때는 커널 컴파일시

꼭 모듈로 인스톨해야 만 제대로 인식할 수 있다.

이것은 본인이 직접 여러번 커널 컴파일과 테스트한 후 내린 결론이다.

6-4. 두번째 이더넷 인터페이스 Gateway가 다를 경우

———–/etc/sysconfig/static-routes ——————-

eth0    net 192.168.10.0 netmask 255.255.255.0 gw 192.168.10.1

eth1    net 192.168.11.0 netmask 255.255.255.0 gw 192.168.11.1

eth1:0  net 192.168.12.0 netmask 255.255.255.0 gw 192.168.12.1

—————end—————————————–

위의 예는 각각의 인터페이스의 Gateway가 다른 경우이다.

각각의 네트웍 인터페이스가 기본 Gateway와 같을 경우는 이 파일에 추

가할 필요까지는 없고 기본 Gateway와 다를 경우만 적어 준다.

구지 첫번째 이더넷인 eth0는 적을 필요는 없다, 다만, 예시를 위해 적어

놓았으며 3번째 eth1:0는 IP-Alias를 적용한 예로 각각 다른 Gateway를

사용할 때이의 예이다. 각각의 네트웍 인터페이스(IP-Alias포함)가 각기

다른 Gateway를 사용한다면 위의 예시와 같은 방법으로 나열하면 된다.

그러나 본인이 직접 위의 내용을 추가할 때와 추가하지 않을 시의

네트웍접근을 시도한 결과 아무런 효과를 발휘하지 못한다.

즉 추가하지 않아도 서버-클라이언트는 서로 접속할 수 있다는 것이다.

라우팅 테이블의 AND 연산의 Gateway 를 참고하면 쉽게 이해하리라

생각한다.

따라서 구지 두번째 이더넷에 다른 네트웍주소를 설정하고 네트웍 부하

감소를 위해서 꼭 기본 Gateway외 다른 게이트웨이를 설정하려면

다음단계의 ifcfg-eth1 항목에 GATEWAY와 GATEWAYDEV를 적어 주면 된다.

그리고 제대로 설정되어 있는지 라우팅 테이블을 확인해 보기 바란다.

즉,

DEVICE=”eth1″

IPADDR=”192.168.11.3″

NETMASK=”255.255.255.0″

NETWORK=”192.168.11.0″

BROADCAST=”192.168.11.255″

ONBOOT=”yes”

BOOTPROTO=”none”

GATEWAY=”192.168.11.1″ #<—-네트웍주소가 eth0와 다른 경우

GATEWAYDEV=”eth1″      #<—-네트웍주소가 eth0와 다른 경우

6-5. 두번째 이더넷 /etc/sysconfig/network-scripts/ifcfg-eth1

———–/etc/sysconfig/network-scripts/ifcfg-eth1————-

DEVICE=”eth1″

IPADDR=”192.168.10.6″

NETMASK=”255.255.255.0″

NETWORK=”192.168.10.0″

BROADCAST=”192.168.10.255″

ONBOOT=”yes”

BOOTPROTO=”none”

—————end—————————————–

위의 ifcfg-eth1 파일이 없으면 만들고 똑같이 퍼미션을 주고 위와 같이

설정하면 된다. 이런 방법이 싫은 사람은,

# netcfg

또는

# linuxconf

명령으로 2번째 이더넷카드에 네트웍설정을 하면 된다.

그럼, 두번째 이더넷 카드에 네트웍을 설정했으면 한번 테스트해보자

# ifup eth1     (# /sbin/ifup eth1)

# ifdown eth1   (# /sbin/ifdown eth1)

# ifup eth1     (# /sbin/ifup eth1)

# ifconfig      (# /sbin/ifconfig)

eth0  Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx

        inet addr:192.168.10.5  Bcast:192.168.10.255  Mask:255.255.255.0

        UP BROADCAST RUNNING MULTICAST  MTU:1500

        Metric:1

        RX packets:17612 errors:0 dropped:0 overruns:0 frame:0

        TX packets:140 errors:0 dropped:0 overruns:0 carrier:0

        collisions:1 txqueuelen:100

        Interrupt:5 Base address:0x240

eth1  Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx

        inet addr:192.168.10.6  Bcast:192.168.10.255  Mask:255.255.255.0

        UP BROADCAST RUNNING MULTICAST  MTU:1500

        Metric:1

        RX packets:17696 errors:0 dropped:0 overruns:0 frame:0

        TX packets:3 errors:0 dropped:0 overruns:0 carrier:0

        collisions:0 txqueuelen:100

        Interrupt:3 Base address:0x210

lo      Link encap:Local Loopback

        inet addr:127.0.0.1  Mask:255.0.0.0

        UP LOOPBACK RUNNING  MTU:3924  Metric:1

        RX packets:50 errors:0 dropped:0 overruns:0 frame:0

        TX packets:50 errors:0 dropped:0 overruns:0 carrier:0

        collisions:0 txqueuelen:0

2개의 이더넷카드의 네트웍 인터페이스가 설정되었다.

ping 으로 다른 네트웍에도 접속이 가능한지 테스트해 보라.

두번째 이더넷카드(eth1)가 성공적으로 인식되었다면 부팅시에,

        ———-

        ———-

        Bringing up interface lo                [OK]

        Bringing up interface eth0      [OK]    

        Bringing up interface eth1      [OK]<—–추가된 메시지

        ———-

        ———-

이런 메시지가 뜰 것이다…….

7. 충돌이 예상될 경우 확인해야할 것.

cat 명령어로 I/O, IRQ 충돌여부를 확인해 보자.

[san2@www san2]$ cat /proc/interrupts

           CPU0

  0:   12026070          XT-PIC  timer

  1:        176          XT-PIC  keyboard

  2:          0          XT-PIC  cascade

  3:      33156          XT-PIC  eth1

  5:     442877          XT-PIC  eth0

12:          2          XT-PIC  PS/2 Mouse

13:          1          XT-PIC  fpu

14:     478515          XT-PIC  ide0

15:          4          XT-PIC  ide1

NMI:          0

ERR:          0

[san2@urban san2]$

시스템에 따라서 eht0 대신 “NE2000” 이라고 표시한 경우도 있다.

IRQ 충돌없이 2개의 이더넷이 각각 3번과 5번을 점유하고 있다.

[san2@urban san2]$ cat /proc/ioports

0000-001f : dma1

0020-003f : pic1

0040-005f : timer

0060-006f : keyboard

0080-008f : dma page reg

00a0-00bf : pic2

00c0-00df : dma2

00f0-00ff : fpu

0170-0177 : ide1

01f0-01f7 : ide0

0210-021f : eth1

0240-025f : eth0

02f8-02ff : serial(auto)

0376-0376 : ide1

03c0-03df : vga+

03e8-03ef : serial(auto)

03f6-03f6 : ide0

03f8-03ff : serial(auto)

fcf0-fcf7 : ide0

fcf8-fcff : ide1

[san2@urban san2]$

위의 경우는 I/O에 대해서 충돌없이 eth1이 0x210, eht0가 0x240을

점유하고 있다.경우에 따라서 eth0 대신 “NE2000″이라고 표시 될 수

있다.

대부분 충돌이 일어나는 경우는 같은 IRQ나 같은 I/O주소를 사용할

경우이다.

만약 자신의 H/W 중에서 IRQ를 공유하는 H/W등이 있다면 위의 명령으로

확인하기 바란다. 공유한다고 해서 충돌이 일어나는 것은 아니다.

다만 만약을 위해서 준비하라.

자신이 설정한 IRQ나 I/O가 다른 H/W와 같은 경우(충돌)가 있다면

대부분 부팅시 시스템이 멈추어 버릴 것이다.

이상없이 부팅이 되는데 해당 이더넷에 대한 정보가 나타나지 않으면

설정한 IRQ와 I/O에 대한 설정이 잘못될 수도 있으니 위의 명령으로

꼭 확인해 보고 수동으로 자신의 시스템에서 사용하지 않은 IRQ와

I/O를 선정하여 해당이더넷에 설정하기 바란다.

8.마치며

이상으로 남들이 다 하는 것을 장엄하게(?) 많지도 않은 지식을 총 동원

해서 기술해 보았습니다.

아직 완벽한 탈고가 이루어지지 않아 많은 오타가 있을 것으로 예상됩

니다. 부디 양해해 주시길 바랍니다.

위의 내용좀 미흡한 점이나 잘못 기술된 내용이 있으면 아래의 질문과

답변 게시판을 이용해 주시면 감사하겠습니다.

http://linuxer.suwon.ac.kr/cgi-bin/CrazyWWWBoard.cgi?db=qna

===========================================================

                부록 : 이더넷 카드의 모듈과 I/O, IRQ정보

===========================================================

# 아래의 내용은

#

# /boot/module-info(2.2.5)

# /usr/src/linux-2.3.10/Documentation/networking/net-modules.txt

# 의 2개의 문서(파일)를 혼합해 놓은 상태입니다.

# 각자 자신이 사용하는 이더넷카드가 어느 부분에 속하는지 확인해 보시

# 길 바랍니다.

3c501

        eth

        “3Com 3c501 (throw it away!)”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        io  = 0x280     IO base address

        irq = 5         IRQ

        (Probes ports:   0x280, 0x300)

3c503

        eth

        “3Com EtherLink II”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        xcvr “Transceiver (0 = BNC; 1 = AUI)” “[01]”

        io = 0(It will complain if you don’t supply an “io=0xNNN”)

        irq = 0 (IRQ software selected by driver using autoIRQ)

        xcvr = 0 (Use xcvr=1 to select external transceiver.)

        (Probes ports: 0x300, 0x310, 0x330, 0x350, 0x250, 0x280, 0x2A0,

        0x2E0)

3c505

        eth

        “3Com Etherlink Plus”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        io = 0

        irq = 0

        dma = 6 (not autoprobed)

        (Probes ports: 0x300, 0x280, 0x310)

        

3c507

        eth

        “3Com EtherLink16”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        io = 0x300

        irq = 0

        (Probes ports: 0x300, 0x320, 0x340, 0x280)

3c509

        eth

        “3Com EtherLink III”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        io = 0

        irq = 0

        ( Module load-time probing Works reliably only on EISA, ISA

        ID-PROBE IS NOT RELIABLE!  Compile this driver statically

        into kernel for now, if you need it auto-probing on an ISA-bus

        machine. )

3c59x

        eth

        “3Com 3c590/3c595 Vortex”

8390.c:

        (No public options, several other modules need this one)

#a2065

#       eth

#       “Amiga Linux/68k A2065”

        Since this is a Zorro board, it supports full autoprobing, even

        for multiple boards. (m68k/Amiga)

ac3200

        eth

        “Ansel Communications Model 3200 EISA ethernet adaptor”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        mem “Base shared memory address”

        “0x[0-9a-fA-F][0-9a-fA-F]                      

        [0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]+”

        io = 0  (Checks 0x1000 to 0x8fff in 0x1000 intervals)

        irq = 0 (Read from config register)

        (EISA probing..)

apricot

        eth

        “Apricot 82596”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        io = 0x300  (Can’t be altered!)

        irq = 10

arcnet

        arc

        “ARCnet for IP driver”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        shmem “Base shared memory address”

        “0x[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]

        [0-9a-fA-F][0-9a-fA-F]+”

        io = 0

        irqnum = 0

        shmem = 0

        num = 0

        DO SET THESE MANUALLY AT INSMOD!

        (When probing, looks at the following possible addresses:

         Suggested ones: 0x300, 0x2E0, 0x2F0, 0x2D0

         Other ones:

                0x200, 0x210, 0x220, 0x230, 0x240, 0x250, 0x260, 0x270,

                0x280, 0x290, 0x2A0, 0x2B0, 0x2C0, 0x310, 0x320,

                0x330, 0x340, 0x350, 0x360, 0x370, 0x380, 0x390, 0x3A0

                0x3E0, 0x3F0 )

#ariadne

#       eth

#       “Amiga Linux/m68k Ariadne”

        Since this is a Zorro board, it supports full autoprobing, even

        for multiple boards. (m68k/Amiga)

at1700

        eth

        “Allied Telesis AT1700”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        io = 0x260

        irq = 0

        (Probes ports: 0x260, 0x280, 0x2A0, 0x240, 0x340, 0x320, 0x380,

        0x300)

#atarilance

#       eth

#       “Atari Linux/m68k VME Lance”

        Supports full autoprobing. (m68k/Atari)

atari_pamsnet.c:

        Supports full autoprobing. (m68k/Atari)

atarilance.c:

        Supports full autoprobing. (m68k/Atari)

# Not yet modularized

#atp

#       atp

#       “Attached (pocket) ethernet adapter”

        (Probes ports: 0x378, 0x278, 0x3BC;

         fixed IRQs: 5 and 7)

cops.c:

        io = 0x240

        irq = 5

        nodeid = 0(AutoSelect = 0, NodeID 1-254 is hand selected.)

        (Probes ports: 0x240, 0x340, 0x200, 0x210, 0x220, 0x230, 0x260,

        0x2A0, 0x300, 0x310, 0x320, 0x330, 0x350, 0x360)

de4x5

        eth

        “DE425, DE434, DE435, DE450, and DE500 DEC EtherWORKS

        cards”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        io = 0x000b

        irq = 10

        is_not_dec = 0  — For non-DEC card using DEC 21040/

        21041/21140

        chip, set this to 1

        (EISA, and PCI probing)

de600

        eth

        “D-Link DE-600 Ethernet pocket adapter”

        de600_debug = 0

        (On port 0x378, irq 7 — lpt1;  compile time configurable)

de620

        eth

        “D-Link DE-620 Ethernet pocket adapter”

        bnc = 0, utp = 0  <– Force media by setting either.

        io = 0x378 (also compile-time configurable)

        irq = 7

depca

        eth

        “DEC DEPCA and EtherWORKS DE100, DE101, DE200, DE201,

        DE202, DE210, DE422″

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        io = 0x200

        irq = 7

        (Probes ports:   ISA:  0x300, 0x200;

                        EISA: 0x0c00)

dgrs

        eth

        “Digi RightSwitch SE-4, SE-6”

        dma “Toggle DMA use” “[01]”

        spantree “Toggle Spantree” “[01]”

        hashexpire “Hash Expiration”

        ipaddr “List of four IP addresses”

        ipxnet “IPX network number”

dlci

        dlci

        “RFC 1490 Frame Relay protocol (requires dlcicfg program)”

dummy

        dummy

        “Placeholder device for intermittent links”

        No options

e2100

        eth

        “Cabletron E2100”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        mem “Base shared memory address””0x[0-9a-fA-F][0-9a-fA-F]

        [0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]+”

        xcvr “Transceiver (0 = internal; 1 = external)” “[01]”

        io = 0(It will complain if you don’t supply an “io=0xNNN”)

        irq = 0 (IRQ software selected by driver)

        mem = 0 (Override default shared memory start of 0xd0000)

        xcvr = 0 (Use xcvr=1 to select external transceiver.)

        (Probes ports: 0x300, 0x280, 0x380, 0x220)

eepro

        eth

        “EtherExpress Pro/10”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        io = 0x200

        irq = 0

        (Probes ports: 0x200, 0x240, 0x280, 0x2C0, 0x300, 0x320, 0x340,

        0x360)

eexpress

        eth

        “EtherExpress”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        io = 0x300

        irq = 0         (IRQ value read from EEPROM)

        (Probes ports: 0x300, 0x270, 0x320, 0x340)

eql

        eql

        “Load balancing for point-to-point network interfaces”

        (No parameters)

eth16i

        eth

        “ICL EtherTeam 16i/32 EISA”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

ewrk3

        eth

        “EtherWORKS 3: DE203, DE204, DE205”

        io “Base I/O address” “0x[0-9a-fA-F]+”

        irq “IRQ level” “[0-9]+”

        io = 0x300

        irq = 5

        (With module no autoprobing!

        On EISA-bus does EISA probing.

        Static linkage probes ports on ISA bus:

        0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0,  

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.