다음 이전 차례

10. Miscellaneous.

관련된 자료들이지만 다른 어느곳에도 맞지 않는 자료들은 여기에 싣는다. 이것이 적절하지 않을지도 모르고, 일반적인 관심거리가 아닐지도 모르지만, 어쨌든 여기에 넣어둔다.

10.1 커널에 이더넷 인수 넘겨주기

부팅시에 커널에 넘겨줄수 있는 두가지 일반적인 커널 명령어가 있다.( etherreserve). 이것은 LILO나 loadlin, 또는 선택적 인수들을 받아들일수 있는 어떤 다른 부팅 유틸리티에서 도 사용할수 있다.

예를 들어, 명령어가 `blah' 이고 3개의 인수를 요구한다면(123, 456, 그리고 789라면), LILO에서는 다음과 같이 사용한다.

LILO: linux blah=123,456,789

부팅시 인수들에 대한 더 많은 정보는 (그리고 완전한 리스트), 다음의 장소를 보라. BootPrompt-HOWTO

ether 명령어

ether= 인수는 커널에 직접 만들어져 적재된 드라이버의 경우에 사용된다. ether= 인수는 모듈 드라이버에는 절대 아무 효과가 없다. 대부분의 일반적인 형식은 다음과 같다.

ether=IRQ,BASE_ADDR,PARAM_1,PARAM_2,NAME

모든 인수들은 선택이다. 첫번째 숫자아닌 인수가 이름으로 받아들여진다.

IRQ: 말그대로다. IRQ 값 `0' (보통 기본값)은 자동IRQ를 의미한다. IRQ 설정이 base_addr보다 먼저 나오는 것은 역사적 사건이다 -- 이것은 다른것이 바뀔때면 어느때든지 고쳐질 것이다.

BASE_ADDR: 이것도 말그대로다. `0'값 (보통 기본값)은 이더넷 카드의 카드별 특정 주소값을 검색하는 것이다.

PARAM_1: 이것은 원래 WD80*3과 같은 공유메모리 이더넷 카드에서 메모리 시작을 재정의 하기 위해 사용되었다. 몇몇 드라이버들은 이 값의 낮은 4비트를 디버그 메세지 레벨 설정하는데 사용 한다. 0 -- default, 1-7 -- level 1..7, (7은 최다 메세지) 8 -- level 0 (메세지 없음). 또한, LANCE 드라이버는 이 값의 낮은 4비트를 DMA 채널 선택에 사용한다. 그렇지 않으면 auto-DMA이다.

PARAM_2: 3c503 드라이버는 이것으로 내장과 외장 트랜시버를 선택한다. 0 -- default/internal, 1 -- AUI external. Cabletron E21XX 카드도 PARAM_2의 낮은 4비트를 출력 장치 선택에 사용한다. 그렇지 않으면 자동으로 찾는다.

NAME: 네트워크 디바이스를 선택할 때 이 값으로 참조를 한다. 표준 커널은 버스에 꽂혀있는 이더넷 카드에게는 `eth0', `eth1', `eth2' 그리고 `eth3'라는 이름을 사용하고, 패러렐 포트 `포켓' 이더넷 아답터에게는 `atp0'를 사용한다. arcnet 드라이버는 `arc0'라는 이름을 사용한다. 기본 설정은 검색해내는 단일 이더넷 카드에 `eth0'라는 이름을 붙인다. 여러개의 카드들은 LILO 인자들을 사용해서 그들의 주소값을 설정해야만 사용할수 있다. 1.0 커널은 LANCE-기반의 이더넷 카드들을 특별한 경우로 다룬다. LILO 인수가 무시되고, LANCE 카드들은 항상 `eth0'로 시작하는 `eth<n>' 이름으로 연결된다. 추가적으로 LANCE가 아닌 이더넷 카드들은 `eth<n+1>'로 정해지고, 보통 `eth0'는 `ether=0,-1,eth0' 와 같이 검색할수 없게 된다. (그렇다, 이건 버그다.)

reserve 명령어

이 두번째 lilo 명령어도 위의 `ether='처럼 사용된다. 예를 들어 lilo.conf 안에 부트시 선택하는 특정한 이름을 추가한다.

reserve=IO-base,extent{,IO-base,extent...}

몇몇 머신에서 이것은 특정 영역내에서 장치검사로부터(자동 검색) 장치 드라이버를 보존하기 위해서 필요하다. 이것은 엉성하게 만들어진 하드웨어, 즉 잘못 인식되거나, 이전의 검색에서 설정이 바뀐 하드웨어, 또는 커널이 초기화 시키길 원하지 않는 하드웨어가 부팅중 머신을 얼게 만들기 때문이다 (몇몇 이더넷 카드들 처럼).

보존하는 부팅시 인수 주소들은 특정한 I/O 포트 영역이 검색되지 않는데서 생기는 문제때문이다. 그 영역은 마치 장치가 이미 그 주소에서 찾아진것처럼, 커널의 포트 등록 테이블안에 보존되어진다. 이 메카니즘은 모든 머신들에게 필요한 것이 아니란 것을 알아두기 바란다. 단지 문제가 있거나 특별한 경우에만 이것을 사용할 필요가 있다.

특정 영역내의 I/O 포트들은 장치 검색으로부터 보호된다. 이 때문에 몇몇 드라이버들은 NE2000으로 인해 시스템을 정지시키거나, 다른 몇몇 장치들을 본래의 것과 다르게 인식하는 일이 생긴다. 그러므로 만일 다른 특정한 부트 인수들이 주어지지 않으면, 정확한 드라이버가 보존된 영역내의 장치를 검색할수 없다. 그래서 reserve가 몇몇 다른 부트 인수 와 함께 가장 자주 사용된다. 특정 장치를 보호하기 위해 보존하는 영역을 정하 면 여러분은 그 장치의 정확한 검색을 정해주어야만 한다. 대부분의 드라이버들은 정확한 주소 가 주어지면 포트 등록 테이블을 무시하게 된다.

예를 들어, 다음과 같은 부트 라인은

LILO: linux reserve=0x300,32 ether=0,0x300,eth0

이더넷 카드를 제외하고 다른 모든 장치 드라이버들이 0x300-0x31f를 검색하지 못하게 한다.

보통 부팅시 명령은 인자를 11개 까지밖에 줄수 없기 때문에, 여러분은 reserve 키워드당 5개만을 정할수 있다. 여러개의 reserve 명령은 특별히 복잡한 요청이 있을을 경우에 사용하게 된다.

10.2 이더넷 드라이버들을 모듈로 사용하기

대부분의 리눅스 배포판에 적재되는 커널은 아주 소수의 드라아버만을 그안에 담고 있다. 그대신 독립적이고 동적으로 적재가능한 모듈로써 드라이버들을 제공하고 있다. 이 모듈 드라이 버들은 관리자가 보통 modprobe(8) 명령을 사용해서 적재하거나, 또는 어떤 경우 에는 modprobe를 호출하는 `kerneld' (2.0에서) 이나 `kmod'를 통해 자동으로 적 재된다.

여러분의 특정한 배포판은 이더넷 설정을 위해 아주 멋진 그래픽 설정 툴들을 제공할지도 모른다. 가능하면 먼저 그들을 사용하고 시험해봐라. 이 아래에서는 이 설정 프로그램들이 무엇 에 근거하며, 무엇을 바꾸는지에 대해 설명한다.

어떠한 모듈들이 사용되고, 각 모듈에는 어떤 옵션이 지원되는지에 대한 제어 정보들은 보통 /etc/conf.modules 화일에 저장되어 있다. 이 화일에서 관심분야(이더넷 카드들에 대한)의 두 주요 옵션은 aliasoptions이다. modprobe 명령은 모듈정보에 관해서 이 화일을 참고한다.

실제 모듈 자신은 보통 /lib/modules/`uname -r`/net 디렉토리에 들어있다. 여기서 uname -r 명령은 커널 버전을 돌려준다 (예. 2.0.34). 여러분은 그곳에서 여러분의 카드에 맞는 모듈을 찾을수 있을 것이다.

여러분이 여러분의 conf.modules 화일에 가장 먼저 할 일은 eth0 네트워크 인터페이스를 사용하기 위해 어떤 드라이버가 사용될지 modprobe에게 말해주는 것이다. 여기서 alias 명령을 사용한다. 예를 들어, 여러분이 smc-ultra.o 드라이버 모듈을 사용하는 ISA SMC EtherEZ 카드를 가지고 있다면, 이 드라이버를 eth0alias하기 위해서는 다음과 같은 줄을 추가 하면 된다.

        alias eth0 smc-ultra

여러분에게 필요한 다른 하나는 특정 모듈 (또는 모듈 별명:module alias)에 어떠한 옵션이 사용되었는지를 알려주는 options 줄이다. 위의 예제를 이어보면, 여러분이 options 행 없이 단지 alias 행만을 사용할 경우, 커널은 ISA 카드 를 자동 검색으로 찾는 것은 좋은 생각이 아니라며 여러분에게 경고할 것이다 (dmesg를 보라). 이 경고를 없애려면, 모듈에게 카드가 무슨 I/O 주소를 가지고 있는지 말해주는 행을 추가해줘야 한다. 예제의 경우 16진수 주소 0x280라고 적고 있다.

        options smc-ultra io=0x280

대부분의 ISA 모듈들은 insmod 명령행 중에 io=0x340irq=12 같은 인수를 받아들인다. 여러분이 카드의 탐색을 피하기 위해 이러한 인자들을 주는 것은 필요하고 아니면 적어도 강하게 추천한다. PCI 와 EISA 장치들과는 다르게 대부분의 ISA 장치들을 자동 검색할 현실적으로 안전한 방법이 없다. 그리고 드라이버를 모듈로 사용할 때는 반드시 피해야만 한다.

각 모듈들이 받아들이는 모든 옵션들의 목록은 다음 파일에서 찾아볼수 있다.

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

여러분의 특정 카드에서 사용할수 있는 옵션이 무엇인지 찾아서 읽어보길 권한다. 모든 8390 기반의 드라이버들과 PLIP 드라이버처럼 하나의 모듈로 여러개의 장치들을 제어할수 있는 모듈을 위해 몇몇 모듈들은 콤마로 구분된 여러개의 값들을 지원한다. 예를 들어,


        options 3c503 io=0x280,0x300,0x330,0x350 xcvr=0,1,0,1

위에서는 card 2와 4는 외부 단자를 사용해서 하나의 모듈이 4개의 3c503 카드를 제어하고 있다. `='이나 콤마 주변에 공백이 있어서는 안된다.

또 알아둘 것은 사용중인 모듈은 제거할수 없다는 것이다. 이것은 여러분이 모듈을 제거하기 전에 ifconfig eth0 down (이더넷 카드 죽이기)를 사용해야 한다는 것이 다.

lsmod 명령은 무슨 모듈이 적재되었고, 어느것이 사용중인지 알려주며, rmmod는 그들을 제거한다.

10.3 관련 문서

이 정보의 많은 부분은 가치있는 정보자원들이 있는 comp.os.linux 뉴스그룹의 게시물을 저장한 것이다. 다른 유용한 정보들은 Donald 자신이 만든 작은 화일들에서 온 것이다. 물론 만약 여러분이 이더넷 카드를 설치하고나면, 여러분이 사용할 소프트웨어를 실제적으로 설정할 수 있는 NET-2 하우투를 읽어보고자 할 것이다. 또한, 자신에게 약간이라도 해커다운 면이 있다 면, 여러분은 언제나 드라이버 소스 화일들로부터 추가적인 정보들을 얻을수 있을 것이다. 그 안에는 실제 코드가 시작되기 전에 보통 어떤 중요한 점들에 대해 설명한것이 있다.

그들에게 리눅스 세계에서 정보를 찾는 것들은 별로 특별한 것도 아니다.(예를 들어, 10BaseT가 무엇이고, AUI가 무엇이며, 허브가 하는 이은 무엇인지 등등.) 나는 comp.dcom.lans.ethernet과/또는 comp.sys.ibm.pc.hardware.networking 뉴스그룹을 이용하길 권장한다. dejanews.com에 있는 그러한 뉴스그룹 아카이브들 은 쓸모없는 정보자원일수 있다. 여러분은 RTFM(모든 뉴스그룹 FAQ들을 가지고 있는)로부터 뉴스그룹 FAQ를 가져올수 있다. 그 URL은 다음과 같다.

Usenet FAQs

여러분은 또한 다음의 URL에서 흔히 `Ethernet-HomePage'라고 말하는 곳을 볼수 있다.

Ethernet-HomePage

10.4 Disclaimer and Copyright

이 문서는 복음성가가 아니다. 그러나 여러분이 찾을수 있는 가장 시대에 맞는 정보일 것이다. 여러분 자신을 빼고는 여러분의 하드웨어에 무슨 일이 일어나든지 아무도 책임을 지지 않는다. 만일 여러분의 이더넷 카드나 다른 어떤 하드웨어에서 연기가 난다고 해도(...거의 불 가능하다!) 우리는 아무런 책임을 지지 않는다. 즉, 이 문서에 포함된 정보로 인해 일어난 어떠 한 손실에 대해서도 저자는 아무런 책임을 지지 않는다.

이 문서는 Paul Gortmaker에게 저작권이 있다. Copyright (c) 1993-1997 이 매뉴얼의 사본을 만들고 배포하는 것은 허용되며 이것은 모든 사본들에게도 적용된다.

이 문서의 수정판을 복사하고 배포하는 것은 사본과 같이 허용되며, 원본과 정확히 동일한 저작권 내용을 포함하고 있어야 하며, 그 모든 결과물은 이와 같은 허용조건하에서 배포되어 진다.

이 문서를 다른 언어로 번역한 것의 복사와 배포는, 위의 수정판에 대한 조건하에서 허용된다.

번역을 하는 사람들이 고려할 것이다. 첫째, 다른 출력 포맷을 생성할수 있으므로 SGML 소스 (하우투 메인 사이트에서 FTP로 사용할수 있다)를 번역하라. 여러분이 번역한 오리지날 영문 SGML 소스의 사본을 간직하라! 갱신된 하우투가 나오면, 그 버전의 새 SGML 소스를 가져와서, 간단히 diff -u old.sgml new.sgml라고 치면 무엇이 바뀌었는지 정확하게 보여주고 여러분은 SGML 소스를 전부 다시읽고 재번역할 필요없이 쉽게 바꾸어서 합칠수 있다.

만일 여러분이 출판된 문서에 반영하길 원하면, 연락해서 (e-mail을 통해서) 가능한 가장 최신 의 정보들을 있을 것이다. 과거에는 리눅스 하우투 문서의 철지난 버전들이 출판되어서, 이미 갱신된 버전에는 답해져 있는 질문들로 개발자들을 시달리게 한 적이 있다.

10.5 끝맺음

여러분이 만일 이 글에서 오타나, 아니면 철지난 정보들을 찾아내게 되면, e-mail을 보내 주기 바란다. 이것은 매우 크고, 전체적으로 보기는 쉽다. 만약 여러분이 수정한 것을 보냈는 데, 다음 버전에 포함되지 않았다면, 주저말고 다시 보내길 바란다. 그건 아마도 내가 받은 스팸과 쓸모없는 메일의 바다에서 잃어버렸을 것이기 때문이다.

Thanks!

Paul Gortmaker, p_gortmaker@yahoo.com


다음 이전 차례