5. PnP 카드를 다루는 방법

5.1. PnP 카드를 다루는 방법에 대한 개요

오늘날 대부분의 신형 내장형 보드(카드)들은 PnP 이다. PnP 를 처리하는 방법은 아래처럼 다섯가지 다른 방법이 있다(하지만 당신 상황에 따라서는 일부 방법은 불가능할 것이다). 만일 디바이스 드라이버가 PnP 설정을 맡는다면 당신은 아무것도 손댈 필요가 없다. 만일 BIOS 가 PnP 설정을 맡는다면 당신으로서는 부디 해당 드라이버가 BIOS 가 설정한 내용을 발견해주기를 기원할 수 밖에 없다(필요하다면 설정화일등을 이용해 당신이 직접 드라이버에게 설정내용을 알려주어야 한다).

위의 어느 방법으로든 그 하드웨어의 버스 리소스를 설정할수 있지만 오직 첫번째 방법만이 드라이버측에게 설정내용을 알려준다. 드라이버가 어떻게 정보를 받아들이는가는 드라이버에 따라 다르다. 이를 위해서 따로 어떤 작업을 해주어야 할 수도 있다. 6절 를 보라.

5.2. 디바이스 드라이버가 설정작업을 담당하는 경우

많은 디바이스 드라이버들이 (커널이 제공하는 코드의 도움으로) PnP 방법을 써서 자신이 제어할 하드웨어의 버스 리소스를 셋팅할수 있다. 드라이버 스스로가 설정해버리므로 드라이버는 그 설정내용을 알수 있으며, 따라서 당신이 직접 그 정보를 가르쳐 줄 필요가 없다. 분명 이 방법이 가장 쉬운 방법이다. 드라이버가 다 해낸다면야 당신이 아무일도 할 필요가 없을테니까.

PCI 디바이스의 경우에는 대부분의 드라이버들이 PnP 설정을 해내지만, ISA 디바이스의 경우는 PnP 설정에 문제가 많다. 이는 (비록 과거에 PCI 에 대한 PnP 설정을 "PCI 설정" 이라고 불렀고 아직도 그렇게 부르기는 해도) 원래 PCI 에는 PnP 기능이 내재되어 있기 때문이다. ISA 의 경우, 2.4 버전 이전의 커널은 ISA 를 PnP 설정하기 위한 함수를 일체 제공하지 않았다. 따라서 만일 당신이 최신 버전의 커널과 드라이버를 가지고 있다면 그 드라이버는 PnP 버스 리소스 설정을 해낼 가능성이 더 높다. 하지만 만일 구버전을 가지고 있거나 그 드라이버의 담당자가 PnP 기능을 아직 넣지 않았다면 그 드라이버는 아마도 PnP 설정을 못할 것이다.

불운하게도, 어떤 드라이버는 다른 디바이스들이 필요로하는(그러나 아직 커널에 의해 할당받지는 못한) 버스 리소스를 점유하고 있을지도 모른다. 따라서, 모든 리소스 요청들을 받아들인 후 커널이 그 할당작업을 해낼수 있어야 비로소 진정한 PnP 리눅스 커널이라 할수있을 것이다. 3.5절 를 보라.

5.3. BIOS 가 PnP 를 설정

5.3.1. BIOS 로 PnP 를 설정하는 방법에 대한 개요

PnP BIOS 가 장착되어있다면, 그 PnP BIOS 가 하드웨어를 설정할 수 있다. 이는 BIOS 가 모든 디바이스들의 리소스 요구내용을 읽은 후 각각을 설정(즉, 디바이스들에게 버스 리소스를 할당)해준다는 의미이다. BIOS 로서는 드라이버들을 각각의 해당 디바이스들에게 연결시켜주지 못하고 드라이버들에게 BIOS 가 설정한 내용들을 알려주지도 못한다는 두가지만 빼고는, BIOS 가 PnP OS 의 기능을 대신하는 것이다. BIOS 는 보통 자신의 비휘발성 메모리(ESCD) 내에 저장해 두었던 설정내용을 이용하게된다. BIOS 가 새로운 디바이스를 발견하거나 충돌이 있음을 감지하게 되면, BIOS 는 설정내용에 필요한 변경을 가하게 되고, 이제 ESCD 에 기록되어있던 예전의 설정내용은 사용하지 않게 된다. 이경우 BIOS 는 새로운 상태를 반영하기 위해 ESCD 를 갱신시켜야한다.

당신의 BIOS 는 위에서 말한 것과 같은 설정작업을 수행해야 하지만, 간혹 이 작업을 올바르게 수행하지 못하거나 불완전하게 수행하는 BIOS 들도 있었다. BIOS 를 사용하는 이점은, 대부분의 경우 그밖의 다른 설정작업이 필요없어져(BIOS 의 CMOS 메뉴에서 PnP OS 없음으로 설정한 경우는 제외) 일이 간단해 진다는 점에 있다. 많은 디바이스 드라이버들이 자동으로 BIOS 가 해놓은 작업내용을 감지할 수 있는 반면, 일부의 경우에는 사용자가 드라이버들에게 그 내용을 정해줄 필요가 있을 수도 있다(이게 반드시 쉽지만은 않다). 7절 를 보라. 또다른 이점은 리눅스가 시작되기 전에 BIOS 가 설정작업을 하게되므로, 장차 디바이스 드라이버들이 시작되기 이전에 버스 리소스들은 디바이스 드라이버들에 의해 사용(즉, 발견될) 준비가 완료되어있다는 점이다.

MS 에 따르면 PnP BIOS 가 (MS 윈도우의 도움없이) 디바이스들을 독자적으로 PnP 설정할 수 있는 기능은 단지 옵션사항일 뿐 필수사항은 아니라고 되어있다. 하지만 대략 1996 ?? 이후에 제작된 대부분의 BIOS 들은 모두 이 기능이 가능한 것 같다. BIOS 들이 이 기능을 제대로 수행해낸다면 우리로서는 제작사에 감사편지라도 보낼 일이다. BIOS 는 PCI 버스와 ISA 버스 양자 모두에 대해 설정작업을 수행할 수 있다. 하지만 좀 오래된 BIOS 들은 오직 PCI 에 대해서만 설정작업할 수 있는 것으로 보고되고 있다. 당신이 가진 BIOS 에 대해서 더 자세히 알고 싶다면 웹페이지를 뒤져보라. 필자는 그에 대해서는 아는 바 없으므로 부디 필자에게 질문하지는 말아달라. BIOS 에 관한 자세한 내용은 찾기 힘들거나 이용불가능할지도 모른다. 일부 BIOS 들은 최소한의 PnP 기능만 가지고 있어서 운영체제가 나머지 설정작업을 완료해줄 것을 기대하는 수도 있다. 만약 그러한 경우라면, PnP BIOS 를 이용하는 방법이 아닌 다른 방법을 찾아보거나, BIOS 가 ESCD 데이터베이스를 가지고 있는 경우 그것을 셋업해보는 방법을 시도해보라. 다음 절의 내용을 참고하라.

5.3.2. BIOS 의 ESCD 데이터베이스

바이오스는 PnP 설정내용을 보관하는 비휘발성 데이터베이스를 유지하고 있으며 그 내용을 이용해 설정작업을 수행한다. 이를 ESCD(Extended System Configuration Data) 라고 부른다. 또한, ESCD 의 장착여부는 옵션사항이지만 대부분의 PnP BIOS 들은 이를 장착하고 있다. ESCD 는 충돌이 일어나는 것을 피하기 위해 PnP 디바이스들의 리소스 설정뿐 아니라 non-PnP 디바이스들의 설정정보까지도 저장한다(그리고 디바이스가 PnP 기기인지 여부도 기록하고 있다). ESCD 데이터는 보통 어떤 칩속에 저장되며 전원을 꺼도 그대로 보존된다. 하지만 때로는 하드디스크상에 저장되는 경우도 있다 ??

ESCD 는 최종사용된 설정정보를 저장하기 위한 것이지만, 만일 당신이 리눅스의 isapnp 나 pci 유틸리티등의 프로그램을 사용한다면(이들은 ESCD 를 갱신시켜주지는 않는다), ESCD 로서는 이들이 변경시킨 설정내용은 알리 없으므로, 그 정보를 ESCD 내에 저장하지 않을 것이다. 좋은 PnP OS 라면 이때에도 ESCD 를 갱신시킬 것이고, 그렇게만 된다면 후에 PnP 아닌 운영체제(예를 들면 표준 리눅스)도 이 갱신된 ESCD 정보를 이용할 수 있을 것이다. MS 윈도우는 오직 특별한 경우에만 ESCD 를 갱신시켜줄 뿐이다. 5.3.3절 를 보라.

ESCD 에 기록된 내용을 이용하려면 BIOS 의 CMOS 메뉴에서 반드시 "PnP OS 아님"으로 설정해야 한다. 그러면 (리눅스 운영체제가 로드되기 전에) BIOS 는 시작시에 다음과 같이 설정작업을 수행하게된다. 만일 BIOS 가 ESCD 에 없는 새로운 PnP 카드를 감지한다면, 버스리소스를 카드에 할당한 후 ESCD 를 갱신한다. 이때 심지어는 기존의 PnP 카드들에 할당됐던 버스 리소스들까지도 변경될 수 있으며, 그에따라 ESCD 를 수정한다.

만일 각 디바이스가 자신의 최후의 설정내용을 자체 하드웨어내에 저장해둘수만 있다면, PC 를 시작할 때마다 매번 설정작업을 해줄 필요도 없었을 것이다. 그러나 현실은 그렇지 못하다. 따라서 PnP 를 위해 BIOS 를 사용하겠다면 ESCD 의 데이터는 항상 올바르게 유지되어야 한다. 어떤 BIOS 들은 비록 ESCD 기능은 아니지만 non-PnP 카드용으로 예약해둔 버스리소스들에 대한 정보를 소량의 비휘발성 메모리속에 저장해두기도 한다. 많은 BIOS 들은 이 두가지 기능을 다 가지고 있다.

5.3.3. 윈도우즈를 사용해서 ESCD 를 설정하기

BIOS 가 당신이 원하는 대로 ESCD 를 설정하지 못거나 올바르게 ESCD 를 설정하지 못할 경우, 리눅스 유틸리티를 써서 ESCD 를 세팅할수 있다면 좋을 것이다. 하지만 그런 리눅스 유틸리티는 1999 년초에는 없었으며 2001 현재에도 필자는 그런 것이 있다는 말을 들어보지 못했다. 따라서 (같은 PC 상에 윈도우즈도 깔려있다면) 윈도우즈를 써서 ESCD 를 설정하는 방법을 시도해 볼 수 있다.

윈도우즈를 써서 ESCD 를 설정/수정하는 방법은 3 가지가 있다. 하나는 도스나 윈도우즈 3.x 용으로 디자인된 ICU 유틸리티를 사용하는 것이다. 이 방법은 윈도우즈 9x/2k 에서도 가능할 것이다 ??. 또다른 방법은 윈도우즈 9x/2k 상에서 수동으로("강제로") 디바이스들을 설정해서 정상 종료시에 윈도우즈가 이 정보를 ESCD 내에 기록하게 만드는 것이다. 세번째 방법은 PnP 가 아닌 legacy 디바이스들에게만 해당된다. 윈도우즈가 legacy 디바이스의 존재와 그들이 사용하는 버스 리소스가 무엇인지를 파악한다면 윈도우즈는 그 정보를 ESCD 에 기록할 것이다.

만일 PnP 디바이스들이 사용자의 "강제" 적인 설정변경없이 윈도우즈에 의해 자동으로 설정되도록 된 경우라면, 그러한 설정내용은 아마도 ESCD 로 기록되지 않을 것이다. 물론 ESCD 에 기록된 내용대로 디바이스들을 설정할 지 여부는 윈도우즈가 스스로 결정하기 때문에, 디바이스들이 과연 ESCD 에 기록된 설정내용에 따라 기동될지는 우연적이라 할수 있다.

윈도우즈 9x 는 PnP 운영체제라서 디바이스들을 자동으로 PnP 설정한다. 윈도우즈 9x 는 자체의 PnP 데이터베이스를 이진 윈도우즈 파일들로 저장해서 레지스트리내에 깊숙히 보관하고 있다. 그 레지스트리 내에는 PnP 버스 리소스들 외에도 다른 많은 설정정보가 담겨있다. 현재의 PnP 리소스 설정상태는 메모리상에 하나가 저장되고, 또한 (아마도 동일한 내용으로서) 하드디스크에도 또 하나가 저장된다. 윈도우즈 98 에서 이 내용을 보거나 그 설정을 강제로 바꾸려면 디바이스 매니저(장치관리자)를 이용한다.

윈도우즈 98 에서 디바이스 매니저(장치관리자) 창을 여는 방법은 2 가지가 있다 : 1. My computer(내 컴퓨터) --> Control Panel(조종판) --> System Properties(시스템 속성) --> Device Manager(장치관리자) 2. My Computer(내 컴퓨터) 에서 오른쪽 클릭 --> Properties(속성) --> Device Manager(장치관리자). 그런 다음, Device Manager(장치관리자) 창 내에서 디바이스를 하나 선택한다(같은 종류 디바이스들이 여러개 있을 때는 아래로 몇 단계를 거쳐야 할수도 있다). 그다음, "Properties(속성)" 을 클릭한 후 "Resources(자원)"을 클릭한다. 리소스 설정을 수동으로 바꾸려면 "Use automatic settings(자동설정)" 에 체크된 것을 해제한 후 "Change Settings(설정변경)" 을 클릭한다. 이제 설정을 변경해본다. 이때 변경하는 것이 허용되지 않을 수도 있다. 만일 변경이 허용된다면 이제 강제설정이 완료된 것이다. 강제로 설정되었다는 메시지가 뜰 것이다. 만일 윈도우즈가 가졌던 현재의 세팅내용을 그대로 유지하면서도 단지 그것을 "자동설정"이 아닌 "강제설정"으로 만들고 싶은 것이라면, 일단 뭔가 다른 내용으로 강제설정한 후에 다시 원래의 셋팅으로 바꾸어 강제설정해야만 한다.

윈도우즈 98 에서 강제설정된 것들을 보려면 "강제설정된 하드웨어들" 리스트를 보면 된다 : --> Programs(프로그램) --> Accessories(악세서리) --> System Tools(시스템 도구) --&62; System Information(시스템 정보) --> Hardware Resources(하드웨어 자원) --> Forced Hardware(강제설정된 하드웨어). 윈도우의 버스리소스들을 강제로 변경시켰다면 윈도우는 그 변경을 ESCD 에 기록할 것이다(정상종료시켜야만 한다). "System Information(시스템 정보)" 창을 보면 IRQ 와 IO 포트들이 윈도우즈하에서 어떻게 할당되었는지를 조사할 수 있다.

윈도우즈에서는 버스 리소스의 충돌이 없는데 리눅스에서는 충돌이 일어나는 수가 있다. 이는 윈도우즈는 ESCD 의 내용과 다르게 버스 리소스를 할당할 수 있기 때문이다. 드문 경우라 하겠지만 윈도우하의 모든 디바이스들이 legacy 디바이스이거나 강제설정된 상태라면 윈도우즈와 ESCD 의 설정은 동일하게된다.

5.3.4. 새로운 디바이스를 윈도우즈나 리눅스에 추가하기

새로운 PnP 디바이스가 추가되고 BIOS 는 "PnP OS 없음" 상태라면, BIOS 는 자동적으로 디바이스를 설정한 후 그 설정내용을 ESCD 에 저장한다. 만일 추가되는 디바이스가 non-PnP legacy 디바이스라면 (혹은 디바이스의 점퍼설정등을 통해 legacy 디바이스로 만들었다면), 이를 처리하기위해 다음과 같은 몇가지 방법을 택할수 있다.

CMOS 설정메뉴를 이용해 직접 BIOS 에게 그 디바이스가 사용할 특정한 버스 리소스(가령 IRQ)를 예약해두도록하여, PnP 가 그 리소스를 할당시켜버리지 못하게 한다. 이 방법은 그 정보를 ESCD 에 기록시키지는 못한다. 하지만 CMOS 설정메뉴를 보면 충돌 발생시 이 정보를 ESCD 의 내용에 우선시킬 것인지 여부를 정하는 메뉴가 있을것이다. 또다른 방법은 도스/윈도우즈에서 ICU 를 실행시키는 것이다. 그밖의 방법으로는 윈도우즈 9x/2k 하에서 수동으로 설치한 후 그 설정내용을 "강제" 하는 방법이다(앞절에서 설명했다). 강제설정 후 PC 가 정상종료될 때 윈도우즈가 ESCD 를 갱신시킬 것이다.

5.4. PnP 기능을 끄려면(disable)?

PnP 기능을 아예 끌수 없는 PnP 전용의 디바이스들이 많이 있다. 하지만 일부 디바이스의 경우, 점퍼를 쓰든지 아니면 디바이스 구입시 함께 따라온 윈도우즈 프로그램을 실행시켜(jumperless configuration) PnP 기능을 끌 수 있다. 디바이스 드라이버가 디바이스를 제대로 설정하지 못하는 경우에는, PnP 기능을 끔으로써 아예 PnP 설정이라는 복잡한 작업을 피해갈 수가 있다. 이경우 BIOS 에게 이 버스 리소스들이 예약되어있음을 알리는 것을 잊어서는 안된다. 하지만, 또한 다음과 같은 이유로 디바이스의 PnP 기능을 꺼버리기 싫을수도 있다 :

  1. 같은 컴퓨터상에 MS 윈도우즈가 설치되어있는 경우, PnP 로 하여금 디바이스를 윈도우에서와 리눅스에서 각기 다르게 설정케할 필요가 있을 수 있다.

  2. IRQ 번호나 포트 어드레스 등등의 선택범위가 PnP 를 사용하지 않는 경우 상당히 제한될 수 있다.

  3. 당신이 사용하는 어떤 리눅스 디바이스 드라이버가 디바이스 탐색시에 PnP 방법을 이용하는 것일수 있다.

  4. 장래에 설정을 변경할 필요가 생길 경우, 설정이 PnP 로 되어있다면 일이 훨씬 쉬워진다(점퍼를 설정할 필요도 없고 도스/윈도우즈용 프로그램을 실행시킬 필요도 없으므로).

  5. 현재 또는 장래라도 다른 PnP 디바이스들을 설정해야할 필요가 생길 것이다. 그렇다면 어쨌든 PnP 디바이스에 대해 알아둘 필요가 있을 것이다.

일단 non-PnP 디바이스로 설정했다면, 그 디바이스는 (점퍼 설정을 바꾸거나 도스/윈도우즈용 설정 소프트웨어를 다시 실행시키기 전에는) PnP-BIOS 나 PnP 소프트웨어에 의해서는 설정작업이 이루어지지 않게된다.

5.5. Isapnp (isapnptools 라는 프로그램 패키지중 하나이다)

운나쁘게도, 당신이 PnP 의 기본적인 내용들을 모른다면 isapnp 에 대한 문서들의 대부분은 이해하기 힘들 것이다. 본 HOWTO 와 isapnp 패키지에 딸려오는 FAQ 를 보면 그 내용을 이해하는데 도움이 될 것이다. isapnp 는 오직 ISA 버스상의 PnP 디바이스들을 위한 프로그램으로서 PCI 버스용 디바이스에는 해당없다. 부팅시에 리눅스 프로그램인 "isapnp" 를 실행시키면 /etc/isapnp.conf 에 적혀있는 리소스 값대로 디바이스들을 설정할 것이다. 이 설정 파일을 자동으로 생성시키는 것도 가능하지만, 생성시킨 후에는 직접 수동으로 다양한 옵션들을 골라 편집해 주어야만 한다.

isapnp 를 사용할 경우, isapnp 가 하드웨어 내에 어드레스 등등을 셋팅하기도 전에, 커널에 내장된 디바이스 드라이버가 너무 일찍 실행되는 수가 있다. 이렇게 되면 그 디바이스 드라이버는 디바이스를 발견할 수 없다는 결론을 내버린다. 드라이버는 올바른 어드레스를 검색했으나 아직 하드웨어상에는 그 어드레스가 셋팅되지 않았기 때문이다.

만일 당신의 리눅스 배포본이 자동으로 isapnptools 를 설치했다면, 아마도 isapnp 는 이미 컴퓨터 시동시부터 작동하고 있을 것이다. 이 경우, 당신은 man isapnp.conf 의 내용을 참고해 /etc/isapnp.conf 를 편집해주기만 하면 된다. 명심할 점은, 설정화일을 편집하여 어떻게 설정할지를 지정해주는 것이므로, 이는 수동으로 PnP 를 설정하는 것과 같은 효과를 가진다는 것이다. "pnpdump" 프로그램을 쓰면 이 설정화일을 작성하는데 도움이 될 것이다. 이 프로그램은 설정화일 거의 전부를 만들어주지만 이를 사용하기전에는 반드시 그 내용 일부를 요령있게 편집해주어야만 한다. 이 화일에는 주석이 일부 붙어있으므로 편집시에 도움이 될것이다. 당신이 설정작업에 "isapnp" 를 이용하고 PnP BIOS 도 가지고 있다면, BIOS 설정 메뉴에서 PnP OS 없음으로 설정하고플 것이다. BIOS 가 PCI 디바이스 설정작업을 담당해주기를 원할테니 말이다. BIOS 가 ISA 디바이스들까지 설정해버린다 해도 isapnp 는 ISA 디바이스들의 설정작업을 새로 다시하게된다.

/etc/isapnp.conf 파일에 사용된 용어들은 처음에는 낯설어 보일지도 모르겠다. 예를 들어 0x3e8 이라는 IO 어드레스는 대신 "(IO 0 (BASE 0x3e8))" 이라고 쓰여있을 것이다. "IO 0" 는 이 디바이스가 사용하는 첫번째(0 번) IO 어드레스 영역임을 뜻한다. 전체 내용을 다음처럼 표현할 수도 있을 것이다 : "IO[0] = 0x3e8". 하지만 isapnp 는 그런 표현은 사용하지 않는다. "IO 1" 은 그것이 디바이스가 사용하는 두번째 IO 어드레스 영역임을 의미한다. "INT 0" 도 유사한 의미이지만 이것은 IRQ(인터럽트) 에 해당된다. 카드 한개에 여러개의 물리적 디바이스들이 탑재되어있는 경우도 있는데, 그 경우 위의 설명은 그중 일개 디바이스에만 해당하는 것이다.

5.6. PCI 유틸리티

PCI 유틸리티(= pciutils, "pcitools" 라는 잘못된 명칭으로 불리기도 한다)라는 패키지는 당신이 수동으로 PCI 버스를 PnP 설정할수 있게 해준다. "lspci" 나 "scanpci"(X 윈도우용) 프로그램은 버스 리소스들을 출력해주며, "setpci" 는 하드웨어 디바이스 내의 리소스 할당을 담당한다. setpci 는 주로 스크립트 프로그램들이 사용할 용도로 제작된 듯하며, 현재로서는 이걸 사용하려면 PCI 설정 레지스터의 상세한 내용에 대해 잘 알고 있어야 한다. 이 주제는 본 문서에서는 설명하지 않을 것이며 setpci 에 대한 맨페이지에도 잘 나와있지 않다.

5.7. 윈도우를 이용한 설정

같은 PC 상에 윈도우즈 9x (또는 윈도우 2000)도 설치되어있다면, 윈도우즈를 시작시켜서 윈도우즈가 PnP 를 설정토록 하라. 그다음 윈도우즈(혹은 도스) 상태에서 리눅스를 시작시키면 된다. 하지만 이경우 PCI 디바이스들 용의 IRQ 에서 문제가 생길 수 있다. 리눅스에게 자리를 양보하기 위해 윈도즈우가 종료될 때에, PCI 디바이스의 설정 레지스터에 저장되어있는 IRQ 번호를 지워버리는(zero, 0 으로 만들어버리는) 수가 있는 것이다. 이 경우 리눅스는 IRQ 값이 0 인 것을 발견했다고 불평을 늘어놓을 것이다.

위의 현상은 리눅스를 바로가기(shortcut) 파일(PIF)로 시작시킬 경우에 발생하는 것으로 보고되고 있다. 하지만 바로가기 PIF 파일을 사용하면서도 이런 문제를 피할수 있는 방법이 알려져 있다. 바로가기 파일이란 리눅스로 치면 심볼릭 링크와 유사하나 그보다 좀 발전된 것이다. PIF 파일은 "설정" 할 수 있기 때문이다. 도스로부터 리눅스를 시작시키려면 리눅스를 시작시키는 배치파일(스크립트)을 만들어야 한다(리눅스를 시작시키는 프로그램은 "loadlin" 이라는 패키지에 들어있다). 그다음 그 배치파일을 가리키는 PIF 바로가기 파일을 만든 후, 그 바로가기 파일의 "Properties(속성)" 창을 연다. "Advanced(고급)" 을 선택한 다음 "MS-DOS 모드" 를 체크해놓으면 이제 리눅스는 진짜 MS-DOS 모드에서 시작될 것이다.

이제 PCI IRQ 들이 0 이 되버리는 것을 막기위해 술수를 부려보자. "Specify a new MS-DOS configuration" 을 체크하라. 그다음 당신에게 제시될 디폴트 설정을 그대로 받아들이든지 아니면 "Configuration" 을 클릭해서 그 내용을 변경하라. 이제 바로가기 파일을 클릭해서 리눅스를 시작시키면 당신의 새로운 설정에 따라 새로운 설정 파일들(Config.sys 와 Autoexec.bat)이 생성될 것이다.

그전에 존재하던 같은 이름의 파일들은 "Config.wos" 와 "Autoexec.wos" 라는 이름으로 저장될 것이다. 리눅스 사용을 끝내고 PC 를 끌 경우, 장차 PC 를 사용하기 위해서는 또 도스를 실행시켜야 하며, 그러기 위해서는 원래의 파일들이 또 필요하다. 따라서 당신은 이름이 바뀌어버린 이 원래의 화일들을 *.sys 와 *.bat 의 확장자로 반드시 다시 회복시켜두어야 한다. 윈도우즈/도스 상태로부터 리눅스가 시작되는 시점에서는, 윈도우즈는 당신이 리눅스를 다 사용한 후 다시 윈도우즈로 돌아오면 이 화일들을 원래의 이름으로 자동복구시켜 놓겠다고 벼르고 있다. 하지만 리눅스를 다 사용하면 PC 를 꺼버리지 다시 윈도우로 돌아가는 일은 절대 없으므로, 이 화일들은 원래의 이름으로 돌아가지 못하게 된다. 그럼 어떻게 해야 이 화일들을 다시 원래이름으로 돌려놓을 수 있을까? 그건 간단하다. 당신의 "리눅스 시작" 배치파일내에 이 화일들을 원래이름인 *.bat 와 *.sys 로 복구시키는 명령어를 넣어두면 되는 것이다. 이름을 변경시키는 명령어를 당신의 배치파일내의 리눅스를 로드하는 부분 직전에 넣어두어라.

또한, 당신의 바로가기 화일의 "Property(속성)" 창의 "General(일반)" 탭을 클릭해서 "Read-only(읽기 전용)" 항목을 체크해두어야 하는 것으로 알려져 있다. 그렇게 하지 않으면 윈도우즈가 "Advanced Settings(고급 설정)" 부분을 "Use current MS-DOS configuration" 으로 리셋시켜버려서 PCI IRQ 들을 0 으로 만들어버리는 수가 있다. 결론적으로, 윈도우즈는 당신이 현재의 MS-DOS 설정상태를 이용할 때는 그 IRQ 들을 지워버리지만, 새로운 설정상태(내용적으로는 예전의 설정상태와 동일한 값들이어도 상관없다)를 사용할 때는 지우지 않는 것이다. 이점만 놓고보자면 윈도우가 아주 일관성있다고 말하기는 힘들겠다.

5.8. PnP 소프트웨어와 관련문서들