기동중

Booting
컴퓨터 부팅 흐름도

컴퓨팅에서 부팅은 버튼과 같은 하드웨어나 소프트웨어 명령을 통해 컴퓨터를 부팅하는 프로세스입니다.전원이 켜지면 컴퓨터의 중앙처리장치(CPU)는 메인 메모리에 소프트웨어가 없기 때문에 일부 프로세스가 실행되기 전에 소프트웨어를 메모리에 로드해야 합니다.CPU의 하드웨어 또는 펌웨어 또는 컴퓨터 시스템의 다른 프로세서로 실행할 수 있습니다.

컴퓨터를 재기동하는 것을 재기동이라고 부르기도 합니다.예를 들어, CPU의 전원이 오프에서 온으로 전환된 후나, 전원이 차단되지 않은 경우 등, 「하드」라고 하는 경우가 있습니다.시스템에 따라서는, 소프트 부트시에 의해서 RAM이 제로로 클리어 되는 경우가 있습니다.하드 부팅과 소프트 부팅은 모두 버튼 누름과 같은 하드웨어 또는 소프트웨어 명령으로 시작할 수 있습니다.통상, operating system이나 [nb 1]일부의 애플리케이션등의 가동중의 런타임·시스템에 도달하면, 기동이 완료됩니다.

컴퓨터를 sleep(suspension) 상태에서 되돌리는 프로세스에는 부팅이 포함되지 않습니다.단, 휴지 상태에서 복원하는 프로세스에는 부팅이 포함됩니다.적어도 일부 임베디드 시스템에서는 동작을 개시하는 데 현저한 부트 시퀀스가 필요하지 않으며, 전원을 켜면 ROM에 저장되어 있는 운영 프로그램만 실행할 수 있습니다.모든 컴퓨팅 시스템은 스테이트 머신이며 의도하지 않은 잠금 상태에서 지정된 제로 상태로 되돌리는 방법은 재부팅뿐일 수 있습니다.

부팅 프로세스에서는 운영 체제 또는 독립 실행형 유틸리티를 로드할 뿐만 아니라 운영 체제의 문제를 진단하기 위한 스토리지 덤프 프로그램도 로드할 수 있습니다.

부트부트스트랩[1][2] 또는 부트스트랩 로드의 줄임말로 부트스트랩[3][4]의해 자신을 끌어올리는 문구에서 유래합니다.이 사용법에서는 대부분의 소프트웨어가 이미 컴퓨터에서 실행 중인 다른 소프트웨어에 의해 컴퓨터에 로드되는 경우 초기 소프트웨어를 컴퓨터에 [5]로드하기 위한 메커니즘이 존재해야 한다는 점에 주의를 기울여야 합니다.초기 컴퓨터는 이 문제를 해결하기 위해 작은 프로그램을 메모리에 저장하기 위해 다양한 애드혹 방법을 사용했습니다.다양한 종류의 읽기 전용 메모리(ROM)의 발명은 지울 수 없는 부팅 프로그램을 컴퓨터에 탑재함으로써 이러한 모순을 해결했다.ROM의 용량이 증가함에 따라 더욱 정교한 시동 절차를 구현할 수 있게 되었습니다.

역사

ENIAC 프로그래밍에 사용되는 스위치 및 케이블(1946)

컴퓨터에 짧은 초기 프로그램을 로드하는 방법은 여러 가지가 있습니다.이러한 방법은 간단한 물리적 입력에서 보다 복잡한 프로그램을 저장할 수 있는 이동식 미디어에 이르기까지 다양합니다.

집적회로 ROM의 예

초기 컴퓨터

1940년대와 1950년대의 초기 컴퓨터는 프로그래밍에 몇 주가 걸릴 수 있는 독특한 엔지니어링 작업이었고 프로그램 로딩은 해결해야 할 많은 문제 중 하나였습니다.초기 컴퓨터인 ENIAC는 메모리에 저장된 프로그램이 없었지만 상호 연결 케이블 구성에 의해 각 문제에 대해 설정되었습니다.ENIAC에는 부트스트래핑이 적용되지 않았습니다.ENIAC의 하드웨어 구성은 전원을 켜자마자 문제를 해결할 수 있습니다.

두 번째로 구축된 저장 프로그램 컴퓨터인 EDSAC 시스템은 시작 버튼을 누르면 스테핑 스위치를 사용하여 고정 프로그램을 메모리로 전송했습니다.David Wheeler가 1948년 말에 완성한 이 장치에 저장된 프로그램은 천공 테이프에서 추가 명령을 로드한 후 [6][7]실행했습니다.

최초의 상용 컴퓨터

UNIVAC I 및 IBM 701[8] 같이 상업적으로 판매되는 최초의 프로그래밍 가능한 컴퓨터에는 작동을 간소화하는 기능이 포함되어 있습니다.일반적으로 완전한 입력 또는 출력 조작을 실행하는 명령이 포함되어 있습니다.같은 하드웨어 로직을 사용하여 펀치카드(가장 일반적인 것) 또는 부트스트랩 프로그램을 포함한 자기드럼이나 자기테이프 등의 기타 입력매체의 내용을 1개의 버튼을 눌러 로드할 수 있습니다.이 부팅 개념은 1950년대와 1960년대 초반의 IBM 컴퓨터에 대한 다양한 이름으로 불렸지만 IBM[9] 7030 Stretch에서 "초기 프로그램 로드"라는 용어를 사용했고 1964년 System/360을 시작으로 메인프레임 라인에 사용되었습니다.

IBM 1130(1965)용 초기 프로그램 로드 펀치 카드

IBM 701 컴퓨터(1952–1956)에는 로드 셀렉터 스위치의 위치에 따라 카드 리더천공 카드, 테이프 드라이브의 자기 테이프 또는 자기 드럼 장치에서 메인 메모리로 첫 36비트 단어를 읽기 시작하는 "로드" 버튼이 있었습니다.그리고 나서 왼쪽 18비트 하프워드는 명령어로 실행되며, 보통 추가 단어를 [10][11]메모리로 읽습니다.그런 다음 로드된 부팅 프로그램이 실행되었고, 이는 다시 해당 미디어에서 더 큰 프로그램을 인간 오퍼레이터의 도움 없이 메모리에 로드했습니다.IBM 704,[12] IBM 7090 [13]IBM 7094[14] 유사한 메커니즘을 가지고 있지만 장치마다 로드 버튼이 다릅니다."부트"라는 용어는 적어도 [15]1958년부터 이러한 의미로 사용되어 왔습니다.

1970년대의 IBM System/3 콘솔.프로그램 로드 셀렉터 스위치는 왼쪽 아래, 프로그램 로드 스위치는 오른쪽 아래입니다.

그 시대의 다른 IBM 컴퓨터들도 비슷한 기능을 가지고 있었다.예를 들어 IBM 1401 시스템(c. 1958년)은 카드 판독기를 사용하여 펀치된 카드에서 프로그램을 로드했습니다.펀치된 카드에 저장된 80자는 메모리 위치 001 ~ 080으로 읽혀지고 컴퓨터는 메모리 위치 001로 분기하여 첫 번째 저장된 명령을 읽습니다.이 순서는 항상 같았습니다.처음 80개의 메모리 위치에 있는 정보를 펀치된 카드 2, 3, 4 등의 정보를 조합하여 저장된 프로그램을 형성할 수 있는 어셈블리 영역으로 이동합니다.이 정보를 어셈블리 영역으로 이동하면 기계는 위치 080(카드 읽기)의 명령으로 분기하여 다음 카드를 읽고 해당 정보를 처리합니다.

다른 예로 IBM 650(1953)을 들 수 있습니다. IBM 650(1953)은 10진수 기계로 연산자 패널에 메모리 워드(주소 8000)로 주소 지정이 가능하고 명령으로 실행될 수 있는 10개의 스위치 그룹이 있습니다.따라서 스위치를 7004000400으로 설정하고 적절한 버튼을 누르면 카드 리더의 첫 번째 카드가 메모리(op 코드 70)로 읽혀지고 주소 400에서 시작하여 400으로 점프하여 해당 [16]카드로 프로그램을 실행합니다.IBM 70407044에는 이와 유사한 메커니즘이 있습니다. Load 버튼에 의해 전면 패널의 엔트리 키에 설정된 명령이 실행되고 설정된 채널에는 주소 00100에서 시작하는 메모리로 데이터를 전송하는 명령이 부여됩니다. 전송이 완료되면 CPU는 주소 00101로 [17]점프합니다.

IBM의 경쟁업체들도 단일 버튼 프로그램 로드를 제공했습니다.

  • CDC 6600(c. 1964년)에는 144개의 토글스위치가 있는 데드스타트 패널이 있습니다.데드스타트 스위치는 토글스위치에서 페리페럴프로세서(PP) 0의 메모리에 [18]12비트 워드를 입력하고 PP 0으로 메모리에 로드된 코드를 실행함으로써 로드시퀀스를 시작합니다.PP 0은 필요한 코드를 자체 메모리에 로드한 후 다른 PP를 초기화했습니다.
  • GE 645(c. 1965년)에는 "SYSTEM BOOTLOAD" 버튼이 있어 이 버튼을 누르면 I/O 컨트롤러 중 하나가 다이오드 읽기 전용 메모리에서 64워드 프로그램을 메모리에 로드하고 인터럽트를 전달하여 해당 프로그램이 [19]실행되도록 했습니다.
  • PDP-10의 첫 번째 모델에는 "READ IN" 버튼이 있습니다.이 버튼을 누르면 프로세서가 리셋되고 제어판의 스위치로 지정된 디바이스에서 I/O 조작을 시작합니다.이 버튼을 누르면 36비트 워드로 읽혀 다음 워드 읽기용 타깃 주소와 카운트를 알 수 있습니다.읽기가 완료되면 프로세서는 점프를 통해 코드 실행을 시작합니다.o마지막으로읽기[20]

Burroughs B1700에서는 부트스트랩 ROM도 유선 IPL 동작도 존재하지 않습니다.대신 시스템이 리셋되면 전면 패널에 장착된 카세트 테이프 드라이브에서 마이크로 명령을 순차적으로 읽고 실행합니다. 그러면 RAM에 부트 로더가 설정됩니다.[21]단, 이 방법에서는 시스템에 대한 가정을 거의 하지 않기 때문에 CPU의 중대한 [21]장애 발생 시에도 프론트 패널에 알기 쉬운 코드를 표시하는 진단(유지관리 테스트 루틴) 테이프를 로드하는 데 사용할 수 있습니다.

IBM System/360 및 후속 제품

IBM System/360 및 현재의 z/Architecture 시스템을 포함한 후속 시스템에서 부팅 프로세스는 IPL(Initial Program Load)로 알려져 있습니다.

IBM은 7030(Stretch)[9]을 위해 이 용어를 만들고 System/360의 설계를 위해 부활시켰으며,[22] 오늘날에도 이러한 환경에서 이 용어를 계속 사용하고 있습니다.System/360 프로세서에서는 컴퓨터 오퍼레이터가 세 개의 16진수 장치 주소(CUU, C=I/O 채널 주소, UU=제어 장치 및 장치[nb 2] 주소)를 선택한 후 LOAD 버튼을 눌러 IPL을 시작합니다.하이엔드 System/360 모델, 대부분의[nb 3] System/370 및 그 이후의 시스템에서는 스위치와 LOAD 버튼의 기능이 그래픽 콘솔 화면의 선택 가능한 영역(종종 IBM 2250 유사 장치 또는 IBM 3270[nb 4] 유사 장치)을 사용하여 시뮬레이션됩니다.예를 들어 System/370 Model 158에서는 키보드 시퀀스 0~7-X(그 순서로 제로, 7, X)에 의해 입력 영역에 입력된 디바이스 주소에서 IPL이 발생한다.Amdahl 470V/6 및 관련 CPU는 옵션의 두 번째 채널 유닛이 설치된 CPU에서 총 32개의 채널에서 4자리 16진수를 지원했습니다.이후 IBM은 16개 이상의 채널을 지원할 것입니다.

IBM Z 이전의 System/360 및 그 후계기 및 Amdahl과 같은 호환기의 IPL 기능은 운영자 지정 장치에서 실제 주소 0부터 주 스토리지로 24바이트를 읽습니다.8바이트의 두 번째 및 세 번째 그룹은 스타트업 프로그램의 로드를 계속하기 위해 Channel Command Words(CCW; 채널명령어 워드)로 취급됩니다(첫 번째 CCW는 항상 CPU에 의해 시뮬레이션되며 Read IPL 명령어로 구성됩니다).02h(명령어 체인 및 잘못된 길이 표시가 적용됨)I/O 채널명령어가 완료되면 8바이트의 첫 번째 그룹이 프로세서의 프로그램 상태 워드(PSW)에 로드되고 스타트업 프로그램은 PSW에 [22]의해 지정된 위치에서 실행을 시작합니다.IPL 디바이스는 보통 디스크드라이브이기 때문에 02h read-type 명령어의 특별한 의미가 있지만 테이프 드라이브나 카드 리더 등 다른 입력 타입 디바이스로부터의 IPL에서도 디바이스 의존성이 없는 방법으로 같은 절차를 사용하여 예를 들어 새로운 컴퓨터에서 운영체제를 설치할 수 있습니다.OS의 초기 배포용 자기 테이프디스크 컨트롤러의 경우 02h 명령어를 사용하면 선택한 디바이스가 0000h, 헤드 0000h, 시크 실린더 및 헤드 명령어 07h실린더링하고 레코드 01h를 검색하며 Search ID Equal 명령어 31h를 시뮬레이트하고 검색 및 검색을 테이프 및 카드 컨트롤러에서 시뮬레이션하지 않습니다.이러한 디바이스 클래스는 Read IPL 명령어입니다.단순히 순차적 읽기 명령어입니다.

디스크, 테이프 또는 카드 덱에는 실제 운영체제 또는 스탠드아론 유틸리티를 메인 스토리지에 로드하기 위한 특별한 프로그램이 포함되어 있어야 합니다.이를 위해 "IPL 텍스트"는 스탠드아론 DASDI(Direct Access Storage Device Initialization) 프로그램 또는 운영체제(ICKDSF)에서 실행되는 동등한 프로그램에 의해 디스크에 배치됩니다.단, IPL 대응 테이프 및 카드덱은 보통 이 'IPL 텍스트'가 이미 존재하는 상태로 배포됩니다.

IBM은 System/370 Extended Architecture(S/370-XA) 이상에 대한 세부 정보를 변경하고 z/Architecture용 새로운 유형의 IPL을 추가하는 등 IPL 프로세스에 몇 가지 진화적인 변화를 도입했습니다.

미니 컴퓨터

부트스트랩 프로그램 로드에 사용되는 스위치를 나타내는 PDP-8/E 전면 패널

미니컴퓨터는 Digital Equipment Corporation(DEC) PDP-5 및 PDP-8(1965) 이후 CPU를 사용하여 입출력 조작을 지원함으로써 설계를 심플화했습니다.이로 인해 비용은 절감되었지만 버튼을 한 번 누르는 것보다 부팅이 더 복잡해졌습니다.미니컴퓨터는 일반적으로 프론트 패널에 있는 일련의 스위치를 조작함으로써 짧은 프로그램을 전환할 수 있습니다.초기 미니컴퓨터는 전원이 꺼져도 정보가 손실되지 않는 마그네틱코어 메모리를 사용했기 때문에 이들 부트스트랩로더는 소거되지 않는 한 그대로 유지됩니다.프로그램 버그로 인해 모든 메모리가 오버로드되는 루프가 발생하여 소거가 우발적으로 발생할 수 있습니다.

이러한 단순한 형태의 부팅을 가진 다른 미니 컴퓨터로는 Hewlett-Packard의 HP 2100 시리즈(1960년대 중반), 원본 Data General Nova(1969년), DEC의 PDP-4(1962년)와 PDP-11(1970년) 등이 있습니다.

미니컴퓨터의 I/O 디바이스에서 읽기 조작을 일으키기 위해 필요한 I/O 조작은 일반적으로 디바이스 컨트롤러마다 다르기 때문에 디바이스마다 다른 부트스트랩 프로그램이 필요했습니다.

DEC는 이후 1971년에 최대 32워드(64바이트)의 부트스트랩 프로그램을 저장하는 PDP-11용 옵션 다이오드 매트릭스 읽기 전용 메모리를 추가했습니다.유니버스에 꽂아 32x16의 반도체 다이오드를 내장한 프린트 회로 카드 M792로 구성되었습니다.512개의 다이오드가 모두 장착된 상태에서 메모리는 모든 "1" 비트를 포함했습니다. 이 카드는 비트가 "제로"가 되는 각 다이오드를 잘라내 프로그래밍되었습니다.DEC는 또한 불필요한 [23][24]다이오드를 생략함으로써 많은 표준 입력 장치용으로 미리 프로그래밍된 카드 버전인 BM792-Yx 시리즈를 판매했습니다.

이전의 접근방식에 따라, 이전의 PDP-1에는 하드웨어 로더가 있어, 조작자는 「로드」스위치만을 눌러, 프로그램을 코어 메모리에 직접 로드하도록 종이 테이프 리더에 지시하면 됩니다.PDP-4에 대한 PDP-7,[25][26] PDP-9PDP-15[27] 후계기에는 종이 테이프에서 프로그램을 읽어내고 프로그램으로 이동하기 위한 Read-In 버튼이 추가되었습니다.Data General 초신성은 전면 패널 스위치를 사용하여 컴퓨터가 전면 패널의 데이터 스위치로 지정된 장치의 명령을 메모리에 자동으로 로드한 다음 로드된 [28]코드로 이동하도록 했습니다.

종이 테이프 리더를 탑재한 미니 컴퓨터에서는 부트 프로세스에서 실행되는 첫 번째 프로그램인 부트 로더는 체크섬이 있는 종이 테이프 또는 외부 기억 매체에서 운영 체제를 읽을 수 있는 2단계 부트 로더(종종 바이너리 로더) 중 하나를 코어 메모리에 읽습니다.부트 로더의 의사 코드는, 다음의 8개의 명령으로 간단하게 실시할 수 있습니다.

  1. 로 설정합니다.
  2. .
  3. 안 되어 있으면 2번으로합니다.
  4. 테이프가 9번으로.
  5. 를 인크리먼트 합니다.

와 관련된 예는 1970년대 Nicole Instrument Corporation 미니컴퓨터의 로더에 기초하고 있으며, Teletype Model 33 ASR 텔레프린터의 종이 테이프 리더 펀치 유닛을 사용하고 있습니다.2단계 로더의 바이트는 종이 테이프에서 역순으로 읽힙니다.

  1. 로 설정합니다.
  2. .
  3. 안 되어 있으면 2번으로합니다.
  4. 를 시킵니다.

7을 .위치 6의 명령이 실행된 후 위치 7은 2단 로더 실행을 시작한다.그런 다음 2단계 로더는 운영 체제가 들어 있는 테이프가 테이프 리더에 삽입될 때까지 기다립니다.부트로더와 2단계 로더의 차이점은 종이 테이프 읽기 오류를 트랩하기 위한 체크 코드 추가입니다.Teletype Model 33 ASR )) 、 「 )))))))))) 」(Friden Flexowriter ) 。

첫 번째 마이크로컴퓨터 부팅

Altair 8800(1975년에 처음 출시)이나 그보다 이전의 유사한 머신(인텔 8008 CPU 기반) 등 최초의 마이크로컴퓨터에는 부트스트랩 하드웨어가 없었습니다.[29]기동하면, CPU는 바이너리 제로만을 포함한 실행 가능한 코드를 포함한 메모리를 인식합니다.전원 투입시에 리셋 해 메모리를 클리어 합니다.이러한 기계의 전면 패널에는 주소와 데이터를 입력하기 위한 전환 스위치가 탑재되어 있으며, 컴퓨터 메모리 워드와 주소 버스의 비트당 1개의 스위치가 탑재되어 있습니다.하드웨어에 간단하게 추가할 수 있기 때문에 부트스트랩 코드를 저장하기 위해 이들 스위치에서 한 번에 하나의 메모리 위치를 로드할 수 있습니다.한편, CPU는 메모리 컨텐츠의 실행을 시도하지 않게 되었습니다.올바르게 로드되면 CPU는 부트스트래핑 코드를 실행할 수 있게 됩니다.이 프로세스는 이전의 여러 미니컴퓨터에서 사용되었던 것과 마찬가지로 지루하고 오류가 [30]없어야 했습니다.

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

회로 기판상의 인텔 2708 EPROM '칩"

마스크 프로그래밍ROM, Programmable ROM(PROM; 프로그래머블 ROM), Erasable Programmable ROM(EPROM; 소거 가능 프로그래머블 ROM) 및 플래시 메모리 등 다양한 변종과 함께 집적회로 Read-only Memory(ROM; 읽기 전용 메모리)의 도입으로 ROM의 물리 사이즈와 비용이 절감되었습니다.이것에 의해, 펌 웨어 기동 프로그램을 컴퓨터의 일부로서 포함할 수 있게 되었습니다.

미니 컴퓨터

Data General Nova 1200(1970)과 Nova 800(1971)에는 2개의 ROM 칩을 제공하는 옵션과 조합하여 이들 ROM 칩에서 메인 메모리에 프로그램을 로드하고 프로그램 [28]로드 스위치가 있습니다.Digital Equipment Corporation은 집적회로 기반의 BM873(1974),[31] M9301(1977),[32] M9312(1978),[33] REV11-A 및 REV11-C,[34][35] MRV11-C 및 MRV11-D[36] ROM 메모리를 모두 부트스트랩 ROM으로 사용할 수 있게 되었습니다.PDP-11/34(1976),[37] PDP-11/60(1977),[38] PDP-11/24(1979)[39] 및 그 이후의 대부분의 모델에는 부트 ROM 모듈이 포함되어 있습니다.

1975년 CSELT의 [40]Alberto Ciaramella에 의해 특허 취득된 "Gruppi Speciali"라고 불리는 이탈리아 전화 교환 컴퓨터에는 (외부) ROM이 포함되어 있습니다.Gruppi Speciali는 1975년부터 페라이트 코어가 아닌 반도체로 구성된 ROM 메모리에서 운영체제로 부팅되는 완전한 단일 버튼 기계였습니다.ROM 디바이스는 기본적으로 Gruppi Speciali의 컴퓨터에 내장되어 있지 않지만, 머신의 설계로 인해 원버튼 ROM 부팅이 가능했습니다(따라서 이 "부트스트랩 디바이스"는 PDP-11과 같은 아키텍처에 의존하지 않습니다).전원을 끈 후 기계 상태를 저장하는 것도 전화 [41]교환 대회에서 중요한 기능입니다.

일부 미니 컴퓨터 및 슈퍼 미니 컴퓨터에는 메인 프로세서를 부트스트랩하는 별도의 콘솔 프로세서가 포함되어 있습니다.PDP-11/44에는 콘솔 [42]프로세서로 Intel 8085가 탑재되어 있습니다.VAX-11/780은 32비트 슈퍼 미니컴퓨터의 VAX 시리즈 최초의 멤버로 LSI-11 기반의 콘솔 프로세서를 탑재하고 있습니다.[43][44]VAX-11/730은 8085 기반의 콘솔 프로세서를 탑재하고 있습니다.이러한 콘솔 프로세서는 다양한 스토리지 디바이스에서 메인 프로세서를 부팅할 수 있습니다.

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

통상, 마이크로프로세서는, 리셋 또는 전원 투입 상태 후에, 통상, 「특정 주소로부터 검출된 코드의 실행을 개시한다」또는 「특정 주소로부터 멀티바이트 코드를 검색해, 지정된 장소로 점프해 실행을 개시한다」라고 하는 형태로 기동 프로세스를 실행합니다.이 마이크로프로세서를 사용하여 구축된 시스템에서는 이러한 특수한 장소에 영속적인 ROM이 배치되어 있기 때문에 오퍼레이터의 도움 없이 시스템이 항상 동작을 시작합니다.를 들어 인텔 x86 프로세서는 항상 F000부터 시작하는 명령을 실행합니다.MOS [46][47]6502 프로세서의 경우 FFFD(MS 바이트) 및 FFFC(LS 바이트)의 2바이트 벡터 주소를 읽고 부트스트랩 [48]코드를 실행하기 위해 해당 위치로 점프함으로써 초기화가 시작됩니다.

1976년에 소개된 애플사의 첫 번째 컴퓨터인 애플 1은 상업용 컴퓨터에서 부팅 프로세스를 위한 전면 패널이 필요하지 않은 PROM 칩을 탑재했다.애플이 발표한 광고에 따르면 "스위치도 조명도 없다"고 한다.PROMS의 펌웨어를 사용하면 [49]키보드에서 프로그램 입력, 표시 및 디버깅(모두 16진수)이 가능합니다.

당시 읽기 전용 메모리가 소비되었기 때문에 Apple II 시리즈는 일련의 매우 작은 증분 단계를 사용하여 디스크 운영 체제를 부팅했으며, 각 단계마다 제어 권한을 점차적으로 더 복잡한 부팅 프로세스의 다음 단계로 넘어갔습니다.(Apple DOS: 부트로더 참조).ROM에 의존하는 디스크 운영체제는 거의 없었기 때문에 하드웨어도 매우 유연하고 다양한 맞춤형 디스크 복사 보호 메커니즘을 지원했습니다.(「소프트웨어 크래킹을 참조해 주세요. 이력).

일부 운영체제, 특히 1995년 이전의 Apple Macintosh 시스템은 하드웨어와 매우 밀접하게 결합되어 있기 때문에 표준 운영체제 이외의 운영체제를 기본적으로 부팅하는 것은 불가능합니다.이는 위의 스위치를 사용하는 시나리오와는 정반대입니다.모든 하드웨어가 정상적으로 동작하고 있는 한 유연성이 매우 높지만 비교적 에러 방지 및 오류 방지 기능이 있습니다.이러한 상황에서 일반적인 해결책은 시스템을 하이잭하고 대체 OS를 로드하는 표준 OS에 속하는 프로그램으로 작동하는 부트 로더를 설계하는 것입니다.이 기술은 A/UX Unix 구현을 위해 Apple에 의해 사용되었으며 다양한 프리웨어 운영 체제와 BeOS Personal Edition 5에 의해 복사되었습니다.

Atari ST 마이크로컴퓨터와 같은 일부 머신은 운영체제가 ROM에서 실행되면서 "인스턴트 온" 상태였습니다. 따라서 2차 또는 3차 저장소에서 OS를 검색하는 것은 부트스트래핑의 특징적인 작업 중 하나로서 제거되었습니다.시스템 커스터마이즈, 액세서리 및 기타 지원 소프트웨어를 자동으로 로드할 수 있도록 부팅 프로세스 중에 Atari의 플로피 드라이브에서 추가 컴포넌트를 읽었습니다.시스템이 추가 컴포넌트를 검색할 때 FD를 수동으로 삽입할 때까지의 타임아웃 지연이 있었습니다.빈 디스크를 삽입하면 이 문제를 방지할 수 있습니다.또한 Atari ST 하드웨어는 카트리지 슬롯이 Atari의 레거시 전자 게임 제작의 보류로서 게임용으로 네이티브 프로그램을 실행할 수 있도록 설계되었다. Spectre GCR 카트리지를 게임 슬롯에 삽입하고 Atari를 켜면 Macintosh 운영 체제를 "네이티브하게 부팅"할 수 있다.아타리 자신의 TOS보다 더요

IBM Personal Computer에는 BIOS라는 ROM 기반 펌웨어가 포함되어 있었습니다. 이 펌웨어의 기능 중 하나는 컴퓨터 전원을 켤 때 전원 켜기 자가 테스트를 수행한 다음 부팅 장치에서 소프트웨어를 읽어 실행하는 것이었습니다.IBM 개인용 컴퓨터의 BIOS와 호환되는 펌웨어는 IBM PC 호환 컴퓨터에서 사용됩니다.UEFI는 원래 Itanium 기반 머신을 위해 인텔에 의해 개발되었으며 이후 인텔 프로세서를 사용하는 Apple Mac을 포함한 x86 기반 머신의 BIOS 대체품으로 사용됩니다.

Unix 워크스테이션은 원래 벤더 고유의 ROM 기반 펌웨어를 가지고 있었습니다.Sun Microsystems는 나중에 OpenBoot(나중에 Open Firmware로 알려짐)을 개발하였고, 이 기술에는 Fourth 인터프리터가 포함되었으며 펌웨어의 대부분은 Fourth로 작성되었습니다.IEEE에 의해 IEEE 표준 1275-1994로 표준화되었습니다.이 표준을 구현하는 펌웨어는 PowerPC 기반 Mac 및 기타 PowerPC 기반 머신 및 Sun의 SPARC 기반 컴퓨터에서 사용되었습니다.Advanced RISC Computing 사양에서는 일부 MIPS 기반 및 Alpha 기반 머신 및 SGI Visual Workstation x86 기반 워크스테이션에 구현된 또 다른 펌웨어 표준을 정의하고 있습니다.

최신 부트 로더

컴퓨터의 전원이 꺼지면 운영 체제, 응용 프로그램 코드 및 데이터를 포함한 소프트웨어는 비휘발성 메모리에 저장된 상태로 유지됩니다.컴퓨터의 전원이 켜지면 일반적으로 RAM(Random-Access Memory)에 운영 체제나 로더가 없습니다.컴퓨터는 먼저 필요한 데이터와 함께 읽기 전용 메모리(ROM, 이후 EEPROM, NOR 플래시)에 저장된 비교적 작은 프로그램을 실행하여 CPU와 메인보드를 초기화하고 RAM(특히 x86 시스템)을 초기화하며 비휘발성 장치(일반적으로 NAND 플래시 등) 또는 운영체제가 사용하는 장치에 액세스합니다.RAM에 로딩할 수 있습니다.

이 시퀀스를 시작하는 작은 프로그램을 부트스트랩 로더, 부트스트랩 또는 부트 로더라고 합니다.많은 경우 다단계 부트 로더가 사용되며, 이 동안 체인 로딩 프로세스에서 복잡성이 증가하는 여러 프로그램이 차례로 로딩됩니다.

이전의 일부 컴퓨터 시스템은 인간 오퍼레이터 또는 주변기기로부터 부팅 신호를 수신하면 특정 위치에 있는 메모리에 매우 적은 수의 고정 명령을 로드하여 최소 1개의 CPU를 초기화하고 CPU를 해당 명령을 가리키고 실행을 시작할 수 있습니다.이러한 순서는, 통상, 일부의 페리페럴 디바이스로부터 입력 조작을 개시합니다(오퍼레이터에 의해서 스위치 선택 가능).다른 시스템에서는 하드웨어 명령어를 주변기기 또는 I/O컨트롤러에 직접 전송하여 매우 간단한 입력 조작(예를 들어 "시스템 디바이스의 섹터 0을 메모리에 읽기" 등)을 실행하여 소수의 부트로더 명령을 메모리에 효과적으로 로드하는 경우가 있습니다.이것은, 로부터의 완료 신호입니다.할 수 .

더 작은 컴퓨터의 경우 컴퓨터가 빨리 그리고 사전 결정한 소프트웨어 구성으로 시작하도록 기능은 떨어지지만 더욱 자동적으로 유연한 부트 로더 메커니즘을 사용합니다.많은 데스크 톱 컴퓨터, 예를 들어, 자동 처리 과정은 CPU실행 중인 소프트웨어 ROM(예를 들어, BIOS는 IBMPC의)에 미리 정의된 주소(몇몇 CPU인텔 x86시리즈를 포함하여 재설정 후 외부의 도움 없이 이 소프트웨어를 실행하도록 설계된다)에 수록된 시작한다.이 소프트웨어 rudimentary 기능 장치 booting에 참가할 자격이 한대와 특별 코너에 가장 유망한 장치의(가장 일반적으로 부트 섹터 부트), 일반적으로 그 부문의 시작 같은 고정된 진입점에서 작은 프로그램을 로드한 조사 포함되어 있다.

부트 로더, 크기 특히. 예를 들면, IBMPC와 compatibles에 트렁크를 코드는 마스터 부트 기록(MBR)며 이는 또 다시 단일 업종으로 제한되어 있는 파티션 부팅 기록(PBR), 서로 맞아야 한다;IBM시스템/360에 크기는 IPL 매체에 의해, 예를 들어, 카드 크기, 트랙 규모가 제한되어 있는 고유한 제약을 받게 될지도 모른다.

그러한 제약 조건과 시스템에서 첫번째 프로그램되어 램으로 로드된 충분히 운영 체제 로드하고, 대신에, 다른 로드해야 하 큰 프로그램 크지 않을 수도 있다.그 첫번째 프로그램되어 램으로 로드된 리그 1라운드 부트 로더, 그것을 로드합니다 프로그램은 단계 부트 로더로 불린다.

부트로더

리그 1라운드(Hardware 초기화 무대)bootloaders의 예는 BIOS, UEFI,coreboot, Libreboot과 다스 U-Boot을 포함한다.IBMPC에, 마스터를 부팅 기록(MBR)과 파티션 부팅 기록(PBR)의 부트 로더 시스템 메모리의 최소 32KB[50][51](나중에 64KB[52]으로 확장했다)그리고 오직 사용 지침은 원래 8088/8086 프로세서에서 지원하도록 코딩되어 있었다.

부트로더 2단계 부트로더

GNUGRUB, rEFInd, BOOTMGR, Syslinux, NTLDR 또는 iBoot 같은Second-stage(OS초기화 무대)부트 로더, 스스로지만과에 집행한 운영 시스템을 로딩할 수 있고 운영 시스템과 여분의 장치 드라이버 로드할 수 있자체 초기화합니다 시스템 작동하지 않는다.그 단계 부트 로더 자체 운용을 위해, 하지만을 하드웨어 기능성과 성능은 제한되는 대신, 일반적인 스토리지 접속 방법은 BIOS, UEFI 또는 오픈 펌웨어와 같은 시스템 펌웨어에 의해 사용할 것 운전자들이 필요하지 않다.[53]

많은 부트 로더(GNU GRUB, rEFInd, Windows의 BOOTMGR, Syslinux, Windows NT/2000/XP의 NTLDR 등)는 사용자에게 여러 부팅 옵션을 제공하도록 구성할 수 있습니다.이러한 옵션에는 다른 운영 체제(다른 파티션 또는 드라이브에서 듀얼 또는 멀티 부팅하는 경우), 같은 운영 체제의 다른 버전(새로운 버전에서 예기치 않은 문제가 발생할 경우), 다른 운영 체제 로드 옵션(예: rescue 또는 safe 모드로 부팅) 및 기능하는 일부 독립 실행형 프로그램이 포함됩니다.메모리 테스터(예를 들어 memtest86+), 기본 셸(GNU GRUB와 같은) 또는 심지어 게임(PC [54]부터 게임 목록 참조)과 같은 운영 체제가 없습니다.일부 부트 로더는 다른 부트 로더도 로드할 수 있습니다.예를 들어 GRUB은 Windows를 직접 로드하지 않고 BOOTMGR을 로드합니다.통상 디폴트 선택은 사용자가 키를 눌러 선택을 변경할 수 있는 시간 지연과 함께 미리 선택됩니다.이 지연이 지나면 기본 선택이 자동으로 실행되므로 대화 없이 일반 부팅이 가능합니다.

기동 프로세스는, 컴퓨터가 유저와 대화할 수 있는 상태가 되어 있는 경우나, operating system이 시스템 프로그램 또는 애플리케이션 프로그램을 실행할 수 있는 경우에 완료되는 것으로 간주할 수 있습니다.

많은 임베디드 시스템은 즉시 부팅해야 합니다.예를 들어 디지털 텔레비전이나 GPS 내비게이션 장치가 시작될 때까지 1분 동안 기다리는 것은 일반적으로 허용되지 않습니다.따라서 이러한 디바이스는 ROM 또는 플래시 메모리에 소프트웨어 시스템을 탑재하고 있기 때문에 디바이스는 즉시 기능을 시작할 수 있습니다.로드가 사전에 계산되어 ROM에 저장되기 때문에 로딩이 거의 필요하지 않습니다.

크고 복잡한 시스템에서는 운영체제 및 기타 프로그램이 로드되어 실행할 준비가 될 때까지 여러 단계로 진행되는 부팅 절차가 있을 수 있습니다.운영체제는 시작도 중지도 하지 않는 것처럼 설계되어 있기 때문에 부트 로더는 운영체제를 로드하고 그 시스템 내에서 단순한 프로세스로 자신을 구성한 후 제어권을 운영체제로 되돌릴 수 없게 이전할 수 있습니다.부트 로더는 다른 프로세스와 마찬가지로 정상적으로 종료됩니다.

네트워크 부팅

대부분의 컴퓨터는 컴퓨터 네트워크를 통해 부팅할 수도 있습니다.이 시나리오에서는 운영체제는 서버의 디스크에 저장되며 TFTP(Trivial File Transfer Protocol) 의 간단한 프로토콜을 사용하여 클라이언트에 전송됩니다.이러한 부품이 전송되면 OS가 부팅 프로세스의 제어를 이어받습니다.

2단계 부트 로더와 마찬가지로 네트워크 부팅은 네트워크 인터페이스의 부트 ROM에 의해 제공되는 범용 네트워크 액세스 방식을 사용하여 시작됩니다.이 방법에는 일반적으로 PXE(Preboot Execution Environment) 이미지가 포함되어 있습니다.드라이버는 필요 없습니다만, OS의 커널과 드라이버를 전송해 기동할 때까지, 시스템의 기능은 제한됩니다.그 결과, ROM 베이스의 기동이 완료하면, 네트워크 인터페이스를 사용할 수 없는 operating system에의 네트워크 기동이 완전하게 가능하게 됩니다.

퍼스널 컴퓨터(PC)

부트 디바이스

Windows To Go 부터블 플래시 드라이브, 라이브 USB 예시

부트 디바이스는 운영 체제가 로드되는 디바이스입니다.최신 PC의 UEFI 또는 BIOS 펌웨어는 다양한 장치(일반적으로 로컬 솔리드 스테이트 드라이브 또는 하드 디스크 드라이브)에서 GPT 또는 MBR(마스터 부트 레코드), 옵티컬 디스크 드라이브(El Torito 사용), USB 대용량 스토리지 장치(FTL 기반 플래시 드라이브, SD 또는 USB 카드 멀티미디어 카드)의 마스터 부트 레코드(MBR)를 통해 부팅을 지원합니다.또는 네트워크 인터페이스 카드(PXE 사용)를 사용할 수 있습니다.오래된 일반적인 BIOS 부팅 가능 디바이스에는 플로피 디스크 드라이브, Zip 드라이브 및 LS-120 드라이브가 있습니다.

통상, 시스템의 펌 웨어(UEFI 또는 BIOS)에 의해서, 유저는 기동 순서를 설정할 수 있습니다.기동 순서가 「첫 번째, DVD 드라이브, 두 번째, 하드 디스크 드라이브」로 설정되어 있는 경우, 펌 웨어는 DVD 드라이브로부터 기동하려고 합니다.또, 드라이브에 DVD가 없는 경우 등)에는, 로컬 하드 디스크 드라이브로부터 기동하려고 합니다.

예를 들어, 하드 드라이브에 Windows 가 인스톨 되어 있는 PC 에서는, 유저는, 상기의 순서로 기동 순서를 설정하고 나서, Linux Live CD 를 삽입해, 하드 드라이브에 operating system을 인스톨 하지 않고 Linux 를 시험할 수 있습니다.이것은 듀얼 부팅의 입니다.사용자는 컴퓨터가 POST(Power-On Self-Test)를 실행한 후에 기동할 OS를 선택합니다.이 듀얼 부트 예에서는 사용자가 컴퓨터에서 DVD를 삽입 또는 분리하여 선택하지만 선택한 디바이스의 부팅 매니저 메뉴에서 선택하거나 컴퓨터 키보드를 사용하여 BIOS 또는 UEFI 부팅 메뉴에서 선택하거나 둘 다 선택하여 부팅할 운영 체제를 선택하는 것이 일반적입니다. 일반적으로 부팅 메뉴는 사전 설정에 의해 입력됩니다.인식하다F8 또는 키를 누릅니다.일반적으로 BIOS [55][56]셋업은 POST 중에 또는 키를 눌러 시작합니다.

인터넷 액세스 등 다양한 간단한 작업을 위해 보통 Linux의 변형으로 빠르게 부팅할 수 있는 디바이스가 몇 개 있습니다.를 들어 Splashtop이나 Latitude [57][58][59]ON 등이 있습니다.

Sequence

FreeB16진수 덤프SD 부트0 MBR
부팅 시 2000년 이후 소프트웨어 BIOS 수상

IBM 호환 개인용 컴퓨터의 x86 CPU는 시작할 때 리셋 벡터(16비트 x86[60] 프로세서의 경우 물리적 메모리 주소 FFFF0h 및 32비트 및 64비트[61][62] x86 프로세서의 경우 FFFFF0h)에 위치한 명령으로, 일반적으로 ROM 내부의 펌웨어(UEFI 또는 BIOS) 엔트리를 가리킵니다.일반적으로 이 메모리 위치에는 펌웨어(UEFI 또는 BIOS) 부팅 프로그램의 위치로 실행을 전송하는 점프 명령이 포함되어 있습니다.이 프로그램은, 메인 메모리(DRAM), PCI 버스, PCI 디바이스(임베디드 옵션 ROM 를 실행하는 것을 포함한다)의 필요한 디바이스를 체크 및 초기화하기 위해서, POST실행합니다.가장 중요한 절차 중 하나는 SPD 에서 DRAM을 설정하는 것입니다.이 때 메모리가 매우 한정되어 있기 때문에 더욱 복잡해집니다.

필요한 하드웨어를 초기화한 후 펌웨어(UEFI 또는 BIOS)는 부팅 가능한 디바이스를 찾을 때까지 미리 구성된 비휘발성 스토리지 디바이스 목록("부팅 디바이스 시퀀스")을 확인합니다.부트 가능한 MBR 디바이스는 읽기 가능한 디바이스로 정의되며, 첫 번째 섹터의 마지막 2바이트에는 바이트 시퀀스 55h,[nb 5] 디스크 상의 AAh(MBR 부트 시그니처라고도 함) 또는 섹터 내의 코드가 x86 PC 상에서 실행 가능한 것으로 확립되어 있습니다.

BIOS는 부트 가능한 디바이스를 검출하면, 부트 섹터를 리니어 주소 7C00h(통상세그먼트:오프셋 0000h:[50][52]: 29 7C00h이지만, 일부 BIOS에서는 07C0h:0000h[citation needed] 잘못 사용하고 있다)로 로드해, 실행을 부트 코드로 전송 합니다.하드 디스크의 경우는, 이것을 마스터 부트 레코드(MBR)라고 부릅니다.기존 MBR 코드는 MBR의 파티션 테이블에서 부트 가능한 파티션[nb 6] 세트(액티브플래그가 설정된 파티션)를 확인합니다.액티브 파티션이 발견되면 MBR 코드는 Volume Boot Record(VBR; 볼륨부트 레코드)라고 불리는 파티션에서 부트 섹터 코드를 로드하여 실행합니다.MBR 부트 코드는 운영시스템에 따라 다를 수 있습니다.

부트 섹터 코드는 1단계 부트 로더입니다.고정 디스크와 리무버블드라이브배치되어 4개의 파티션 엔트리와 2바이트 부트 시그니처가 있는 기본 64바이트 파티션 테이블을 위한 공간을 확보하기 위해 마스터 부트 레코드의 첫 번째 446바이트에 장착해야 합니다.BIOS는 적절한 부트 로더에 필요한 공간을 확보하거나 4개 이상의 추가 기능을 필요로 합니다.파티션 엔트리(최대 16바이트, 각각 16바이트), 디스크 시그니처(6바이트), 디스크 타임스탬프(6바이트), Advanced Active Partition(18바이트) 또는 특수 멀티부트 로더도 일부 환경에서 지원되어야 합니다.플로피superfloppy Volume Boot Records에서는 DOS 4.0 이후 FAT12 및 FAT16 볼륨에서 확장 BIOS 파라미터 블록에 최대 59바이트가 사용되는데 반해 DOS 7.1에서 도입된 FAT32 EBPB는 87바이트가 필요하며 섹터 크기가 512바이트라고 가정할 경우 부트 로더에 423바이트만 남습니다.따라서 Microsoft 부트 섹터는 전통적으로 부트 프로세스에 일정한 제한을 가했습니다.예를 들어 부트 파일은 파일시스템의 루트 디렉토리의 고정 위치에 배치되어 연속되는 [63][64]섹터로 저장되어야 합니다.이러한 조건에서는,SYS명령어 및 DOS의 최신 버전의 [64][nb 7]DOS에서는 약간 완화됩니다.그 후 부트로더는 파일의 처음 3개의 섹터를 메모리에 로드할 수 있게 되었습니다.이 [64]섹터에는 나머지 파일을 메모리에 로드할 수 있는 다른 내장 부트 로더가 포함되어 있었습니다.Microsoft는 LBA 및 FAT32 지원을 추가했을 때 크기를 이유로 두 개 이상의 물리 섹터에 도달하고 386 명령을 사용하는 부트 로더로 전환하기도 했습니다.동시에 다른 벤더는 최소한의 메모리(32KB)와 프로세서 지원(8088/8086)[nb 8]만으로 기존의 제약을 완화하지 않고 하나의 부트 섹터에 훨씬 더 많은 기능을 집약할 수 있었습니다.예를 들어 DR-DOS 부트 섹터는 FAT12, FAT16 및 FAT32 파일 시스템에서 부트 파일을 찾아 CHS 또는 LBA를 통해 전체적으로 메모리에 로드할 수 있습니다.이 파일은 고정 위치나 연속되는 [65][50][66][67][68][nb 9][nb 8]섹터에 저장되지 않은 경우에도 마찬가지입니다.

VBR은 대부분의 경우 OS에 고유하지만 주요 기능은 운영체제 부트 로더 파일을 로드하고 실행하는 것입니다.bootmgr또는ntldr액티브 파티션으로부터의 2단계 부트 로더입니다.그런 다음 부트 로더가 스토리지 디바이스에서 OS 커널을 로드합니다.

액티브 파티션이 없거나 액티브 파티션의 부트 섹터가 비활성화된 경우 MBR은 (많은 경우 사용자 입력을 통해) 파티션을 선택하고 부트 섹터를 로드하는 세컨더리 부트 로더를 로드할 수 있습니다.이 부트로더는 보통 대응하는 운영체제 커널을 로드합니다.경우에 따라서는 MBR이 액티브한 파티션을 부트하기 전에 세컨더리 부트 로더를 로드하려고 할 수도 있습니다.그 외의 모든 것이 실패했을 경우는, INT 18h[52][50]BIOS 인터럽트 콜(INT 18h 가 복귀하는 경우에 대비해 INT 19h 에 이어)을 발행해, BIOS 에 제어를 되돌려 다른 디바이스로부터 기동해,[50] 네트워크를 개입시켜 리모트 기동을 시도합니다.

최신 시스템(인텔 Mac 및 최신 PC)의 대부분은 UEFI를 [69][70]사용합니다.

BIOS와 달리 UEFI(CSM 경유 레거시 부트 아님)는 부트 섹터에 의존하지 않으며 UEFI 시스템은 부트로더(EFI 애플리케이션 파일)를 USB 디스크 또는 EFI 시스템 파티션에 직접 [71]로드하고 OS 커널은 부트로더에 의해 로드됩니다.

기타 종류의 부트 시퀀스

Android 장치의 잠금 해제된 부트로더로 사용 가능한 추가 옵션 표시

현대의 많은 CPU, SoC 및 마이크로 컨트롤러(를 들어 TI OMAP) 또는 디지털 신호 프로세서(DSP)는 실리콘에 직접 내장되어 있을 수 있습니다.따라서 이러한 프로세서는 자체적으로 간단한 부트 시퀀스를 실행하고 NAND 또는 eMMC 등의 부트 소스에서 부트 프로그램(펌웨어 또는 소프트웨어)을 로드할 수 있습니다.그것은 어렵습니다.이러한 디바이스 처리에 필요한 모든 로직을 유선 접속하기 위해 대신 통합 부트 ROM이 사용됩니다.또한 부트 ROM은 UART, SPI, USB 등의 시리얼 인터페이스를 통해 부트 로더 또는 진단 프로그램을 로드할 수 있습니다.이 기능은 시스템 복구 목적으로 자주 사용되거나 비휘발성 메모리에 사용 가능한 소프트웨어가 아직 없을 때 초기 비휘발성 메모리 프로그래밍에도 사용할 수 있습니다.최신 마이크로 컨트롤러(일부 USB 플래시 드라이브의 플래시 메모리 컨트롤러 등)의 대부분은 펌웨어 ROM을 실리콘에 직접 내장하고 있습니다.

일부 임베디드 시스템 설계에는 중간 부트 시퀀스 단계가 포함되어 있을 수도 있습니다.를 들어 Das U-Boot은 2단계로 나눌 수 있습니다.플랫폼은 U-Boot의 분해 버전인 작은 SPL(Secondary Program Loader)을 로드하고 SPL은 몇 가지 초기 하드웨어 구성(를 들어 CPU 캐시를 RAM으로 사용하여 DRAM 초기화)을 수행하고 더 크고 완전한 기능을 갖춘 버전의 [72]U-Boot을 로드합니다.

JTAG 등의 하드웨어 디버깅인터페이스를 사용하여 시스템을 제어할 수도 있습니다.이러한 인터페이스는 프로세서 코어에 비휘발성 메모리를 프로그래밍하기 위해 필요한 액션을 실행하도록 지시함으로써 부트 로더 프로그램을 부트 가능한 비휘발성 메모리(플래시 등)에 쓸 수 있습니다.또는 디버깅 인터페이스를 사용하여 진단 코드 또는 부트 코드를 RAM에 업로드하고 프로세서코어를 기동하여 업로드된 코드를 실행하도록 지시할 수도 있습니다.이것에 의해, 예를 들면, 서포트되고 있는 부트 디바이스에 소프트웨어가 남아 있지 않은 경우나, 프로세서에 내장 부트 ROM 이 없는 경우, 임베디드 시스템을 회복할 수 있습니다.JTAG는 표준적이고 일반적인 인터페이스입니다.CPU, 마이크로 컨트롤러, 및 그 외의 디바이스는 JTAG 인터페이스(2009년 현재)로 제조되고 있습니다.

일부 마이크로 컨트롤러는 시스템을 임의로 제어하거나 코드를 직접 실행하는 데 사용할 수 없는 특수한 하드웨어 인터페이스를 제공하지만 대신 간단한 프로토콜을 통해 부팅 코드를 부팅 가능한 비휘발성 메모리(플래시 메모리 등)에 삽입할 수 있습니다.그런 다음 제조 단계에서 이러한 인터페이스를 사용하여 비휘발성 메모리에 부트 코드(및 기타 코드)를 주입합니다.시스템 리셋 후 마이크로컨트롤러는 비휘발성 메모리에 프로그래밍된 코드를 실행하기 시작합니다.일반 프로세서가 부팅에 ROM을 사용하는 것과 같습니다.특히 이 기술은 Atmel AVR 마이크로컨트롤러 및 다른 컨트롤러에 의해 사용됩니다.대부분의 경우 이러한 인터페이스는 유선 연결된 논리에 의해 구현됩니다.다른 경우에는 GPIO 에서 내장 온칩 부트 ROM으로 실행되는 소프트웨어에 의해 이러한 인터페이스가 생성될 수 있습니다.

대부분의 DSP에는 시리얼 모드부트 및 호스트 포트 인터페이스(HPI 부트) 등의 병행 모드부트가 있습니다.

DSP의 경우 시스템 설계에 보조 마이크로프로세서 또는 마이크로컨트롤러가 있는 경우가 많습니다.이는 시스템 전체의 동작, 인터럽트 처리, 외부 이벤트 처리, 사용자 인터페이스 등을 담당하며 DSP는 신호 처리 태스크 전용입니다.이러한 시스템에서는, 호스트 프로세서(호스트 포토에 이름을 붙이는 것)라고 불리는 다른 프로세서에 의해서 DSP 를 기동할 수 있습니다.이러한 프로세서는 보통 자신의 메모리에서 먼저 부팅한 후 DSP 부팅을 포함한 전체 시스템 동작을 제어하고 DSP 동작을 더 제어하기 때문에 마스터라고도 합니다.DSP에는 자체 부트 메모리가 없기 때문에 필요한 코드를 호스트 프로세서에 대신 의존합니다.이러한 설계의 가장 주목할 만한 시스템은 휴대폰, 모뎀, 오디오 및 비디오 플레이어 등이며 DSP와 CPU/마이크로 컨트롤러가 공존합니다.

많은 FPGA 칩은 전원을 켤 때 외부 시리얼 EEPROM("구성 ROM")에서 구성을 로드합니다.

「 」를 참조해 주세요.

메모들

  1. ^ 데몬도 포함해서.
  2. ^ UU는 종종 Uu, U=Control Unit Address, u=Device Address 형식이었지만 일부 제어 유닛은 8개의 디바이스만 연결했고 일부는 16개 이상을 연결했습니다.실제로 3830 DASD 컨트롤러는 32 드라이브 주소 지정을 옵션으로 제공했습니다.
  3. ^ 3210 또는 3215 콘솔타자기 사용 370/145 및 370/155 제외.
  4. ^ S/360만이 2250을 사용했으며 360/85, 370/165 및 370/168은 다른 어떤 것과도 호환되지 않는 키보드/디스플레이 장치를 사용했습니다.
  5. ^ 오프셋 시 서명+1FEh부트 섹터에서는55h AAh,그것은55h오프셋으로+1FEh그리고.AAh오프셋으로+1FFhlittle-endian 표현은 IBM PC 호환기의 컨텍스트에서 가정해야 하므로 16비트 단어로 작성할 수 있습니다.AA55hx86 프로세서용 프로그램(스왑 순서 주의)에서는, 다음과 같이 기술할 필요가 있습니다.55AAhBig-endian 표현을 사용하여 다른 CPU 아키텍처용 프로그램에서 사용할 수 있습니다.이 내용은 서적이나 원래의 Microsoft 레퍼런스 문서에서도 여러 번 혼재되어 있기 때문에, 이 문서에서는, 오해를 피하기 위해서, 디스크상의 오프셋 베이스의 바이트 단위의 표현을 사용하고 있습니다.
  6. ^ 액티브 파티션에는 OS가 아닌 OS/2 Boot Manager 등의 2단계 부트 로더가 포함되어 있을 수 있습니다.
  7. ^ PC DOS 5.0 매뉴얼에는 시스템파일을 연속할 필요가 없다고 잘못 기재되어 있습니다.그러나 부팅 프로세스가 작동하려면 시스템 파일이 IBMB의 처음 2개의 디렉토리 엔트리와 처음 3개의 섹터를 점유해야 합니다.IO.COM은 아직 동시에 저장해야 합니다.SYS는 이러한 요건을 계속 처리합니다.
  8. ^ a b 예를 들어, MS-DOS/PC DOS와 비교하여 DR-DOS MBR부트 섹터의 확장 기능은 어셈블리 언어로 된 기존의 코드 최적화 기술을 7.05까지 사용하여 여전히 달성될 수 있었지만, LBA, FAT32 LOAD의 추가자체 수정, 운영 코드 지원에 의존해야 했다.l 기계어로 프로그래밍, (부팅된) 부작용의 제어된 이용, 다단계 데이터/코드 오버랩 및 알고리즘 폴딩 기술. 는 멀티부트 및 체인 로드 시나리오에서 다른 운영체제와의 역호환성 및 교차호환성 요건이었다.
  9. ^ DR-DOS VBR이 IBMB 전체를 로드하는 규칙에는 예외가 하나 있습니다.IO.COM 파일을 메모리에 저장: IBMB가IO.COM 파일이 약 29KB보다 크면 파일 전체를 메모리에 로드하려고 하면 부트 로더가 스택을 덮어쓰고 재배치된 Disk Parameter Table(DPT/FDPB)을 덮어씁니다.따라서 DR-DOS 7.07 VBR은 파일의 처음 29KB만 메모리에 로드하고 IBMB의 첫 부분에 내장된 다른 로더에 의존합니다.IO.COM: 이 상태를 확인하고 필요한 경우 나머지 파일을 메모리에 로드합니다.IBMB로 호환성 문제는 발생하지 않습니다.IO.COM 의 사이즈는, 이 로더가 없는 이전 버전에서는, 이 제한을 초과한 적이 없습니다.듀얼 엔트리 구조와 조합하면 PC DOS VBR에 의해 시스템을 로드할 수 있습니다. VBR은 파일의 처음 3개의 섹터만 메모리에 로드합니다.

레퍼런스

  1. ^ "bootstrap". Computer Dictionary of Information Technology.
  2. ^ "Bootstrap". The Free Dictionary.
  3. ^ "Pull oneself up by bootstraps". Idioms by The Free Dictionary. Retrieved 2019-10-07.
  4. ^ "Bootstrap Definition". Tech Terms. Retrieved 2019-10-02.
  5. ^ "Pull yourself up by your bootstraps". The Phrase Finder.
  6. ^ Campbell-Kelly, Martin (1980). "Programming the EDSAC". IEEE Annals of the History of Computing. 2 (1): 7–36. doi:10.1109/mahc.1980.10009.
  7. ^ Wilkes, Maurice V.; Wheeler, David J.; Gill, Stanley (1951). The Preparation of Programs for an Electronic Digital Computer. Addison-Wesley.
  8. ^ Buchholz, Werner (1953). "The System Design of the IBM Type 701 Computer" (PDF). Proceedings of the I.R.E. 41 (10): 1273.
  9. ^ a b "IBM 7619 Exchange". Reference Manual 7030 Data Processing System (PDF). IBM. August 1961. pp. 125–127. A22-6530-2.
  10. ^ Principles of Operation Type 701 And Associated Equipment (PDF). IBM. 1953. p. 26. Retrieved 2012-11-09.
  11. ^ 구텐베르크에서 인터넷으로, 제레미 M.Norman, 2005, 436페이지, ISBN 0-930405-87-0
  12. ^ 704 Electronic Data-Processing Machine Manual of Operation (PDF). IBM. pp. 14–15.
  13. ^ Operator's Guide for IBM 7090 Data Processing System (PDF). IBM. p. 34.
  14. ^ IBM 7094 Principles of Operation (PDF). IBM. p. 146.
  15. ^ Oxford English Dictionary. Oxford University. 1939.
  16. ^ 650 magnetic drum data-processing machine manual of operation (PDF). IBM. 1955. pp. 49, 53–54.
  17. ^ Operator's Guide for IBM 7040-7044 Systems (PDF). IBM. p. 10. A22-6741-1.
  18. ^ CONTROL DATA 6600 Computer System Reference Manual (PDF) (Second ed.). Control Data Corporation. August 1963. p. 53.
  19. ^ GE-645 System Manual (PDF). General Electric. January 1968. Retrieved 2019-10-30.
  20. ^ PDP-10 System Reference Manual, Part 1 (PDF). Digital Equipment Corporation. 1969. pp. 2–72. Retrieved 2012-11-09.
  21. ^ a b Burroughs B 1700 Systems Reference Manual (PDF). Burroughs Corporation. November 1973. p. 1-14.
  22. ^ a b z/Architecture Principles of Operation (PDF). IBM. September 2005. pp. Chapter 17. Retrieved 2007-04-14.
  23. ^ BM792 read-only-memory and MR11~DB bootstrap loader (PDF). Digital Equipment Corporation. January 1974. DEC-II-HBMAA-E-D.
  24. ^ PDP-11 Peripherals Handbook (PDF). Digital Equipment Corporation. 1976. p. 4-25.
  25. ^ Programmed Data Processor-7 Users Handbook (PDF). Digital Equipment Corporation. 1965. p. 143.
  26. ^ PDP-9 User Handbook (PDF). Digital Equipment Corporation. January 1968. p. 10-3.
  27. ^ PDP-15 Systems Reference Manual (PDF). Digital Equipment Corporation. August 1969. p. 10-3.
  28. ^ a b How To Use The Nova Computers (PDF). Data General. April 1971. p. 2-30.
  29. ^ "Oldcomputers: Altair 8800b". Retrieved 2019-12-10.
  30. ^ Holmer, Glenn. Altair 8800 loads 4K BASIC from paper tape.
  31. ^ BM873 restart/loader (PDF). Digital Equipment Corporation. April 1974. DEC-11-H873A-B-D.
  32. ^ M9301 bootstrap/terminator module maintenance and operator's manual (PDF). Digital Equipment Corporation. June 1977. EK-M9301-TM-OO1.
  33. ^ M9312 bootstrap/terminator module technical manual (PDF). Digital Equipment Corporation. March 1981. EK-M9312-TM-OO3.
  34. ^ Microcomputer Interfaces Handbook (PDF). Digital Equipment Corporation. 1981. p. 17.
  35. ^ "10 MRV11-C Read-Only Memory Module". Microcomputer Products Handbook (PDF). Digital Equipment Corporation. 1985.
  36. ^ "11 MRVll·D Universal Programmable Read.Only Memory". Microcomputer Products Handbook (PDF). Digital Equipment Corporation. 1985.
  37. ^ PDP-11/34 system user's manual (PDF). Digital Equipment Corporation. July 1977. pp. 1–5, 2-1–2-12. EK-11034-UG-001.
  38. ^ PDP-11/60 installation and operation manual (PDF). Digital Equipment Corporation. February 1979. pp. 1–10, 2-29–2-34, 3-1–3-6. EK-11060-OP-003.
  39. ^ PDP-11/24 System Technical Manual (PDF). Digital Equipment Corporation. June 1981. p. 1-6. EK-11024-TM-001.
  40. ^ 키아라멜라, 알베르토"전자 프로세서의 중앙 메모리를 자동으로 로드하는 장치" 미국 특허 제4,117,974호 1978-10-03호(1975년 제출)
  41. ^ Alberto Ciaramella racconta il brevetto del boostrap dei computer concepito in CSELT [Alberto Ciaramella discusses the patent for bootstrapping computers conceived at CSELT] (in Italian). Archived from the original on 2021-11-13.
  42. ^ PDP-11/44 System Technical Manual (PDF). Digital Equipment Corporation. February 1979. p. 6-57. EK-KD11Z-TM-001.
  43. ^ VAX-11/780 Hardware User's Guide (PDF). Digital Equipment Corporation. February 1979. 2.3 BOOTSTRAPPING and 3.6.1 Boot Command (B). EK-11780-UG-001.
  44. ^ VAX-11/730 Central Processing Unit Technical Description (PDF). Digital Equipment Corporation. May 1982. p. 1-9. EK-KA730-TD-001.
  45. ^ VAX-11/750 Software Installation Guide (PDF). Digital Equipment Corporation. December 1982. pp. 1-2–1-4, B-1–B-8, C-1–C-2. AA-K410C-TE.
  46. ^ Osborne, Adam; Kane, Gerry (1981). Osborne 16-Bit Microprocessor Handbook (PDF). pp. 5–27. ISBN 0-931988-43-8. Retrieved 2019-08-23.
  47. ^ Intel 64 and IA-32 Architectures Software Developer's Manual Volume 3 (3A, 3B, 3C & 3D): System Programming Guide (PDF).
  48. ^ Osborne, Adam; Kane, Gerry. Osborne 4&8-Bit Microprocessor Handbook. pp. 10–20. ISBN 0-931988-42-X.
  49. ^ Apple Ad, Interface Age, 1976년 10월
  50. ^ a b c d e Paul, Matthias R. (1997-10-02) [1997-09-29]. "Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM - README.TXT and BOOT.TXT - A short description of how OpenDOS is booted". Archived from the original on 2003-10-04. Retrieved 2009-03-29. [1]
  51. ^ Sakamoto, Masahiko (2010-05-13). "Why BIOS loads MBR into 7C00h in x86?". Glamenv-Septzen.net. Retrieved 2012-08-22.
  52. ^ a b c Compaq Computer Corporation; Phoenix Technologies Ltd; Intel Corporation (1996-01-11). "BIOS Boot Specification 1.01" (PDF). Retrieved 2017-12-21.
  53. ^ "Chapter 6 - Troubleshooting Startup and Disk Problems". Windows NT Server Resource Kit. Microsoft. Archived from the original on 2007-05-15.
  54. ^ "Tint". coreboot. Retrieved 2010-11-20.
  55. ^ "List of PC brands with their corresponding hot-keys". www.disk-image.com. Retrieved 2020-09-26.
  56. ^ "How to Enter the BIOS on Any PC: Access Keys by Manufacturer Tom's Hardware". www.tomshardware.com. Retrieved 2020-09-26.
  57. ^ Brown, Eric (2008-10-02). "MontaVista Linux drives Dell's quick-boot feature". linuxdevices.com. Retrieved 2010-11-20.
  58. ^ Larabel, Michael (2008-06-14). "SplashTop Linux On HP, Dell Notebooks?". Phoronix. Retrieved 2010-11-20.
  59. ^ "Voodoo Envy's Instant-On IOS (powered by Splashtop)". YouTube. Archived from the original on 2021-11-13. Retrieved 2010-11-20.
  60. ^ "iAPX 286 Programmer's Reference Manual" (PDF). Intel. 1983. Section 5.3 SYSTEM INITIALIZATION, p. 5-7. Retrieved 2019-08-23. Since the CS register contains F000 (thus specifying a code segment starting at physical address F0000) and the instruction pointer contains FFF0, the processor will execute its first instruction at physical address FFFF0H.
  61. ^ "80386 Programmer's Reference Manual" (PDF). Intel. 1986. Section 10.2.3 First Instructions, p. 10-3. Retrieved 2013-11-03. After RESET, address lines A31-20 are automatically asserted for instruction fetches. This fact, together with the initial values of CS:IP, causes instruction execution to begin at physical address FFFFFFF0H.
  62. ^ "Intel 64 and IA-32 Architectures Software Developer's Manual" (PDF). Intel Corporation. May 2012. Section 9.1.4 First Instruction Executed, p. 2611. Retrieved 2012-08-23. The first instruction that is fetched and executed following a hardware reset is located at physical address FFFFFFF0h. This address is 16 bytes below the processor's uppermost physical address. The EPROM containing the software-initialization code must be located at this address.
  63. ^ Zbikowski, 마크, 앨런, 폴, 발머, 스티브, 보먼 판사, 르우벤, 보먼 판사, 롭, 버틀러, 존은 캐롤, 척이며, 마크, 첼, 데이비드. Colee, 마이크, 코트니, 마이크;Dryfoos, 마이크, 던컨, 레이첼, Eckhardt, 커트, 에번스, 에릭, 농부, 릭, 게이츠, 빌, 기어리, 마이클 그리핀, 밥. 호가스, 더그. 존슨, 제임스 W.;Kermaani, Kaamel, 왕, Adrian은;. Koch, Reed; Landowski, James; Larson, Chris; Lennon, Thomas; Lipkie, Dan; McDonald, Marc; McKinney, Bruce; Martin, Pascal; Mathers, Estelle; Matthews, Bob; Melin, David; Mergentime, Charles; Nevin, Randy; Newell, Dan; Newell, Tani; Norris, David; O'Leary, Mike; O'Rear, Bob; Olsson, Mike; Osterman, Larry; Ostling, Ridge; Pai, Sunil; Paterson, Tim; P에레즈, 게리, 피터스, 크리스, 페쫄트, Charles:폴록, 존은 레이놀즈, 아론, 루빈은 대릴, 라이언, 랠프, Schulmeisters, 칼, 샤, Rajen, 쇼, 배리, 쇼트, 앤서니, Slivka, 벤, Smirl, 존, Stillmaker, 베티, 스토다드, 존은 틸먼, 데니스..휘튼, 그렉, Yount, 나탈리. Zeck, 스티브(1988년)."기술 고문".그 MS-DOS백과 사전:버전 1.03.2를 통해.By Duncan, Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A.;호건, 톰, 카일, 짐,. Letwin, 고든, 페쫄트, Charles:라비, 칩, 톰린, 짐, 윌턴 양탄자, 리처드, 울버 턴, 반, 웡은 윌리엄;우드콕. 도요목 도요과의 조류., JoAnne(완전히 교육 reworked.).워싱턴 주, 미국:MicrosoftPress.아이 에스비엔 1-55615-049-0. LCCN 87-21452.OCLC 16581341.(xix+1570 페이지, 26))(NB다.이 판은 다른 작가 팀에 의해 철회된 1986년 초판을 광범위하게 수정한 후 1988년에 출판되었다.[2])
  64. ^ a b c Chappell, Geoff (January 1994). "Chapter 2: The System Footprint". In Schulman, Andrew; Pedersen, Amorette (eds.). DOS Internals. The Andrew Schulman Programming Series (1st printing, 1st ed.). Addison Wesley Publishing Company. ISBN 978-0-201-60835-9. (xxvi+738+iv 페이지, 3.5" 플로피 [3][4]) 에라타: [5][6][7]
  65. ^ Rosch, 윈. L.(1991-02-12)."DRDOS5.0-더 나은 운영 시스템일까요?".PCMagazine.Vol10, 번호 3. 우편 241-246, 257년, 264,266.그 2019-07-25에 원래에서 Archived.2019-07-26 Retrieved.[…]은 DRDOS5.0에 당신이 무료로 당신은 부팅 가능하도록 하기 원하는 디스크의 첫번째 클러스터를 옮기는 것에 관해 걱정할 필요가 없도록 개선하였다.DR은 도스 시스템 파일이 디스크에 충분한 자유 공간에 어떤 디스크 시스템 부팅하는 데 설정할 수 있으며 위치할 수 있다.[…](NB다.사실 약자 부문에서 부트 스트랩 로더의 비록 이것이 형상 소식통은 곧 또 보자 유틸리티에 이 특성을 가져옵니다.SYS는 이 섹터를 디스크에 심기만 하면 됩니다.)
  66. ^ Paul, Matthias R. (2001-01-17). "FAT32 in DR-DOS". opendos@delorie. Archived from the original on 2017-10-06. Retrieved 2017-10-06. […] The DR-DOS boot sector […] searches for the IBMBIO.COM (DRBIOS.SYS) file and then loads the *whole* file into memory before it passes control to it. […]
  67. ^ Paul, Matthias R. (2002-02-20). "Can't copy". opendos@delorie. Archived from the original on 2017-10-06. Retrieved 2017-10-06. […] The DR-DOS boot sector loads the whole IBMBIO.COM file into memory before it executes it. It does not care at all about the IBMDOS.COM file, which is loaded by IBMBIO.COM. […] The DR-DOS boot sector […] will find the […] kernel files as long as they are logically stored in the root directory. Their physical location on the disk, and if they are fragmented or not, is don't care for the DR-DOS boot sector. Hence, you can just copy the kernel files to the disk (even with a simply COPY), and as soon as the boot sector is a DR-DOS sector, it will find and load them. Of course, it is difficult to put all this into just 512 bytes, the size of a single sector, but this is a major convenience improvement if you have to set up a DR-DOS system, and it is also the key for the DR-DOS multi-OS LOADER utility to work. The MS-DOS kernel files must reside on specific locations, but the DR-DOS files can be anywhere, so you don't have to physically swap them around each time you boot the other OS. Also, it allows to upgrade a DR-DOS system simply by copying the kernel files over the old ones, no need for SYS, no difficult setup procedures as required for MS-DOS/PC DOS. You can even have multiple DR-DOS kernel files under different file names stored on the same drive, and LOADER will switch between them according to the file names listed in the BOOT.LST file. […]
  68. ^ Paul, Matthias R. (2017-08-14) [2017-08-07]. "The continuing saga of Windows 3.1 in enhanced mode on OmniBook 300". MoHPC - the Museum of HP Calculators. Archived from the original on 2017-10-06. Retrieved 2017-10-06. […] the DR-DOS FDISK does not only partition a disk, but can also format the freshly created volumes and initialize their boot sectors in one go, so there's no risk to accidentally mess up the wrong volume and no need for FORMAT /S or SYS. Afterwards, you could just copy over the remaining DR-DOS files, including the system files. It is important to know that, in contrast to MS-DOS/PC DOS, DR-DOS has "smart" boot sectors which will actually "mount" the file-system to search for and load the system files in the root directory instead of expecting them to be placed at a certain location. Physically, the system files can be located anywhere and also can be fragmented. […]
  69. ^ "Intel Platform Innovation Framework for EFI". Intel. Retrieved 2008-01-07.
  70. ^ "OpenBIOS - coreboot". coreboot.org. Retrieved 2013-03-20.
  71. ^ "UEFI - OSDev Wiki". wiki.osdev.org. Retrieved 2020-09-26.
  72. ^ "Overview – The four bootloader stages". ti.com. Texas Instruments. 2013-12-05. Retrieved 2015-01-25.