다음 이전 차례

6. Service : Hardware 될때까지 바꾸어라!

이제 마지막으로 hardware에 대해 논하겠습니다. 사실 4년전만 해도 linux는 하드웨어의 특성을 엄청 잘 탓었습니다. 그러나 펜티엄이 나오면서 왠만큼 특성을 타는 하드웨어가 줄어들기 시작했죠. 그러나 한가지 변하지 않는것이 있습니다. "국산 하드웨어는 잘 안된다... XX대기업 회사 제품은 리눅스 깔면 안깔린다 등등.." 그러나 시대가 흘러가면서 이러한 소문도 점차 줄어들기 시작했죠. 자  소문이야기는 그만하고, 하드웨어 이야기를 합시다.

6.1 PNP의 경우 잘생기는 현상

PNP...Plug and Pray...(장착하고 기도하라) 너무너무 괴롭히는 하드웨어입니다. 물론 요놈을 끌수 있으면 좋으련만... Linux와 Windows를 사용하시는 분들이시라면 요 PNP때문에 고생하는 분들이 꽤 계실것입니다. 급기야 하드웨어를 교체까지 하던지, 아니면 linux를 포기하게 되죠. 이중, 여러사람들에게 질문을 받게 되는데, 다 그런것은 아니고 아주 간단한 작업을 하면 이 문제는 해결됩니다. 바로 리눅스를 깔고나니 하드웨어, 특히 사운드카드와 랜카드가 먹통이 되는 현상이죠. 어쩔때는 작동되고, 어쩔때는 안되고... 이것은 바로 OS가 PNP를 누가 먼저 선점하느냐에 따라 변하는 괴현상입니다. 해결책은 의외로 간단합니다. 리부팅, 즉 웜부팅(Ctrl+Alt+Del)으로는 절때 꺼서는 안됩니다. 그리고 Windog에서 다시 시작으로 해도 안됩니다. 전원을 완전히 내려서 어떤 OS도 PNP를 선점하지 못하게 해야 합니다. 그리고나서 linux나 windog를 선택해주시면 문제가 해결됩니다.

6.2 isapnp를 이용하여 잡고싶어요

isapnp를 이용하여 하드웨어를 설정하는 방법이 있습니다. 사용방법은 다음과 같습니다.

pnpdump > /etc/isapnp.conf
편집기로 /etc/isapnp.conf 내용을 본다.

사실 이 부분을 보시면, 영어이기는 하지만 안내문이 나옵니다. 제가 시간이 나면 isapnp tool을 영어로 번역하여 패키지로 올려놓겠습니다. 흠... 일단 대충 보시면 아실것입니다. IRQ와 IO, DMA를 선택하는 것이지요. 앞의 #를 선택해서 제거해 주시면 끝입니다. 그리고 한가지... 꼭 "Y"를 지워달라는 말이 있죠? 요것을 꼭 해주시기 바랍니다. 이렇게 해서 저장을 하고 나와서 다음을 실행시켜 주세요.

isapnp /etc/isapnp.conf

그러면 준비 끝! 만약 에러가 나오면 다시 설정해 주세요. 이것은 많은 경험이 요구됩니다. 그리고 나서 module을 올려야 한다면 모듈을 올려주시면 문제 끝입니다. 자, 왠만큼 해결되었습니까?

6.3 하드웨어가 windog에서도 잘 안잡혀요.

요건 여러가지 원인이 있을수 있겠으나, 가장 많은 경우는 pci의 irq가 엉켜서 생기는 문제가 많습니다. 요건 linux에서도 생깁니다. 해결방법은 여러 가지가 있습니다.

  --> PCI카드를 전부 뽑아서 순서를 바꾸어서 다시 장착한다.
  --> BIOS에서 PCI부분의 정보를 reset한다.
  --> 보드의 건전지를 제거했다가 다시 붙인다.
  --> 보드 구입처에가서 보드를 바꾸어 달라고 한다.
기타 등등...

여러 가지가 있을 수 있습니다만, 가장 손쉬운 방법은 역시 PCI카드의 꼽는 위치를 바꾸는 것입니다. 그리고 나서 다시 BIOS에 들어가 설정해주고 windog나 linux로 가보세요. 잘 되는 경우가 엄청 많았습니다.

6.4 module을 올리고 싶어요. 어떻게 해요?

우와악! 이건 X-Window에서 하는 것이 사실 편하답니다. kernelcfg라는 프로그램이 있습니다. 이것으로 대충 눈짐작으로 추가할 수 있습니다. 그러나 상세한 정보를 원하신다면... 일단은 /usr/src/linux/Documentation에 가보세요. 자신의 하드웨어를 커널이 지원하는지 일단 알아봐야겠죠? 만약 있다면? 그럼 설치해야죠! 알짜의 경우 대부분의 하드웨어를 모듈로 만들어 놓았기때문에 다시 컴파일할 필요가 없습니다. 자, 다음의 명령을 익힙시다.

insmod : module을 install한다.
rmmod : module을 remove한다.
modprobe : module을 probe 한다.
lsmod : 현재 install되어 있는 modules를 보여준다.

module은 /lib/modules/2.2.xx/에 있습니다. 2.2.xx는 자신의 커널 버젼과 같으며, 이 복수개가 있다면 현재 설치되어 있는 커널이 무엇인지 수단과 방법을 가리지 말고 알아내야 합니다. 자신의 랜카드가 3c509라면... /lib/modules/2.2.xx/net/3c509.o 가 설치할 모듈 이네요.

insmod /lib/modules/2.2.xx/net/3c509

간단하죠? 만약 irq나 io를 옵션으로 붙여야 한다면? ne2000호환일때 그런 경우가 많죠. 이때는 /etc/conf.modules라는 파일을 만듭시다. 그리고 다음의 내용을 넣읍시다.

==> 자신의 ne2000카드의 IRQ가 5번이고, IO가 300번일때...


alias eth0 ne
options ne io=0x300 irq=5

이렇게 저장하시고 modprobe ne 라고 하시면 문제 끝! 쉽죠? 많은 경험들을 글로 표현하기란 정말 쉽지 않군요. 일반 서점에서 살 수 있는 딱딱한 교본으로 백날해도 안되는 경우가 많지요? 이렇게 경험을 부족하지만 글로 쓸 수 있게 기회를 준 여러분들께 이 글을 드립니다.


다음 이전 차례