최신 칩셋을 사용한 메인보드의 경우 부팅이 안될 수 있다.


 


리눅스 설치 CD로 부팅이 안될 때 grub.conf에 아래 옵션을 준다.


acpi=off            –> ex) kernel /vmlinuz-2.6.9-78.0.22.EL ro root=LABEL=/ acpi=off


그래도 안된다면 아래와 같이


acpi=off noapic nolapic irqpoll


또는 아래처럼


apm=force noapic acpi=off pci=noacpi



ACPI란?


ACPI(advanced configuration and power interface)


개인용 컴퓨터(PC)의 전력 제어를 위한 응용 프로그램 인터페이스(API) 규격


APM(Advanced Power Management)이 바이오스 차원에서 전원관리를 했던데 비해 윈도우98부터 포함된 ACPI는 운영체제에서 활성화시킬 응용 프로그램을 결정하고 컴퓨터 하위 시스템과 주변 기기의 모든 전원 관리 리소스를 조정할 수 있게 되었다. 다만 각 장치들의 드라이버나 바이오스에서 완벽히 지원해야 ACPI가 활성화 되게 된다. 하나라도 만족시키지 못한다면 대기모드에서 깨어나지 않을 수도 있을 것이다.



계속된 기술의 발전은 컴퓨터 마더보드의 스펙과 성능의 향상을 가져오고 있다. 또한 마더보드에 적용된 전원 관리에 있어서도 과거의 것보다 더욱 발전되었다고 하는 ACPI 라는 것이 등장하여 새로운 표준으로 사용되고 있다. 그럼 과연 ACPI란 무엇일까 ? 여기서 ACPI 에 대해서 약간이나마 살펴보도록 하자.


ACPI란?



    ACPI는 Advanced Configuration and Power Interface의 약자로 인텔, 마이크로소프트, 도시바에 의해 개발되었다. 이것은 소프트웨어와 하드웨어 구성 요소가 OS, 마더보드, 주변장치(CD-ROM, 하드디스크 등등)의 각각의 전력 사용에 대해 어떻게 대처하는지에 대해 명확히 하고 있다.


    ACPI의 목적은 전력 관리와 플러그 앤 플레이를 O/S 안에 내장하는 것으로 오직 필요한 만큼만 주변장치에 전력이 공급되도록 한다.


ACPI의 의의



    – O/S에 독립적
    – 마더보드 주변장치를 제어하는 것을 O/S에 할당
    – 포터블, 데스크탑, 서버에 적용할 수 있는 유연성 있는 기술
    – Non-ACPI O/S의 구형 전력 관리 지원
    – 비용 절감 효과


일반적인 ACPI 용어



    AML : ACPI control method Machine Language
    ACPI가 호환되는 운영체제에 의해 지원되는 가상 머신을 위한 의사코드(pseudocode)


    ASL : ACPI contorl method Source Language
    AML에 대응하는 프로그램 언어. ASL은 AML 이미지로 컴파일 된다.


    OSPM : OS-Directed Power Management
    전력 관리 모델로서 OS는 중앙 규칙(Central role)과 광역 정보(Global information)를 사용하여 가까운 장래에 일어날 작업을 위해 시스템을 최적화한다.


    P-Code :
    P-Code는 간단한 가상 머신 언어의 한 종류로서 ACPI가 제어 방법을 기술하기 위해 사용한다. 이것의 주요한 잇점은 포터블하고 컴팩트하며 강력하다는 것이다. 많은 종류의 P-code가 있으며 ACPI는 이것을 그 자신의 것으로 정의한다. ACPI 사양서에는 ACPI Source Language(ASL)과 ACPI Machine Language(AML)이 정의되어 있으며 제어 방법은 ASL에 쓰여 있다. 이것은 상대적으로 간단한 사양서이다. 컴파일러는 P-code의 ASL 폼을 AML 폼으로 바꾸어준다. ACPI 호환 운영체제는 AML 폼의 언어를 위해 P-code 인터프리터를 포함하고 있다.


    SCI : System Control Interrupt
    하드웨어에 의해 사용되는 시스템 인터럽트는 ACPI 이벤트를 O/S에 통지한다. SCI는 low, shareable, level interrupt의 상태를 가질 수 있다.


    SMI : System Management Interrupt
    구형 시스템상의 인터럽트 이벤트에 의해 OS-transparent 인터럽트가 발생한다. ACPI 시스템상에서 대조에 의해 인터럽트 이벤트가 OS-visible 인터럽트를 발생하며 이것은 공유 가능하다.(edge-style 인터럽트는 동작하지 않는다) 하드웨어 플랫폼은 구형의 운영체제 시스템과 ACPI 시스템을 지원하기를 원한다면, ACPI와 구형 모델간에 스위칭될 때 SMI와 SCI 사이의 인터럽트 이벤트를 재매핑해야 한다.


ACPI의 구조




    ACPI에는 세 개의 런타임이 있으며 다음과 같다.


    – ACPI 테이블


    이 테이블들은 하드웨어의 인터페이스를 기술하고 어떤 데스크립션은 만들어지는 것이 제한된다. (어떤 컨트롤은 레지스터의 고정 블록에 끼어있으며 이 테이블은 레지스터 블록의 어드레스를 명기한다.)


    대부분의 데스크립션은 하드웨어에서 정해지지 않은 방법으로 만들어지는 것이 허가되며, 하드웨어 평션을 만드는 것을 필요로하는 정해지지 않은 순차적인 동작을 할 수 있다. ACPI 테이블은 P-code 형태의 언어를 사용하여 만들어지고, 그 해석은 O/S에 의해 이루어진다. 이것은 O/S가 AML 인터프리터를 포함하며 이를 사용하여 AM에서 인코딩 프로시져를 수행하고 ACPI 테이블에 저장한다. ACPI Machine Language(AML)은 머신 언어의 한 종류로서 컴팩트하고 추상적이다.


    – ACPI 레지스터


    하드웨어 인터페이스의 이 부분은 ACPI 테이블에 의해 기술된다.


    – ACPI BIOS


    펌웨어의 일부를 참고하면 이것은 ACPI 사양서와 호환된다. 일반적으로 이것은 머신을 부팅시키는 코드이며 슬립, 웨이크, 재기동 등을 위한 도구라고 할 수 있다. ACPI 데스크립션 테이블은 ACPI BIOS에 의해 제공된다. 위의 그림을 살펴보면 BIOS 와 ACPI BIOS가 플랫폼상의 같은 부분을 참조하는 것을 알 수 있다.


ACPI의 동작



    ACPI에서 O/S 독립성을 얻기 위해서는 하드웨어 세부 사양을 자세히 해석하는 조정자에 의해 동작하는 O/S와 하드웨어간의 추상적인 인터페이스를 만들어야 한다. 이런 추상적인 인터페이스는 위의 그림과 같다.


    ACPI 사양서는 전체 PC 시스템을 위해 4개의 글로벌 상태를 정의하는데 각각 Working, Sleeping, Soft-off, Mechanical-off 이다. ACPI 호환 O/S는 주로 스왑매니저(swap manager)로서 동작하며, 수집된 정보를 기초로하여 서로 다른 상태로 바꾸게 된다. 한 상태에서 다른 상태로의 전환은 명확한 상태 전환을 위해 O/S 커널에게 지시하는 OSPM 시스템 코드와 함께 시작된다. 커널이 명령을 받은후에 이 동작을 수행하기 위해 디바이스 드라이버를 전용(독점적인 사용)할 것인지를 묻게 된다. 이 동작으로부터 응답이 커널로부터 OSPM으로 간다. 이 진행 과정은 모든 디바이스와 컴퍼넌트가 명확한 상태에 도달할때까지 계층적인 순서에 의해서 진행된다.

 


APIC란?


APIC(Advanced Programmable Interrupt Controller)는 더 많은 출력, 더 복잡한 우선 순위 계획, 고급 IRQ 관리를 포함하는 더 섬세한 프로그래머블 인터럽트 컨트롤러(PIC)이다.


가장 잘 알려진 APIC 아키텍처의 하나인 인텔 APIC 아키텍처는 드디어 더 새로운 x86 개인용 컴퓨터 8259A PIC를 대체하고 있다.



바이오스 업그레이드로 인한 APIC에 관한 질문과 답이 나와 있다. 멀티프로세서 시스템에서 특정의 프로세서에 인터럽트 신호를 부여하며 Windows 2000, XP에서 구식의 16개의 IRQ의 한계를 벗어날 수 있다는 설명과 APIC 옵션을 활성화 시킬시 에는 반드시 운영체제를 재설치해야만 APIC의 기능을 맛볼 수 있다는 내용과 운영체제를 설치한 후에 APIC 옵션을 변경하지 말 것을 주의하고 있다.


이런 문제는 APIC가 활성화된 상태로 윈도우2000 제품군을 설치한 후에 바이오스에서 비활성화 시키면 아래의 메시지와 블루 스크린을 볼 수 있다.


0x00000079 (0x00000004, 0x0000AC31, 0x00000000, 0x00000000)


윈도우 2000에서는 APIC 지원을 위해 별도의 하드웨어 추상화 계층(HAL)을 사용하기 때문에 이러한 동작이 발생하게 되며 해결방법 권장사항으로는 또한 재설치 뿐이다.


여기까지의 내용으로 보아 ACPI(전원관리규격)와는 다른 IRQ에 관한 내용임을 알 수 있다.


최근에 출시되는 i845D, KT266A 칩셑의 보드들은 바이오스 항목에서 APIC모드를 지원하며 (물론 지원하지 않는 제품도 있다.)기본적으로 바이오스에서 활성화 되어 있다. 확인해 보는 방법은 바이오스에서 APIC 모드 항목이 있는지, 간단하게 WCPUID에서, 제어판의 장치관리자에서 IRQ가 15번 이상으로 넘어가면서 각각의 장치들이 하나씩 IRQ를 사이좋게 나누어 가지고 있다면 APIC을 지원한다고 보면 될 것이다.  



 ▲ WCPUID에서



 ▲ APIC 미지원 상태(IRQ 5,11번에 집중 포화중~~)



유저와 플랫폼 디자이너들은 시스템에 추가적인 하드웨어 장치나 기능이 추가될 때 마다


인터럽트 자원의 부족에 괴롭힘을 당하게 되며(IRQ충돌과 같은 문제) 이 문제는 플랫폼에 지원되는 장치의 증가와 오래된 PC-아키텍처의 역사와 함께 한다. 기본적인 문제는 인터럽트 처리 방법을 지금까지 기본적인 PC-AT 아키텍처를 사용함으로써 다시 말해서 8259 Programmable Interrupt Controller(PIC)의 한계에서 기인한다.



 ▲ APIC의 구성


APIC은 인터럽트 컨트롤러를 만드는 장치의 세트이다. 현재의 실행에서는 시스템의 각 부분은 APIC 버스로 연결되며 시스템의 한 부분에서 "로컬 APIC"은 인터럽트를 특정의 프로세서에게만 전달하게 된다. 예를 들면 3개의 프로세서를 가지고 있다면 로컬 APIC 또한 3개를 가지고 있어야 한다. 인텔사에서는 1994년부터 Pentium P54c에서 로컬 APIC을 지원하도록 설계되어 있었으며 멀티프로세서를 지원하게 된다. 마이크로소프트에서는 윈도우 NT 3.1의 최초 발표 후에 APIC을 지원했다.


시스템의 또 다른 중요한 부분은 "입출력 APIC"이다. 8개의 입출력 APIC이 시스템에 존재할 수 있으며 장치가 인터럽트를 발생시키면 입출력 APIC은 신호를 모으고 로컬 APIC에 메시지를 보내게 된다. 각각의 입출력 APIC은 임의의 인터럽트 입력 또는 IRQ를 가지고 있다. 인텔에서는 지금까지 일반적으로 24개의 입출력 APIC을 지원하며 많으면 64개까지 지원할 수 있다. 또한 한 시스템에 여러 개의 입출력 APIC을 가지게 설계된다면 장치들의 인터럽트를 백여 개 이상 부여할 수 있다. 현재 두개의 8259가 가지고 있는 16개의 IRQ를 24개(그 이상도 가능)로 만들어 주어 IRQ 충돌이나 공유문제를 해결해 주게 된다. 윈도우 9X에서는 지원이 되지 않으며 NT와 2000, XP에서 지원이 가능하다. 그러나 시스템의 입출력 APIC 없이 로컬 APIC은 무용지물이며 그런 상황에서 윈도우 2000은 구형의 8259 PIC(Programmble Interrupt Controller)를 사용할 수밖에 된다.


다중 프로세서 시스템에서 하드웨어 인터럽트를 여러 CPU 또는 CPU 그룹으로 보내는, 8259 PIC의 느림과 멀티프로세서를 지원하지 않는 단점을 해소시키는 향상된 규격인 APIC이 싱글프로세서 시스템에도 지원되면서 엔드유저가 얻을 수 있는 이점은 제한된 16개의 IRQ의 충돌과 부족에서 벗어나게 되며 8259보다 빠른 인터럽트 핸들링을 제공한다는 점이 될 것이다.


한마디로 향상된 Interrupt IRQ Routing과 하드웨어를 지원하기 위해 필요한 기능이다.


● MPS Version Control FOR OS  



 ▲ MPS 항목



 ▲ 설명


APIC 모드를 활성화 시키면 바로 밑에 있는 MPS Version Control FOR OS 항목을 1.1이나 1.4로 지정해야 한다. 위의 항목은 인텔에서 발표한 다중프로세서 규격 (MPS : multiprocessor specification)으로서 최신의 다중 프로세서 지원 OS를 사용할 경우 APIC 기능을 제어 할 수 있게 지원한다.


NT 워크스테이션이나 서버(3.5, 3.51, 4.0)를 사용한다면 1.1을 2000, XP를 사용한다면 1.4를 활성화 시키면 된다. 대부분 바이오스에서 디폴트 항목은 1.4로 되어 있을 것이다.


NT를 멀티프로세서 시스템에 설치 시 이런 메시지를 본다면


HAL: Bad APIC version. HAL: This HAL.DLL requires an MPS version 1.1 system. Replace HAL.DLL which the correct HAL for this system. The system is halting.


위의 항목을 살펴보면 될 것이다.


최근 업그레이드를 고려하고 있는 유저라면 메인보드에서 APIC 모드가 지원이 되는지 한번 확인해보는 것도 좋을 것 같다.

ACPI, APIC관련 설명 및 리눅스 부팅옵션

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다