{{위키데이터 속성 추적}}
{{다른 뜻 넘어옴|기동}}
[[파일:POST of ASUS P5KPL on SyncMaster 740N 20081006.jpg|섬네일|부팅 중 바이오스 [[시동 자체 시험|포스트]] 과정의 첫 단계]]

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

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

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

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

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

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

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

부트로더를 위한 [[슈도코드|슈도]]-[[어셈블리어|어셈블리 코드]]는 다음의 8 가지 안내를 따라야 한다:
<syntaxhighlight lang="text" line>
  P 레지스터를 8로 설정
  페이퍼 테이프 리더 준비 확인
  준비가 되지 않으면 1로 건너 뜀
  페이퍼 테이프 리더에서 누산기로의 바이트를 읽음
  테이프의 끝이면 8로 건너 뜀
  누산기를 P 레지스터 안의 주소에 저장
  P 레지스터 상승
  1로 건너 뜀
</syntaxhighlight>
관련된 예는 1970년대 니콜렛 인스트루먼트 사의 [[미니컴퓨터]]를 위한 로더를 기반으로 한다. 2번째 페이지 로더의 바이트는 페이퍼 형식으로부터 반대 순서로 읽는다.
<syntaxhighlight lang="text" line>
  P 레지스터를 106으로 설정
  페이퍼 테이프 리더 준비 확인
  준비가 되지 않으면 1로 건너 뜀
  페이퍼 테이프 리더에서 누산기로의 바이트를 읽음
  누산기를 P 레지스터 안의 주소에 저장
  P 레지스터 감소
  1로 건너 뜀
</syntaxhighlight>
=== 두 번째 단계의 부트로더 ===
[[NTLDR]], [[LILO|리눅스 로더]], [[GNU GRUB|GRUB]]와 같은 두 번째 단계의 부트 로더는 그 자체로 시스템을 시동시키지는 않지만, 운영 체제를 적절하게 불러들이고 끝내 실행할 수 있는 상황으로 만들어 준다. 시스템은 그 자체를 초기화하며 운영 체제의 동작에 일반적으로 필요한 [[장치 드라이버]]와 다른 프로그램들을 불러들인다. 여러 개의 운영 체제를 선택할 수 있다는 뜻의 [[멀티 부팅]]도 참조하라.

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

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

== 부팅 장치 ==
시동 장치는 운영 체제가 로드되는 장치를 말한다. 현대의 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 호환기종|IBM PC 호환 기종]]의 컴퓨터에서는 오류 메시지가 나타나며 시동 과정을 멈춘다. 바이오스가 시동 가능한 장치를 찾으면 [[시동 섹터]]를 불러들이고 실행한다. 하드 드라이브의 경우, 이를 [[마스터 부트 레코드]]로 일컬으며 운영 체제를 따지지 않는다. MBR 코드는 보통 활성화된 파티션에 대한 [[디스크 파티션|파티션]] 테이블을 검사한다. 파티션 테이블을 찾은 경우, MBR 코드는 파티션의 [[시동 섹터]]를 불러들여 이를 실행한다. 시동 섹터는 운영 체제를 따지기도 하지만 대부분의 운영 체제에서는 시동을 위해 기본적으로 [[커널 (컴퓨팅)|커널]]을 불러들여 실행시킨다. 활성화된 파티션이 없거나 활성화된 파티션의 시동 섹터가 올바르지 않다면, MBR은 두 번째 부트 로더를 불러들이고, 이 두 번째 부트 로더가 파티션을 선택하여, 시동 섹터를 불러들인 다음 운영 체제의 커널을 읽는다.

[[확장 펌웨어 인터페이스]]와 호환되는 펌웨어를 가지고 있는 새로운 시스템은 MBR이나 [[GUID 파티션 테이블|GPT]] 드라이브로 시동할 수 있다. 32비트 윈도우 XP와 비스타와 같은 x86 운영 체제는 호환성을 위해 호환성 지원 모듈 (CSM)을 통해 관리되는 "레거시 바이오스"를 요구할 수 있다. CSM은 바이오스 제조업체가 제공하는 16비트 라이브러리 (CSM16)을 포함하고 있다.<ref>{{웹 인용 |url=http://www.intel.com/technology/framework/ |제목=Intel Platform Innovation Framework for EFI |출판사=[[인텔]] |확인날짜=2008-01-07}}</ref>

== 다른 종류의 부팅 순서 ==
대부분의 [[디지털 신호 처리장치]]는 다음의 시동 모드를 가진다.
* 직렬 방식의 시동(serial mode boot)
* 병렬 방식의 시동(parallel mode boot)
* HPI 시동

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

== 같이 보기 ==
* [[윈도우 NT 시작 프로세스]]
* [[윈도우 비스타 시작 프로세스]] (BCD, 윈도 부트 매니저)
* [[리눅스 시작 프로세스]]
* [[레드부트]] - 임베디드 시스템을 위한 오픈 소스 부트 로더 프로그램
* [[시동 디스크]], [[라이브CD]], [[U3]], [[플래시 드라이브]]
* [[네트워크 부팅]]
* [[멀티 부팅]]
* [[부트스트랩 (컴퓨팅)|부트스트랩]]

== 참조 ==
<references />

== 외부 링크 ==
{{위키공용분류}}
* [https://web.archive.org/web/20070210091856/http://www.osdcom.info/content/view/33/39/ Grub으로 시동] (OSDEV 커뮤니티)

{{운영 체제}}

{{전거 통제}}

[[분류:부팅| ]]
[[분류:운영체제 기술]]
[[분류:시스템 소프트웨어]]
[[분류:바이오스]]