바이오스

BIOS
1980년대 Dell 310 시스템용 AMD BIOS 칩 한 쌍

컴퓨팅에서 BIOS(/biosbaɪs, -oʊs/, BY-oss, -oss; ohss; 시스템 BIOS, ROM BIOS, BIOS ROM 또는 PC BIOS라고도 하는 기본 입출력 시스템)는 운영 체제 및 프로그램의 런타임 서비스를 제공하고 부팅 프로세스(전원 켜기 시작) 중에 하드웨어 초기화를 수행하는 데 사용되는 펌웨어다.[1]BIOS 펌웨어는 IBM PC 또는 IBM PC 호환의 시스템 보드에 미리 설치되어 있으며 UEFI 기반 시스템에도 존재한다.[2][3]1975년 CP/M 운영체제에 사용된 기본 입출력 시스템에서 유래한 명칭이다.[4][5]원래 IBM PC소유했던 BIOS는 호환 가능한 시스템을 만들려고 하는 일부 회사(예: Phoenix Technologies)에 의해 역설계되었다.그 원래 시스템의 인터페이스사실상표준의 역할을 한다.

최신 PC의 BIOS는 시스템 하드웨어 구성요소(Power-on self-test)를 초기화하여 테스트하고, 대용량 저장장치에서 부팅 로더를 로딩하여 운영체제를 초기화한다.도스 시대에 BIOS는 응용 프로그램과 운영체제에 대한 인터페이스를 표준화한 키보드, 디스플레이, 스토리지 및 기타 입출력(I/O) 장치에 대한 BIOS 인터럽트 호출을 제공했다.보다 최신 운영 체제는 시작 후 BIOS 인터럽트 호출을 사용하지 않는다.[6]

대부분의 BIOS 구현은 다양한 기기, 특히 시스템 칩셋과 인터페이스하여 특정 컴퓨터 또는 마더보드 모델과 함께 작동하도록 특별히 설계되었다.원래 BIOS 펌웨어는 PC 마더보드의 ROM 칩에 저장되었다.이후 컴퓨터 시스템에서는 마더보드에서 칩을 제거하지 않고도 다시 쓸 수 있도록 BIOS 내용이 플래시 메모리에 저장된다.이를 통해 BIOS 펌웨어에 대한 최종 사용자의 손쉬운 업데이트를 가능하게 하여 새로운 기능이 추가되거나 버그가 수정될 수 있지만, 컴퓨터가 BIOS 루트킷에 감염될 가능성도 만들어진다.게다가, BIOS 업그레이드가 실패하면 마더보드에 벽돌을 쌓을 수 있다.BIOS 펌웨어를 사용하는 PC에서 실행 중인 Microsoft Windows의 마지막 버전은 Windows 10이다.

UEFI(Unified Extensible Firmware Interface)는 레거시 PC BIOS의 후속 제품으로, 기술적 한계를 해소하는 것을 목표로 한다.[7]

역사

/* C P / M   B A S I C   I / O    S Y S T E M    (B I O S)                     COPYRIGHT (C) GARY A. KILDALL                              JUNE, 1975 */ […] /*  B A S I C   D I S K    O P E R A T I N G   S Y S T E M  (B D O S)                     COPYRIGHT (C) GARY A. KILDALL                             JUNE, 1975 */
An excerpt from the BDOS.PLM file header in the PL/M source code of CP/M 1.1 or 1.2 for Lawrence Livermore Laboratories (LLL)[4]

BIOS(Basic Input/Output System)라는 용어는 Gary Kildall[8][9] 의해 만들어졌으며 1975년에 CP/M 운영체제에 처음 등장하여 하드웨어와 직접 연결되는 부팅 시간 동안 로드된 CP/M의 기계 고유 부분을 기술하였다.([4][5][9][10][11][12][5]일반적으로 CP/M 기계는 ROM에 간단한 부팅 로더만 가지고 있다.)

MS-DOS, PC DOS 또는 DR-DOS 버전에는 "라는 파일이 다양하게 포함되어 있음IO.SYS, "IBMB"IO.COM", "IBMB"IO.SYS 또는 "DRBIOS".SYS"; 이 파일은 "DOS BIOS"("DOS I/O 시스템"이라고도 함)로 알려져 있으며 운영 체제의 하위 하드웨어 특정 부분을 포함하고 있다.ROM에 상주하는 기본 하드웨어 전용이지만 운영 체제에 독립적인 "시스템 BIOS"와 함께, "CP/M BIOS"에 대한 아날로그를 나타낸다.

원래 IBM PC소유했던 BIOS는 호환 가능한 시스템을 만들려고 하는 일부 회사(예: Phoenix Technologies)에 의해 역설계되었다.

PS/2 머신의 도입으로 IBM은 시스템 BIOS를 실제 모드 부분과 보호 모드 부분으로 나누었다.리얼 모드 부분은 DOS와 같은 기존 운영 체제와의 역호환성을 제공하기 위한 것으로, 따라서 "CBIOS"("호환성 BIOS"의 경우)라고 명명된 반면, "ABIOS"("고급 BIOS"의 경우)는 OS/2와 같은 멀티태스킹 운영 체제에 특별히 적합한 새로운 인터페이스를 제공했다.[13]

사용자 인터페이스

원래의 IBM PC와 XT의 BIOS는 대화형 사용자 인터페이스가 없었다.오류 코드 또는 메시지가 화면에 표시되거나 전원 켜기 자가 테스트(POST)가 비디오 디스플레이 어댑터를 성공적으로 초기화할 정도로 진행되지 않았을 때 신호 오류로 코드화된 일련의 소리가 생성되었다.IBM PC와 XT의 옵션은 메인보드와 확장 카드의 스위치와 점퍼에 의해 설정되었다.1990년대 중반 무렵부터 BIOS ROM에 특정 키 시퀀스에 의해 시스템 전원을 켤 때 액세스되는 "BIOS 구성 유틸리티"(BCU[14]) 또는 "BIOS 설정 유틸리티"가 포함되는 것이 일반화되었다.이 프로그램은 키보드를 통해 제어되는 인터랙티브 메뉴 시스템을 통해 사용자가 이전에 DIP 스위치를 사용하여 설정한 유형의 시스템 구성 옵션을 설정할 수 있도록 했다.중간 기간 동안 IBM AT를 포함한 IBM 호환 PC는 배터리 지원 RAM의 구성 설정을 보유하고 ROM이 아닌 플로피 디스크의 부팅 가능한 구성 프로그램을 사용하여 이 메모리에 포함된 구성 옵션을 설정했다.플로피 디스크는 컴퓨터와 함께 공급되었고, 분실된 경우에는 시스템 설정을 변경할 수 없었다.일반적으로 EISA 버스가 있는 컴퓨터에도 동일하게 적용되었는데, 이 컴퓨터에서는 구성 프로그램을 EISA Configuration Utility(ECU)라고 불렀다.

현대의 윈텔 호환 컴퓨터는 1990년대 후반 ROM에 상주하는 BIOS 설정 유틸리티에서 본질적으로 변하지 않는 설정 루틴을 제공한다; 사용자는 키보드와 비디오 디스플레이를 사용하여 하드웨어 옵션을 구성할 수 있다.최신 Wintel 기계는 BIOS 구성 설정을 플래시 ROM에 저장할 수 있으며, 아마도 BIOS 자체를 고정하는 것과 동일한 플래시 ROM일 수 있다.

작전

시스템 시작

초기 Intel 프로세서는 물리적 주소 000FFF0h에서 시작되었다.이후 프로세서가 장착된 시스템은 시스템 ROM에서 BIOS 실행을 시작할 수 있는 논리를 제공한다.

시스템의 전원이 방금 켜졌거나 재설정 버튼("콜드 부트")을 누른 경우 전체 전원 켜기 자가 테스트(POST)가 실행된다.Ctrl+Alt+Delete를 누른 경우("warm boot") BIOS에서 테스트한 비휘발성 BIOS 메모리("CMOS")에 저장된 특수 플래그 값을 통해 긴 POST 및 메모리 탐지를 우회할 수 있다.

POST는 CPU, 칩셋, RAM, 마더보드, 비디오 카드, 키보드, 마우스, 하드 디스크 드라이브, 광 디스크 드라이브통합 주변 장치를 포함한 기타 하드웨어를 식별, 테스트 및 초기화한다.

초기 IBM PC에는 POST에서 키보드 포트를 통해 프로그램을 RAM에 다운로드하여 실행하는 루틴이 있었다.[16][17]이 기능은 공장 시험이나 진단 목적으로 제작되었다.

부팅 프로세스

부팅 프로세스

옵션 ROM 스캔이 완료되고 체크섬이 유효한 탐지된 ROM 모듈이 모두 호출된 후 또는 옵션 ROM을 검색하지 않는 BIOS 버전에서 POST 직후 BIOS는 INT 19h를 호출하여 부팅 처리를 시작한다.부팅 후 로드된 프로그램도 INT 19h를 호출하여 시스템을 재부팅할 수 있지만, BIOS 재부팅 프로세스를 방해하거나 시스템이 재부팅하는 동안 중단되거나 충돌할 수 있는 인터럽트와 기타 비동기 하드웨어 프로세스를 비활성화하도록 주의해야 한다.

INT 19h가 호출되면 BIOS는 하드 디스크, 플로피 디스크, CD 또는 DVD와 같은 "부팅 장치"에서 부트 로더 소프트웨어를 찾으려고 시도한다.처음 발견한 부팅 소프트웨어를 로딩하고 실행해 PC를 제어할 수 있게 한다.[18]

BIOS는 비휘발성 BIOS 메모리(CMOS) 또는 초기 PC에서 DIP 스위치에 설정된 부팅 장치를 사용한다.BIOS는 각 장치가 첫 번째 섹터(부팅 섹터) 로드를 시도하여 부팅 가능한지 확인하기 위해 각 장치를 점검한다.섹터를 읽을 수 없는 경우 BIOS는 다음 장치로 계속 이동한다.섹터를 성공적으로 읽으면 일부 BIOS는 부트 섹터를 수락하고 부팅 가능한 장치를 고려하기 전에 섹터의 마지막 2바이트(길이 512바이트)에서 부트 섹터 시그니처 0x55 0xAAA도 검사한다.[nb 1]

부팅 가능한 장치가 발견되면 BIOS는 제어 권한을 로드된 섹터로 전송한다.BIOS는 최근 2바이트의 부팅 섹터 서명을 확인하는 것 외에 부팅 섹터의 내용을 해석하지 않는다.파티션 테이블 및 BIOS 파라미터 블록과 같은 데이터 구조를 해석하는 작업은 부트 섹터의 부트 프로그램 자체 또는 부트 프로세스를 통해 로드된 다른 프로그램에 의해 수행된다.

네트워크 어댑터와 같은 디스크 이외의 장치는 옵션 ROM 또는 마더보드 BIOS ROM에 통합된 동등한 절차에 의해 부팅을 시도한다. 따라서 옵션 ROM은 마더보드 BIOS ROM에 의해 정의된 부팅 프로세스에 영향을 미치거나 대체될 수 있다.

El Torito 광학 미디어 부트 표준으로, 광학 드라이브는 부팅을 위해 실제로 3.5" 고밀도 플로피 디스크를 BIOS에 에뮬레이트한다.CD-ROM이나 DVD-ROM의 "제1 섹터"를 읽는 것은 플로피 디스크나 하드 디스크에서처럼 간단히 정의된 작업이 아니다.게다가, 매체의 복잡성은 한 분야의 유용한 부팅 프로그램을 쓰기 어렵게 만든다.부팅 가능한 가상 플로피 디스크는 광학 매체에 대한 액세스를 기본 형식으로 제공하는 소프트웨어를 포함할 수 있다.

부팅 우선 순위

사용자는 BIOS에서 구현한 부팅 우선 순위를 선택할 수 있다.예를 들어 대부분의 시스템에는 부팅 가능한 하드 디스크가 있지만, 경우에 따라 부팅 우선 순위가 높은 이동식 미디어 드라이브가 있기 때문에 사용자가 이동식 디스크를 부팅하도록 할 수 있다.

대부분의 최신 BIOS에서 부팅 우선 순서는 사용자가 구성할 수 있다.이전 BIOS에서는 제한된 부팅 우선 순위 옵션을 선택할 수 있으며, 초기 BIOS에서는 플로피 디스크 드라이브가 먼저, 고정 디스크(하드 디스크)가 두 번째로, 그리고 일반적으로 다른 부팅 디바이스가 지원되지 않는 고정 우선 순위 체계를 구현했으며, 설치된 옵션 ROM에 의해 이러한 규칙을 수정해야 했다.초기 PC의 BIOS도 대개 두 개의 드라이브가 설치되어 있더라도 첫 번째 플로피 디스크 드라이브나 첫 번째 하드 디스크 드라이브에서만 부팅된다.

부팅 실패

원본 IBM PC와 XT에서는 부팅 가능한 디스크가 없으면 INT 18h로 전화하여 ROM BASIC을 시작했다.ROM에서 BASIC을 사용하는 프로그램이 거의 없기 때문에, 클론 PC 제조업체들은 그것을 배제했다; 그러면 디스크에서 부팅하지 못한 컴퓨터는 "No ROM BASIC"을 표시하고 정지할 것이다. (INT 18h에 대응하여)

이후 컴퓨터에는 "부트 디스크를 찾을 수 없음"과 같은 메시지가 표시되며, 일부 컴퓨터에서는 부팅 프로세스를 다시 시도하기 위해 디스크를 삽입하고 키를 누르라는 메시지가 표시될 수 있다.최신 BIOS는 부팅 프로세스가 실패하면 아무것도 표시하지 않거나 자동으로 BIOS 구성 유틸리티에 들어갈 수 있다.

부팅 환경

부팅 프로그램을 위한 환경은 매우 간단하다: CPU는 실제 모드에 있고 범용 및 세그먼트 레지스터는 정의되지 않는다(SS, SP, CS, DL 제외). CS:IP는 항상 물리적 주소를 가리킨다.0x07C00CS와 IP가 실제로 가지고 있는 가치들은 잘 정의되어 있지 않다.일부 BIOS에서 CS를 사용하는 경우:의 IP0x0000:0x7C00다른 사람이 사용할 수 있는 한0x07C0:0x0000. 부트 프로그램은 항상 이 고정된 주소에 로드되기 때문에 부트 프로그램을 다시 연결할 필요가 없다.DL은 부팅 장치의 INT 13h와 함께 사용되는 드라이브 번호를 포함할 수 있다.SS:SP는 하드웨어 인터럽트를 지원할 수 있을 정도로 충분히 큰 유효한 스택을 가리키지만, 그렇지 않으면 SS와 SP가 정의되지 않는다.(인터럽트가 서비스되려면 스택이 이미 설정되어 있어야 하며, 시스템 타이머 틱 인터럽트를 위해서는 인터럽트가 활성화되어 있어야 하며, BIOS는 최소한 하루의 시간 카운트를 유지하기 위해 항상 사용하고 POST 중에 초기화되는 것이 활성화되어 있어야 하며, 키보드가 작동할 수 있어야 한다.키보드는 BIOS 키보드 서비스를 호출하지 않아도 작동하며, 키 입력은 수신되어 BIOS가 관리하는 15자 자동 검색 버퍼에 배치된다.)부팅 프로그램은 BIOS에 의해 설정된 스택의 크기를 알 수 없고 그 위치도 마찬가지로 가변적이기 때문에 자체 스택을 설정해야 한다. 부팅 프로그램은 SS:SP를 조사하여 기본 스택을 조사할 수 있지만 새로운 스택을 무조건 설정하는 것이 더 쉽고 짧다.

부팅 시 모든 BIOS 서비스를 사용할 수 있으며 아래 주소의 메모리0x00400인터럽트 벡터 표를 포함한다.BIOS POST는 시스템 타이머, 인터럽트 컨트롤러, DMA 컨트롤러 및 기타 마더보드/칩셋 하드웨어를 필요에 따라 초기화하여 모든 BIOS 서비스를 준비 상태로 전환했다.기존 메모리 및 확장 메모리의 모든 시스템 DRAM에 대한 DRAM 리프레시가 설정되었으며 실행 중이다.BIOS 인터럽트에 해당하는 인터럽트 벡터는 BIOS의 적절한 진입점을 가리키도록 설정되었고, BIOS가 초기화한 장치의 하드웨어 인터럽트 벡터는 BIOS가 제공하는 ISR을 가리키도록 설정되었으며, BIOS가 프로그램을 후크하기 위해 생성하는 인터럽트를 포함한 일부 다른 인터럽트는 채무불이행으로 설정되었다.t 즉시 반환되는 더미 ISR.BIOS가 예약된 시스템 RAM 블록을 주소에서 유지 관리0x00400–0x004FFPOST 중에 초기화 된 다양한 파라미터.주소 이상에 있는 모든 메모리0x00500부트 프로그램에 의해 사용될 수 있고, 심지어 스스로를 덮어쓸 수도 있다.

확장(옵션 ROM)

하드 디스크 드라이브 호스트 버스 어댑터비디오 카드와 같은 주변 카드에는 자체 펌웨어가 있으며, BIOS 확장 옵션 ROM은 BIOS에 추가 기능을 제공하는 확장 카드 펌웨어의 일부일 수 있다.옵션 ROM의 코드는 BIOS가 대용량 저장소에서 운영 체제를 부팅하기 전에 실행된다.이러한 ROM은 일반적으로 하드웨어를 테스트 및 초기화하거나, 새로운 BIOS 서비스를 추가하거나, 기존 BIOS 서비스를 자체 서비스로 대체한다.예를 들어 SCSI 컨트롤러에는 대개 해당 컨트롤러를 통해 연결된 하드 드라이브에 대한 지원을 추가하는 BIOS 확장 ROM이 있다.확장 ROM은 원칙적으로 운영 체제를 포함할 수도 있고, 네트워크 부팅과 같은 완전히 다른 부팅 프로세스를 구현할 수도 있다.BIOS 확장 ROM이 포함된 어댑터 카드(또는 ROM 칩)를 제거하거나 삽입하면 IBM과 호환되는 컴퓨터 시스템의 작동이 완전히 변경될 수 있다.

마더보드 BIOS는 일반적으로 통합 디스플레이와 통합 스토리지를 초기화하고 부팅하기 위한 코드를 포함하고 있다.또한 SCSI, RAID, 네트워크 인터페이스 카드비디오 카드와 같은 플러그인 어댑터 카드에는 자체 BIOS(예: 비디오 BIOS)가 포함되어 있는 경우가 많아 해당 구성 요소의 시스템 BIOS 코드를 보완하거나 교체한다.마더보드에 내장된 장치도 이러한 방식으로 동작할 수 있으며, 옵션 ROM은 마더보드 BIOS의 일부가 될 수 있다.

추가 카드에는 마더보드 BIOS에서 카드가 지원되지 않고 운영 체제를 로딩하기 전에 BIOS 서비스를 통해 카드를 초기화하거나 액세스할 수 있도록 해야 하는 경우 옵션 ROM이 필요하다(일반적으로 이는 부팅 프로세스에서 필요함을 의미한다).일부 초기 PC 시스템(IBM PCjr 포함)에서 ROM의 또 다른 장점은 ROM이 메인 시스템 RAM보다 빠르다는 것이다. (현대 시스템에서는 이와 정반대되는 경우가 매우 많으며, BIOS ROM 코드를 RAM에 복사("그림자")하므로 ROM은 더 빨리 실행될 것이다.)

부팅 절차

확장 ROM이 시스템 부팅 방식(예: 네트워크 장치 또는 SCSI 어댑터)을 협력적으로 변경하고자 하는 경우, BBS(BIOS 부팅 사양) API를 사용하여 해당 기능을 등록할 수 있다.확장 ROM이 BBS API를 사용하여 등록되면 사용자는 BIOS 사용자 인터페이스 내에서 사용 가능한 부팅 옵션 중에서 선택할 수 있다.대부분의 BBS 호환 PC BIOS 구현에서는 확장 ROM이 BBS API의 실행 및 등록을 마칠 때까지 사용자가 BIOS의 사용자 인터페이스에 들어갈 수 없게 되는 것도 이 때문이다.[citation needed]

또한 확장 ROM이 시스템이 일방적으로 부팅되는 방식을 변경하고자 하는 경우 BIOS 디스크 서비스인 INT 13h와 같이 INT 19h 또는 일반적으로 인터럽트 19h에서 호출되는 다른 인터럽트를 간단히 후크하여 BIOS 부팅 프로세스를 가로챌 수 있다.그런 다음 BIOS 부팅 프로세스를 자체 부팅 프로세스 중 하나로 교체하거나 BIOS가 특정 장치를 부팅 가능한 것으로 감지하지 못하도록 하여 자체 부팅 작업을 삽입하여 부팅 시퀀스를 수정하기만 하면 된다.BIOS 부팅 규격이 공포되기 전에는 확장 ROM이 마더보드의 네이티브 BIOS에 의해 부팅이 지원되지 않는 장치에 대한 부팅 기능을 구현할 수 있는 유일한 방법이었다.[citation needed]

초기화

마더보드 BIOS가 POST를 완료한 후 대부분의 BIOS 버전은 BIOS 확장 ROM이라고도 하는 옵션 ROM 모듈을 검색하여 실행한다.마더보드 BIOS는 "상위 메모리 영역"(주소 0xA00 이상에서 x86 리얼 모드 주소 공간의 일부)의 확장 ROM을 스캔하여 발견된 각 ROM을 순서대로 실행한다.메모리 맵 옵션 ROM을 검색하기 위해 BIOS 구현은 다음에서 실제 모드 주소 공간을 검색한다.0x0C00000x0F00002KB(2,048바이트) 경계에서 2바이트 ROM 시그니처: 0x55와 0xAA를 차례로 찾음.유효한 확장 ROM에서 이 서명은 확장 ROM이 실제 메모리에서 차지하는 512바이트 블록의 수를 나타내는 단일 바이트에 따르며, 다음 바이트는 옵션 ROM의 진입점("엔트리 오프셋"이라고도 함)이다.ROM에 유효한 체크섬이 있는 경우 BIOS는 컨트롤을 입력 주소로 전송하며, 일반적인 BIOS 확장에서는 이 컨트롤이 확장자의 초기화 루틴의 시작이어야 한다.

이 시점에서 확장 ROM 코드는 일반적으로 제어하는 하드웨어를 테스트하고 초기화하며 사후 부팅 애플리케이션에 사용할 인터럽트 벡터를 등록한다.그것은 사용자 구성 인터페이스를 제공하거나, 진단 정보를 표시하거나, 필요한 다른 모든 것을 하기 위해 BIOS 서비스(이전에 초기화된 옵션 ROM에서 제공하는 서비스 포함)를 사용할 수 있다.옵션 ROM이 BIOS로 돌아가지 않아 BIOS의 부팅 순서가 완전히 해제될 가능성이 있다.

옵션 ROM은 일반적으로 초기화 프로세스를 완료한 후 BIOS로 돌아가야 한다.옵션 ROM이 반환되면 BIOS는 메모리 공간의 전체 옵션 ROM 영역이 스캔될 때까지 더 많은 옵션 ROM을 검색하여 해당 옵션 ROM이 발견된 대로 호출한다.

물리적 배치

칩을 교체하여 업데이트된 Dell 310의 BIOS 칩

옵션 ROM은 일반적으로 어댑터 카드에 있다.그러나 원래의 PC, 그리고 아마도 PC XT에도 옵션 ROM을 삽입할 수 있는 마더보드(IBM의 용어로 "시스템 보드")에 여분의 ROM 소켓이 있으며, BASIC 통역기가 포함된 4개의 ROM도 제거하여 옵션 ROM이 될 수 있는 사용자 지정 ROM으로 교체할 수 있다.IBM PCjr은 전면에 2개의 ROM 카트리지 슬롯이 있다는 점에서 PC들 사이에서 독특하다.이러한 슬롯의 카트리지는 옵션 ROM에 사용되는 상위 메모리 영역의 동일한 영역에 매핑되며, 카트리지에는 BIOS가 인식할 수 있는 옵션 ROM 모듈이 포함될 수 있다.카트리지에는 또한 BASIC 프로그램과 같이 다르게 취급되는 다른 종류의 ROM 모듈도 포함될 수 있다.하나의 PCjr 카트리지에는 여러 종류의 다른 ROM 모듈이 포함될 수 있으며, 하나의 ROM 칩에 함께 저장될 수 있다.

운영 체제 서비스

BIOS ROM은 특정 제조업체의 하드웨어에 맞춤화되어 운영 체제를 포함한 프로그램에 표준화된 방식으로 낮은 수준의 서비스(키 스트로크 읽기 또는 디스켓에 데이터 섹터 쓰기 등)를 제공할 수 있다.예를 들어 IBM PC에는 단색 또는 컬러 디스플레이 어댑터(다른 디스플레이 메모리 주소와 하드웨어 사용)가 있을 수 있지만 텍스트 모드그래픽 모드에서 화면의 지정된 위치에 문자를 표시하기 위해 표준의 단일 BIOS 시스템 호출을 호출할 수 있다.

BIOS는 주변기기(키보드, 초보 텍스트 및 그래픽 디스플레이 기능 등)를 작동시키기 위한 기본 입출력 기능의 작은 라이브러리를 제공한다.MS-DOS를 사용할 때, BIOS 서비스는 디스크 기능에 액세스하기 위한 INT 13h 인터럽트 명령을 실행하거나 비디오 디스플레이, 키보드, 카세트 및 기타 장치 기능에 액세스하기 위해 다수의 문서화된 BIOS 인터럽트 호출 중 하나를 실행함으로써 응용 프로그램(또는 MS-DOS)에 의해 액세스될 수 있다.

이 기본 펌웨어 기능을 대체하도록 설계된 운영 체제 및 실행 소프트웨어는 애플리케이션 소프트웨어에 대한 대체 소프트웨어 인터페이스를 제공한다.애플리케이션은 또한 이러한 서비스를 자신에게 제공할 수 있다.이것은 1980년대 MS-DOS에 의해서도 시작되었는데, 프로그래머들은 그래픽 디스플레이에 BIOS 비디오 서비스를 사용하는 것이 매우 느리다고 관찰했다.화면 출력 속도를 높이기 위해 많은 프로그램이 BIOS를 우회해 비디오 디스플레이 하드웨어를 직접 프로그래밍했다.특히 데모센에만 국한된 것은 아니지만 다른 그래픽 프로그래머들은 IBM BIOS에서 지원하지 않는 PC 디스플레이 어댑터의 기술적 능력이 있으며 이를 우회하지 않고는 이용할 수 없다고 보았다.AT 호환 BIOS는 인텔 리얼 모드에서 실행되었기 때문에 286개 이상의 프로세서에서 보호 모드로 실행된 운영 체제는 BIOS 서비스를 대체하기 위해 보호 모드 작동과 호환되는 하드웨어 장치 드라이버가 필요했다.

최신 운영 체제(예: WindowsLinux)를 실행하는 최신 PC에서 BIOS 인터럽트 호출은 운영 체제의 부팅 및 초기 로딩 중에만 사용된다.운영 체제의 첫 번째 그래픽 화면이 표시되기 전에 입력과 출력은 일반적으로 BIOS를 통해 처리된다.사용자가 부팅할 운영 체제를 선택하거나 안전 모드로 부팅하거나 마지막으로 알려진 양호한 구성을 사용할 수 있는 Windows의 텍스트 메뉴와 같은 부팅 메뉴가 BIOS를 통해 표시되며 BIOS를 통해 키보드 입력을 수신한다.[6]

많은 최신 PC는 시스템에 BIOS 또는 CSM 지원 UEFI 펌웨어가 있다면 여전히 MS-DOS 또는 DR-DOS와 같은 기존 운영 체제를 부팅하여 실행할 수 있다.

프로세서 마이크로코드 업데이트

인텔 프로세서는 P6 마이크로아키텍처 이후 재프로그래밍 가능한 마이크로코드를 가지고 있다.[19][20][21]AMD 프로세서는 K7 마이크로아키텍처 이후 재프로그래밍 가능한 마이크로코드를 가지고 있다.BIOS에는 초기 프로세서 마이크로코드의 오류를 수정하는 프로세서 마이크로코드에 패치가 포함되어 있다. 마이크로코드는 프로세서의 SRAM에 로드되므로 재프로그래밍이 지속되지 않기 때문에 시스템 전원을 켤 때마다 마이크로코드 업데이트 로딩이 수행된다.재프로그래밍 가능한 마이크로코드가 없다면 값비싼 프로세서 스왑이 필요할 것이다.[22] 예를 들어, 원래 펜티엄 프로세서의 결함 있는 마이크로코드를 재프로그래밍할 수 없기 때문에 제품 리콜을 요구했기 때문에 인텔은 값비싼 대실패가 되었다.운영체제는 메인 프로세서 마이크로코드도 업데이트할 수 있다.[23][24]

식별

일부 BIOS에는 원래 장비 제조업체(OEM)가 BIOS 내부에 배치한 디지털 서명인 SLIC(소프트웨어 라이센스 설명 표)가 포함되어 있으며, 예를 들어 Dell도 있다.SLIC는 ACPI 데이터 테이블에 삽입되며 활성 코드가 없다.[25][26]

마이크로소프트 윈도우즈와 마이크로소프트 애플리케이션 소프트웨어의 OEM 버전을 배포하는 컴퓨터 제조업체는 SLIC를 사용하여 윈도우즈 소프트웨어가 포함된 OEM 윈도 설치 디스크와 시스템 복구 디스크에 대한 라이센스를 인증할 수 있다.SLIC가 있는 시스템은 OEM 제품 키로 사전 활성화할 수 있으며, 자체 활성화 수단으로 BIOS의 SLIC에 대해 XML 형식의 OEM 인증서를 검증한다(시스템 잠금 사전 설치, SLP 참조).사용자가 Windows를 새로 설치하는 경우 활성화를 우회하려면 OEM 키(SLP 또는 COA)와 SLIC의 디지털 인증서를 모두 보유해야 한다.[25]이는 사용자가 OEM에서 제공하는 사전 사용자 정의 이미지를 사용하여 복원을 수행할 경우 달성할 수 있다.파워 유저는 OEM 이미지에서 필요한 인증서 파일을 복사하여 SLP 제품 키를 디코딩한 다음 SLP 활성화를 수동으로 수행할 수 있다.비순정 윈도우 배포에 대한 균열은 대개 윈도우 활성화를 우회하기 위해 SLIC를 편집하거나 에뮬레이트한다.[citation needed]

오버클록

일부 BIOS 구현에서는 CPU가 보장된 기능에 대한 제조업체 등급보다 높은 클럭 속도로 조정되는 작업인 오버클럭화를 허용한다.그러나 오버클록은 충분히 냉각되지 않은 컴퓨터의 시스템 신뢰성을 심각하게 손상시키고 일반적으로 부품의 수명을 단축시킬 수 있다.오버클록은 잘못 수행될 경우 구성부품이 너무 빨리 과열되어 기계적으로 스스로를 파괴할 수도 있다.[27]

현대 용법

MS-DOS와 같은 일부 구형 운영 체제는 BIOS를 사용하여 PC 내에서 대부분의 입출력 작업을 수행한다.[28]

실제 모드 BIOS 서비스를 직접 호출하는 것은 보호 모드(및 롱 모드) 운영 체제에 비효율적이다.BIOS 인터럽트 호출은 현대의 멀티태스킹 운영체제가 처음 로딩한 후 사용하지 않는다.

1990년대에 BIOS는 마이크로소프트 윈도우즈와 유닉스 유사 운영 체제에 고급 전원 관리(APM), 플러그플레이 BIOS, 데스크톱 관리 인터페이스(DMI), VESA BIOS 확장(VBE), e820, 멀티프로세서 사양(MultiProcessor Specification)과 같은 일부 보호 모드 인터페이스를 제공하였다.2000년부터 대부분의 BIOS는 최신 운영 체제를 위한 ACPI, SMBIOS, VBEe820 인터페이스를 제공한다.[29][30][31][32][33]

운영체제가 로딩된 후에도 시스템 관리모드 코드는 SMRAM에서 계속 실행되고 있으며, 2010년부터 BIOS 기술은 UEFI를 향한 전환 과정에 있다.[7]

배열

설치 유틸리티

역사적으로 IBM PC와 XT의 BIOS는 사용자 인터페이스가 내장되어 있지 않았다.이전 PC의 BIOS 버전(XT-클래스)은 소프트웨어 구성이 불가능했다. 대신 사용자들은 마더보드의 DIP 스위치를 통해 옵션을 설정했다.80286개의 CPU를 가진 모든 IBM 호환 컴퓨터를 포함한 후기 컴퓨터에는 BIOS 설정을 저장하는 배터리 지원 비휘발성 BIOS 메모리(CMOS RAM 칩)가 있었다.[34]비디오 어댑터 유형, 메모리 크기, 하드 디스크 파라미터와 같은 이러한 설정은 ROM에 내장되지 않은 디스크에서 구성 프로그램을 실행해야만 구성할 수 있었다. IBM AT에 특별한 "레퍼런스 디스켓"을 삽입하여 메모리 크기와 같은 설정을 구성했다.

초기 BIOS 버전에는 암호나 부팅 디바이스 선택 옵션이 없었다.BIOS는 첫 번째 플로피 드라이브에서 부팅하도록 하드 코딩되어 있거나, 그렇지 못할 경우 첫 번째 하드 디스크에서 부팅하도록 되어 있었다.초기 AT급 기계의 접근 제어는 물리적 키락 스위치(컴퓨터 케이스를 열 수 있다면 물리치기 어렵지 않았다)에 의한 것이었다.컴퓨터를 켤 수 있는 사람은 누구나 부팅할 수 있다.[citation needed]

나중에 386급 컴퓨터는 BIOS 코드와 함께 ROM 자체에 BIOS 설정 유틸리티를 통합하기 시작했다. 이러한 컴퓨터는 특정 키나 키 조합을 누르면 보통 BIOS 설정 유틸리티로 부팅되고 그렇지 않으면 BIOS POST와 부팅 프로세스가 실행된다.

표준 PC에서 BIOS 설정 유틸리티 수여

현대적인 BIOS 설정 유틸리티는 PC가 시작될 때 키보드에서 특정 키를 눌러서 액세스되는 텍스트 사용자 인터페이스(TUI) 또는 그래픽 사용자 인터페이스(GUI)가 있다.일반적으로 초기 시작 시 키가 짧은 시간 동안 광고되는데, 예를 들어 "설치에 들어가려면 DEL을 누른다"는 것이다.실제 키는 특정 하드웨어에 따라 달라진다.BIOS 설정 유틸리티에 있는 기능에는 일반적으로 다음이 포함된다.

  • 하드웨어 구성 요소 구성, 실행 및 실행 중지
  • 시스템 시간 설정
  • 부팅 순서 설정
  • BIOS 사용자 인터페이스에 대한 액세스를 보호하고 악의적인 사용자가 인증되지 않은 휴대용 저장 장치에서 시스템을 부팅하지 못하도록 하는 암호 또는 시스템 부팅 암호 등 다양한 암호 설정

하드웨어 모니터링

최신 BIOS 설정 화면에는 메인보드의 하드웨어 모니터 칩과 직접 연결되는 PC Health Status 또는 Hardware Monitoring 탭이 있는 경우가 많다.[35]이를 통해 전원 공급 장치가 제공하는 전압인 CPU와 섀시 온도 모니터링은 물론 마더보드에 연결된 팬의 속도를 모니터링하고 제어할 수 있다.

시스템이 부팅되면 일반적으로 하드웨어 모니터링 및 컴퓨터 제어는 하드웨어 모니터 칩 자체에 의해 직접 수행되며, 별도의 칩이 될 수 있고, IC2 또는 SMBus를 통해 인터페이스되거나, 산업 표준 아키텍처(ISA) 또는 LPC(Low Pin Count)를 통해 인터페이스되는 슈퍼 I/O 솔루션의 일부로 제공될 수 있다.[36]NetBSD와 같은 일부 운영 체제(: 환경 및 OpenB)sysctl hw.sensor가 장착된 SD, 하드웨어 모니터와 통합된 인터페이스 기능

그러나 경우에 따라 BIOS는 ACPI를 통해 하드웨어 모니터링에 대한 기본적인 정보도 제공하며, 이 경우 운영체제는 ACPI를 사용하여 하드웨어 모니터링을 수행할 수 있다.[37][38]

재프로그래밍

1980년대 후반부터 Dell 310을 위한 BIOS 교체 키트.여기에는 두 개의 칩, 칩용 플라스틱 홀더, 칩 풀러 등이 포함된다.

최신 PC에서 BIOS는 다시 쓰기가 가능한 EEPROM이나 NOR 플래시 메모리에 저장되므로 내용을 교체하고 수정할 수 있다.이 내용들을 다시 쓰는 것을 때때로 섬광이라고 한다.보통 시스템 제조업체에서 제공하는 특수 프로그램 또는 POST에서 하드 드라이브나 USB 플래시 드라이브에 BIOS 이미지를 사용하여 수행할 수 있다.그러한 내용을 포함하는 파일을 "바이오 이미지"라고 부르기도 한다.버그를 수정하거나 성능을 향상시키거나 새로운 하드웨어를 지원하기 위해 최신 버전으로 업그레이드하기 위해 BIOS를 다시 클리핑할 수 있다.

하드웨어

미국 메가트렌즈 BIOS 686.이 BIOS 칩은 소켓의 PLCC 패키지에 내장되어 있다.

원래의 IBM PC BIOS(및 카세트 BASIC)는 마더보드의 소켓에 있는 마스크로 프로그램된 읽기 전용 메모리(ROM) 칩에 저장되었다.ROM은 사용자에 의해 교체될 수 있지만 변경될 수는 없다.업데이트를 허용하기 위해 호환되는 많은 컴퓨터는 EPROM, EEPROM 및 이후 플래시 메모리(일반적으로 NOR 플래시) 장치와 같은 재프로그래밍 가능한 BIOS 메모리 장치를 사용했다.로버트 브레이버 BIOS 제조업체 마이크로 펌웨어 사장에 따르면 1995년경 플래시 BIOS 칩이 보편화되었는데, 이는 전기 소거식 PROM(EEPROM) 칩이 표준 자외선 소거식 PROM(EPROM) 칩보다 저렴하고 프로그래밍이 용이하기 때문이라고 한다.플래시 칩은 회로에 프로그래밍(재프로그래밍)되어 있으며, EPROM 칩은 재프로그래밍을 위해 마더보드에서 제거해야 한다.[39]BIOS 버전은 새로운 버전의 하드웨어를 활용하고 이전 버전의 BIOS에서 버그를 수정하기 위해 업그레이드된다.[40]

IBM AT를 시작으로 PC는 BIOS를 통해 설정 가능한 하드웨어 시계를 지원했다.그것은 2000년이 일어났던 세기를 수동으로 바꿀 수 있는 세기적 비트를 가지고 있었다.1995년에 만들어진 대부분의 BIOS 개정판과 1997년에 만들어진 거의 모든 BIOS 개정판은 시계가 1999년 12월 31일 자정을 넘기면 자동으로 세기 비트를 설정함으로써 2000년을 지지했다.[41]

첫 번째 플래시 칩은 ISA 버스에 부착되었다.1998년부터 "펌웨어 허브"(FWH)라고 알려진 새로운 표준 구현에 따라 BIOS 플래시가 LPC 버스로 이동했다.2006년에 BIOS 플래시 메모리는 SPI 버스로 이동했다.[42]

새로운 기능이 추가됨에 따라 BIOS의 크기와 ROM, EEPROM 또는 다른 미디어에 저장될 수 있는 용량은 시간이 지남에 따라 증가했으며, 현재 BIOS 버전은 최대 32메가바이트의 크기로 존재한다.이에 비해 IBM PC BIOS의 원본은 8KB 마스크 ROM에 포함되어 있었다. 일부 현대식 마더보드에는 일부 Linux 배포판과 같이 소형 운영체제 전체를 저장할 수 있는 더 큰 NAND 플래시 메모리 IC가 탑재되어 있다.예를 들어 일부 ASUS 노트북에는 NAND 플래시 메모리 IC에 내장된 스플래시톱 OS가 포함되어 있었다.[43]그러나, 운영 체제를 BIOS와 함께 PC의 ROM에 포함한다는 생각은 새로운 것이 아니다; 1980년대에 마이크로소프트는 MS-DOS용 ROM 옵션을 제공했고, 그것은 Tandy 1000 HX와 같은 일부 PC 복제의 ROM에 포함되었다.

또 다른 종류의 펌웨어 칩이 IBM PC AT와 초기 호환 제품에서 발견되었다.AT에서 키보드 인터페이스는 자체 프로그램 가능한 메모리를 가진 마이크로컨트롤러에 의해 제어되었다.IBM AT에서는 40핀 소켓이 장착된 장치였고, 일부 제조업체에서는 이 칩의 EPROM 버전을 EPROM과 유사하게 사용하였다.또한 이 컨트롤러에는 1메가바이트 범위 이상의 메모리를 관리하기 위해 A20 게이트 기능이 할당되었다. 때로는 상위 메모리를 사용할 수 있는 소프트웨어를 이용하기 위해 이 "키보드 BIOS"의 업그레이드가 필요했다.[citation needed]

BIOS는 메모리 초기화(예: SPD메모리 타이밍 초기화)를 담당하는 메모리 참조 코드(MRC)와 같은 구성 요소를 포함할 수 있다.[44]: 8 [45]

최신 BIOS는[46] Intel Management Engine[47] 또는 AMD Platform Security Processor 펌웨어를 포함한다.

공급업체 및 제품

여러 BIOS 구현 비교
회사 어워드BIOS 아미비오스 인시데 시바이오스
면허증 소유권 소유권 소유권 LGPL v3
유지/개발 종료됨 종료됨 종료됨
32비트 PCI BIOS 호출
AHCI
APM 예(1.2) 예(1.2)
BBS
부트 메뉴
압축 (LHA[48]) (LHA) (RL) (LZMA)
CMOS
EDD
ESCD ? 아니요.
ROM의 플래시 ? ? 아니요.
언어 조립 조립 조립 C
LBA (48) (48) (48)
멀티프로세서 사양
옵션 ROM
비밀번호 아니요.
PMM ? ?
설정 화면 아니요.
SMBIOS
스플래시 화면 예(EPA)[49] (PCX) (BMP, JPG)
TPM 알 수 없음 알 수 없음 알 수 없음 일부
USB 부팅
USB 허브 ? ? ?
USB 키보드
USB 마우스

IBM은 각 기계 유형에 대한 IBM PC 기술 참조 매뉴얼의 부록에 원래 PC, PC XT, PC AT 및 기타 동시대 PC 모델에 대한 BIOS 전체 목록을 발표했다.BIOS 목록 발행의 효과는 누구나 최종 BIOS가 무엇을 하고 어떻게 하는지 정확히 알 수 있다는 것이다.

1984년 5월에 Phoenix Software Associates는 최초의 ROM-BIOS를 발표했는데, 이 ROM-BIOS는 Compaq가 Portable을 위해 했던 것처럼 OEM들이 IBM PC BIOS를 스스로 역설계하지 않고도 본질적으로 완전히 호환되는 클론을 구축할 수 있게 하여 PC 호환 제품 산업의 성장과 비 IBM 버전의 DOS 판매를 촉진시켰다.[50]그리고 최초의 미국 메가트렌즈(AMI) BIOS가 1986년에 출시되었다.

BIOS에 접목된 새로운 표준은 일반적으로 완전한 공개 문서나 BIOS 목록이 없다.그 결과, BIOS에 비 IBM이 아닌 많은 추가에 관한 세부사항을 핵심 BIOS 서비스에 관한 것만큼 자세히 배우기가 쉽지 않다.

대부분의 PC 마더보드 공급업체는 "독립형 BIOS 공급업체" 또는 IBV로 알려진 상업용 제3자로부터 BIOS "코어" 및 툴킷을 라이센스했다.마더보드 제조업체는 자체 하드웨어에 맞게 이 BIOS를 사용자 정의했다.이러한 이유로, 업데이트된 BIOS는 일반적으로 마더보드 제조업체에서 직접 얻는다.이전의 주요 BIOS 벤더로는 American Megatrends(AMI), Insyde Software, Phoenix Technologies, Byosoft, Award Software, Microid Research 등이 있다.Microid Research and Award Software는 1998년에 Phoenix Technologies에 인수되었다. Phoenix는 이후 이 상의 브랜드 이름을 단계적으로 폐지했다.2007년 피닉스도 인수한 제너럴 소프트웨어는 인텔 프로세서를 기반으로 한 임베디드 시스템용 BIOS를 판매했다.

오픈소스 커뮤니티는 리브레부트, 코어부트, OpenB를 통해 오픈소싱 상대와 함께 독점적인 BIOS와 미래의 포획을 위한 대체품을 개발하기 위한 노력을 증가시켰다.IOS/Open 펌웨어 프로젝트.AMD는 일부 칩셋에 대한 제품 사양을 제공했고 구글은 이 프로젝트를 후원하고 있다.마더보드 제조업체 타이안은 표준 BIOS 옆에 자사의 Opteron 라인의 마더보드와 함께 코어부트를 제공한다.

보안

마이크로코드 패치를 CPU에 업로드하는 데 실패한 후 "Intel CPU uCode Loading 오류"가 표시된 미국 메가트렌즈 BIOS
분리된 BIOS 칩

EEPROM플래시 메모리 칩은 사용자가 쉽게 업데이트할 수 있기 때문에 유리하다. 하드웨어 제조업체는 자사 제품을 업그레이드하고 호환성을 향상시키며 버그를 제거하기 위해 BIOS 업데이트를 발행하는 것이 관례다.그러나 이러한 이점은 부적절하게 실행되거나 중단된 BIOS 업데이트가 컴퓨터나 장치를 사용할 수 없게 만들 수 있는 위험을 가지고 있었다.이러한 상황을 피하기 위해 보다 최신 BIOS는 "부팅 블록"을 사용하며, BIOS는 먼저 실행되고 별도로 업데이트되어야 한다.이 코드는 제어권을 전송하기 전에 나머지 BIOS가 (해시 체크섬이나 다른 방법을 사용하여) 그대로 있는지 확인한다.부팅 블록이 기본 BIOS의 손상을 감지할 경우 일반적으로 사용자에게 이동식 미디어(플로피, CD 또는 USB 플래시 드라이브)에서 부팅하여 복구 프로세스를 시작해야 BIOS 플래시를 다시 깜박일 수 있음을 경고한다.일부 마더보드에는 백업 BIOS(DualB라고도 함)가 있음BIOS 손상으로부터 복구하기 위한 IOS 보드).

알려진 BIOS 공격 바이러스는 적어도 5개가 있으며, 그 중 2개는 시연용이었다.야생에서 발견된 첫 번째 것은 중국 사용자를 대상으로 한 메브로미였다.

첫 번째 BIOS 바이러스는 BIOS 칩을 지우는 대신 감염된 BIOS 메닝염이었다.바이오스 메닝염은 CIH와 같은 바이러스에 비해 상대적으로 무해하다.

두 번째 BIOS 바이러스는 호환 가능한 칩셋에서 플래시 ROM BIOS 콘텐츠를 지울 수 있는 '체르노빌 바이러스'로도 알려진 CIH였다.CIH는 1998년 중반에 등장하여 1999년 4월에 활동하였다.종종 감염된 컴퓨터는 더 이상 부팅할 수 없었고, 사람들은 마더보드에서 플래시 ROM IC를 제거하고 재프로그래밍해야 했다.CIH는 당시 널리 보급되어 있던 인텔 i430TX 마더보드 칩셋을 대상으로 했으며, 당시 널리 보급되어 있던 윈도 9x 운영체제가 모든 프로그램에 대한 하드웨어 직접 접근을 허용했다는 점을 이용했다.

최신 시스템은 Intel i430과 호환되지 않는 다양한 칩셋이 사용되기 때문에 CIH에 취약하지 않음TX 칩셋 및 기타 플래시 ROM IC 유형.또한 실수로 BIOS를 덮어쓰거나 충돌 시 백업 BIOS를 사용할 수 있는 이중 및 4중 BIOS 장착 시스템으로부터 보호되는 부팅 블록의 형태로 BIOS를 다시 쓰는 것을 방지한다.또한 FreeBSD, Linux, MacOS, Windows 2000, Windows XP 이상과 같은 Windows NT 기반 Windows OS와 같은 모든 현대적인 운영 체제는 사용자 모드 프로그램이 직접 하드웨어에 접속하는 것을 허용하지 않는다.[citation needed]

그 결과, 2008년 현재 CIH는 근본적으로 무해한 상태가 되었고, 최악의 경우 실행 가능한 파일을 감염시키고 바이러스 백신 소프트웨어를 트리거하여 성가신 일을 야기시켰다.그러나 Windows Vista/7의 UAC가 없는 대부분의 Windows 홈 사용자는 관리 권한을 가지고 모든 애플리케이션을 실행하므로, 현대의 CIH와 유사한 바이러스는 원칙적으로 먼저 공격을 사용하지 않고도 하드웨어에 액세스할 수 있다.[51][citation needed]운영 체제 OpenBSD는 모든 사용자가 이러한 액세스 권한을 갖지 못하도록 하고 리눅스 커널용 grsecurity 패치 또한 기본적으로 이러한 직접 하드웨어 액세스를 방지하는데, 공격자가 커널 수준의 훨씬 더 어려운 공격이나 기계의 재부팅이 필요한 차이점이다.[citation needed]

세 번째 BIOS 바이러스는 영국의 차세대 보안 소프트웨어(Next Generation Security Software)의 주요 보안 컨설턴트인 John Heasman이 제시한 기법이다.2006년 블랙햇 보안 콘퍼런스에서 플래시 메모리에 저장된 정상적인 ACPI 기능을 대체하는 악성 절차를 이용해 특권을 높이고 물리적 메모리를 읽는 방법을 보여줬다.[52]

네 번째 BIOS 바이러스는 "영구적인 BIOS 감염"이라고 불리는 기술이었다.2009년 밴쿠버에서 열린 칸세크웨스트 보안 콘퍼런스와 싱가포르에서 열린 시스캔 보안 콘퍼런스에 등장했다.코어 시큐리티 테크놀로지스의 연구원 Anival Sacco[53] Alfredo Ortega는 운영체제가 부팅되기도 전에 시작 시 PC를 거의 완벽하게 제어할 수 있도록 BIOS의 감압 루틴에 악성 코드를 삽입하는 방법을 시연했다.개념 증명(proof-of-concept)은 BIOS 구현의 결함을 이용하지 않고 일반적인 BIOS 깜박임 절차만 포함한다.따라서 기계에 대한 물리적 접근이나 사용자가 루트여야 한다.이러한 요구사항에도 불구하고 오르테가는 자신과 사코 사코의 발견에 대해 "완전히 작동하는 루트킷을 떨어뜨리기 위해 드라이버를 패치할 수 있다"고 강조했다.바이러스 백신까지 제거하거나 무력화할 수 있는 작은 코드까지 갖고 있다"[54]고 말했다.

Mebromi는 AwardB가 있는 컴퓨터를 대상으로 하는 트로이 목마다.IOS, Microsoft Windows 및 두 중국 회사의 바이러스 백신 소프트웨어:라이징 안티바이러스 및 장민 KV 안티바이러스.[55][56][57]Mebromi는 마스터 부트 레코드를 감염시키는 루트킷을 설치한다.

미국 국가안보국(NSA)의 데보라 플런켓 정보보호국장은 2013년 12월 미 60분과의 인터뷰에서 NSA가 미국의 금융시스템을 겨냥해 외국 국가의 바이오스 공격 가능성을 적발해 무산시켰다고 주장했다.[58]이 프로그램은 익명의 소식통을 인용, 중국의 음모라고 주장했다.[58]그러나 가디언,[59] 애틀랜틱,[60] 와이어드[61], 레지스터[62] 후속 기사는 NSA의 주장을 반박했다.

신형 인텔 플랫폼에는 인텔 부팅가드(IBG) 기술이 적용됐으며, 이 기술은 시동 시 BIOS 디지털 서명을 확인하고, IBG 공개 키가 PCH에 융합돼 있다.최종 사용자는 이 기능을 비활성화할 수 없다.

대안 및 후임자

UEFI(Unified Extensible Firmware Interface)는 많은 새로운 시스템에서 BIOS를 보완한다.처음에 Intel Itanium 아키텍처를 위해 작성된 UEFI는 현재 x86ARM 아키텍처 플랫폼에 사용할 수 있으며, 사양 개발은 업계 특수 이익 그룹Unified EFI Forum에 의해 주도된다.GPT,[63] Linux 커널 2.6.1 이상, Intel 기반 MacMacOS를 지원하는 Microsoft Windows 버전에서만 EFI 부팅이 지원되었다.[64]2014년 현재, 새로운 PC 하드웨어는 주로 UEFI 펌웨어와 함께 출하된다.루트킷 세이프가드의 아키텍처는 또한 시스템이 사용자 자신의 소프트웨어 변경을 실행하는 것을 막을 수 있어 UEFI는 오픈 하드웨어 커뮤니티에서 레거시 BIOS 교체로 논란이 되고 있다.또한 Windows 11에서는 UEFI를 부팅해야 한다.[65]

x86 세계에서 "레거시 BIOS"의 기능에 대한 다른 대안으로는 corebootlibreboot가 있다.

일부 서버와 워크스테이션은 Forth 프로그래밍 언어에 기반한 플랫폼 독립형 Open Firmware(IEEE-1275)를 사용하며, Sun의 SPARC 컴퓨터, IBM의 RS/6000 라인 및 기타 Power에 포함되어 있다.x86 기반 OLPC XO-1과 함께 CHRP 마더보드와 같은 PC 시스템.

애플은 적어도 2015년 현재 맥북 프로 컴퓨터에서 기존 BIOS 지원을 없앴다.따라서 BIOS 유틸리티는 레거시 옵션을 더 이상 지원하지 않으며 "이 시스템에서 지원되지 않는 레거시 모드"를 인쇄한다.2017년 인텔은 레거시 BIOS 지원을 2020년까지 없애겠다고 발표했다.2019년 이후 새로운 인텔 플랫폼 OEM PC는 레거시 옵션을 더 이상 지원하지 않는다.

참고 항목

메모들

  1. ^ 간격띄우기 시+0x1FE부츠 부문에서는0x55 0xAA그것은0x55상쇄하여+0x1FE그리고0xAA상쇄하여+0x1FFlittle-endian 표현은 IBM PC와 호환되는 기계의 맥락에서 가정되어야 하기 때문에, 이것은 16비트 단어로 쓰여질 수 있다.0xAA55x86 프로세서용 프로그램에서(스왑된 주문에 주목) 반면, 그것은 다음과 같이 기록되어야 한다.0x55AA엔디안 표현을 사용하는 다른 CPU 아키텍처용 프로그램에서.이는 책과 심지어 원본 마이크로소프트 참조 문서에서도 수없이 뒤섞여 왔기 때문에, 이 기사는 오역이 발생하지 않도록 오프셋 기반의 온디스크 표현을 사용한다.

참조

  1. ^ "Ref — System BIOS". PCGuide. Archived from the original on 2014-12-21. Retrieved 2014-12-06.
  2. ^ "Unified Extensible Firmware Interface". Intel. Intel.
  3. ^ "UEFI". OSDev.org.
  4. ^ a b c Kildall, Gary Arlen (June 1975), CP/M 1.1 or 1.2 BIOS and BDOS for Lawrence Livermore Laboratories
  5. ^ a b c Kildall, Gary Arlen (January 1980). "The History of CP/M - The Evolution of an Industry: One Person's Viewpoint" (Vol. 5, No. 1, Number 41 ed.). Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. pp. 6–7. Archived from the original on 2016-11-24. Retrieved 2013-06-03.
  6. ^ a b "Booting · Linux Inside". 0xax.gitbooks.io. Retrieved 2020-11-10.
  7. ^ a b Bradley, Tony. "R.I.P. BIOS: A UEFI Primer". PCWorld. Archived from the original on 2014-01-27. Retrieved 2014-01-27.
  8. ^ Swaine, Michael (1997-04-01). "Gary Kildall and Collegial Entrepreneurship". Dr. Dobb's Journal. Archived from the original on 2007-01-24. Retrieved 2006-11-20.
  9. ^ a b "IEEE Milestone in Electrical Engineering and Computing - CP/M - Microcomputer Operating System, 1974" (PDF). Computer History Museum. 2014-04-25. Archived (PDF) from the original on 2019-04-03. Retrieved 2019-04-03.
  10. ^ Shustek, Len (2016-08-02). "In His Own Words: Gary Kildall". Remarkable People. Computer History Museum. Archived from the original on 2016-12-17.
  11. ^ Killian, A. Joseph "Joe" (2001). "Gary Kildall's CP/M: Some early CP/M history - 1976-1977". Thomas "Todd" Fischer, IMSAI. Archived from the original on 2012-12-29. Retrieved 2013-06-03.
  12. ^ Fraley, Bob; Spicer, Dag (2007-01-26). "Oral History of Joseph Killian, Interviewed by: Bob Fraley, Edited by: Dag Spicer, Recorded: January 26, 2007, Mountain View, California, CHM Reference number: X3879.2007" (PDF). Computer History Museum. Archived from the original (PDF) on 2014-07-14. Retrieved 2013-06-03.
  13. ^ Glass, Brett (1989). "The IBM PC BIOS". Byte: 303–310. Retrieved 2021-12-31.
  14. ^ "HP BIOS Configuration Utility". Hewlett-Packard. 2013. Archived from the original on 2015-01-12. Retrieved 2015-01-12.
  15. ^ 웨이백 머신에서 Intel 64 및 IA-32 Architects 소프트웨어 개발자 설명서 2012-01-26을 참조하십시오(제3권, 섹션 9.1.2).
  16. ^ 5-27페이지 IBM Personal Computer Hardware Reference Library Technical Reference, 1984, 간행물 번호 6361459
  17. ^ "IBM 5162 PC XT286 TechRef 68X2537 Technical Reference manual" (PDF). August 1986. p. 35 (System BIOS A-5). Archived (PDF) from the original on 2014-12-11. Retrieved 2014-12-11.
  18. ^ StuffWorks 방법: BIOS웨이백 머신에 2008-02-07을 아카이브한 내용
  19. ^ Stiller, Andreas; Paul, Matthias R. (1996-05-12). "Prozessorgeflüster". c't – magazin für computertechnik. Trends & News / aktuell - Prozessoren (in German). Vol. 1996, no. 6. Verlag Heinz Heise GmbH & Co KG. p. 20. ISSN 0724-8679. Archived from the original on 2017-08-28. Retrieved 2017-08-28.
  20. ^ Mueller, Scott (2001-06-08). Processor Update Feature Microprocessor Types and Specifications. InformIT. Archived from the original on 2014-04-16. Retrieved 2014-04-15.
  21. ^ "Linux* Processor Microcode Data File". Download Center. Downloadcenter.intel.com. 2009-09-23. Archived from the original on 2014-04-16. Retrieved 2014-04-15.
  22. ^ Scott Mueller, PC 업그레이드수리, Que Publishing, 2003 ISBN 0-7897-2974-1, 페이지 109-110
  23. ^ "KB4100347: Intel microcode updates". support.microsoft.com. Retrieved 2020-09-20.
  24. ^ "Microcode - Debian Wiki". wiki.debian.org. Retrieved 2020-09-19.
  25. ^ a b "How SLP and SLIC Works". guytechie.com. 2010-02-25. Archived from the original on 2015-02-03. Retrieved 2015-02-03.
  26. ^ "Create and add an OEM ACPI SLIC table module to a congatec BIOS" (PDF). congatec.com. 2011-06-16. Archived (PDF) from the original on 2014-08-02. Retrieved 2015-02-03.
  27. ^ Whitson Gordon. "A Beginner's Introduction to Overclocking Your Intel Processor". Lifehacker. Gawker Media. Archived from the original on 2014-12-07. Retrieved 2014-12-06.
  28. ^ 스마트 컴퓨팅 기사 - BIOS란 무엇인가?Wayback Machine에 보관된 2012-03-10 - Computing Basics 1994년 7월 • Vol.5 문제 7
  29. ^ "What is ACPI (Advanced Configuration and Power Interface)? - Definition from WhatIs.com". SearchWindowsServer. Retrieved 2020-09-18.
  30. ^ "Changing hardware abstraction layer in Windows 2000 / XP – Smallvoid.com". Retrieved 2020-09-18.
  31. ^ "What is ACPI?". www.spo-comm.de. Retrieved 2020-09-18.
  32. ^ lorihollasch. "Support for headless systems - Windows drivers". docs.microsoft.com. Retrieved 2020-12-05.
  33. ^ "Memory Map (x86) - OSDev Wiki". wiki.osdev.org. Retrieved 2020-12-11.
  34. ^ Torres, Gabriel (2004-11-24). "Introduction and Lithium Battery". Replacing the Motherboard Battery. hardwaresecrets.com. Archived from the original on 2013-12-24. Retrieved 2013-06-20.
  35. ^ Constantine A. Murenin (2010-05-21). "11.1. Interfacing from the BIOS". OpenBSD Hardware Sensors – Environmental Monitoring and Fan Control (MMath thesis). University of Waterloo: UWSpace. hdl:10012/5234. Document ID: ab71498b6b1a60ff817b29d56997a418.
  36. ^ Constantine A. Murenin (2007-04-17). "2. Hardware review". Generalised Interfacing with Microprocessor System Hardware Monitors. Proceedings of 2007 IEEE International Conference on Networking, Sensing and Control, 15–17 April 2007. London, United Kingdom: IEEE. pp. 901–906. doi:10.1109/ICNSC.2007.372901. ISBN 978-1-4244-1076-7. IEEE ICNSC 2007, pp. 901—906.
  37. ^ "aibs – ASUSTeK AI Booster ACPI ATK0110 voltage, temperature and fan sensor". OpenBSD, DragonFly BSD, NetBSD and FreeBSD. 2010.
  38. ^ "acpi_thermal(4)". www.freebsd.org. Retrieved 2021-02-24.
  39. ^ "Wayback MachineRAM & ROM 보관 2012-04-06" 스마트 컴퓨팅.1997년 6월.제8권, 제6권.
  40. ^ "Wayback Machine에서 2012-04-06년 아카이빙된 플러그 앤 플레이용 플래시 BIOS 업그레이드" 스마트 컴퓨팅.1996년 3월.제7권, 제3권.
  41. ^ "Wayback Machine에서 2011-07-16 BIOS 보관 상태를 확인할 시간." 스마트 컴퓨팅.1999년 4월.제7권, 제4권.
  42. ^ "Archived copy". Archived from the original on 2021-08-18. Retrieved 2021-04-01.{{cite web}}: CS1 maint: 타이틀로 보관된 사본(링크)
  43. ^ "SplashTop's Instant-On Linux Desktop Geek.com". Archived from the original on 2008-09-07.
  44. ^ Posted by Alex Watson, possibly repost from original content on custompc.com [unclear]. "The life and times of the modern motherboard". 2007-11-27. Archived from the original on 2012-07-24. Retrieved 2013-02-02.
  45. ^ David Hilber Jr. (August 2009). "Considerations for Designing an Embedded Intel Architecture System with System Memory Down" (PDF). Intel. Archived (PDF) from the original on 2012-10-18. Retrieved 2013-02-02.
  46. ^ "Types of BIOS". rompacks.com. Retrieved 2021-09-20.
  47. ^ "ME - flashrom". www.flashrom.org. Retrieved 2020-09-19.
  48. ^ Stiller, Andreas (2001). "Prozessor-Patches". c't (in German). Heise (5): 240. Archived from the original on 2015-11-22. Retrieved 2015-11-21.
  49. ^ "Award BIOS logo". 2015-06-15. Archived from the original on 2015-12-21. Retrieved 2015-12-06.
  50. ^ 차세대 IBM BIOS 복제를 간절히 기다리는 피닉스1987년 3월 9일 InfoWorld웨이백머신보관된 2014-01-22.
  51. ^ 2009년 3월 27일, 새로운 BIOS Virus Enviruss HDD Washes.마커스 야마.톰스 하드웨어 US
  52. ^ "Black Hat 2006 Multimedia - Presentation, Audio and Video Archives". www.blackhat.com. Retrieved 2019-04-21.
  53. ^ Sacco, Anibal; Alfredo Ortéga (2009-03-23). "Persistent BIOS Infection". Exploiting Stuff. Archived from the original on 2009-08-04. Retrieved 2010-02-06.
  54. ^ Fisher, Dennis. "Researchers unveil persistent BIOS attack methods". Threat Post. Archived from the original on 2010-01-30. Retrieved 2010-02-06.
  55. ^ Giuliani, Marco (2011-09-13). "Mebromi: the first BIOS rootkit in the wild". blog. Archived from the original on 2011-09-23. Retrieved 2011-09-19.
  56. ^ "360发布"BMW病毒"技术分析报告". blog. Archived from the original on 2011-09-25. Retrieved 2011-09-19.
  57. ^ Yuan, Liang. "Trojan.Mebromi". Threat Response. Archived from the original on 2011-09-23. Retrieved 2011-09-19.
  58. ^ a b "How did 60 Minutes get cameras into a spy agency?". CBS News. Archived from the original on 2014-04-22. Retrieved 2014-04-15.
  59. ^ Spencer Ackerman in Washington (2013-12-16). "NSA goes on 60 Minutes: the definitive facts behind CBS's flawed report". theguardian.com. Archived from the original on 2014-01-25. Retrieved 2014-01-27.
  60. ^ Friedersdorf, Conor (2013-12-16). "A Question for 60 Minutes: Why Would China Want to Destroy the Global Economy?". The Atlantic. Retrieved 2019-03-26.
  61. ^ Poulsen, Kevin (2013-12-16). "60 Minutes Puff Piece Claims NSA Saved U.S. From Cyberterrorism". Wired. ISSN 1059-1028. Retrieved 2019-03-26 – via www.wired.com.
  62. ^ tweet_btn(), Simon Sharwood 16 December 2013 at 03:13. "NSA alleges 'BIOS plot to destroy PCs'". www.theregister.co.uk. Retrieved 2019-03-26.
  63. ^ "Windows and GPT FAQ". microsoft.com. Microsoft. Archived from the original on 2011-02-19. Retrieved 2014-12-06.
  64. ^ "Extensible Firmware Interface (EFI) and Unified EFI (UEFI)". Intel. Archived from the original on 2010-01-05. Retrieved 2014-12-06.
  65. ^ "Windows 11 Specs and System Requirements Microsoft". Microsoft. Retrieved 2021-10-14.

추가 읽기

외부 링크