다음 이전 차례

7. 현재의 설정을 알기 위해서는?

여기서의 「설정」라는 것은 PnP 버스 자원(어드레스, IRQ, DMA)의 할당일 것이다. 디바이스가 어떻게 설정이 되어 있는가? 」라는 질문은, 디바이스와 디바이스 드라이버의 모두에 대한 질문이다. 각 부분은 같은 대답은 하여야 한다.

  1. 디바이스 드라이버의 소프트웨어의 설정은 어떻게 되어 있는가? (즉, 드라이버는 하드웨어 설정이 어떻게 되고 있다고 생각하고 있는가?)
  2. 디바이스 자체에는 어떤 설정이 되고 있는가?
당연히, 디바이스 하드웨어와 그 드라이버의 설정은 같아야만 한다. (그리고 대부분은 같다). 정상적으로 동작하지 않는 경우는, 어딘가에 서로 다른것이 있는 것이다. 즉, 실제의 하드웨어 설정에 대해서 드라이버가 가지고 있는 정 보가 잘못되었다는 것이다. 이것은 문제를 일으킨다. 사용하는 소프트 웨어가 틀림 점을 적절히 지적해 주지 않으면(또는 바른 설정을 해 주지 않으면), 하드웨어 디바이스와 그 드라이버가 어떻게 설정 되고 있는 지를 조사할 필요가 있다. Linux의 디바이스 드라이버는 「모든 정보를 표시한다」경우도 있지만, 하드웨어의 설정을 조사하는 것 은 간단하지 않을지도 모른다.

이것과는 다른 문제도 있다. 즉, 화면에 설정에 관한 메세지가 표시 되었을 때, 이것이 디바이스 드라이버의 설정인가, 디바이스 하드웨어의설 정인가, 혹은 그 양쪽 모두인지 분명치 않는 경우가 있다는 문제이다. 디바이스 드라이버를 설정한 후, 하드웨어가 이것과 같은 설정이 되어있는지를 디바이스 드라이버가 확인하고 있다면, 드라이버가 보고하는 설정은 하드웨어와 드라이버 공통의 설정이 되어 있는 것이다.

그렇지만 이것을 하지 않는 일부의 드라이버는, 확인하고 되지 않은 설정을 받아들일지도 모른다. 예를 들면, "setserial" 는 확인되지 않은 설정도 받아 들인다. (비록 버스 자원을 조사하도록 지시한 경우에 있어서도). 이와같이 "setserial" 이 표시하는 것은 드라이버의 설정뿐이고, 하드웨 어의 설정은 표시하지 않는다.

7.1 Boot-time Messages

설정 정보의 일부는, 컴퓨터를 시작했을 때 BIOS의 메세지와, Linux의 시작 메세지를 읽으면 알수 있다. 이들 메세지는 보여지는 시간이 너무 빠라 읽을수 없는 경우가 많지만, 메세지가 멈춘 뒤에 Shift- PageUp을 몇 번정도 누르면 메세지를 스크롤백시킬 수 있다. forward하려면 Shift-PageDown를 사용한다. 쉘 명령어로서 "dmesg" 라고 입력하면, Linux의 커넬 메세지라면 언제나 표시 할 수 있다. 그러나, (BIOS 메세지를 포함한)매우 중요한 메세지는 나타나지 않는 것도 있다. Linux가 출력한 메세지는, 디바이스 드라이 버가 알고 있는 설정만을 표시하는 것이다. 이 설정은 혹시 , 오류가 있는 설정 파일로부터 읽혀진 것일수도 있다.

BIOS로부터의 메세지는 그 시점에서 하드웨어 설정을 표시하지만, PnP OS, isapnp, PCI Utilities 등이 후에 설정을 변경할 수도 있다. BIOS의 메세지는 최초에, Linux의 메세지보다도 앞에 표시된다. 뒤부터 Shift-PageUp를 사용해 메세지를 읽는 방법 대신에, "Pause" 키를 눌러서 메세지 출력을 멈추는 방법을 시도해 보시오. 어떤 키를 누르면 다시 동작을 시작한다. 그러나, Linux 로부터 메세지가 출력되기 시작하면, "Pause" 키는 더 이상 사용할 수 없다. "Pause" 키는 Linux 로부터의 메세지 출력을 멈추지 못하지 때문이다.

7.2 디바이스 드라이버는 어떻게 설정되고 있는가?

커멘드 라인에서 실행하여 (시리얼 포트용 "setserial" 처럼), 설정을 표시하는 프로그램이 있을지도 모른다. /proc 디렉토리 트리 는 편리하다. /proc/ioports는 드라이버가 사용하고 있는 I/O 어드레스를 표시 한다. (혹은, 어드레스가 오류가 있는지를 체크한다). 이것을 사용해 하드웨어의 I/O 어드레스를 설정하는 것은 할 수 없다.

/proc/interrupts는 현재 사용 중인 인터럽트만을 표시 한다. 드라이버에 할당되어 있는 인터럽트의 다수는, 사용 중인 것이 없을 때문에 완전히 표시되지 않는다. 예를 들면 floppy 드라이브에 floppy disk가 들어 있어 언제라도 사용할 수 있는 상태가 되고 있어도, 실제로 사용되고 있지 않으면 인터럽트는 표시되지 않는다. 반복하지만, 여기에 표시되는 것은, 인터럽트가 하드웨어내에 존 재한다는 것이 아니다. 하드웨어에 존재하지 않는 것을 알수 있는 것은, 이 인터럽트가 발생된 특별한 인터럽트가 0 개인지를 조사한다. 그러나 인터럽트가 몇개쯤 발생되었다고 나타나고 있어도, 이 인터럽트가 그 디바이스상에서 일어났다는 보증은 없다. 현재 사용중 아닌 디바이스상에서 일어난 것일지도 모르고, (커넬 경유로)사용되는 것이 없는 디바이스에서도, 어떤 이유로 인터럽트를 발행할지도 모른다.

7.3 하드웨어 디바이스는 어떻게 설정되고 있는가?

"lspci" 명령어를 사용해, PCI 버스상의 디바이스에 대한 버스 자원의 할당을 조사하는 것은 간단하다. 버젼 2.2 보다 전의 커넬에서는, /proc/pci 와 /proc/bus/pci 를 참조 하시오. 또 /proc/pci의 IRQ는 16진수 표기로 표시되는 것에 주의 하시오. /proc/bus/pci/devices 의 해독에 대해서 걱정할 필요는 없다. "lspci" 가 대신 행해준다 .

ISA 버스의 경우에는 pnpdump --dumpregs를 사용하려고 할지도 모르지만, 이것은 확실한 방법이 아니고, 결과는 판단독하기 어려울지도 모른다. 또 pnpdump 가 찾아낸 「read-port 어드레스」과 디바이스가 찾아낸「 I/O 어드레스」를 혼동하지 말아 주세요. 이것들은 같은 것이 아니다. ISA 버스상(혹은 PnP의 옛것)에서 발견되지 않는 하드웨어를 검출하려면, "scanport" 프로그램을 시험해 보시오. 그러나, PC 가 위험하다는 것에 주의합시다. 또, 이것은 IRQ 표시 를 나타내지 못하고, 확실하게 하드웨어를 인식하는 것도 아니다.

BIOS가 시작시에 출력하는 메세지를 보면, 하드웨어 설정이 어떻게 되어 있는지를 알 수 있다. BIOS에 설정을 맡기고 있다면, 이것은 이전과 동일한 것이어야 한다. Linux의 시작시에는, 드라이버나, 하드웨어가 있을지를 확 인(그리고 IRQ와 DMA 도 설정되고 있으면 그것도 확인)한 메세지를 출력 한다. 물론, 디바이스가 바르게 동작하고 있으면, 디바이스와 드라이버 의 설정은 동일하다.


다음 이전 차례