다음 이전 차례

3. 마우스를 사용할 수 있도록 하자

여기에 마우스 인터페이스와 프로토콜의 종류을 알수있다. 다음을 보시오.

3.1 마우스가 인터럽트 설정

자신의 마우스가 어떤 하드웨어·인터페이스를 사용하는지 알았다. 이번은, 마우스가 사용하고 있는 인터럽트를 조사하고, 인스톨되어 있는 다른 주변 기기와 충돌하지 않는 것을 확인 해야한다. 특히 후자는 반복 체크하자! 장착되어 있는 다른 디바이스와 충돌은 없는가!

마우스가 다른 디바이스의 어느것과도 같은 인터럽트 번호를 사용하지 않는 것을 꼭 확인해야 한다. 비록 다른 오퍼레이팅·시스템에서 잘 될지 모르지만, Linux에서는 마우스가 인터럽트 번호를 다른것과 공유하는 것 은 할 수 없다. 모든 주변 기기에 대해서 문서를 체크하고, 무엇이 어느 인터럽트 번호를 사용하고 있는지 조사하시오.

Linux 에서는, busmouse가 이용되는 IRQ는, 그것을 사용하려고 하는 어플리케이션케이 션에 의해 오픈될 때까지 등록되지 않는다. 한편, Plug-n-Play의 하드웨어에는, 부팅시에 인터럽트를 등록하는 것이 많다. 이 것으로부터, Plug-n-Play 하드웨어의 어떤 것이, 마우스가 사용하는 IRQ를 먼저 빼앗아 버리는 가능성이 있다.

주의해야 할 것은, 만일 다른 오퍼레이팅·시스템에서는, Plug-n-Play 의 카드를 busmouse와 충동하지 않는 IRQ로 초기화해 줄수도 있지만 Linux 에서는 그렇게 능숙하게 옮겨지지 않을 것이다, 라는 것이다. 주변 기기 전부에 있어서 IRQ의 충돌을 발생시키지 않도록 한다. 이것은 당신에게 달려있는 것이다.

IRQ의 일반적인 사용법

대부분의 경우, IRQ4는 첫번째의 시리얼·포토 (/dev/ttyS0), IRQ3는 두번째 (/dev/ttyS1) (정말로 이 근처의 디바이스가 가지고 있으면, 의 이야기이다. 가지고 있지 않다면, 이것들의 IRQ는 편하게 사용할 수 있다.) SCSI 어댑터에는 IRQ5을 사용하는 것도 있고, IRQ12를 사용하는 네트워크· 카드도 있다. PS/2 포트에 붙은 머신에 있어서, 다른것에도 IRQ12를 사용하는 카드를 가지고 있다는 것은 큰 문제이다. IRQ12를 PS/2 포트에만 사용할 수 있게 강요하기 때문이다.

ATI-XL, Inport, Logitech 마우스의 경우, 커넬의 디폴트는 IRQ5을 사용하게 되어 있다. 그러므로, 사전에 컴파일을 마친 커넬에 청구되면 (CD-ROM으로부터 부팅한 경우등), 그 인터럽트 번호를 사용하지 않으면 안 되는 것이다. Inport나 Logitech의 마우스를 최근 의 커넬로 사용한다면, command line option을 사용해, 몇 번째의 인터럽트를 사용하는 것이 좋은지 커넬에 전달할 수 있기 때문에, 재컴파일의 수고는 필요하지 않다.

Inport 와 Logitech 마우스

컴퓨터의 케이스를 열고, 마우스가 연결되고 있는 카드를 보면, 인터럽트 번호 (IRQ 라는 이름으로도 알려져 있다.) 을 2, 3, 4, 5로 설정하는 일련 의 점퍼가 반드시 있다. (운이 좋으면 ``INTERRUPT''도 기록 되어져 있다. ). 인터럽트 번호를 변경하려면, 간단히 점퍼를 지금의 위치에서 빼고 , 적당한 핀의 대치하는 것 뿐이다.

       ****************************************************
       *** 점퍼를 변경하기 전에, 컴퓨터의 전원이 ***
       *** 껴져 있는지 확인!!                       ***
       ****************************************************

ATI-XL 마우스

ATI-XL, 그리고 ATI busmouse가 있는 것이라면 IRQ를 소프트웨어로 선택가 능하다 - 마우스와 함께, IRQ를 설정하는 MS-DOS 프로그램 (VSETUP.EXE) 도 이용되고있다. 설정하려면, (일단 ) MS-DOS를 부팅하고, 이 프로 그램을 동작시킨다. VSETUP 프로그램에는, vertical refresh rate 을 증가시키기 위한(화면에 깜박거림이 생긴다) 옵션 ``/70''가 있는 것에 주의. VSETUP 프로그램에서는 마우스의 어드레스를 primary 와 secondary 의 어느 쪽이든 설정할 수 있지만, primary로 설정해 주기 바란다. 그렇지 않으면, 커넬이 마우스를 인식할 수 없게 된다.

VSETUP을 동작시킨 뒤에는 일단 하드웨어 리셋트를 하지 않으면, 새로운 설정 내용이 유효하게 되지 않는다.

PS/2 마우스

PS/2 마우스는 반드시 IRQ12를 사용해야한다. 변경하는 것은 할 수 없다. 좀처럼 없겠지만, 다른 디바이스에서도 IRQ12를 사용하고 있는 경우는, 그 주변 기기 쪽의 점퍼를 재 설정하고, 다른 IRQ를 사용하게 하도록 하지 않으면 안 된다.

3.2 커넬의 설정

당신의 busmouse를 정확하게 동작시키기 위해서는, busmouse 지원을 넣기 위하여 커넬을 설정해서 고칠 필요가 있다. 컴파일 완료된 커넬을 사용하고 있는 경우는, 세종류의 busmouse 모든 지원 넣어져 있는것도 많다. 그렇지만 이것으로도 불충분한 것이 있다. 그 커넬은, 실제와는 달라진 인터럽트 번호를 사용하려고 시도하거나, 자동 검출의 혼란으로 결국, 당신의 마우스를 다른 종별의 것으로 간주 할지도 모른다.

버젼 2.4 계열 이전의 커넬에는, busmouse가 사용하고 있는 IRQ를 자 동검출하는 기능이 없다. 따라서, 당신의 카드가 커넬의 디폴트 값인 IRQ 5 이외로 설정되어 있는 경우는, 대표로 어느 IRQ를 사용할것인지 커넬에 알려주지 않으면 안된다.

이것에는 두가지 방법이 있다. 제일 간단한 것은, 부팅 단계에서 커넬의 커멘드 라인으로 옵션을 건네주는 방법이다.

참고로 「커넬의 컴파일」의 장을 읽는 편이 좋지만, 먼저 「새로운 커넬에 있어서 인터럽트가 변화한다 」의 곳을 주의하시오. 이 근처에 대해서는, Bootprompt-HOWTO 도 많은 도움이 된다. 이 HOWTO 올린 사이트라면 들어 있을 것이다.

커넬의 컴파일

커넬 디렉토리(여기서는 /usr/src/linux 라고 가정ㅎ한다)에 가서,

       make config
와 같이 한다.

가지고 있는 마우스의 종별이 분명히 하지 않는 경우, 먼저 처음에는 busmouse의 옵션 을 모두 유효하게 하고서 커넬을 재컴파일하면 좋다. 당신의 마우스를 시작시에 자동 판별해 줄지도 모른다. 이것으로 언제나 능숙하게 하는것은 한계가 있지만, 계획대로라면, 이미 컴파일 하지않고 완료된다.

당신 형식의 busmouse 인터페이스에 속하는 질문 항목에는 ``y'' 또는 ``m'' 라고 답하고, 그 이외모든 busmouse의 질문에는 ``n''이라고한다. ``m'' 옵션은, 시스템 설정이 커넬 모듈의 로딩에 대 응하고 있는 경우에만 사용 하시오. 대응하고 있지 않은 경우, 혹은 지금 말한 것의 의미를 알지 못한다면 ``y'' 라고 답해 두는 편이 무난하다. 그러면, 기능을 커넬 내에 직접 추가한다.

예로서, Inport 마우스를 가지고 있다면,

       Microsoft busmouse support
에 대해 ``y'' 라고 하고, 다른 busmouse 모든 질문에는 ``n'' 라고 답한다. 마우스와 관계없는 질문에는, 평소와 같게 답한다.

PS/2 마우스의 지원을 추가하는 커넬을 컴파일하려면,

       PS/2 mouse (aka "auxiliary device") support
에 ``y'' 라고 답한다.

PS/2 마우스 드라이버는, 실제는 2 종류의 디바이스를 지원하고 있다. 표 준의 PS/2 외부 디바이스 콘트롤러, 그리고 Texas Instruments Travelmate 와 Gateway Nomad 랩탑에서 사용되고 있는 Chips & Technologies의 특수한 PS/2 마우스·인터페이스·칩인 두가지이다. 이들 기종에 trackballs을 지원하기 위해 컴파일 하려면,

C&T 82C710 mouse port support (as on TI Travelmate)

에 ``y'' 라고 답한다. 82C710 드라이버는 실제로는 표준 PS/2 마우스 드라이버에 대해 add-on(추가)이므로, 여기뿐만 아니라 표준 PS/2 드라이버에 대해서도 ``y'' 라고 답할 필요가 있는 것에 주의하시오.

표준의 PS/2 마우스·디바이스와, 82C710 디바이스 양방향 설정이 되어 있는 경우, 드라이버는 부팅시에 먼저 82C710 칩의 존재를 확인하려고 한다. 검출에 실패하면, 대표로 표준 드라이버가 이용되게 되어 있다 . 그러므로, 이것들의 마우스·인터페이스를 양쪽 모두 추가한 커넬에서는, 표준의 PS/2 마우스·포토를 이용할 수 있다. 그렇지만, 존 재하지 않는 82C710 칩이 잘못 검출 되었다는 보고가 1 건 있었다. 그렇기 때문에, 안전한 쪽을 취한다면, 필요하지 않는 82C710의 지원은 설정 하지 않는 것이 무난하다.

그리고, 마우스가 어느 인터럽트 번호를 사용하는지 커넬에 알려주지 않으면 안된다. 항상 PS/2 마우스라면 IRQ는 12에 고정되므로 여기는 거른다.

Logitech, Inport, 혹은 Logitech 프로토콜을 사용하는 ATI 마우스라면, /usr/src/linux/include/linux/busmouse.h 라는 파일의

       #define MOUSE_IRQ               5
라는 행을 마우스 인터럽트 번호로 마춘다. (마우스 인터럽트 번호를 찾는 방법에 있어서는, ``마우스 인터럽트 번호 설정'' 을 참조하라.)

ATI-XL 마우스라면, /usr/src/linux/drivers/char/atixlmouse.c 이하의 행 을 마우스 인터럽트 번호로 맞추시오.

       #define ATIXL_MOUSE_IRQ         5
마우스 인터럽트 번호를 2 로한경우는, PC 아키텍쳐의 특수성 때문에 , #define 쪽은 9 로 하지 않으면 안 된다.

인터럽트 번호 3 를 사용하는 마우스는

       #define MOUSE_IRQ               3
인터럽트 번호 2 를 사용하는 마우스는
       #define MOUSE_IRQ               9
같게, 위의 행을 고쳐 쓴다.

다음에, 커넬을 설명에 따라 컴파일하고, 가능한 새로운 커넬로 부팅한다. 이것으로, busmouse의 지원을 확실히 포함하는 커넬 을 얻을수있다.

새로운 커넬에 있어서 인터럽트 번호 변환

어느 인터럽트 번호를 사용할지를 컴파일시에 정하여 넣어 버리는 것은, 어떤 버젼의 커넬에서도 사용할 수 있는 방법이다. 새로운 커넬 (2.x.x 의 어딘가로부터)에서는, LILO 와 LOADLIN 종류를 사용해, 커넬을 읽는 사이에 Logitech 와 Microsoft Inport 마우스의 인터럽트 번호를 인수로서 커넬에 건네줄 수 있게 되어있다. 커넬을 컴파일하고 수정하지 않아도 (혹은 하는방법을 모르더라도) 좋기 때문에, 실제로 시간 절약이 된다. 또, 마우스 드라이버를 모듈로서 로드하도록 커넬을 설정한 경우는, 모듈이 로드되는 때에 이러한 정보를 건네주게 된다.

이하의 옵션을 LILO의 boot 행에 넣으면, 인터럽트 번호를 변경할 수 있다.

       bmouse=3  (Logitech 바스마우스)
       msmouse=3 (Microsoft Inport 마우스)
위의 수치 3을, 사용하는 마우스의 실제 인터럽트 번호로 바꾸시오. lilo에서 이것을 사용하는 예는:
       LILO:linux msmouse=3
이 타입 정보를 LILO 와 LOADLIN의 설정 파일에 추가하면, 다시 타이프하여 지정하지 않고 완료된다. 방법은 LILO, LOADLIN 의 문서를 보시오.

당신의 시스템이 모듈의 자동 로드에 kerneld를 사용하고 있는 경우는, /etc/conf.modules 나 /etc/modules.conf를 편집해 아래 중의 어느것에 1 행을 추가하시오.

       options msbusmouse mouse_irq=3
       options busmouse mouse_irq=3

3.3 마우스·디바이스

Linux 에서는, 마우스는 /dev 디렉토리에 있는 파일을 통해 억세스되고 있다. 아래의 표는, 인터페이스의 종류와, 어느 디바이스 파일을 사용하는지의 리스트이다.

  INTERFACE        DEVICE         MAJOR       MINOR
  -----------------------------------------------------------
  Logitech        /dev/logibm      10           0
  PS/2            /dev/psaux       10           1
  Inport          /dev/inportbm    10           2
  ATI-XL          /dev/atibm       10           3
주의: Inport 드라이버로 ATI-XL 마우스를 사용의 경우, /dev/atibm 디바이 스가 아닌 /dev/inportbm를 사용하시오.

major 와 minor는, 고유 디바이스 번호이다.

이들 디바이스가 없는 경우는, 먼저 만들어야한다. 아래의 명령을 root에서 실행 하시오.

       mknod /dev/logimm    c 10 0
       mknod /dev/psaux     c 10 1
       mknod /dev/inportbm  c 10 2
       mknod /dev/atibm     c 10 3
주의: Linux 최근 몇해의 역사(비교적최근)에 있어서, busmouse의 디바이스의 명칭 변경되었다. 이하의 디바이스의 명칭은 상기의 것에 옮겨졌으므로, 소거해야 한다: bmousems, bmouseps2, bmouseatixl, bmouselogitech.

사용하고 있는 마우스·디바이스로부터 /dev/mouse에 symbolic link를 연결한 사람이 많다고한다. 그러면, 디바이스의 명칭을 각가 기억하고 있을 필요 가 없어진다. 현재 배포되고 있는 Linux 패키지도 아마 그렇게 되어있다. 그러한 링크가 있는 경우, 혹은 스스로 링크를 연결한 경우는, 자신의 마우스에 맞은 정확한 마우스·디바이스를 가리키고 있는지 확인바란다.


다음 이전 차례