[네트워크] 여러개의 이더넷 카드 인식
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,