본문으로 이동

부팅

위키백과, 우리 모두의 백과사전.
(부트로더에서 넘어옴)

부팅 중 바이오스 포스트 과정의 첫 단계

부팅(영어: booting) 또는 부팅업(영어: booting up)은 컴퓨터에서 사용자가 운영 체제를 시동할 때 운영 체제를 시작하는 부트스트래핑 과정이다. 시동(始動, 문화어: 기동, 초기적재)이라고도 한다. 시동 순서는 운영 체제가 로드(적재)될 때 컴퓨터가 수행하는 작업들이 모여 있다.

컴퓨터를 켠 후 컴퓨터의 중앙 처리 장치(CPU)에는 주 메모리에 소프트웨어가 없으므로 일부 프로세스는 실행되기 전에 소프트웨어를 메모리에 로드해야 한다. 이는 CPU의 하드웨어나 펌웨어에 의해 수행되거나 컴퓨터 시스템에 있는 별도의 프로세서에 의해 수행될 수 있다.

컴퓨터를 다시 시작하는 것을 재부팅이라고도 하며 이는 "어려울" 수 있다. CPU에 대한 전력이 꺼진 상태에서 켜진 상태 또는 "소프트" 상태로 전환된 후(전원이 차단되지 않음) 일부 시스템에서는 소프트 부팅을 통해 선택적으로 RAM을 0으로 지울 수 있다. 하드 부팅과 소프트 부팅 모두 버튼 누르기와 같은 하드웨어나 소프트웨어 명령을 통해 시작할 수 있다. 작동 가능한 런타임 시스템(일반적으로 운영 체제 및 일부 애플리케이션)이 확보되면 부팅이 완료된다.

컴퓨터를 절전(일시 중단) 상태에서 되돌리는 프로세스에는 부팅이 포함되지 않는다. 그러나 최대 절전 모드에서 복원하는 경우는 마찬가지이다. 최소한 일부 임베디드 시스템은 작동을 시작하는 데 눈에 띄는 부팅 순서가 필요하지 않으며 전원을 켜면 ROM에 저장된 작동 프로그램을 간단히 실행할 수 있다. 모든 컴퓨팅 시스템은 상태 머신이며 재부팅은 의도하지 않은 잠금 상태에서 지정된 0 상태로 돌아가는 유일한 방법일 수 있다.

운영 체제 또는 독립 실행형 유틸리티를 로드하는 것 외에도 부팅 프로세스에서는 운영 체제의 문제를 진단하기 위한 저장소 덤프 프로그램을 로드할 수도 있다.

부트(Boot)는 부트스트랩(Bootstrap) 또는 부트스트랩 로드(Bootstrap Load)의 약어이며 '부트스트랩으로 자신을 끌어올린다'라는 문구에서 파생된다. 사용법은 컴퓨터에서 이미 실행 중인 다른 소프트웨어에 의해 대부분의 소프트웨어가 컴퓨터에 로드되는 경우 초기 소프트웨어를 컴퓨터에 로드하기 위한 일부 메커니즘이 있어야 한다는 요구 사항에 주의를 환기시킨다. 초기 컴퓨터는 이 문제를 해결하기 위해 다양한 임시 방법을 사용하여 작은 프로그램을 메모리에 저장했다. 다양한 유형의 읽기 전용 메모리(ROM)의 발명은 컴퓨터에 지울 수 없는 시작 프로그램을 탑재할 수 있게 함으로써 이러한 역설을 해결했다. ROM 용량의 증가로 더욱 정교한 시작 절차를 구현할 수 있게 되었다.

부트 로더

[편집]

부트로더(boot loader, 문화어: 초기적재프로그램)란 운영 체제가 시동되기 이전에 미리 실행되면서 커널이 올바르게 시동되기 위해 필요한 모든 관련 작업을 마무리하고 최종적으로 운영 체제를 시동시키기 위한 목적을 가진 프로그램을 말한다.

부트로더를 위한 슈도-어셈블리 코드는 다음의 8 가지 안내를 따라야 한다:

  P 레지스터를 8로 설정
  페이퍼 테이프 리더 준비 확인
  준비가 되지 않으면 1로 건너 뜀
  페이퍼 테이프 리더에서 누산기로의 바이트를 읽음
  테이프의 끝이면 8로 건너 뜀
  누산기를 P 레지스터 안의 주소에 저장
  P 레지스터 상승
  1로 건너 뜀

관련된 예는 1970년대 니콜렛 인스트루먼트 사의 미니컴퓨터를 위한 로더를 기반으로 한다. 2번째 페이지 로더의 바이트는 페이퍼 형식으로부터 반대 순서로 읽는다.

  P 레지스터를 106으로 설정
  페이퍼 테이프 리더 준비 확인
  준비가 되지 않으면 1로 건너 뜀
  페이퍼 테이프 리더에서 누산기로의 바이트를 읽음
  누산기를 P 레지스터 안의 주소에 저장
  P 레지스터 감소
  1로 건너 뜀

두 번째 단계의 부트로더

[편집]

NTLDR, 리눅스 로더, GRUB와 같은 두 번째 단계의 부트 로더는 그 자체로 시스템을 시동시키지는 않지만, 운영 체제를 적절하게 불러들이고 끝내 실행할 수 있는 상황으로 만들어 준다. 시스템은 그 자체를 초기화하며 운영 체제의 동작에 일반적으로 필요한 장치 드라이버와 다른 프로그램들을 불러들인다. 여러 개의 운영 체제를 선택할 수 있다는 뜻의 멀티 부팅도 참조하라.

플래시 부트로더

[편집]

자동차 응용에서 특히 잘 쓰이는 임베디드 시스템은 플래시 부트로더에 의지하며, ECU (전자 제어 장치)가 서비스되는지, 생산되는지에 대해 프로그래밍을 한다.

네트워크 부팅

[편집]

대부분의 컴퓨터들은 컴퓨터 네트워크 위에 시동할 수 있다. 이러한 상황에서 운영 체제는 서버의 디스크에 저장이 되고, 그 저장된 것의 특정한 부분이 트리비얼 파일 전송 프로토콜과 같은 단순 프로토콜을 사용하여 클라이언트에 저장된다. 이러한 부분들이 전송된 뒤에, 운영 체제는 시동 과정 절차를 밟게 된다.

부팅 장치

[편집]

시동 장치는 운영 체제가 로드되는 장치를 말한다. 현대의 PC 바이오스는 다양한 장치들의 시동을 지원한다. 이를테면, 로컬 하드 디스크 드라이브 (또는 하드 디스크의 파티션), 플로피, 광학 디스크 드라이브, SCSI 장치, ZIP 드라이브, LS-120, USB 장치(USB-FDD, USB-ZIP, USB-CDROM, USB-HDD, USB 플래시 드라이브)와 PXE를 사용한 네트워크 인터페이스 카드를 시동하는 데에 사용할 수 있다.

보통 바이오스가 시동 순서를 사용자가 구성할 수 있도록 도와 준다. DVD 드라이브를 첫 번째로, 두 번째로 하드 드라이브를 두면, 바이오스는 DVD 드라이브에서 시동할 것이다. 그렇지만 DVD 드라이브에 시동 디스크가 없으면 이를 실패로 인정하고 로컬 하드 드라이브로 시동을 시도하게 된다.

IBM-PC 호환 표준 PC의 부팅 순서

[편집]

시동할 때, 개인용 컴퓨터x86 CPU바이오스의 F000:FFF0 메모리 위치(286, 386SX에서 코드 세크먼트 기반은 실제로 0xFF0000이며 386의 경우 0xFFFF0000이다)에서 명령어를 실행한다. 이 메모리 위치는 시스템 메모리의 끝에 가깝다. 바이오스 시작 프로그램의 위치로 실행을 옮기는 jump 명령어를 포함하고 있다. 이 프로그램은 포스트 과정을 실행하여 컴퓨터의 장치를 검사한다. 그 뒤 바이오스는 시동 가능한 장치를 찾을 때까지 미리 구성된 비휘발성 기억 장치를 거친다. 실제 IBM 호환 PC에서 이러한 장치를 찾지 못한 경우 제어권은 IBM 카세트 베이직으로 전달된다. 다른 IBM PC 호환 기종의 컴퓨터에서는 오류 메시지가 나타나며 시동 과정을 멈춘다. 바이오스가 시동 가능한 장치를 찾으면 시동 섹터를 불러들이고 실행한다. 하드 드라이브의 경우, 이를 마스터 부트 레코드로 일컬으며 운영 체제를 따지지 않는다. MBR 코드는 보통 활성화된 파티션에 대한 파티션 테이블을 검사한다. 파티션 테이블을 찾은 경우, MBR 코드는 파티션의 시동 섹터를 불러들여 이를 실행한다. 시동 섹터는 운영 체제를 따지기도 하지만 대부분의 운영 체제에서는 시동을 위해 기본적으로 커널을 불러들여 실행시킨다. 활성화된 파티션이 없거나 활성화된 파티션의 시동 섹터가 올바르지 않다면, MBR은 두 번째 부트 로더를 불러들이고, 이 두 번째 부트 로더가 파티션을 선택하여, 시동 섹터를 불러들인 다음 운영 체제의 커널을 읽는다.

확장 펌웨어 인터페이스와 호환되는 펌웨어를 가지고 있는 새로운 시스템은 MBR이나 GPT 드라이브로 시동할 수 있다. 32비트 윈도우 XP와 비스타와 같은 x86 운영 체제는 호환성을 위해 호환성 지원 모듈 (CSM)을 통해 관리되는 "레거시 바이오스"를 요구할 수 있다. CSM은 바이오스 제조업체가 제공하는 16비트 라이브러리 (CSM16)을 포함하고 있다.[1]

다른 종류의 부팅 순서

[편집]

대부분의 디지털 신호 처리장치는 다음의 시동 모드를 가진다.

  • 직렬 방식의 시동(serial mode boot)
  • 병렬 방식의 시동(parallel mode boot)
  • HPI 시동

리부팅

[편집]
  • 하드 리부팅(콜드 리부팅, 콜드 부팅이라고도 함): 컴퓨터의 전원이 켜져 있는 동안, 리셋(reset) 단추를 눌러서 컴퓨터를 껐다 켜는 것을 말한다.
  • 소프트 리부팅(웜 리부팅, 웜 부팅이라고도 함, 문화어: 부분재시동): 전원 단추를 누르지 않고 다시 시동하는 것을 말한다. 이전에 IBM PC도스 운영 체제에서는 Control-Alt-Delete 키를 사용하여 컴퓨터를 다시 시동하기도 했다.
  • 랜덤 리부팅: 이 용어는 비기술적 용어로, 소프트웨어나 하드웨어의 문제가 있을 때 일어난다.
  • 오류: 마이크로소프트 윈도우에서 오류가 일어나면 블루스크린이 떠서 실패 오류가 있으면 다시 시동한다.

같이 보기

[편집]

참조

[편집]
  1. “Intel Platform Innovation Framework for EFI”. 인텔. 2008년 1월 7일에 확인함. 

외부 링크

[편집]