4. PnP BIOS 의 설정

컴퓨터를 켜면 운영체제가 로드되기에 앞서 BIOS 가 실행된다. 최근의 BIOS 들은 PnP BIOS 라서 일부 또는 전부의 PnP 디바이스들을 설정할 수 있다. BIOS 의 CMOS 메뉴에서 다음 항목들을 선택할 수 있을 것이다 :

4.1. PnP 운영체제 여부

이 항목의 가부에 상관없이 PnP BIOS 는 하드 디스크, 비디오 카드, 키보드에 대해서는 PnP 설정을 할것이다. 그래야 시스템을 부팅시킬수 있기 때문이다. 이 항목을 PnP OS 를 가진 것으로 설정했다면 PnP BIOS는 그 설정 작업의 마무리를 운영체제(또는 디바이스 드라이버들)에 맡긴다. PnP OS 없음으로 설정했다면 BIOS 가 설정작업을 전부 담당할 것이다. PC 에 리눅스만 깔았다면 순순히 PnP OS 없음으로 설정하면 될것이다. 허나, 만일 PC 에 MS 윈도우즈가 같이 깔려있고 그 윈도우즈 설치시에 PnP OS 있음으로 설정해서 설치한 것이라면, 윈도우즈 95/98 을 계속 기쁘게 하기 위해서는 PnP OS 있음으로 설정해야만 할 수도 있다. (하지만 PnP OS 있음으로 설정한다면 리눅스에서 문제가 생길수도 있다. 윈도우즈 2000 의 경우는 설사 당신이 PnP OS 없음으로 BIOS 설정을 바꾸어도 제대로 동작한다고 알려져있다. 이경우 윈도우즈 2000 은 새로운 하드웨어를 찾는 중이라는 메시지를 출력할 것이다(윈도우즈 2000 으로서는 이미 그 하드웨어에 대해서는 알고있지만, BIOS 가 그 하드웨어를 어떻게 PnP 설정했는지까지는 알지못하기 때문이다)).

만일 PnP OS 있음으로 설정했다면, 이제 버스 리소스 설정을 다루기 위해서는 리눅스 디바이스 드라이버들 및 경우에 따라서는 isapnp 프로그램에 의지해야 한다. 대부분의 경우 이들이 제대로 작업해내겠지만 때로는 그렇지 못할수가 있다. 이때에는 아래에 나올 내용처럼 리눅스를 속여서 문제를 해결할 수도 있다. 이러한 속임수는 BIOS 가 자신의 작업을 제대로 해내지 않았어도 리눅스가 독자적으로 그 작업을 해냄으로써 가능한 것이다.

만일 PnP OS 없음으로 설정했다면, 이제 BIOS 가 설정작업을 하게된다. 새로운 PnP 디바이스를 추가하지 않는 이상, BIOS 는 자신의 비휘발성 메모리(ESCD)에 기록해두었던 설정내용을 사용할 것이다. 5.3.2절을 보라. 지난번 마지막에 사용했던 것이 리눅스였다면 BIOS 내의 메모리에 기록된 설정내용은 변함이 없다. 5.3절을 보라. 하지만 마지막으로 사용했던 것이 윈도우즈 9x(PnP) 이라면 윈도우가 ESCD 의 내용을 변경시켰을수 있다. 당신이 어떤 설정을 "강제"했거나 레가시(legacy) 디바이스를 설치한 경우라면 으례 ESCD 는 변경되게된다. 5.3.3절를 보라. 디바이스 드라이버들이 설정작업을 하면서 BIOS 가 작업한 내용을 변경시키는 수도 있다. isapnp 나 PCI 유틸리티 프로그램들도 그런 변경을 일으킬 수 있다.

4.1.1. 윈도우와의 이중 운영체제 시스템

Linux 와 윈도우즈를 같은 PC 상에서 사용하고 있는 경우, BIOS의 "PnP OS 를 사용하고 있는가" 라는 질문에 어떻게 답하면 좋을까? 상식적이고 정직한 답은 "Linux 에 대해서는 no, 윈도우즈에 대해서는 yes" 일 것이다. 당신이 정직하게 행동하기만 하면 세상 모든 일도 순조롭게 진행된다. 하지만, 다른 OS 를 쓰려고 할 때마다 BIOS 의 CMOS 메뉴를 일일이 수동으로 바꿔줘야 한다는 것은 너무도 귀찮은 일이다. 이 문제의 해결책은 리눅스나 윈도우즈 둘 중 한쪽에 거짓말을 하는 것이다. 한쪽을 무시함으로인해 다소 문제가 생길지 모르지만, 그 문제에는 또 적당한 해결책이 존재한다.

어느 한쪽을 무시하기로 작정했다면, 그 대상이 될 윈도우즈 혹은 리눅스에게 속인다는 사실을 알려주어야 하는가? 이는 그러한 무시에도 불구하고 리눅스나 윈도우가 얼마나 스스로를 잘 설정해내는지에 달렸다. 윈도우즈 2000 과 리눅스는 이렇게 자신이 무시되는 상황에 대해서도 점차 잘 대처해 나가고있다.

4.1.2. 리눅스쪽을 무시할 경우

PnP OS 있음으로 설정되면, 모든 드라이버들과 isapnp(만일 사용한다면)가 설정작업을 제대로 해낼 때에 한해 리눅스가 제대로 동작할 것이다. 아마도 리눅스 OS 나 드라이버들을 업데이트한다면 도움이 될 것이다.

4.1.3. 윈도우즈 9x 쪽을 무시할 경우

또다른 해결책은 CMOS 에서 PnP OS 없음으로 설정한 후 윈도우를 시작하는 것이다. 이제 윈도우즈 쪽이 무시되므로, 윈도우즈로서는 PnP 를 다루는 것이 훨씬 더 복잡해지게 된다. 혹자는 이제 하드웨어의 설정작업을 BIOS 가 완전히 처리해 버릴테니 윈도우즈 9x 로서는 그만큼 쉽게 하드웨어에 대응할수 있을 것이라 예상하겠지만, 실제로는 윈도우즈는 그렇게는 대응하지 못한다. 그러나 윈도우 2000 만큼은 제대로 대응하는 것으로 알려져있다. 혹자는 비록 하드웨어가 이미 BIOS 에 의해 설정완료되었다는 사실을 윈도우즈 9x 가 모른다고 하더라도, 윈도우즈는 자신의 레지스트리의 내용대로 물리적 디바이스들을 완전히 다시 설정해버릴 테니까 만사 OK 라고 생각할지도 모르겠다.

그러나 결과는 그런 식으로 진행되지는 않는듯 하다. 윈도우즈 9x 는 자신의 디바이스 드라이버들에게 윈도우의 레지스트리에 저장된 내용들을 그저 알려줄 뿐인 경우도 있는듯 하다. 하지만 BIOS 가 담당한 실제의 하드웨어 설정은 ESCD 에 저장되어 있던 내용대로이고, 따라서 레지스트리의 내용과는 다를수 있다. 이점이 문제인 것이다. 그러므로, 윈도우즈가 제대로 동작하기 위해서는 BIOS 가 ESCD 로부터 작성한 버스 리소스 설정내용을 레지스트리도 똑같이 가지게 만들 필요가 있다.

레지스트리와 ESCD 가 같은 내용을 가지도록 하는 한가지 방법은, BIOS 를 "PnP OS 없음" 으로 설정한 상태에서 윈도우를 설치(혹은 재설치)하는 것이다. 그러면 윈도우즈에게는 BIOS 가 설정완료시킨 하드웨어들이 주어지게 된다. 그 설정상태 자체에 충돌이 없는한, 바람직스럽게도 윈도우즈는 자신의 레지스트리에 하드웨어 설정상태를 변경없이 그대로 저장하게 된다. 이렇게해서 ESCD 와 레지스트리가 일치하게 되는 것이다. 이 방법이 제대로 먹힌다면(그리고 본 문서의 버전이 가장 최신버전이라면) 필자에게도 알려달라. 왜냐하면 필자는 이 방법이 성공했다는 보고를 단 한건 받아보았기 때문이다.

다른 방법은, 윈도우즈에서 문제를 일으키는 디바이스들을 디바이스 매니저(장치관리자)에서 "삭제"하는 것이다. 그다음, "PnP OS 없음" 상태로 PC를 재시작한다(부팅시에 CMOS 에서 세팅을 변경한다). 그러면 윈도우즈는 그 디바이스들을 재설치할 것이고, 기대한 바대로 BIOS가 설정한 버스 리소스 설정내용을 사용할 것이다. 이때 윈도우즈는 당신에게 윈도우 설치 CD 를 넣으라고 요구하기 십상이다. 아직 드라이버 파일들을 가지고 있음에도 불구하고 윈도우가 왕왕 그것을 찾지 못하는 수가 있기 때문이다. 이경우 "무시(skip file)"를 선택하고 계속 진행하는 것도 편법이 될 수 있다.

필자는 시험삼아 노벨 호환의 드라이버를 사용했던 NIC 카드를 "삭제" 했다. 재부팅해보니 윈도우는 노벨 대신 마이크로소프트 네트워킹으로 재설치해버렸다. 이런 경우는 노벨 클라이언트를 재설치해야 할 것이다. -- 상당히 귀찮은 작업들이다.

4.1.4. 윈도우즈 2000 쪽을 무시할 경우

윈도우즈 2000 의 경우에는, 처음에 BIOS 를 PnP OS 있음으로 설치한 후 나중에 PnP OS 없음으로 바꿔도 문제없이 동작한다고 알려져있다. PnP OS 없음으로 설정을 바꾸게 되면 윈도우즈 2000 은 자동적으로 자신의 디바이스들을 PnP 재설정하는 것으로 알려져있으며, 새로운 하드웨어를 발견됐고 새로운 디바이스를 설치하는 중이라고 당신에게 알려올 것이다. 이는 윈도우즈 2000 은 BIOS 에 의해 설정되지않은 하드웨어를 탐색하기에 앞서 먼저 BIOS 가 설정을 마친 하드웨어부터 탐색한다는 것을 의미한다. 윈도우즈 2000 은 아마도 종전과 다른 어드레스 및 IRQ(BIOS 가 셋팅한 것) 에서 어떤 하드웨어를 발견하게 되었으므로 그를 "새로운" 하드웨어라고 판단하는 듯 하다.

4.2. 버스 리소스의 조정

이 항목은 IRQ 와 DMA 버스 리소스들을 어떻게 할당할지 결정한다. BIOS 의 이 항목을 "자동" 으로 설정하면 BIOS가 할당작업을 수행한다. "수동" 으로 설정하면, 사용자가 직접 "legacy" (non-PnP) ISA 카드를 위해 IRQ를 몇개 예약할 수 있다. 사용자가 지정해주지 않는 경우, BIOS 는 그러한 legacy 카드에 대해 인식할수도 있고 못할수도 있다. BIOS 가 legacy 카드들에 대한 사항을 인식할 수 있는 경우란, 오로지 사용자가 윈도우즈상에서 ICU(또는 비슷한 것)을 실행시켜 BIOS에게 그 정보를 알려주는 경우 뿐이다. BIOS 가 legacy 카드들의 정보를 알고있다면 "자동" 으로 설정해보라. BIOS가 legacy 카드들에 대해 알지 못하는 경우에는 그 legacy ISA 카드들이 필요로하는 IRQ 들을 직접 수동으로 예약해준 후 나머지들은 BIOS PnP 가 할당하도록 맡겨두면 된다.

4.3. 설정내용의 리셋(reset)

이 항목은 legacy (non-PnP) 디바이스들의 설정 및 PnP 디바이스들의 설정상태에 대한 BIOS 의 ESCD 데이터베이스를 지워버릴 것이다. 이 데이타베이스가 잘못되서 재작성될 필요가 있다고 확신할 때 외에는 절대 이 항목을 건드리지 말라. 메뉴의 어딘가에 오직 사용자가 컴퓨터를 부트시킬 수 없을 때에만 이 항목을 사용해야 한다고 명시되어 있을 것이다. BIOS 가 legacy 디바이스들에 대한 데이터를 잃은 경우에는, DOS 나 윈도우즈에서 ICU 를 실행시켜 이 데이터를 새로 작성할 수 있을 것이다.