맨위로가기

부팅

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

부팅은 컴퓨터 시스템이 시작되는 과정을 의미한다. 초기 컴퓨터는 부팅을 위해 스위치 조작이나 펀치 카드, 테이프 드라이브 등을 사용했다. 이후 ROM에 부트 프로그램을 내장하여 전원 투입 후 자동으로 실행되도록 발전했다. 현대 컴퓨터는 BIOS 또는 UEFI 펌웨어를 통해 부팅 장치를 선택하고, 부트로더를 실행하여 운영체제를 로드한다. 부팅 과정은 보안 조치로 강화되었으며, 오류 발생 시 부트 루프에 빠질 수 있다.

더 읽어볼만한 페이지

  • 부팅 - 마스터 부트 레코드
    마스터 부트 레코드(MBR)는 저장 장치의 파티션 정보를 담은 512바이트 영역으로, 파티션 테이블, 부트스트랩 코드 등으로 구성되어 BIOS 펌웨어가 실행하여 운영체제 부팅을 시작하지만, 2TiB의 디스크 크기 제한으로 GPT 파티션 테이블로 대체되고 있다.
  • 부팅 - 부팅 디스크
    부팅 디스크는 운영 체제 설치, 데이터 복구 등을 위해 사용되는 보조 기억 장치이며, BIOS 설정에 따라 플로피 디스크, CD-ROM, USB 메모리 등 다양한 매체로 부팅하며, 운영 체제에 따라 필요한 파일이 다르다.
  • 시스템 소프트웨어 - 유틸리티 소프트웨어
    유틸리티 소프트웨어는 컴퓨터의 운영 체제, 하드웨어, 응용 소프트웨어를 관리하고 성능을 향상시키거나 특정 작업을 수행하는 프로그램으로, 시스템 관리, 파일 관리, 데이터 복구, 보안 등의 기능을 제공하며 백업 소프트웨어, 바이러스 백신 등이 대표적이다.
  • 시스템 소프트웨어 - 가상 사설 서버
    가상 사설 서버(VPS)는 공유 웹 호스팅과 전용 호스팅의 중간 단계 서비스로, 가상화 기술을 기반으로 슈퍼유저 수준의 접근 권한, 높은 운용 자유도와 향상된 보안성을 제공하지만, 환경 유지 관리 필요성, 상대적으로 높은 비용, 회선 공유 문제 등의 단점도 가진다.
  • 바이오스 - 아메리칸 메가트렌즈
    아메리칸 메가트렌즈(AMI)는 1985년에 설립된 회사로, BIOS 펌웨어, 서버용 마더보드, 스토리지 컨트롤러 등을 공급하며, 현재는 AMIBIOS, Aptio, AMIDiag 등 다양한 제품을 제공한다.
  • 바이오스 - 부트 섹터
    부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다.
부팅
지도 정보
기본 정보
유형프로세스
설명컴퓨터를 켜는 과정
단계
주요 단계전원 켜기
BIOS 또는 UEFI 실행
부트 로더 로드
운영 체제 로드
관련 용어
관련 용어콜드 부트
웜 부트
리부트
재시작
시스템 종료
절전 모드
최대 절전 모드
추가 정보
추가 정보운영 체제 및 컴퓨터 아키텍처에 따라 부팅 과정이 다를 수 있음

2. 역사

컴퓨터의 전원을 켜거나 리셋한 후 운영체제를 메모리에 불러와 실행 준비를 마치는 과정을 부팅이라고 하며, 이는 '부트스트랩 로딩'(bootstrap loadingeng)에서 유래한 용어이다. 스스로의 힘으로 무언가를 시작한다는 비유적인 의미처럼, 컴퓨터는 초기의 간단한 프로그램을 통해 점차 복잡한 운영체제 시스템을 불러온다.

부트스트래핑의 개념은 컴퓨터의 역사 초기부터 존재했다. 초창기 컴퓨터인 ENIAC과 같이 프로그램이 하드웨어 배선으로 구현된 경우는 현대적인 의미의 부팅이 필요 없었지만, 프로그램을 메모리에 저장하는 폰 노이만 구조 컴퓨터가 등장하면서 부팅의 필요성이 대두되었다. EDSAC과 같은 초기 컴퓨터는 로터리 스위치나 천공 테이프를 이용해 '이니셜 오더'(initial orderseng)라는 매우 기본적인 로더 프로그램을 메모리에 올려 실행하는 방식을 사용했다.[7][8] 이 초기 로더가 더 복잡한 프로그램을 불러오는 역할을 했다.

최초의 상업용 컴퓨터 시대에는 부팅 과정을 단순화하려는 노력이 이루어졌다. UNIVAC I이나 IBM 701 같은 컴퓨터는 버튼 하나로 천공 카드, 자기 테이프, 자기 드럼 등에서 부트스트랩 프로그램을 로드하는 기능을 제공했다.[9] IBM은 메인프레임 시스템에서 이 과정을 초기 프로그램 로드(Initial Program Load|초기 프로그램 로드eng, '''IPL''')라고 불렀으며, 이는 IBM System/360 이후 표준 용어로 자리 잡았다.[10][23]

미니컴퓨터 시대에는 비용 절감을 위해 전면 패널의 스위치를 조작하여 부트 로더 명령어를 직접 메모리에 입력하는 방식이 널리 사용되었다. PDP-8이나 데이터 제너럴 노바 등이 대표적이다. 초기 미니컴퓨터는 전원이 꺼져도 내용이 지워지지 않는 자기 코어 메모리를 사용했으나, 이후 집적 회로 기반의 읽기 전용 메모리(ROM) 기술이 발전하면서 부트 로더를 ROM에 저장하는 것이 가능해졌다. DEC는 PDP-11용으로 다이오드 매트릭스 ROM 카드를 제공하기도 했다.[27][28]

마이크로프로세서마이크로컴퓨터 시대가 열리면서 ROM 기반 펌웨어가 부팅 과정의 핵심적인 역할을 담당하게 되었다. 초기 마이크로컴퓨터인 알테어 8800 등은 여전히 전면 패널 스위치를 사용했지만[33][34], 애플 I애플 II 같은 개인용 컴퓨터는 PROM이나 ROM에 부트 로더를 내장하여 사용자 편의성을 크게 높였다.[109] IBM PC와 그 호환 기종에서는 BIOS라는 펌웨어가 부팅 과정을 표준화했다. BIOS는 하드웨어 초기화 후, 지정된 부팅 장치의 마스터 부트 레코드(MBR)를 읽어들여 운영체제 로딩을 시작하는 방식을 오랫동안 사용했다.

이후 컴퓨터 기술이 발전하면서 UEFI가 등장하여 기존 BIOS의 MBR 방식 대신, 저장 장치의 특정 파티션에서 직접 부트 로더 파일을 로드하는 방식으로 발전했다. 임베디드 시스템에서는 빠른 부팅 속도가 중요하기 때문에, 운영체제와 부트 로더를 ROM이나 플래시 메모리에 함께 저장하여 전원을 켜면 즉시 시스템이 동작하도록 설계하는 경우가 많다.

2. 1. 초기 컴퓨터

ENIAC을 프로그래밍하는 스위치와 케이블 (1946)


1940년대와 1950년대의 초기 컴퓨터들은 현대의 컴퓨터와는 상당히 달랐다. 하나의 프로그램을 만드는데 몇 주가 걸릴 수도 있었고, 이렇게 만든 프로그램을 컴퓨터에 불러오는(로딩하는) 것 자체가 중요한 과제 중 하나였다.

최초의 전자식 컴퓨터 중 하나인 ENIAC은 현재처럼 프로그램을 메모리에 저장하는 방식이 아니었다. 대신, 해결하려는 문제에 맞춰 수많은 전선과 스위치를 직접 연결하고 설정하는 방식으로 프로그래밍했다. 따라서 전원을 켜면 바로 계산 준비가 완료되는 방식이었기에, 오늘날의 '부팅'이라는 개념은 적용되지 않았다.

폰 노이만 구조를 채택하여 실용적으로 작동한 초기 컴퓨터 중 하나인 EDSAC(1949년 가동)은 다른 방식을 사용했다. EDSAC에는 '이니셜 오더'(initial orders영어)라고 불리는 매우 기본적인 프로그램이 ROM의 일종인 로터리 스위치에 저장되어 있었다. 시작 버튼을 누르면 이 프로그램이 하드웨어적으로 주 기억 장치에 복사되었다. 이니셜 오더는 천공 테이프 판독기에서 더 복잡한 프로그램(일종의 어셈블러)을 읽어들여 메모리에 로드하는 역할을 했다.[7][8] 이 방식은 이후 다른 컴퓨터들의 초기 프로그램 로딩 방식에도 영향을 주었다.

EDSAC 이후 여러 컴퓨터에서 다양한 방식으로 프로그램을 로드하는 기술이 개발되었다. 그중 하나가 '부트스트랩' 방식으로, ILLIAC I 등에서 사용되었다.[94][95] 1950년대 IBM 701[96] 이후로는 특정 부팅 절차를 통해 프로그램이나 운영체제를 주기억 장치에 로드하는 것이 일반화되었다. IBM메인프레임에서는 이를 "Initial Program Load"(IPL)라고 불렀다. 'Load Card', 'Load Tape' 같은 버튼을 누르면, 하드웨어가 해당 장치에서 부트 프로그램을 읽어와 실행하고, 이 부트 프로그램이 다시 더 큰 프로그램을 불러오는 방식이었다.[97][98] '부트'라는 용어는 1958년부터 이런 의미로 사용되기 시작했다.[99]

초기 컴퓨터들은 부팅을 위해 다양한 물리적 방법을 사용했다.

  • 토글 스위치: DECPDP-8 같은 미니컴퓨터는 전면 패널의 스위치를 조작하여 짧은 부트 로더 프로그램을 직접 메모리에 입력했다. 초기 미니컴퓨터는 전원을 꺼도 내용이 지워지지 않는 자기 코어 메모리를 사용했기 때문에 부트 로더가 계속 남아있을 수 있었지만, 프로그램 오류로 메모리 내용이 전부 지워지는 경우도 있었다. PDP-11도 유사한 방식을 사용했지만, 나중에는 부트 프로그램을 저장한 ROM을 옵션으로 제공하기도 했다.[101][102] IBM 650, 초기 PDP-5, Altair 8800 같은 초기 마이크로컴퓨터들도 스위치를 사용했다.
  • 펀치 카드/종이 테이프: IBM 701은 'load' 버튼으로 펀치 카드, 자기 테이프, 자기 드럼 등에서 첫 36비트 워드를 읽어들여 실행했고, 이 명령이 추가 프로그램을 로드했다.[103] IBM 1401은 펀치 카드 리더에서 첫 카드를 읽어 메모리에 로드하고 실행하면, 그 프로그램이 다음 카드를 읽어오는 방식으로 프로그램을 단계적으로 구성했다. PDP-1처럼 하드웨어 로더가 내장되어 버튼만 누르면 종이 테이프에서 부트 로더를 읽어오는 경우도 있었다.
  • 특수 패널: CDC 6600(1964)에는 'dead start' 패널의 스위치로 초기 명령어를 입력하여 주변 프로세서를 통해 시스템을 시작했다.


GE 645(1965)에는 "BOOT" 버튼이 있었고,[104] Multics(1967)와 UNIX(1971)에서도 부트 관련 명령이나 개념이 등장했다.[105][106][107] 1975년에는 이탈리아 CSELT의 연구원 알베르토 치아라멜라가 버튼 하나로 전화 교환기 컴퓨터를 부팅하는 장치 특허를 취득하기도 했다.[108]

초기 컴퓨터에서 이렇게 복잡한 부팅 절차가 필요했던 이유는 다음과 같다.

  • 메모리 공간이 매우 작고 비쌌기 때문에, 부트 프로그램보다는 실제 작업에 사용할 공간을 최대한 확보해야 했다.
  • ROM과 같은 영구 저장 장치가 특수하거나 용량이 작아, 부트 프로그램을 저장하기 어려웠다.


하지만 집적 회로 기술 발달로 마스크 ROM, PROM, EPROM, 플래시 메모리 등 다양한 ROM이 등장하면서 상황이 바뀌었다. 부트 프로그램을 ROM에 펌웨어 형태로 내장하는 것이 가능해졌고, 전원을 켜거나 리셋하면 프로세서가 자동으로 ROM에 저장된 주소부터 프로그램을 실행하게 되었다. 이로 인해 사용자의 관심사는 하드웨어적인 부팅 과정보다는, 하드 디스크 등에 저장된 운영체제를 어떻게 메모리로 불러올 것인가로 옮겨갔다.

애플의 첫 컴퓨터인 애플 I(1976)은 PROM 칩을 탑재하여 전면 패널의 스위치 없이 키보드만으로 프로그램을 입력하고 실행할 수 있음을 강조했다.[109] 아타리 ST와 같은 홈 컴퓨터는 전원을 켜면 ROM에 내장된 운영체제가 바로 실행되었고, 추가 기능은 플로피 디스크에서 자동으로 로드했다.

이처럼 초기 컴퓨터의 부팅 방식은 하드웨어의 제약 속에서 스위치 조작, 천공 테이프/펀치 카드 입력 등 다양한 형태로 이루어졌으며, 반도체 기술의 발전에 따라 점차 ROM 기반의 자동화된 방식으로 발전해왔다.

2. 2. 최초의 상업용 컴퓨터

최초로 상업적으로 판매된 프로그래밍 가능 컴퓨터인 UNIVAC I과 IBM 701[9]과 같은 컴퓨터들은 작동을 간편하게 하는 기능을 포함했다. 이들은 일반적으로 완전한 입력 또는 출력 작업을 수행하는 명령어를 포함했으며, 동일한 하드웨어 로직을 사용하여 버튼 하나만 누르면 천공 카드(가장 일반적인 방식), 자기 드럼, 또는 자기 테이프와 같은 입력 매체에서 부트스트랩 프로그램을 로드할 수 있었다. IBM은 이 부팅 개념을 IBM 7030 스트레치[10]에서 "초기 프로그램 로드"(Initial Program Load, IPL)라는 용어를 사용하기 시작했고, 1964년 System/360을 시작으로 메인프레임 제품군에 적용했다.

IBM 1130 (1965)용 초기 프로그램 로드 천공 카드


IBM 701 컴퓨터(1952–1956)는 "로드" 버튼이 있어, 로드 선택 스위치 설정에 따라 천공 카드 판독기의 천공 카드, 테이프 드라이브의 자기 테이프, 또는 자기 드럼 장치 중 하나로부터 첫 번째 36비트 워드를 주 메모리로 읽어 들였다. 이 워드의 왼쪽 18비트(하프 워드)는 다음에 실행될 명령어로 사용되었고, 일반적으로 추가 워드를 메모리로 읽어 들이는 역할을 했다.[11][12][103] 이렇게 로드된 부트 프로그램이 실행되면, 사용자의 추가 개입 없이 해당 매체에서 더 큰 프로그램을 메모리로 로드했다.

IBM 650 (1953)은 십진 기계로, 운영자 패널에는 메모리 워드(주소 8000)로 주소를 지정하고 명령어로 실행할 수 있는 10개의 10자리 스위치 그룹이 있었다. 예를 들어, 스위치를 '70 0400 0400'으로 설정하고 해당 버튼을 누르면, 카드 판독기에서 첫 번째 카드를 메모리 400번지부터 읽어 들인 후(명령 코드 70), 400번지로 분기하여 카드에 담긴 프로그램 실행을 시작했다.[17]

IBM 1401 시스템(1958년경)은 천공 카드에서 프로그램을 로드하기 위해 카드 판독기를 사용했다. 천공 카드에 저장된 80개 문자는 메모리 위치 001번부터 080번까지 읽혔고, 컴퓨터는 메모리 001번지부터 명령 실행을 시작했다. 첫 번째 명령어는 항상 같았는데, 읽어 들인 80개 문자 정보를 다른 영역(어셈블리 영역)으로 이동시켜, 다음 카드들에서 읽을 정보와 결합하여 완전한 프로그램을 형성할 공간을 확보하는 것이었다. 정보 이동이 끝나면, 기계는 080번지(카드 읽기 명령어)로 분기하여 다음 카드를 읽어 그 내용을 처리하는 과정을 반복했다.

2. 3. IBM System/360 및 후속 기종

IBM System/360 및 현재의 z/Architecture 머신을 포함한 후속 기종에서 부팅 프로세스는 초기 프로그램 로드(Initial Program Load|초기 프로그램 로드eng, '''IPL''')로 알려져 있다. IBM은 7030 (Stretch)를 위해 이 용어를 만들었고,[10] System/360의 설계에 이 용어를 다시 사용했으며, 오늘날에도 해당 환경에서 계속 사용하고 있다.[23]

System/360 프로세서에서 IPL은 컴퓨터 운영자가 세 자리 16진수 장치 주소(CUU; C=I/O 채널 주소, UU=제어 장치 및 장치 주소[24])를 선택한 다음 ''LOAD'' 버튼을 눌러 시작된다. 하이엔드 System/360 모델, 대부분의[25] System/370 및 일부 후기 시스템에서는 스위치와 LOAD 버튼의 기능이 그래픽 콘솔 화면에서 선택 가능한 영역을 사용하여 시뮬레이션되었으며, 이는 종종[26] IBM 2250과 유사한 장치 또는 IBM 3270과 유사한 장치였다. 예를 들어 System/370 Model 158에서는 키보드로 ''07X''를 순서대로 입력하면, 입력 영역에 지정된 장치 주소에서 IPL이 실행된다. Amdahl 470V/6 및 관련 CPU는 선택적인 두 번째 채널 장치가 설치된 경우 4개의 16진수 숫자를 지원하여 총 32개의 채널을 지원했다. 이후 IBM도 16개 이상의 채널을 지원하게 되었다.

IBM Z 이전의 System/360 및 후속 기종, 그리고 Amdahl과 같은 호환 제품에서 IPL 기능은 운영자가 지정한 장치에서 24바이트를 메인 스토리지의 실제 주소 0번지부터 읽어들인다. 이 24바이트 중 두 번째와 세 번째 8바이트 그룹은 시작 프로그램을 계속 로드하기 위한 채널 명령 워드(CCW)로 처리된다. 첫 번째 CCW는 CPU에 의해 항상 시뮬레이션되는데, 이는 명령 체이닝과 잘못된 길이 표시 억제가 적용된 ''02h'' 값의 읽기 IPL 명령이다. I/O 채널 명령이 완료되면, 첫 번째 8바이트 그룹이 프로세서의 프로그램 상태 워드(PSW)에 로드되고, 시작 프로그램은 해당 PSW가 지정한 위치에서 실행을 시작한다.[23]

IPL 장치는 일반적으로 디스크 드라이브이지만, 테이프 드라이브나 카드 리더와 같은 다른 입력 장치에서도 정확히 동일한 절차를 사용하여 장치 독립적인 방식으로 IPL을 수행할 수 있다. 이를 통해 예를 들어 운영 체제를 OS 초기 배포 마그네틱 테이프에서 새로운 컴퓨터에 설치할 수 있다. 디스크 컨트롤러의 경우 ''02h'' 읽기 명령은 특별한 의미를 가지는데, 선택된 장치가 실린더 ''0000h'', 헤드 ''0000h''로 검색(Seek Cylinder 및 Seek Head 명령, ''07h'' 시뮬레이션)하고 레코드 ''01h''를 검색(Search ID Equal 명령, ''31h'' 시뮬레이션)하도록 한다. 테이프 및 카드 컨트롤러의 경우 검색이 시뮬레이션되지 않으며, 이러한 장치 클래스에서는 읽기 IPL 명령이 단순히 순차 읽기 명령이다.

디스크, 테이프 또는 카드 데크는 실제 운영 체제 또는 독립 실행형 유틸리티를 메인 스토리지로 로드하기 위한 특수한 프로그램("IPL 텍스트")을 포함해야 한다. 이 IPL 텍스트는 독립 실행형 DASDI(직접 접근 스토리지 장치 초기화) 프로그램 또는 ICKDSF와 같은 운영 체제에서 실행되는 동등한 프로그램에 의해 디스크에 배치된다. 반면, IPL 가능한 테이프 및 카드 데크는 일반적으로 이 "IPL 텍스트"가 이미 포함된 상태로 배포된다.

IBM은 IPL 프로세스에 몇 가지 진화적 변화를 도입하여 System/370 Extended Architecture(S/370-XA) 이후의 일부 세부 사항을 변경하고 z/Architecture에 새로운 유형의 IPL을 추가했다.

2. 4. 미니컴퓨터

미니컴퓨터디지털 이큅먼트 코퍼레이션(DEC)의 PDP-5 및 PDP-8(1965년)을 시작으로, CPU를 사용하여 입출력(I/O) 작업을 지원하는 방식으로 설계를 단순화했다. 이는 비용 절감 효과를 가져왔지만, 버튼 하나로 부팅하던 이전 방식보다 부팅 과정을 더 복잡하게 만들었다.

부트스트랩 프로그램을 로드하는 데 사용되는 스위치를 보여주는 PDP-8/E 전면 패널


초기 미니컴퓨터는 일반적으로 전면 패널에 배열된 스위치를 조작하여 짧은 부트스트랩 프로그램을 직접 입력("토글링")하는 방식을 사용했다. 이 컴퓨터들은 자기 코어 메모리를 사용했기 때문에 전원이 꺼져도 메모리 내용이 유지되어 부트스트랩 로더가 지워지지 않는 한 계속 남아 있었다. 그러나 프로그램 버그로 인해 메모리 전체를 덮어쓰는 루프가 발생하면 의도치 않게 지워지기도 했다.

이러한 스위치를 이용한 부팅 방식은 휴렛 팩커드의 HP 2100 시리즈(1960년대 중반), 오리지널 데이터 제너럴 노바(1969년), DEC의 PDP-4(1962년) 및 PDP-11(1970년) 등 다른 초기 미니컴퓨터에서도 사용되었다. 초기 마이크로컴퓨터인 Altair 8800 등에서도 유사한 방식을 사용했다.

미니컴퓨터의 I/O 작업은 장치 컨트롤러마다 달랐기 때문에, 서로 다른 종류의 주변기기에서 부팅하려면 각각에 맞는 별도의 부트스트랩 프로그램이 필요했다.

이후 DEC는 1971년 PDP-11을 위해 부트스트랩 프로그램을 저장할 수 있는 선택적 읽기 전용 메모리를 도입했다. 이 ROM은 M792라는 유니버스 버스용 인쇄 회로 기판 형태로 제공되었으며, 최대 32 워드(64바이트)의 프로그램을 저장할 수 있었다. 이 카드는 32x16 배열의 다이오드로 구성되었는데, 다이오드가 연결된 비트는 '1'을 나타내고, 특정 비트를 '0'으로 만들기 위해 해당 다이오드를 물리적으로 잘라내어 프로그래밍했다. DEC는 또한 특정 표준 입력 장치용으로 미리 프로그래밍된 BM792-Yx 시리즈 카드도 판매했다.[27][28][101][102]

다른 방식으로는, 초기 PDP-1처럼 하드웨어 로더를 내장하여 "load" 스위치만 누르면 천공 테이프 리더에서 직접 프로그램을 메모리로 읽어오는 방식도 있었다. PDP-7[29], PDP-9[30], PDP-15[31]와 같은 후속 기종들도 천공 테이프에서 프로그램을 읽어 실행하는 "Read-In" 버튼을 가지고 있었다. 데이터 제너럴의 슈퍼노바는 전면 패널 스위치를 사용하여 부팅할 장치를 지정하면, 컴퓨터가 해당 장치에서 자동으로 명령을 메모리로 로드한 후 실행하는 기능을 제공했다.[32]

2. 5. 집적 회로 읽기 전용 메모리 시대

다양한 종류의 집적 회로 읽기 전용 메모리(ROM)가 등장하면서 ROM의 물리적 크기와 비용이 점차 감소했다. 여기에는 마스크 ROM, PROM, EPROM, 플래시 메모리 등이 포함된다. 이러한 기술 발전 덕분에, 이전에는 구현하기 어려웠던 펌웨어 형태의 부팅 프로그램을 컴퓨터 시스템의 일부로 포함하는 것이 가능해졌다.[109]

초기 컴퓨터들은 메모리 공간이 매우 제한적이었고, ROM과 같은 비휘발성 메모리는 특수하거나 용량이 작아 부팅 프로그램을 저장하기 어려웠다. 이 때문에 전원을 켜거나 리셋한 후 복잡한 절차를 통해 시스템을 시작해야 했다. 하지만 집적 회로 기반의 ROM 기술이 발전하면서 이러한 제약은 크게 완화되었다.

ROM 칩에 부팅 프로그램을 내장함으로써, 전원이 켜지거나 리셋 신호가 들어오면 CPU는 별도의 외부 개입 없이 ROM에 미리 정해진 주소부터 프로그램을 즉시 실행할 수 있게 되었다. 이는 부팅 과정을 훨씬 단순하고 사용자 친화적으로 만들었다. 결과적으로 일반 사용자의 관심사는 부팅 절차 자체보다는, 하드 디스크와 같은 보조 기억 장치에 저장된 운영체제(OS)를 어떻게 불러와 실행할 것인지로 옮겨갔다.

임베디드 시스템이나 게임기 같은 특정 목적의 시스템에서는 운영체제나 핵심 프로그램을 아예 ROM에 완전히 담아두는 방식도 일반화되었다. 이런 시스템들은 전원을 켜면 복잡한 부팅 과정 없이 즉시 필요한 프로그램이 실행된다. 애플의 첫 컴퓨터인 애플 I(1976)은 PROM 칩을 탑재하여, 이전 컴퓨터들처럼 전면 패널의 스위치를 조작할 필요 없이 키보드로 바로 프로그램을 입력하고 실행할 수 있게 되었다.[109] 이는 ROM 기술이 가져온 편의성을 보여주는 대표적인 사례이다.

2. 5. 1. 미니컴퓨터



미니컴퓨터디지털 이큅먼트 코퍼레이션(DEC)의 PDP-5 및 PDP-8(1965년)을 시작으로, CPU를 사용하여 입출력(I/O) 작업을 지원하는 방식으로 설계를 단순화했다. 이는 비용 절감 효과를 가져왔지만, 버튼 하나로 부팅하던 이전 방식보다 부팅 과정을 더 복잡하게 만들었다. 초기 미니컴퓨터들은 일반적으로 전면 패널에 배열된 스위치를 조작하여 짧은 부트스트랩 프로그램을 직접 입력("토글링")하는 방식을 사용했다. 이 시기 미니컴퓨터들은 자기 코어 메모리를 사용했기 때문에 전원이 꺼져도 메모리 내용이 유지되어, 부트스트랩 로더는 지워지지 않는 한 계속 남아있었다. 하지만 프로그램 버그로 인해 메모리 전체를 덮어쓰는 루프가 발생하면 의도치 않게 지워지기도 했다.

이러한 방식의 부팅을 사용한 다른 초기 미니컴퓨터로는 휴렛 팩커드(Hewlett-Packard)의 HP 2100 시리즈(1960년대 중반), 오리지널 데이터 제너럴 노바(1969), 그리고 DEC의 PDP-4(1962)와 PDP-11(1970) 등이 있다.

미니컴퓨터에서 특정 I/O 장치로부터 데이터를 읽기 위한 작업은 해당 장치의 컨트롤러마다 달랐기 때문에, 서로 다른 부트 장치에 대해서는 각기 다른 부트스트랩 프로그램이 필요했다.

초기 PDP-1은 하드웨어 로더를 갖추고 있어, 운영자가 "로드" 스위치만 누르면 천공 테이프 리더기가 프로그램을 코어 메모리로 직접 로드할 수 있었다. PDP-4의 후속 기종인 PDP-7[29], PDP-9[30], PDP-15[31]에는 천공 테이프에서 프로그램을 읽어 들여 실행하는 "Read-In" 버튼이 추가되었다. 데이터 제너럴(Data General)의 슈퍼노바는 전면 패널 스위치를 사용하여 지정된 장치에서 메모리로 명령어를 자동으로 로드한 뒤, 로드된 코드를 실행하도록 하는 기능을 제공했다.[32]

인텔 2708 EPROM 칩이 장착된 인쇄 회로 기판


DEC는 1971년 PDP-11에 최대 32 워드(64 바이트)의 부트스트랩 프로그램을 저장할 수 있는 선택적 다이오드 매트릭스 읽기 전용 메모리(ROM)를 도입했다. M792라는 이름의 이 인쇄 회로 기판유니버스 버스에 장착되었으며, 32x16 배열의 반도체 다이오드로 구성되었다. 모든 다이오드가 있으면 모든 비트가 '1'이 되고, 특정 비트를 '0'으로 만들기 위해 해당 다이오드를 물리적으로 잘라내어 프로그래밍했다. DEC는 또한 특정 표준 입력 장치용으로 미리 프로그래밍된(불필요한 다이오드를 제거한) BM792-Yx 시리즈 카드도 판매했다.[27][28]

이후 마스크 ROM, PROM(Programmable ROM), EPROM(Erasable Programmable ROM), 플래시 메모리 등 다양한 종류의 집적 회로 기반 ROM이 등장하면서 ROM의 크기와 비용이 크게 줄어들었다. 이로 인해 부팅 프로그램을 펌웨어 형태로 컴퓨터 자체에 내장하는 것이 가능해졌다.

데이터 제너럴의 노바 1200(1970)과 노바 800(1971)은 프로그램 로드 스위치와 함께, 옵션으로 제공되는 두 개의 ROM 칩에서 프로그램을 주 메모리로 로드하고 실행하는 기능을 갖추었다.[32] DEC 역시 집적 회로 기반의 부트스트랩 ROM 모듈인 BM873(1974)[35], M9301(1977)[36], M9312(1978)[37], REV11-A 및 REV11-C[38], MRV11-C[39], MRV11-D[40] 등을 출시했다. PDP-11/34(1976)[41], PDP-11/60(1977)[42], PDP-11/24(1979)[43] 및 이후 모델들은 대부분 부트 ROM 모듈을 기본적으로 포함하게 되었다.

1975년 CSELT의 연구원 알베르토 치아라멜라(Alberto Ciaramella)가 특허를 낸 이탈리아 전화 교환 컴퓨터 "Gruppi Speciali"는 외부 ROM을 사용하여 반도체 메모리에서 운영 체제를 부팅하는 완전한 단일 버튼 방식을 구현했다.[44] 이는 페라이트 코어 메모리에서 부팅하는 방식과 대조적이었다. 또한 이 시스템은 전원이 꺼진 후에도 기계의 상태를 저장하는 기능을 갖추고 있었다.[45]

일부 미니컴퓨터와 슈퍼미니컴퓨터는 메인 프로세서를 부트스트랩하기 위한 별도의 콘솔 프로세서를 내장했다. 예를 들어, PDP-11/44는 인텔 8085를 콘솔 프로세서로 사용했고[46], DEC의 32비트 슈퍼미니컴퓨터 라인인 VAX 시리즈의 첫 모델 VAX-11/780은 LSI-11 기반의 콘솔 프로세서를[47], VAX-11/730은 8085 기반의 콘솔 프로세서를 사용했다.[48] 이 콘솔 프로세서들은 다양한 저장 장치로부터 메인 프로세서를 부팅할 수 있었다.

VAX-11/750과 같은 다른 슈퍼미니컴퓨터들은 부팅의 첫 단계를 포함한 콘솔 기능을 CPU 마이크로코드로 구현하기도 했다.[49]

2. 5. 2. 마이크로프로세서 및 마이크로컴퓨터



마이크로프로세서를 사용하는 초기 마이크로컴퓨터들은 전원이 켜지거나 리셋된 후, 미리 정해진 특정 메모리 주소에서 코드를 실행하는 방식으로 시작되었다. 최초의 마이크로컴퓨터 중 하나인 알테어 8800(1975년 출시)과 같은 초기 기기들은 별도의 부팅 하드웨어가 없었다.[33] 전원을 켜면 CPU는 임의의 데이터가 들어있는 메모리를 인식하게 되는데, 사용자는 기기 전면 패널에 있는 여러 개의 토글 스위치를 조작하여 부트스트랩 코드를 직접 메모리에 입력해야 했다. 각 스위치는 메모리 주소나 데이터의 비트 하나하나에 해당했으며, 이 과정을 통해 CPU가 코드를 실행하기 전에 부팅에 필요한 최소한의 프로그램을 메모리에 적재할 수 있었다. 이 방식은 과거 미니컴퓨터에서 사용되던 방식과 유사했지만, 매우 번거롭고 오류가 발생하기 쉬웠다.[34]

이후 집적 회로 기술의 발달로 다양한 종류의 읽기 전용 메모리(ROM)가 등장하면서 상황이 변화했다. 마스크 ROM, PROM, EPROM, 플래시 메모리 등 ROM의 물리적 크기와 비용이 줄어들면서, 부팅 프로그램을 컴퓨터 펌웨어의 일부로 내장하는 것이 가능해졌다. 예를 들어, 데이터 제너럴(Data General)의 노바 1200(1970) 및 노바 800(1971) 모델은 ROM 칩 옵션을 제공하여, 스위치 조작만으로 ROM에 저장된 프로그램을 메인 메모리로 불러와 실행할 수 있었다.[32] 디지털 이큅먼트 코퍼레이션(DEC) 역시 PDP-11 시리즈 등을 위해 BM873, M9301, M9312와 같은 다양한 부트스트랩 ROM 모듈을 출시했다.[35][36][37][38][39][40] 1975년 이탈리아 CSELT의 알베르토 치아라멜라(Alberto Ciaramella)가 특허를 낸 전화 교환 컴퓨터 "Gruppi Speciali"는 반도체 ROM에서 운영 체제를 부팅하는 방식을 사용했으며, 버튼 하나로 부팅이 가능했다.[44][45]

애플의 첫 컴퓨터인 애플 I(1976)은 PROM 칩을 탑재하여 더 이상 부팅을 위해 복잡한 전면 패널 스위치를 조작할 필요가 없게 되었다. 당시 광고 문구는 "스위치도, 램프도 필요 없다... PROM 안의 펌웨어로 키보드에서 프로그램을 입력하고, 보고, 디버그할 수 있다"고 강조하며 알테어 8800과 같은 이전 모델과의 차별점을 부각했다.[109] 애플 II는 여기서 더 나아가, 여러 단계의 작은 프로그램을 차례로 실행하여 디스크 운영 체제를 부팅하는 방식을 사용했다.

아타리 ST와 같은 일부 홈 컴퓨터는 운영 체제 자체를 ROM에 내장하여 전원을 켜면 거의 즉시 시스템이 사용할 준비가 되는 "즉시 켜짐" 방식을 채택했다. 이 경우, 보조 기억 장치에서 운영 체제를 불러오는 복잡한 부팅 과정이 생략되었다.

IBM PC와 그 호환 기종들은 BIOS라는 ROM 기반 펌웨어를 도입하여 부팅 과정을 표준화했다. 전원이 켜지거나 리셋되면 x86 CPU는 고정된 메모리 주소(0xFFFF0)에서 실행을 시작하여 BIOS 코드로 점프한다. BIOS는 먼저 POST라는 자체 진단 과정을 수행하여 기본적인 하드웨어(메모리, 키보드 등)를 점검하고 초기화한다. 그 후, BIOS는 미리 설정된 순서(예: 플로피 디스크, 하드 디스크, CD-ROM 등)에 따라 부팅 가능한 장치를 검색한다. 부팅 가능한 장치를 찾으면, 해당 장치의 첫 번째 섹터인 마스터 부트 레코드(MBR) 또는 볼륨 부트 레코드(VBR)를 메모리의 특정 주소(0x7C00)로 읽어들여 실행시킨다. 이 부트 섹터에 담긴 작은 프로그램이 운영 체제의 핵심 부분인 커널을 디스크에서 찾아 메모리로 로드하고 실행하는 역할을 담당한다. 이 BIOS 기반의 부팅 방식은 이후 개인용 컴퓨터 부팅의 표준으로 자리 잡았다.

3. 부트 로더

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

대부분의 컴퓨터 시스템은 메인 메모리에 있는 실행 코드만 실행할 수 있다. 하지만 운영 체제는 일반적으로 하드 디스크 드라이브, Live CD, 플래시 메모리 등에 저장되어 있어 컴퓨터 전원을 켠 직후에는 메인 메모리에 존재하지 않는다. 컴퓨터 하드웨어만으로는 디스크에서 복잡한 운영 체제를 직접 불러올 수 없기 때문에, '운영 체제를 메모리에 로드하려면 운영 체제가 이미 메모리에 있어야 한다'는 딜레마가 발생한다.

이 문제를 해결하기 위해 '''부트 로더''' 또는 '''부트스트랩 로더'''(bootstrap loader)라고 하는 특수한 작은 프로그램이 사용된다. 이 프로그램은 보통 ROM에 저장되어 있으며, 운영 체제의 모든 기능을 갖추고 있지는 않지만, 운영 체제나 다음 단계의 부트 로더를 불러와 실행할 수 있을 만큼의 기본적인 기능을 수행한다. 여러 단계의 부트 로더가 사용되는 경우가 많으며, 작은 프로그램이 다른 작은 프로그램을 순차적으로 호출하여 최종적으로 운영 체제가 시작되도록 한다.

초기의 프로그래밍 가능한 컴퓨터들은 전면 패널에 배열된 토글 스위치를 조작하여 부트 로더 코드를 직접 메모리에 입력한 뒤 CPU를 시작시키는 방식을 사용했다. 이 부트 로더는 종이 테이프나 자기 디스크 장치 같은 외부 저장 매체에서 운영 체제를 불러오는 역할을 했다. IBM 650, DEC의 PDP-5, PDP-8, 초기 PDP-11, 그리고 Altair 8800과 같은 초기 마이크로컴퓨터들이 이러한 방식을 사용했다. 일부 컴퓨터(예: PDP-1)는 하드웨어 로더를 내장하여 버튼 하나만 누르면 종이 테이프에서 부트 로더를 읽어올 수 있도록 설계되기도 했다.

IBM 701(1952–1956)은 "load" 버튼을 통해 펀치 카드, 자기 테이프, 자기 드럼 중 하나에서 첫 36비트 워드를 읽어들였다. 이 초기 명령은 보통 메모리에 더 많은 프로그램을 읽어들이는 역할을 했다.[103] IBM메인프레임에서는 이러한 과정을 "Initial Program Load"(IPL)라고 불렀다. '부트스트랩(bootstrap)'이라는 용어는 자기 스스로를 끌어올린다는 비유적인 의미에서 유래했으며, 1950년대부터 컴퓨터의 초기 시동 과정을 가리키는 데 사용되기 시작했다.[99]

이후 집적회로 기반의 ROM(마스크 ROM, PROM, EPROM, 플래시 메모리)이 발전하면서, 부트 프로그램을 펌웨어 형태로 메모리 공간의 일부에 저장하는 것이 일반화되었다. 전원을 켜거나 리셋하면 프로세서는 미리 정해진 ROM 주소에서 부트 프로그램을 바로 실행하기 시작한다. 현대의 컴퓨터에서는 부트 과정이 CPU가 ROM에 내장된 소프트웨어(BIOS나 UEFI 등)를 실행하면서 시작된다. 이 펌웨어는 부팅 가능한 장치들을 검색하고, 가장 우선순위가 높은 장치의 특정 영역(부트 섹터)에서 작은 프로그램을 읽어와 실행한다.

NTLDR, 리눅스 로더(LILO), GRUB 등과 같은 2단계 부트 로더는 그 자체로 완전한 시스템을 시동하지는 않지만, 운영 체제를 메모리에 적절히 불러들이고 실행할 수 있는 상태로 만들어주는 중요한 역할을 한다. 이들은 시스템을 초기화하고 운영 체제 구동에 필요한 장치 드라이버나 다른 프로그램들을 로드하는 과정을 돕는다.

3. 1. 1단계 부트 로더

1단계 부트 로더는 컴퓨터의 전원이 켜진 후 가장 먼저 실행되는 프로그램이나 펌웨어를 말한다. 주요 역할은 기본적인 하드웨어를 점검하고 초기화하며, 이후 운영 체제나 2단계 부트 로더를 불러와 실행할 수 있도록 준비하는 것이다.

마이크로프로세서는 일반적으로 전원이 켜지거나 리셋되면 미리 정해진 특정 메모리 주소에 있는 코드를 실행하도록 설계되어 있다. 예를 들어, 인텔 x86 프로세서는 F000:FFF0 주소에서 실행을 시작하며,[50][51] MOS 6502 프로세서는 $FFFC와 $FFFD 주소에서 벡터 주소를 읽어 해당 위치로 점프한다.[52] 이러한 초기 코드는 보통 지워지지 않는 ROM에 저장되어 있어, 사용자의 별도 조작 없이도 시스템이 자동으로 부팅 절차를 시작할 수 있게 한다.

대표적인 1단계 부트 로더의 예시는 다음과 같다.

  • '''BIOS''' (Basic Input/Output System): IBM 개인용 컴퓨터 및 IBM PC 호환기종에서 오랫동안 표준으로 사용된 펌웨어다. 전원이 켜지면 POST라는 자가 진단 과정을 거쳐 하드웨어를 점검하고, 설정된 부팅 순서에 따라 하드 디스크 드라이브플로피 디스크 같은 저장 장치에서 다음 단계의 부트 로더나 운영 체제를 찾아 실행한다.
  • '''UEFI''' (Unified Extensible Firmware Interface): 인텔아이테니엄 기반 시스템을 위해 처음 개발했으며, 이후 x86 시스템과 인텔 프로세서를 사용하는 애플 맥 등 다양한 시스템에서 BIOS를 대체하고 있는 현대적인 펌웨어 인터페이스다. BIOS보다 더 빠른 부팅 속도, 향상된 보안 기능, 사용자 친화적인 그래픽 인터페이스 등을 제공한다.
  • '''Open Firmware''': 선 마이크로시스템즈가 개발하여 SPARC 기반 워크스테이션 등에 사용된 펌웨어다. Forth 언어 기반의 인터프리터를 내장하고 있으며, IEEE 표준(IEEE 1275-1994)으로도 제정되었다. 파워PC 기반 매킨토시 등에서도 사용된 바 있다.
  • '''기타''': coreboot, Libreboot, Das U-Boot 등도 1단계 부트 로더로 사용되는 오픈 소스 펌웨어들이다.


IBM PC 환경의 초기 부트 로더, 특히 마스터 부트 레코드(MBR)나 파티션 부트 레코드(PBR)에 담기는 코드는 매우 작은 크기(최소 32KB[55], 이후 64KB[56] 시스템 메모리 필요)와 초기 8088/8086 프로세서에서 지원하는 명령어만 사용해야 하는 제약을 가지고 있었다.

3. 2. 2단계 부트 로더

2단계 부트 로더(Second-stage boot loader)는 실제 운영 체제(OS)를 불러와 실행 제어권을 넘겨주는 역할을 담당한다. 이는 운영 체제가 스스로 초기화하고 필요한 장치 드라이버 등을 로드할 수 있도록 준비하는 단계이다.[57] 대표적인 2단계 부트 로더로는 GNU GRUB, rEFInd, BOOTMGR, Syslinux, NTLDR, iBoot 등이 있다. 이들은 완전한 운영 체제는 아니지만, OS를 성공적으로 로드하고 실행을 시작시키는 데 필수적이다.

2단계 부트 로더는 자체적으로 복잡한 하드웨어 드라이버를 가지지 않는 대신, BIOS, UEFI, Open Firmware와 같은 시스템 펌웨어가 제공하는 기본적인 저장 장치 접근 기능을 활용한다. 이 때문에 일반적으로 기능이 제한적이고 성능이 높지 않다.[58]

많은 2단계 부트 로더는 사용자에게 다양한 부팅 옵션을 선택할 수 있는 메뉴를 제공하도록 설정할 수 있다. 이를 통해 사용자는 다음과 같은 선택을 할 수 있다.

  • 서로 다른 운영 체제 부팅 (멀티 부팅)
  • 동일한 운영 체제의 다른 버전 부팅 (예: 새 버전 문제 발생 시 이전 버전 사용)
  • 다른 운영 체제 로딩 옵션 선택 (예: 안전 모드나 복구 모드)
  • 운영 체제 없이 실행 가능한 독립 프로그램 실행 (예: 메모리 검사 도구 memtest86+, 간단한 게임[59][111] 등)


일부 부트 로더는 다른 부트 로더를 연쇄적으로 로드하는 기능도 지원한다. 예를 들어, GNU GRUB는 Windows 운영 체제를 직접 로드하는 대신 Windows의 부트 로더인 BOOTMGR을 로드하여 실행을 넘길 수 있다. 일반적으로 부팅 메뉴에는 기본 선택 항목이 미리 지정되어 있으며, 사용자가 일정 시간 동안 다른 선택을 하지 않으면 자동으로 기본 항목으로 부팅이 진행된다. 이를 통해 평소에는 별도의 조작 없이 시스템을 시작할 수 있다.

Windows 9x 시리즈의 경우, MS-DOS가 2단계 부트 로더와 유사한 역할을 수행하기도 했다. 물론 MS-DOS 자체를 독립적인 운영 체제로 부팅하는 것도 가능했다.

3. 3. 임베디드 및 다단계 부트 로더

대부분의 임베디드 시스템은 즉시 부팅해야 하는 경우가 많다. 예를 들어, 디지털 텔레비전이나 GPS 네비게이션 장치가 켜질 때까지 오래 기다리는 것은 일반적으로 받아들여지기 어렵다. 따라서 이러한 장치들은 ROM이나 플래시 메모리에 소프트웨어 시스템을 내장하여, 전원을 켜면 바로 기능을 시작할 수 있도록 설계된다. 장치를 제조할 때 필요한 로딩 과정을 미리 계산하여 ROM에 저장해두면, 부팅 시 로딩 시간이 거의 또는 전혀 필요하지 않게 된다. 자동차 ECU (전자 제어 장치)와 같은 임베디드 시스템에서는 서비스나 생산 과정에서 프로그램을 업데이트하기 위해 플래시 부트로더를 사용하기도 한다. 플래시 부트로더는 플래시 메모리 안에 저장되어 리셋 후 가장 먼저 실행되며, 이를 통해 애플리케이션의 갱신, 수정, 설정 변경을 쉽게 할 수 있다. 특히 CAN 기반의 플래시 부트로더가 널리 사용되며, 진단 프로토콜을 이용해 통신하고 프로그램을 다운로드한다.

한편, 크고 복잡한 시스템은 여러 단계로 진행되는 부팅 절차를 가질 수 있다. 이러한 다단계 부트 로더는 운영 체제 및 다른 프로그램들이 로드되어 실행될 준비가 될 때까지 점진적으로 시스템을 초기화한다. 부트 로더는 운영 체제를 메모리에 올리고 실행시킨 후, 시스템 내에서 단순한 프로세스로 자신을 구성하고 운영 체제에게 시스템 제어 권한을 완전히 넘겨준다. 제어권을 넘긴 부트 로더는 다른 일반적인 프로세스처럼 정상적으로 종료된다.

4. 부팅 장치

부팅 장치는 운영 체제가 로드되는 저장 장치를 말한다.[60] 현대 PC의 UEFI 또는 BIOS 펌웨어는 다양한 장치에서 부팅하는 것을 지원한다. 일반적으로 로컬 솔리드 스테이트 드라이브(SSD)나 하드 디스크 드라이브(HDD)를 사용하며, 이러한 드라이브의 GPT 또는 MBR 파티션 방식을 이용한다. 또한 광학 디스크 드라이브(El Torito 표준 사용), USB 대용량 저장 장치(USB 플래시 드라이브, 메모리 카드 리더, USB 외장 하드 디스크, USB 외장 ODD, USB 외장 SSD 등), 네트워크 인터페이스 카드(PXE 사용) 등에서도 부팅이 가능하다.[60] 구형이거나 덜 일반적인 BIOS 부팅 가능 장치로는 플로피 디스크 드라이브, Zip 드라이브, LS-120 드라이브 등이 있다.[60]

Windows To Go를 지원하는 부팅 가능한 USB 플래시 드라이브. Live USB의 한 예시이다.


일반적으로 시스템 펌웨어(UEFI 또는 BIOS) 설정을 통해 사용자는 "부팅 순서"를 직접 구성할 수 있다.[60][61] 예를 들어, 부팅 순서를 "첫 번째, DVD 드라이브; 두 번째, 하드 디스크 드라이브"로 설정하면, 펌웨어는 먼저 DVD 드라이브에서 부팅을 시도한다. 만약 DVD 드라이브에 부팅 가능한 디스크가 없거나 다른 이유로 실패하면, 로컬 하드 디스크 드라이브에서 부팅을 시도하게 된다.[60][61]

이러한 부팅 순서 설정은 여러 운영 체제를 사용하거나 시험해볼 때 유용하다. 예를 들어, 윈도우가 설치된 PC에서 부팅 순서를 광학 드라이브 우선으로 설정하고 리눅스 Live CD를 넣으면, 하드 드라이브에 운영 체제를 설치하지 않고도 리눅스를 사용해 볼 수 있다. 이는 듀얼 부팅의 한 방식으로 볼 수 있으며, 사용자는 컴퓨터가 POST 과정을 마친 후 어떤 운영 체제로 시작할지 선택하게 된다. CD/DVD 삽입 여부로 선택하는 방법 외에도, 부팅 시 특정 키(보통 `F8` 키, `F11` 키, `F12` 키 또는 `ESC` 키)를 눌러 나타나는 부트 매니저 메뉴에서 직접 부팅 장치나 운영 체제를 선택하는 것이 더 일반적이다. BIOS 또는 UEFI 설정 화면으로 진입하는 키는 보통 POST 중에 `F2` 키 또는 `DEL` 키를 누르는 것이다.[60][61]

일부 기기에는 인터넷 접속과 같은 간단한 작업을 위해 리눅스 기반의 운영 체제를 빠르게 부팅하는 '빠른 부팅' 기능이 탑재되기도 한다. 예를 들어 Splashtop이나 Latitude ON 같은 기술이 있다.[62][63][64]

5. IBM PC 호환 시스템의 부팅 순서

IBM PC 호환 시스템에서 전원이 켜지거나 리셋 버튼을 누르면, x86 CPU는 미리 정해진 특정 메모리 주소에서 실행을 시작하여 시스템 펌웨어(BIOS 또는 UEFI)로 제어를 넘긴다.

펌웨어는 먼저 전원 켜기 자가 진단(POST, Power-On Self-Test)을 통해 주요 하드웨어를 검사하고 초기화한다. POST가 완료되면, 펌웨어는 사용자가 설정한 '부팅 순서'(Boot Sequence)에 따라 부팅 가능한 장치를 찾는다. 부팅 장치로는 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD), 광학 디스크 드라이브, USB 저장 장치, 네트워크 카드(PXE 부팅) 등이 될 수 있다.

전통적인 BIOS 시스템은 부팅 가능한 장치를 찾으면, 해당 장치의 첫 번째 섹터인 마스터 부트 레코드(MBR)를 메모리로 읽어들여 실행한다. MBR은 디스크의 파티션 정보를 확인하여 부팅 가능한 '활성 파티션'을 찾고, 해당 파티션의 부트 로더(VBR)에게 제어권을 넘겨 운영 체제 로딩을 시작하게 한다.[114]

UEFI 기반 시스템은 이와 다르다. UEFI는 GUID 파티션 테이블(GPT)을 주로 사용하며, MBR 대신 EFI 시스템 파티션(ESP)에 저장된 부트로더 파일(`.efi`)을 직접 실행하여 운영 체제를 로드한다. UEFI는 구형 시스템과의 호환성을 위해 호환성 지원 모듈(CSM)을 통해 기존 BIOS 방식(레거시 부팅)을 지원하기도 한다.[128] 만약 부팅 가능한 장치를 찾지 못하면, 시스템은 오류 메시지를 표시하고 부팅을 중단한다.

5. 1. BIOS

부팅 중인 2000년의 어워드 소프트웨어 BIOS


FreeBSD의 boot0 MBR의 16진수 덤프


컴퓨터 전원이 켜지거나 리셋될 때, PC의 x86 CPU는 실 모드에서 특정 메모리 주소에 있는 명령어를 실행하기 시작한다. 16비트 x86 프로세서에서는 물리 메모리 주소 FFFF0h[65], 32비트 및 64비트 x86 프로세서에서는 FFFFFFF0h[66][67]이다. 이 주소는 일반적으로 ROM에 저장된 펌웨어(BIOS 또는 UEFI)의 시작점으로 연결되는 점프 명령어를 포함하고 있다.

펌웨어는 먼저 전원 켜기 자가 진단(POST)을 실행하여 메인 메모리(DRAM), PCI 버스, PCI 장치 등 필수적인 하드웨어를 검사하고 초기화한다. 특히 SPD를 통해 DRAM 설정을 하는 것은 복잡한 과정 중 하나이다.

하드웨어 초기화가 끝나면, BIOS는 미리 설정된 비휘발성 저장 장치 목록(부팅 순서)을 따라 부팅 가능한 장치를 찾는다. 부팅 가능한 장치는 읽을 수 있고, 첫 번째 섹터의 마지막 두 바이트에 리틀 엔디언 방식으로 AA55h (디스크 상에는 55h, AAh 순서로 기록됨)라는 부트 시그니처가 있는 장치를 의미한다.

BIOS가 부팅 가능한 장치를 찾으면, 해당 장치의 첫 번째 섹터인 부트 섹터를 메모리의 특정 주소(일반적으로 선형 주소 7C00h, 세그먼트:오프셋 형식으로는 0000h:7C00h[56])로 불러들여 실행한다. 일부 오래된 BIOS는 07C0h:0000h 주소를 사용하기도 했다. 하드 디스크의 경우 이 첫 번째 부트 섹터를 마스터 부트 레코드(MBR)라고 부르며, MBR 자체는 특정 운영 체제에 종속되지 않는다.

MBR 코드는 MBR 내부에 있는 파티션 테이블을 검사하여 부팅 가능하도록 표시된 파티션(활성 파티션)을 찾는다.[68] 활성 파티션이 발견되면, MBR 코드는 해당 파티션의 부트 섹터인 볼륨 부트 레코드(VBR)를 메모리로 불러들여 실행한다. VBR은 일반적으로 운영 체제에 따라 다르며, 주된 역할은 해당 파티션에 설치된 운영 체제의 부트 로더 파일(예: 윈도우 NT 계열의 NTLDR 또는 bootmgr)을 찾아 실행하는 것이다. 이 부트 로더가 최종적으로 운영 체제의 커널을 메모리에 로드하여 부팅 과정을 이어간다.

만약 활성 파티션이 없거나 활성 파티션의 VBR이 올바르지 않다면, MBR은 두 번째 부트 로더(보조 부트 로더)를 불러들이거나, INT 18h[56] BIOS 인터럽트 호출을 실행하여 제어권을 다시 BIOS로 넘길 수 있다. 제어권을 넘겨받은 BIOS는 다음 순서의 부팅 장치를 시도하거나, 네트워크를 통한 부팅을 시도할 수 있다. 만약 부팅 가능한 장치를 전혀 찾지 못하면 오류 메시지를 표시하고 부팅 과정을 중단한다.

UEFI를 사용하는 최신 시스템은 BIOS와 다른 방식으로 부팅한다. UEFI는 MBR이나 부트 섹터에 의존하는 대신, EFI 시스템 파티션에 저장된 부트로더 파일(.efi)을 직접 실행하여 운영 체제를 로드한다. 하지만 구형 운영 체제와의 호환성을 위해, UEFI 펌웨어는 호환성 지원 모듈(CSM)을 통해 기존 BIOS 방식(레거시 부팅)을 지원하기도 한다.[128]

5. 2. UEFI

인텔 맥이나 Macintosh, Microsoft Windows를 사용하는 최신 PC 등 많은 최신 시스템은 인텔이 개발한 UEFI를 사용한다.[69][70]

BIOS와 달리, UEFI는 CSM(Compatibility Support Module)을 통한 '''레거시 부팅''' 방식이 아니라면 부트 섹터에 의존하지 않는다. UEFI 시스템은 부트로더(USB 플래시 드라이브 또는 EFI 시스템 파티션에 있는 '''EFI 애플리케이션''' 파일)를 직접 로드하며,[71] 운영 체제 커널은 이 부트로더에 의해 로드된다.

UEFI를 준수하는 펌웨어를 가진 시스템에서는 MBR 또는 GPT 파티션 테이블이 있는 드라이브에서 부팅할 수 있으며, 표준 MBR 부트로더를 사용하지 않는다.

6. SoC, 임베디드 시스템, 마이크로컨트롤러 및 FPGA의 부팅

대부분의 임베디드 시스템은 즉시 부팅해야 한다. 예를 들어, 디지털 텔레비전이나 GPS 네비게이션 장치가 시작될 때까지 1분 이상 기다리는 것은 일반적으로 용납되지 않는다. 따라서 이러한 장치에는 ROM 또는 플래시 메모리에 소프트웨어 시스템이 내장되어 있어 장치가 즉시 기능을 시작할 수 있다. 장치를 제조할 때 로딩 시간을 미리 계산하여 ROM에 저장할 수 있으므로, 사용자가 전원을 켰을 때 로딩 시간이 거의 또는 전혀 필요하지 않다. 자동차 응용 분야에서 사용되는 ECU(전자 제어 장치)와 같은 임베디드 시스템은 플래시 부트로더에 의존하여 서비스나 생산 과정에서 프로그래밍된다.

크고 복잡한 시스템은 운영 체제 및 기타 프로그램이 로드되어 실행될 준비가 될 때까지 여러 단계로 진행되는 부팅 절차를 가질 수 있다. 부트 로더는 운영 체제를 로드하고, 해당 시스템 내에서 단순한 프로세스로 스스로를 구성한 다음, 운영 체제로 제어 권한을 영구적으로 이전할 수 있다. 그 후 부트 로더는 다른 프로세스처럼 정상적으로 종료된다.

많은 최신 CPU, SoC, 마이크로컨트롤러(예: TI OMAP) 또는 때로는 DSP조차도 실리콘에 직접 통합된 부트 ROM을 가질 수 있다. 이러한 부트 ROM은 자체적으로 간단한 부팅 시퀀스를 수행하고 NAND 플래시나 eMMC와 같은 다양한 부팅 소스에서 부트 프로그램(펌웨어 또는 소프트웨어)을 로드할 수 있다. 다양한 장치를 지원하는 데 필요한 모든 논리를 하드웨어 회로로만 구현하기는 어렵기 때문에, 이러한 시나리오에서는 통합 부트 ROM이 대신 사용된다. 또한 부트 ROM은 UART, SPI, USB 등과 같은 직렬 인터페이스를 통해 부트로더나 진단 프로그램을 로드할 수도 있다. 이 기능은 종종 시스템 복구 목적으로 사용되거나, 비휘발성 메모리에 아직 사용할 수 있는 소프트웨어가 없는 경우 초기 비휘발성 메모리 프로그래밍에 사용될 수도 있다. 많은 최신 마이크로컨트롤러(예: USB 플래시 드라이브의 플래시 메모리 컨트롤러)는 펌웨어 ROM을 실리콘에 직접 통합하고 있다.

일부 임베디드 시스템 설계에는 중간 부팅 시퀀스 단계가 포함될 수도 있다. 예를 들어, Das U-Boot는 두 단계로 나눌 수 있는데, 플랫폼은 U-Boot의 축소된 버전인 작은 SPL(Secondary Program Loader)을 먼저 로드한다. 이 SPL은 일부 초기 하드웨어 구성(예: DRAM 초기화를 위해 CPU 캐시를 RAM으로 사용)을 수행한 다음, 더 크고 완전한 기능을 갖춘 U-Boot 버전을 로드한다.[72] 일부 CPU 및 SoC는 부팅 과정에서 CPU 캐시를 RAM으로 사용하지 않고, 비용 절감을 위해 통합된 부트 프로세서를 사용하여 일부 하드웨어 구성을 수행하기도 한다.[73]

JTAG와 같은 하드웨어 디버그 인터페이스를 사용하여 시스템을 제어할 수도 있다. 이러한 인터페이스는 프로세서 코어에 비휘발성 메모리(예: 플래시 메모리)를 프로그래밍하는 데 필요한 작업을 지시하여 부트로더 프로그램을 쓸 수 있게 한다. 또는 디버그 인터페이스를 사용하여 일부 진단 코드나 부팅 코드를 RAM에 업로드한 다음, 프로세서 코어를 시작하여 업로드된 코드를 실행하도록 지시할 수 있다. 이를 통해 예를 들어, 지원되는 부팅 장치에 소프트웨어가 남아 있지 않고 프로세서에 통합 부트 ROM이 없는 임베디드 시스템을 복구할 수 있다.

일부 마이크로컨트롤러는 시스템을 임의로 제어하거나 코드를 직접 실행하는 데는 사용할 수 없지만, 간단한 프로토콜을 통해 부팅 코드를 부팅 가능한 비휘발성 메모리(예: 플래시 메모리)에 삽입할 수 있는 특수 하드웨어 인터페이스를 제공한다. 제조 단계에서 이러한 인터페이스를 사용하여 부팅 코드(및 가능하면 기타 코드)를 비휘발성 메모리에 주입한다. 시스템 재설정 후 마이크로컨트롤러는 ROM을 사용하여 부팅하는 일반 프로세서처럼 비휘발성 메모리에 프로그래밍된 코드를 실행하기 시작한다. 특히 이 기술은 Atmel AVR 마이크로컨트롤러 및 기타 마이크로컨트롤러에서도 사용된다. 많은 경우 이러한 인터페이스는 하드웨어 로직으로 구현되지만, 다른 경우에는 GPIO 핀을 통해 통합 온칩 부트 ROM에서 실행되는 소프트웨어에 의해 생성될 수도 있다.

많은 DSP는 다음과 같은 부트 모드를 가지고 있다.


  • 직렬 모드 부트
  • 병렬 모드 부트 (HPI 부트 등)


DSP는 종종 시스템 설계에서 별도의 마이크로프로세서나 마이크로컨트롤러와 함께 사용된다. 이 다른 프로세서(호스트 프로세서 또는 마스터라고도 함)가 전반적인 시스템 동작, 인터럽트 처리, 외부 이벤트 처리, 사용자 인터페이스 등을 담당하고, DSP는 신호 처리 작업에만 전념하는 경우가 많다. 이러한 시스템에서 DSP는 호스트 프로세서에 의해 부팅될 수 있다. DSP는 자체 부팅 메모리가 없는 경우가 많으며, 대신 호스트 프로세서로부터 필요한 코드를 공급받아야 한다. 이러한 구성은 휴대 전화, 모뎀, 오디오 및 비디오 플레이어 등에서 흔히 볼 수 있다.

많은 FPGA 칩은 전원이 공급될 때 외부 직렬 EEPROM(구성 ROM)에서 자신의 회로 구성 정보를 로드한다.

7. 네트워크 부팅

대부분의 컴퓨터는 컴퓨터 네트워크를 통해 부팅하는 네트워크 부팅 기능을 갖추고 있다. 이 방식에서는 운영 체제가 서버의 디스크에 저장되며, TFTP와 같은 단순 프로토콜을 사용하여 운영 체제의 일부가 클라이언트 컴퓨터로 전송된다. 이 데이터 전송이 완료되면 클라이언트 컴퓨터는 부팅 과정을 시작하고 운영 체제가 시스템 제어를 맡는다.

네트워크 부팅은 일반적으로 네트워크 인터페이스 카드(NIC)의 부트 ROM에 내장된 PXE(Preboot Execution Environment) 이미지를 통해 시작된다. 이 부트 ROM은 기본적인 네트워크 접근 기능을 제공한다. 초기 부팅 단계에서는 별도의 드라이버가 필요하지 않지만, 운영 체제 커널과 필요한 드라이버가 완전히 전송되어 실행될 때까지 시스템 기능은 제한된다. ROM 기반의 초기 부팅이 완료된 이후에는, 해당 네트워크 인터페이스를 직접 사용하지 않는 운영 체제라 할지라도 네트워크를 통해 부팅하는 것이 가능하다.

네트워크 부팅은 특히 내장 디스크 드라이브가 없는 씬 클라이언트 같은 장치를 구동하는 데 유용하게 사용된다.

8. 리부팅


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

9. 보안

부팅 과정의 컴퓨터 보안을 강화하기 위한 다양한 조치가 구현되고 있다. 최신 부트로더는 여러 프로세서 코어와 스레드를 동시에 활용하는 동시성 기술을 사용하는데, 이는 보안 부팅 구현에 복잡성을 더하는 요인이 되기도 한다.

9. 1. 보안 조치

부팅 프로세스의 컴퓨터 보안을 강화하기 위해 다양한 조치가 구현되었다. 이 중 일부는 의무적으로 적용되기도 하지만, 다른 일부는 최종 사용자가 직접 활성화하거나 비활성화할 수 있다. 전통적으로 부팅 과정에서는 암호화가 사용되지 않았으며, 보안은 제조사가 승인했거나 혹은 승인하지 않은 부트로더 잠금 해제를 통해 우회될 가능성이 있었다. 최신 부트로더는 여러 프로세서 코어와 스레드를 동시에 실행하는 동시성을 활용할 수 있는데, 이는 보안 부팅 과정에 추가적인 복잡성을 더하는 요인이 된다.

매튜 개릿은 부팅 보안이 정당한 목표를 추구하지만, 그 과정에서 사용자에게 불리한 기본값을 선택하게 되는 문제가 있다고 주장했다.[74] 주요 보안 조치는 다음과 같다.

9. 2. 부트 루프

UART 콘솔을 통해 OpenWrt가 설치된 TP-Link 라우터가 부트로프 상태에 빠진 것을 보여준다.


'''부트로프'''(boot loop, 부트 루프)는 컴퓨팅 장치가 부팅 과정을 정상적으로 마치지 못하고 계속해서 재부팅되는 오류 상태를 말한다. 이 경우 사용자는 장치의 일반적인 인터페이스에 접근하기 어려워진다.

부트로프는 다양한 시스템과 기기에서 발생할 수 있으며, 주요 사례는 다음과 같다.

9. 2. 1. 오류 상태 감지



시스템은 복구 절차가 시작되기 전에 오류 상태를 나타낼 수 있다. 대표적인 예시로는 명시적인 부트로프(boot loop)나 블루 스크린 등이 있다.[79] 부트로프는 컴퓨팅 장치가 부팅 과정을 반복적으로 완료하지 못하고 부팅 순서가 끝나기 전에 재부팅되는 진단 상태를 의미한다.

특히 분산 시스템의 실시간 작동 환경에서는 오류 상태를 효과적으로 감지하기 위해 아파치 카프카와 같은 분산 이벤트 저장소 및 스트림 처리 플랫폼의 사용이 요구될 수 있다.

9. 2. 2. 오류 상태 복구

잘못된 상태는 부트 루프를 유발할 수 있다. 이는 이전에 정상적으로 작동하던 설정이 잘못 구성되어 발생할 수 있다. 이러한 잘못된 상태에서 복구를 시도할 때는 사용 가능한 메뉴로 돌아가기 위해 재부팅을 시도한다. 예를 들어, 윈도우 운영 체제에서는 복구 절차로 세 번의 재부팅을 수행하여 사용 가능한 메뉴로 돌아갈 수 있도록 하는 경우가 있었다.[77][78][79]

9. 2. 3. 복구 정책

복구는 일부 애플리케이션에 대한 단일 로그인(SSO)을 구현할 수 있는 보안 어설션 마크업 언어(SAML)를 통해 지정될 수 있다. 제로 트러스트 보안 모델에서 식별, 권한 부여 및 인증은 SSO 세션에서 분리 가능한 문제이다. 사이트 복구가 필요한 경우 (예: 공항 터미널 화면에 블루 스크린이 표시되는 경우) 상황을 해결하기 위해 개인적인 현장 방문이 필요할 수 있다.[76]

참조

[1] 문서 Including daemons
[2] 사전 bootstrap https://www.computer[...] 2019-08-05
[3] 사전 Bootstrap http://www.thefreedi[...] 2008-08-27
[4] 사전 Pull oneself up by bootstraps http://idioms.thefre[...] 2019-10-07
[5] 사전 Bootstrap Definition https://techterms.co[...] 2019-10-02
[6] 사전 Pull yourself up by your bootstraps http://www.phrases.o[...] 2010-07-15
[7] 학술지 Programming the EDSAC 1980
[8] 서적 The Preparation of Programs for an Electronic Digital Computer https://books.google[...] Addison-Wesley 2020-09-25
[9] 학술지 The System Design of the IBM Type 701 Computer http://bitsavers.org[...] 1953
[10] 서적 Reference Manual 7030 Data Processing System http://bitsavers.org[...] IBM 1961-08
[11] 서적 Principles of Operation Type 701 And Associated Equipment http://bitsavers.org[...] IBM 2012-11-09
[12] 서적 From Gutenberg to the Internet 2005
[13] 서적 704 Electronic Data-Processing Machine Manual of Operation http://bitsavers.org[...] IBM
[14] 서적 Operator's Guide for IBM 7090 Data Processing System http://bitsavers.org[...] IBM
[15] 서적 IBM 7094 Principles of Operation http://bitsavers.org[...] IBM
[16] 서적 Oxford English Dictionary https://archive.org/[...] Oxford University 1939
[17] 서적 650 magnetic drum data-processing machine manual of operation http://www.bitsavers[...] IBM 1955
[18] 서적 Operator's Guide for IBM 7040-7044 Systems http://bitsavers.org[...] IBM
[19] 서적 CONTROL DATA 6600 Computer System Reference Manual http://bitsavers.org[...] Control Data Corporation 1963-08
[20] 서적 GE-645 System Manual http://bitsavers.org[...] General Electric 2019-10-30
[21] 서적 PDP-10 System Reference Manual, Part 1 http://bitsavers.org[...] Digital Equipment Corporation 2012-11-09
[22] 서적 Burroughs B 1700 Systems Reference Manual http://bitsavers.org[...] Burroughs Corporation 1973-11
[23] 서적 z/Architecture Principles of Operation http://publibz.bould[...] IBM 2007-04-14
[24] 문서 UU was often of the form Uu, U=Control unit address, u=Device address, but some control units attached only 8 devices; some attached more than 16. Indeed, the 3830 DASD controller offered 32-drive-addressing as an option.
[25] 문서 Excluding the 370/145 and 370/155, which used a 3210 or 3215 console typewriter.
[26] 문서 Only the S/360 used the 2250; the 360/85, 370/165 and 370/168 used a keyboard/display device compatible with nothing else.
[27] 서적 BM792 read-only-memory and MR11~DB bootstrap loader http://www.bitsavers[...] Digital Equipment Corporation 1974-01
[28] 서적 PDP-11 Peripherals Handbook http://bitsavers.org[...] Digital Equipment Corporation 1976
[29] 서적 Programmed Data Processor-7 Users Handbook http://bitsavers.org[...] Digital Equipment Corporation 1965
[30] 서적 PDP-9 User Handbook http://bitsavers.org[...] Digital Equipment Corporation 1968-01
[31] 서적 PDP-15 Systems Reference Manual http://bitsavers.org[...] Digital Equipment Corporation 1969-08
[32] 서적 How To Use The Nova Computers http://bitsavers.org[...] Data General 1971-04
[33] 웹사이트 Oldcomputers: Altair 8800b https://www.old-comp[...] 2019-12-10
[34] 비디오미디어 Altair 8800 loads 4K BASIC from paper tape https://www.youtube.[...] 2016-05-02
[35] 서적 BM873 restart/loader http://www.bitsavers[...] Digital Equipment Corporation 1974-04
[36] 서적 M9301 bootstrap/terminator module maintenance and operator's manual http://www.bitsavers[...] Digital Equipment Corporation 1977-06-01
[37] 서적 M9312 bootstrap/terminator module technical manual http://www.bitsavers[...] Digital Equipment Corporation 1981-03-01
[38] 서적 Microcomputer Interfaces Handbook http://bitsavers.org[...] Digital Equipment Corporation 1981-01-01
[39] 서적 Microcomputer Products Handbook http://bitsavers.org[...] Digital Equipment Corporation 2022-06-12
[40] 서적 Microcomputer Products Handbook http://bitsavers.org[...] Digital Equipment Corporation 2022-06-12
[41] 서적 PDP-11/34 system user's manual http://bitsavers.org[...] Digital Equipment Corporation 1977-07-01
[42] 서적 PDP-11/60 installation and operation manual http://bitsavers.org[...] Digital Equipment Corporation 1979-02-01
[43] 서적 PDP-11/24 System Technical Manual http://bitsavers.org[...] Digital Equipment Corporation 1981-06-01
[44] 특허 Device for automatically loading the central memory of electronic processors 1978-10-03
[45] 영상매체 Alberto Ciaramella racconta il brevetto del boostrap dei computer concepito in CSELT https://www.youtube.[...] 2021-11-13
[46] 서적 PDP-11/44 System Technical Manual http://bitsavers.org[...] Digital Equipment Corporation 1979-02-01
[47] 서적 VAX-11/780 Hardware User's Guide http://bitsavers.org[...] Digital Equipment Corporation 1979-02-01
[48] 서적 VAX-11/730 Central Processing Unit Technical Description http://bitsavers.org[...] Digital Equipment Corporation 1982-05-01
[49] 서적 VAX-11/750 Software Installation Guide http://bitsavers.org[...] Digital Equipment Corporation 1982-12-01
[50] 서적 Osborne 16-Bit Microprocessor Handbook http://www.bitsavers[...] OSBORNE/McGraw-Hill 2019-08-23
[51] 서적 Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3 (3A, 3B, 3C & 3D): System Programming Guide http://www.intel.com[...]
[52] 서적 Osborne 4&8-Bit Microprocessor Handbook Osborne/McGraw-Hill 1981-01-01
[53] 이미지 Apple Ad, Interface Age, October 1976
[54] 웹사이트 An Introduction to RISC-V Boot flow https://crvf2019.git[...] 2024-09-04
[55] 웹사이트 Why BIOS loads MBR into 7C00h in x86? http://www.glamenv-s[...] 2012-08-22
[56] 웹사이트 BIOS Boot Specification 1.01 https://acpica.org/s[...] 2017-12-21
[57] 웹사이트 UEFI shim loader https://github.com/r[...] GitHub 2023-10-28
[58] 서적 Windows NT Server Resource Kit Microsoft
[59] 웹사이트 Tint http://www.coreboot.[...] coreboot 2010-11-20
[60] 웹사이트 List of PC brands with their corresponding hot-keys https://www.disk-ima[...] 2020-09-26
[61] 웹사이트 How to Enter the BIOS on Any PC: Access Keys by Manufacturer https://www.tomshard[...] 2020-09-26
[62] 웹사이트 MontaVista Linux drives Dell's quick-boot feature http://archive.linux[...] linuxdevices.com 2010-11-20
[63] 웹사이트 SplashTop Linux On HP, Dell Notebooks? https://www.phoronix[...] Phoronix 2010-11-20
[64] 영상매체 Voodoo Envy's Instant-On IOS (powered by Splashtop) https://www.youtube.[...] YouTube 2010-11-20
[65] 웹사이트 iAPX 286 Programmer's Reference Manual http://bitsavers.org[...] Intel 2019-08-23
[66] 웹사이트 80386 Programmer's Reference Manual http://bitsavers.org[...] Intel 2013-11-03
[67] 웹사이트 Intel 64 and IA-32 Architectures Software Developer's Manual http://download.inte[...] Intel Corporation 2012-08-23
[68] 문서 The active partition may contain a Second-stage boot loader, e.g., OS/2 Boot Manager, rather than an OS.
[69] 웹사이트 Intel Platform Innovation Framework for EFI http://www.intel.com[...] Intel 2008-01-07
[70] 웹사이트 OpenBIOS - coreboot http://www.coreboot.[...] coreboot.org 2013-03-20
[71] 웹사이트 UEFI - OSDev Wiki https://wiki.osdev.o[...] 2020-09-26
[72] 웹사이트 Overview – The four bootloader stages http://processors.wi[...] Texas Instruments 2013-12-05
[73] 웹사이트 The boot process rxos 1.0rc1 documentation https://rxos.readthe[...] 2015-10-25
[74] 웹사이트 mjg59 {{!}} Boot Guard and PSB have user-hostile defaults https://mjg59.dreamw[...] 2022-11-30
[75] 웹사이트 Microsoft blocks UEFI bootloaders enabling Windows Secure Boot bypass https://www.bleeping[...] 2022-12-11
[76] 논문 Eleventh Annual International Workshop on Software Technology and Engineering Practice https://ieeexplore.i[...] 2004-12-27
[77] 뉴스 CrowdStrike IT outage affected 8.5 million Windows devices, Microsoft says https://www.bbc.com/[...] BBC News 2024-07-20
[78] 뉴스 BSOD error in latest CrowdStrike update https://www.eye.secu[...] Reddit 2024-07-19
[79] 뉴스 Inside the 78 minutes that took down millions of Windows machines https://www.theverge[...] The Verge 2024-07-23
[80] 서적 Networking Windows NT 4.0: Workstation and Server https://books.google[...] Wiley 1997
[81] 간행물 Disabling automatic reboot prevents possible reboot loop https://www.proquest[...] Element K Journals 2001-02
[82] 웹사이트 New Windows Server updates cause DC boot loops, break Hyper-V https://www.bleeping[...] 2022-05-17
[83] 웹사이트 Windows 10 update sending PCs into endless boot cycle: What to do https://www.tomsguid[...] 2021-01-21
[84] 웹사이트 Google has tried everything but building the best phone https://www.theverge[...] 2021-10-19
[85] 웹사이트 'It was unintentional,' says creator of 'cursed' Android wallpaper https://www.theweek.[...] 2022-05-19
[86] 웹사이트 Google thinks it has solved the mystery of the cursed bootlooping wallpaper https://www.androidp[...] 2020-06-04
[87] 웹사이트 Google Nest Hub gets a new UI that's so fresh it could bootloop your smart display https://www.androidp[...] 2022-03-29
[88] 웹사이트 Statement on Falcon Content Update for Windows Hosts https://www.crowdstr[...] 2024-07-19
[89] 웹사이트 CrowdStrike Update Pushing Windows Machines Into a BSOD Loop https://cybersecurit[...] 2024-07-19
[90] 웹사이트 CrowdStrike Falcon blue screen issue updates https://www.eye.secu[...] 2024-07-19
[91] 웹사이트 Botched security update breaks Windows worldwide, causing BSOD and crashes https://www.neowin.n[...] 2024-07-19
[92] 웹사이트 pull oneself up by one's bootstraps http://en.wiktionary[...]
[93] 웹사이트 Phrase Finder http://www.phrases.o[...] phrases.org.uk 2012-04-07
[94] 문서 EDSAC의 부트스트랩 과정 설명
[95] 웹사이트 パラメトロン計算機: Illiacのブートストラップ https://parametron.b[...]
[96] 간행물 The System Design of the IBM Type 701 Computer
[97] 웹사이트 Bootstrap http://dictionary.re[...] Dictionary.com 2012-04-07
[98] 웹사이트 Bootstrap http://www.thefreedi[...] TheFreeDictionary.com 2012-04-07
[99] 서적 Oxford English Dictionary Oxford University
[100] 문서 하인라인의 "부트스트랩" 어원 추측 및 邦題 "時の門" 유래 설명
[101] 서적 PDP-11 Peripherals Handbook DEC 1975
[102] 웹사이트 M792-YB bootstrap diode matrix http://decpicted.blo[...]
[103] 서적 From Gutenberg to the Internet 2005
[104] 웹사이트 Glossary of Multics acronyms and terms http://www.multician[...] 2010-01-18
[105] 웹사이트 Multics System Programmer's Manual - BC.4.01 System Initialization and Bootload http://www.multician[...] 1967-06-30
[106] 서적 Multics System Programmer's Manual http://www.multician[...] 1968-05-03
[107] 서적 The Unix Programmer's Manual http://www.cs.bell-l[...] 2008-01-07
[108] 특허 Device for automatically loading the central memory of electronic processors 1978-10-03
[109] 광고 Apple Ad [[File:Apple_1_Adver[...] Interface Age 1976-10
[110] 문서 Nicolet Instrument Corporation
[111] 웹사이트 Tint http://www.coreboot.[...] coreboot 2010-11-20
[112] 웹사이트 FAQ - Why do we need coreboot? http://www.coreboot.[...] coreboot 2010-11-20
[113] 웹사이트 Google tech talks - coreboot (aka LinuxBIOS): The Free/Open-Source x86 Firmware http://www.youtube.c[...] YouTube 2012-04-07
[114] 문서 MBR에 대한 설명
[115] 웹사이트 Intel Platform Innovation Framework for EFI http://www.intel.com[...] Intel 2008-01-07
[116] 문서 인텔 Macintosh BIOS 호환성 설명
[117] 웹사이트 OpenBIOS http://www.coreboot.[...] 2012-04-07
[118] 서적 z/Architecture Principles of Operation http://publibz.bould[...] IBM 2007-04-14
[119] 문서 제어 유닛과 장치 연결 설명
[120] 뉴스 MontaVista Linux drives Dell's quick-boot feature http://www.linuxdevi[...] linuxdevices.com 2010-11-20
[121] 웹사이트 SplashTop Linux On HP, Dell Notebooks? http://www.phoronix.[...] Phoronix 2010-11-20
[122] 웹사이트 Voodoo Envy's Instant-On IOS (powered by Splashtop) http://www.youtube.c[...] YouTube 2010-11-20
[123] 웹사이트 Voodoo Envy 133 Laptop vs MacBook Air http://www.gadgets-r[...] gadgets-reviews.com 2010-11-20
[124] 웹사이트 Voodoopc homepage http://www.voodoopc.[...] 2010-11-20
[125] 뉴스 5-second Linux boots on low-powered hardware http://www.linuxdevi[...] 2010-11-20
[126] 웹사이트 Latitude ON http://www.youtube.c[...] YouTube 2010-11-20
[127] 뉴스 Linux boots in 2.97 seconds http://www.linuxdevi[...] linuxdevices.com 2010-11-20
[128] 웹인용 Intel Platform Innovation Framework for EFI http://www.intel.com[...] 인텔 2008-01-07



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com