옵션 ROM
Option ROMPC 플랫폼용 옵션 ROM(즉, IBM PC 및 파생된 후속 컴퓨터 시스템)은 확장 카드의 ROM(또는 메인 시스템 BIOS와 함께 저장)에 상주하는 펌웨어로, 장치를 초기화하기 위해 실행되며 (선택적으로) BIOS에 장치 지원을 추가한다.통상적으로 사용하는 데 있어서, 그것은 본질적으로 BIOS API와 하드웨어 사이에 접속하는 드라이버다.기술적으로, 옵션 ROM은 POST(기본 시스템 하드웨어의 테스트 및 초기화) 이후와 BIOS 부팅 프로세스 전에 BIOS에 의해 펌웨어가 실행되어 시스템을 완전히 제어하고 일반적으로 할 수 있는 작업에 제한이 없다.BIOS는 다음 옵션 ROM을 호출하거나 부팅 프로세스를 시작할 수 있도록 각 옵션 ROM에 의존하여 제어 권한을 BIOS로 되돌린다.이 때문에 옵션 ROM이 제어권을 유지하고 BIOS 부팅 프로세스를 선점하는 것은 가능하지만 보통은 아니다.BIOS(적어도 IBM이 원래 설계한 대로)는 일반적으로 기존(20비트) 메모리 주소 공간에서 주소 C0000h보다 높은 두 개의 주소 범위 내에서 2KB 주소 간격으로 오름차순으로 옵션 ROM을 검색하고 초기화(실행)하며, 이후 시스템에서는 24비트 또는 32비트에서 추가 주소 범위를 검색할 수도 있다.비트 확장 주소 공간
옵션 ROM은 비 플러그 앤 플레이 주변 장치를 부팅할 수 있도록 하고, 표준 및 마더보드 통합 주변 장치가 지원되는 것과 같은 방식으로 비 플러그 앤 플레이 주변 장치에 대한 지원을 제공하기 위해 BIOS를 확장하는 데 필요하다.옵션 ROM은 BIOS를 확장하거나 BIOS에 다른 펌웨어 서비스를 추가하는 데도 사용된다.원칙적으로 옵션 ROM은 비디오 그래픽 서브루틴 라이브러리 또는 PCM 오디오 처리 서비스 세트와 같은 모든 종류의 펌웨어 확장을 제공할 수 있으며, 부팅 시간 전에 시스템 RAM과 선택적으로 CPU 인터럽트 시스템을 설치하도록 할 수 있다.
일반적인 옵션 ROM은 부팅 프로세스 초기에 로드되어 INT 10h를 후크하여 전원 켜기 자가 테스트(POST)의 출력을 표시할 수 있도록 하는 비디오 BIOS이다.비디오 BIOS는 거의 항상 32 kB 메모리 세그먼트에 위치하며C0000h옵션 ROM을 위해 예약된 메모리 영역의 시작; 이는 마더보드에 VGA 컨트롤러가 내장되어 있을 때 옵션 ROM이 BIOS에 상주하기 때문이다. 즉, BIOS는 위치를 알고 정해진 시간에 RAM에 그림자를 드리운다.다른 ROM은 세그먼트에서 찾을 수 있음C8000h까지 줄곧F4000h초창기 [1]PC에서최종 검색 주소는 세그먼트로 제한됨DFFFFh[2] 후기 제품에서 그리고 결국 에.EFFFFh[3] 현대적인 상품으로BIOS 부팅 규격에서는 옵션 ROM을 2kB 경계(예: 세그먼트)에 맞춰 정렬해야 함C8000h, C8800h, C9000h, C9800h등).ROM의 처음 2바이트는55 AA.[4]세 번째 바이트는 ROM 크기를 나타내고, 네 번째 바이트는 BIOS가 시스템이 부팅되기 전에 초기화하는 옵션 ROM 실행을 시작하는 곳이다.
확장 카드를 통한 부팅을 위한 옵션 ROM의 원래 사용
플러그 앤 플레이 BIOS 표준의 개발 및 유비쿼터스 채택 이전에는 마더보드 BIOS가 장치에 대한 지원을 전혀 포함하지 않아 BIOS에 통합할 수 없기 때문에 일반적으로 부팅이 가능하도록 하드 디스크 컨트롤러나 네트워크 어댑터 카드(NIC)와 같은 추가 장치(add-on)가 옵션 ROM을 포함하도록 요구되었다.의 부팅 프로토콜이러한 옵션 ROM은 BIOS 부팅 인터럽트인 INT 19h를 후크하여 BIOS 부팅 로더를 선점하고 자체 부팅 로더를 대체한다.옵션 ROM의 부트 로더는 어댑터 카드에 연결되거나 설치된 디스크, 네트워크 또는 기타 부트 프로그램 소스에서 부팅을 시도한다. 이 부팅 시도가 실패하면 이전 부트 로더(ROM이 옵션을 연결하기 전에 INT 19h가 가리킨 위치)로 제어권을 전달하여 시스템이 다른 장치에서 부팅할 수 있게 한다.lback 전략특정 SCSI 어댑터(예: Adaptec에서 만든 어댑터)와 같은 일부 어댑터 카드는 연결된 SCSI 디바이스에서 부팅을 활성화하기 위한 옵션 ROM의 유무에서만 차이가 있는 버전에서 사용할 수 있었다.옵션 ROM 스캐닝 프로토콜의 결과, 가장 높은 애드레스 옵션 ROM은 가장 마지막에 초기화되므로 인터럽트를 후크할 수 있는 옵션과 ISR(인터럽트 서비스 루틴) 체인의 첫 번째 옵션이다. 따라서 옵션 ROM의 주소는 bo에 사용할 수 있는 어댑터 카드 사이의 부팅 우선 순위를 완전히 결정한다.oiting, 그리고 마더보드 BIOS가 지원하는 부팅 디바이스는 전체적으로 가장 낮은 우선 순위를 가진다. 즉, 시스템은 모든 부팅 가능한 어댑터 카드에서 부팅을 시도한 후에만 해당 디바이스에서 부팅을 시도한다.
BIOS 부팅 사양
BIOS 부팅 규격(BBS)은 Compaq, Intel, Phoenix Technologies로 구성된 컨소시엄이 PnP BIOS 표준에 부합하지 않는 PnP BIOS 옵션 ROM과 레거시 옵션 ROM의 초기화 순서를 표준화하기 위해 개발했으며, 이들이 인터럽트를 하는 순서였다.[3]이 표준은 BCV(Boot Connection Vector) 표의 개념과 BCV 우선 순위를 제시한다.[3]표준의 핵심 원리는 행동을 더욱 정의하고 디버깅할 수 있게 하며 BIOS 제조업체는 표준의 제안을 넘어 사용자에 대한 부팅 장치 선택을 더욱 활성화할 수 있는 여지를 제공한다.
기본 POST 검사가 완료된 후, BBS는 BIOS가 BIOS에 상주하는 모든 옵션 ROM을 감지하여 앞에서 언급한 영역으로 섀도우하고 PCI 구성 공간을 통과하여 XROMBAR을 채우고 확장 카드 옵션 ROM을 MMIO 공간에서 영역으로 복사하도록 지정한다.그러면 BIOS는 영역을 스캔하고 옵션 ROM에 PnP 확장 헤더가 있으면 옵션 ROM 헤더에서 +03h를 오프셋하여 초기화하는 원콜을 한다.그런 다음 모든 PnP 옵션 ROM이 초기화되면 지역을 다시 검색한다(부록 E에 따르면 옵션 ROM 초기화 루틴이 장치가 소유한 개별 디스크에 대해 더 많은 PnP 확장 헤더를 연결할 수 있기 때문이다).PnP 확장 헤더에서 BCV 포인터(있는 경우)를 추가하며, IPL 우선 순위 표에 BCV 표 또는 BEV 포인터(있는 경우)를 찾는다.그런 다음 BCV 표의 BCV 항목은 NVRAM에서 설정할 수 있는 우선 순위에 따라 호출된다.BCV 표에는 BCV 함수 포인터가 가득하지만 PnP 확장 헤더가 없는 나머지 모든 옵션 ROM에서 +03h를 호출하는 BIOS 루틴에 대한 포인터인 레거시 옵션 ROM을 나타내는 고정 항목이 있다.BCV 기능은 INT 13h 및 INT 19h 후크를 초기화하는데, BBS가 이 후크는 +03h의 초기화 루틴에서 수행해서는 안 된다고 규정한다.장치에 PnP 확장 헤더가 없는 경우 레거시 카드인 만큼 +03h에서 루틴에 후크를 수행할 수 있다.
초기 초기화 루틴에서 옵션 ROM이 PCI 데이터 구조(구성 공간과 동일하지 않음)를 가리킬 때 옵션 ROM 코드는 장치와 벤더 ID가 RIP에서 고정된 오프셋에 있음을 알고 있다.이를 통해 PCI 구성 공간을 검색하여 사용하는 데 필요한 올바른 디바이스와 BAR을 찾을 수 있다.이 스캔을 방지하기 위해, 그리고 시스템에서 동일한 2개의 카드의 경우, BIOS는 AX의 초기화 루틴에 PFA(버스/기기/기능)를, ISA 옵션 ROM의 카드 선택 번호(CSN)를 BX에서 통과시킨다.그런 다음 PMIO/MMIO를 사용하여 장치와 상호 작용하여 MBR을 읽으면 디스크 수와 부팅 가능한 디스크를 확인할 수 있다.BIOS는 초기화 루틴 호출 전에 구성 공간을 이미 빗질하고 BAR을 할당하고 ACPI 테이블을 채웠기 때문에 옵션 ROM은 BAR에 할당된 주소를 사용한다.그러나 BCV는 기본 MMIO 주소 위치, 옵션 ROM 초기화 루틴에서 확인된 디스크 정보 및 BDA의 현재 디스크 번호를 기반으로 조정된 장치와 상호 작용하는 인터럽트 루틴을 후크한다.
The BIOS INT 19h procedure then uses the IPL table priority in NVRAM to decide whether to call an entry containing a boot handler which will read the MBR of 00h (floppy disk BAID; the first device in the BCV table to register disk 00h), an entry containing a boot handler which will read the MBR of 80h (the hard drive BAID; the first device in the BCV 테이블: Disk 80h) 또는 테이블의 BEV 항목 중 하나장치는 부팅 가능한 장치인 경우에만 BEV 또는 BCV가 있다.
SCSI
SCSI 컨트롤러 카드는 디스크 서비스 제공을 담당하는 INT 13h를 후크할 수 있다.만약 그것이 PnP 카드라면 그것은 BCV에서 그렇게 할 것이다.이 작업이 완료되면 INT 13h에 대한 후속 호출이 SCSI 옵션 ROM(또는 "SCSI BIOS")에 의해 "취득"되어 SCSI 버스에 존재할 수 있는 디스크에 대해 응답할 수 있게 된다.인터럽트를 연결하기 전에는 시스템에 디스크가 없었을 수 있지만, 인터럽트를 가로채서 반환된 값을 변경함으로써 SCSI BIOS는 SCSI 버스의 모든 디스크를 시스템에 볼 수 있게 할 수 있다.
이 특별한 경우, BIOS 자체가 INT 13h를 호출하여 사용자에게 가능한 부팅 장치의 목록을 제공할 수 있으며, SCSI BIOS가 인터럽트를 연결했기 때문에 사용자는 부팅할 표준 시스템 장치뿐만 아니라 SCSI 디스크도 선택할 수 있다.이는 부팅 BIOS 사양 부록 D에서 제시된 바와 같이 BIOS가 IPL 표를 INT 13h 호출에서 다른 디스크로 전송되는 장치 및 벤더 정보로 채워서 하드 디스크 번호(80h, 81h ...)와 페어링하여 첫 번째 컨트롤러의 첫 번째 디스크에서 다른 디스크로 부팅할 수 있도록 할 수 있기 때문이다.INT 13h(BCV 표에서 가장 우선 순위가 높은 항목), 규격에서 BIOS 인식 IPL 장치(BAID)로 언급.
여러 컨트롤러가 동시에 INT 13h를 후크할 수 있다.예를 들어, SCSI 컨트롤러 다음에 AHCI 컨트롤러는 자신의 핸들러 주소를 항목 13h에 넣기 전에 SCSI 컨트롤러에 의해 항목 13h의 IDT에 저장된 이전 핸들러에 대한 호출을 항목 13h의 IDT에 넣어 INT 13h를 후크할 수도 있다.INT 13h를 후크하는 첫 번째 컨트롤러는 바이트를 확인하여 0개의 디스크가 설치된 것을 확인할 것이다.0040:0075BIOS 데이터 영역(BDA)에 상주하며, 열거할 디스크가 4개 있는 경우 디스크 번호의 범위를 80h–83h로 할당하고 BDA에 '4'를 저장한다.INT 13h를 후크하는 두 번째 컨트롤러에 디스크가 2개 있는 경우, BDA에서 '4'를 읽고 디스크 번호 84h와 85h를 할당하고 '6'을 '4' 대신 저장한다.이제 INT 13h를 DL = 83h로 호출할 경우, 디스크 번호 83h를 할당하지 않은 두 번째 컨트롤러의 핸들러는 이전 핸들러에게 통화를 중계하고, 디스크 번호 83h를 할당했던 핸들러는 통화 자체를 처리하게 된다.INT 13h에 연결된 컨트롤러의 ISR의 수에 관계없이 ISR은 지정된 드라이브 번호를 할당한 컨트롤러가 번호를 인식하여 통화를 처리하고 인터럽트에서 돌아올 때까지 각각 다음 컨트롤러에 제어권을 전달한다.
네트워크 부팅 ROM
또 다른 일반적인 옵션은 네트워크 부팅 ROM이다.옵션 ROM에는 부팅 코드를 다운로드하는 데 필요한 프로그램이 포함되어 있다.원래 IBM Personal Computer ROM은 INT 18H(원래 카세트 BASIC 호출)와 INT 19H를 연결했는데, 이 두 인터럽트가 부팅 프로세스에 사용되었기 때문이다.부팅 프로세스를 시작하기 위해 INT 19h를 호출하고, 부팅 프로세스에서 가능한 부팅 장치가 하나도 없다는 것을 발견했을 때 INT 18h를 ROM에서 Cassette BASIC을 시작하도록 호출했다.원래 INT 18h를 후크함으로써 네트워크 어댑터 ROM은 다른 모든 부팅 장치(플로피 드라이브, 하드 드라이브 등)가 고장 났을 때 네트워크에서 부팅을 시도했다.INT 19H를 후크함으로써 네트워크 어댑터 ROM은 다른 장치보다 먼저 네트워크에서 부팅을 시도한다.BBS는 NIC 옵션 ROM이 INT 19h를 후크하지 않고 대신 BIOS 19h 핸들러가 BEV를 호출하여 부팅 코드를 다운로드하도록 지정한다.
비디오
비디오 BIOS는 INT 10H(레거시 BIOS), VBE(레거시 BIOS) 및 UEFI GOP와 같은 BIOS 및 운영 체제를 위한 기본적인 디스플레이 서비스를 제공한다.원래의 IBM PC BIOS는 IBM CGA와 MDA 비디오 어댑터에 대한 통합 지원을 포함하였으므로(또한 옵션 ROM을 지원하지 않았다) 그러한 비디오 카드에는 옵션 ROM이 없었다.BIOS 본래의 CGA와 MDA 지원은 IBM PC XT와 PC AT 제품군(지원 옵션 ROM을 행함)을 통해 유지되었고, 따라서 해당 기기에서 해당 카드가 작동(전체 BIOS 지원)되도록 했다.옵션 ROM을 가진 최초의 PC 비디오 어댑터 카드는 1984년에 IBM PC AT와 함께 도입된 IBM EGA이다. (헤라클레스 그래픽 카드는 MDA 호환 기능 외에는 옵션 ROM과 BIOS 지원이 없었으며, 이는 메인 BIOS에서 IBM이 제공하는 MDA 지원에 의존했다.) 대부분의 후속 PC 비디오 어댑터는 옵션의 지원을 받았다.ROM은 PS/2 마더보드에 통합된 VGA와 MCCA는 통합 BIOS 지원을 사용했을 수 있다.한때 클론 PC 마더보드에 통합된 통합 SVGA(Super VGA)가 시스템 자체보다 별도 회사에서 제공되던 시절, SVGA 벤더가 제공한 비디오 BIOS는 메인 시스템 BIOS(제3의 별도 회사 제공)와 동일한 BIOS 칩에 별도의 옵션 ROM 모듈로 편입되는 것이 일반화되었다.
UEFI 옵션 ROM
PCI 규격은 동일한 디바이스에서 다중 옵션 ROM 이미지를 허용한다.이러한 옵션 ROM은 레거시 x86 및 UEFI일 수 있다.UEFI 설정에서 옵션 ROM 형식이 "UEFI 호환됨"으로 설정된 경우 DXE 단계는 새로운 UEFI 옵션 ROM이 있으면 새로운 UEFI 옵션 ROM을 로드하고, 없는 경우 기존 옵션 ROM을 로드한다.호환성 지원 모듈(CSM)이 활성화된 경우 UEFI는 레거시 옵션 ROM을 사용할 수 있다.보안 부트를 활성화하면 기존 펌웨어 드라이버가 보안 구멍인 인증을 지원하지 않기 때문에 호환성 지원 모듈과 레거시 옵션 ROM의 실행이 금지된다는 점에 유의하십시오.[5]
참고 항목
- 바이오스
- UEFI
- 부팅
- 레거시 플러그 앤 플레이
- PCI 구성 공간
- 읽기 전용 메모리(ROM)
- PXE(Preboot eXecution Environment)
참조
- ^ IBM PC XT 기술 참조서, 페이지 2-10
- ^ 개인용 시스템/2 및 개인용 컴퓨터 BIOS 인터페이스 기술 참조, 페이지 4-12
- ^ a b c BIOS Boot Specification (PDF) (Version 1.01 ed.). Compaq, Phoenix, & Intel. January 11, 1996.
- ^ Etherboot의 실행 환경
- ^ "Microsoft docs".
{{cite web}}: CS1 maint : url-status (링크)
