볼륨 부트 레코드

Volume boot record

볼륨 부트 레코드(VBR)(볼륨 부트 섹터, 파티션 부트 레코드 또는 파티션 부트 섹터라고도 함)는 IBM Personal Computer에서 도입된 부트 섹터의 한 유형입니다.하드 디스크와 같은 분할된 데이터 스토리지 디바이스 또는 플로피 디스크와 같은 분할되지 않은 디바이스에서 찾을 수 있으며, 장치의 다른 부분에 저장된 프로그램(통상 운영 체제)을 부트스트랩하기 위한 기계 코드가 포함되어 있습니다.파티션이 없는 스토리지 디바이스에서는 디바이스의 첫 번째 섹터입니다.파티셔닝된 디바이스에서는 디바이스 상의 개별 파티션의 첫 번째 섹터이며 디바이스 전체의 첫 번째 섹터는 파티션테이블을 포함하는 Master Boot Record(MBR; 마스터부트 레코드)입니다.

볼륨 부트 레코드의 코드는 머신의 펌웨어에 의해 직접 호출되거나 마스터 부트 레코드 또는 부트 매니저의 코드에 의해 간접적으로 호출됩니다.MBR 및 VBR의 코드는 본질적으로 동일한 방식으로 로드됩니다.

부트 매니저를 통해 VBR을 호출하는 것을 체인 로드라고 합니다.NTLDR(Windows XP 및 Windows Server 2003까지의 Microsoft Windows NT에서 파생된 모든 운영 체제 릴리스의 부트 로더)와 같은 일부 듀얼 부트 시스템은 개별 운영 체제가 단일 파티션의 VBR에 설치한 부트스트랩 코드를 복사하여 디스크 파일에 저장하여 관련 VBR 콘텐츠를 로드합니다.부트스트랩할 운영체제를 사용자에게 물어본 후 파일에서 가져옵니다.Windows Vista, Windows Server 2008 및 그 이후의 버전에서는 NTLDR이 대체되었습니다.부트로더 기능은 WINLOAD라는2개의 새로운 컴포넌트로 제공됩니다.EXEWindows 부트 매니저.

FAT12(DOS 1.x 제외), FAT16, FAT32, HPFS NTFS 등의 파일 시스템에서 VBR에는 파일 시스템의 주요 온디스크 데이터 구조의 위치와 레이아웃을 지정하는 BIOS 파라미터 블록(BPB)도 포함되어 있습니다.(FAT VBR의 섹터 레이아웃, 다양한 FAT BPB 버전 및 그 엔트리에 대한 자세한 내용은 FAT 기사를 참조하십시오.)

기술적 세부사항

서명

부트 섹터에 x86-CPU용 IBM PC 호환 부트 로더가 존재하는 것은 부트 섹터 시그니처(boot sector signature)라고 불리는2 바이트의 16진수 시퀀스로 나타납니다.고정 오프셋 +1에서 55시간512바이트 이상의 [nb 1]섹터 크기일 경우 +1FFH의 FEh 및 AAh).512 바이트 섹터의 경우 부트 섹터 시그니처는 섹터의 끝도 표시합니다.소규모 및 대규모 섹터의 VBR에서는 실제 섹터 크기 끝에 시그니처가 표시될 수도 있지만, 여기서 설명하는 의미론은 +1의 16비트 시그니처에 적용됩니다.FEH만.

이 시그니처는 운영시스템을 실제로 로드할 수 없는 경우에도 실행해도 안전한 더미 부트로더가 존재함을 나타냅니다.3.3 이전의 일부 DOS 버전은 FAT 포맷 미디어를 검출하기 위해 DOS에 의존했지만, 파일 시스템 또는 운영 체제의 존재를 나타내는 것은 아닙니다(새로운 버전은 그렇지 않습니다).다른 플랫폼 또는 CPU의 부트 코드에서는 이 시그니처를 사용하지 마십시오.BIOS가 유효한 실행 가능 코드를 포함하고 있다고 가정하면 부트 섹터에 실행이 전달될 때 크래시가 발생할 수 있기 때문입니다.즉, 매우 오래된 버전의 DOS에서도 사용되는 FAT12/FAT16 미디어는 운영체제가 없거나 다른 플랫폼에서만 부팅이 가능한 경우에도 시그니처를 유지해야 합니다.따라서 적어도 x86 호환(더미) 로더도 포함해야 합니다(비교 내용은 Atari ST 및 Wi의 FAT 예를 참조하십시오).Th MSX-DOS)를 클릭합니다.그러나 다른 플랫폼용 미디어 중에는 x86 호환 더미 로더가 없어도 시그니처가 잘못 포함되어 있기 때문에 실제로는 체크의 신뢰성이 100%가 아닙니다.

서명은 IBM PC/AT 이후(최소한) 대부분의 시스템 BIOS에서 테스트됩니다(원래 IBM PC 및 일부 다른 컴퓨터에서는 테스트되지 않음).게다가 대부분의 MBR 부트 로더에 의해서도 부트 섹터에 제어를 넘기기 전에 체크됩니다.IBM PC/AT와 같은 일부 BIOS는 고정 디스크/리무버블 드라이브에 대해서만 검사를 수행하지만, 플로피 및 슈퍼플로피의 경우 부트 섹터가 유효한 것으로 받아들여지기 전에 06h 이상의 바이트로 시작하고 처음 9개 단어는 동일한 값을 포함하지 않도록 하면 충분하므로 55hAAh에 대한 명시적인 테스트를 피할 수 있습니다.오래된 부트 섹터(즉, 매우 오래된 CP/M-86 및 DOS 미디어)는 정상적으로 부트해도 이 시그니처를 지원하지 않을 수 있으므로 일부 환경에서는 체크가 비활성화될 수 있습니다.이는 512바이트보다 작은 섹터 크기를 사용하도록 플로피를 포맷할 수 있다는 사실도 반영하고 있습니다.

BIOS 또는 MBR 코드가 유효한 부트 섹터를 검출하지 못해 부트 섹터 코드로 실행을 전달할 수 없는 경우, 행의 다음 부트 디바이스를 시도합니다.모두 실패하면 일반적으로 오류 메시지가 표시되고 INT 18h[1]호출됩니다.이것에 의해, 옵션의 상주 소프트웨어가 ROM(ROM BASIC)으로 기동하거나, 네트워크를 개입시켜 리모트 기동을 시도하거나, 유저 확인 후에 INT 19h개입시켜 시스템을 재기동하거나, 다음에 [1]기동할 때까지 부트 스트랩 프로세스를 정지합니다.

NTFS PBR 에는, 10 진 오프셋 72 ~79 의 파티션 UUID 볼륨 ID 의 시리얼 번호가 격납됩니다.

호출

VBR의 부트 코드는 BIOS가 데이터 구조를 설정하고 하드웨어를 인터럽트 및 초기화했다고 가정할 수 있습니다.이후로 다른 경우 사전 부팅 코드(f.e. BIOS연장 오버레이, 암호화 시스템, 또는 원격 부트 스트랩 로더와 같은)다른 곳에서 기억에도 선물일 수 있는 코드, 만일 그것이 더 많은 메모리가 필요하[1]그것이 INT12h을 쿼리 하야 하고(일반적으로에서 자신들을 이상 32KB메모리 고장 안전 동작을 선물로의 생각해서도 안 된다. 월따라서 보고된 INT 12h 메모리를 줄임으로써 MBR 및 VBR의 액션에 의해 덮어쓰지 않도록 합니다).BIOS 부팅 사양에서는 64KB의 메모리를 사용할 수 있으며 0000h:7C00h ~ 0000h를 명시적으로 권장합니다.임시 스크래치 [2][1]패드로서의 FFFH.부트 코드는, 원래의 인텔 8088 또는 8086(오리지널 PC에서 사용)보다 뛰어난 CPU를 상정하지 말아 주세요.또, 하드웨어의 정확한 상태, 인터럽트 시스템(인터럽트의 유효화 또는 무효화가 가능), 스택의 장소나 사이즈에 관해서도 상정하지 말아 주세요.원래 IBM BIOS는 DS, ES 및 SS CPU를 세그먼트 0000h에 초기화하고 초기 스택을 SS로 유지합니다.SP = 0000h:0400h, 모든 BIOS 및 MBR 코드가 이 규칙을 따르는 것은 아니므로 이 조건을 신뢰할 수 없습니다.아래에 기재되지 않은 레지스터는 초기화되지 않은 것으로 취급해야 합니다.일반적으로 하드웨어에 직접 액세스할 수 없습니다.디스크 파라미터 테이블(DPT/FDPB)은 일반적으로 이미 메모리에서 0000h:0078h로 설정되어 있지만 VBR은 INT 1Eh 벡터가 가리키는 DPT를 이 위치(INT 1Eh는 인터럽트가 아니라 DPT에 대한 먼 포인터)로 이동(및 수정 가능)해야 합니다.

일부 조건은 제어된 환경에서 완화될 수 있습니다.예를 들어, 오늘날 일부 부트 로더는 (추가 문의 없이) 정상 동작 시 최대 128KB의 메모리가 있다고 가정하고 LBA 액세스를 사용하는 일부 부트 로더는 적어도 Intel 80188 또는 80186 CPU를 사용한다고 가정합니다.

VBR이 메모리 위치에 로드됩니다.0000h:7C00h[1] 이전 부트스트랩로더(일반적으로 BIOS 또는 MBR, 그러나 다른 부트로더)가 로더로 점프하여 실행이 전달될 때 다음과 같은 CPU 레지스터가 설정됩니다.0000h:7C00hCPU의 리얼 모드로 합니다.

  • CS: IP =0000h:7C00h(표준)

일부 Compaq BIOS는 07C0h:0000h를 잘못 사용합니다.이것은 리얼 모드 메모리의 같은 장소에 해결되지만, 비표준이며, 특정 레지스터 값을 가정하거나 재배치할 수 있도록 기록되지 않은 VBR 코드는 다른 방법으로는 작동하지 않을 수 있기 때문에 피해야 합니다.

  • DL = 부팅 드라이브 장치(플로피/슈퍼플로피:00h=먼저,01h= 두 번째, ...,7Eh; 고정 디스크/리무버블 드라이브:80h=먼저,81h= 두 번째, ...,FEh; 값7Fh그리고.FFh는 ROM/리모트 드라이브용으로 예약되어 있으므로 [3]디스크에서 사용하지 마십시오).DL은 IBM BIOS 및 대부분의 다른 BIOS에서 지원됩니다.Toshiba T1000 BIOS는 이를 제대로 지원하지 않는 것으로 알려져 있으며 일부 오래된 Wyse 286 BIOS는 하드 디스크에서 2 이상의 DL 값을 사용합니다.슈퍼플로피로 구성된 USB 스틱에는 일반적으로 DL =가 할당됩니다.00h또는01h그러나 일부 드문 BIOS에서 이동식 드라이브로 구성된 USB 스틱이 DL =로 잘못 표시됩니다.01hDL =를 사용하는 대신80h. 종래에는 값만 있었습니다.00h그리고.80h부팅 중에 BIOS에 의해 전달되었습니다.또한 많은 부트 섹터는 고정값으로 동작하도록 유선 접속되어 있었습니다.플러그 플레이 BIOS 사양BIOS 부트 사양(BBS)을 사용하면 다른 디바이스도 부팅할 수 있습니다.[2][4]후자의 경우 MBR 코드와 VBR 코드는 내부적으로 유선 연결된 [2]기본값이 아닌 DL을 사용할 것을 권장합니다(NB. MS-DOS/PC DOS 및 OS/2 VBR은 제공된 DL 값을 무시하고 오프셋에 저장된 값을 가져옵니다).+19hEBPB(Extended BIOS Parameter Block) 또는 섹터 오프셋으로 설정+1FDhDOS 버전 3.2에서 3.31까지입니다.일부 버전의 DR-DOS는 7.02부터 DL을 사용합니다. DR-DOS 7.07 VBR은 기본적으로 DL을 사용하고 BPB 값은 무시합니다.SYS /O[:nnn]BPB 값을 사용하는 이전 동작을 재활성화하거나 특정 부트 드라이브 유닛을 적용할 수도 있습니다.nnn저장될 수 있습니다.[3]FAT32 볼륨에서 FreeDOS는 DL 값도 활용하지만 BPB 값이 다음과 같이 설정된 경우 FAT12/FAT16 볼륨에서만 활용합니다.FFh.)
  • DH 비트 5 = 0: INT 13h를 통해 지원되는 장치. 그렇지 않으면 상관 없음(0이어야 함).DH는 일부 IBM BIOS에서 지원됩니다.일부 MBR 및 VBR 코드는 DH 값을 유지합니다.

플러그 플레이 BIOS 또는 BBS 를 서포트하는 시스템에서는,[2][4] DL 에 가세해 PnP 데이터에의 포인터가 제공됩니다.

  • DL = 부팅 드라이브 장치(위 참조)
  • ES:DI = "를 가리킵니다.$PnP설치 체크 구조

이 정보를 통해 부트 로더(MBR 또는 VBR)는 BIOS 또는 메모리 내의 상주 PnP/BBS 오버레이와 액티브하게 대화하여 부트 순서를 설정할 수 있습니다.단, 대부분의 표준 MBR 및 VBR에서는 이 정보는 무시됩니다.이상적으로는 ES:DI는 전달되지만 PnP 대응 운영체제에서는 일반적으로 나중에 PnP BIOS 엔트리 포인트를 취득하는 폴백 방식도 있기 때문에 대부분의 운영체제는 이에 의존하지 않습니다.ES에서의 정보:DI는 힌트로 사용할 수 있습니다.PnP BIOS 사양에 따르면 "$PnP" 설치 체크 구조는 16바이트 경계마다 F0000h에서 FFFPh로 시작하는 시스템 메모리에서 ASCII 문자열 $PnP의 서명을 검색하여 찾을 수 있습니다.

파티션 미디어를 사용하는 경우 BIOS가 아닌 MBR(또는 다른 부트 로더)에 의해 VBR이 부팅되면 많은 구현이 DL뿐만 아니라 VBR에 추가 정보를 전달합니다(경우에 따라 DH 및 ES:DI도) :

  • DS:SI = 활성화된 VBR에 해당하는 16바이트 MBR 파티션 테이블 항목(이전된 MBR)을 가리킵니다.PC-MOS 5.1은 파티션테이블에 부트 가능 플래그가 붙어 있지 않은 경우 부트하기 위해 이 기능에 의존합니다.LOADER, Multiuser DOS 및 REAL/32 부트 섹터와 연계하여 액티브 파티션(또는 IBMB와 같은 다른 부트스트랩 로더)의 부트 섹터를 찾습니다.부트 파일(LOADER)의 경우는, 디스크의 고정 위치에 IO.LDR 가 있습니다.SYS)를 찾을 수 없습니다.PTS-DOS 6.5 및 S/DOS 1.0은 Advanced Active Partition(AAP) 기능과 함께 사용합니다.DR-DOS 7.07은 LOADER와 AAP를 지원할 뿐만 아니라 듀얼 CHS/LBA VBR 코드를 사용할 때 필요한 INT 13h 액세스 방법을 결정하기 위해 이를 사용할 수 있습니다.OS/2의 MBR 코드, MS-DOS(7.0 이전), PC DOS(7.10 이전) 및 Windows NT(2007년 이전)에서도 같은 인터페이스가 제공되지만 이들 시스템에서는 사용되지 않습니다.Windows NT 6.0(및 그 이후)에 의해서 인스톨 된 MBR 는 다른 레지스터를 사용하고 있기 때문에, 이러한 확장과 호환성이 없어집니다.일부 확장자는 16바이트 파티션테이블 엔트리 자체에 의존하지만 다른 확장자는 4개(또는 5개의 엔트리) 파티션테이블 전체를 필요로 할 수도 있습니다.

DR-DOS 7.07에서는 MBR에 의해 확장 인터페이스를 선택적으로 LOADER와 함께 사용할 수 있습니다.

  • AX = 이 확장의 존재를 나타내는 매직시그니처(0EDCh)
  • DL = 부팅 드라이브 장치(위 참조)
  • DS:SI = 사용되는 16바이트 MBR 파티션테이블 엔트리를 포인트 합니다(위 참조).
  • ES:BX = 부트 섹터 시작 또는 특수 "NEWLDR" 섹터 이미지(일반적으로 7C00h)
  • CX = 예약 완료

Enhanced Disk Drive Specification(EDD) 4 Hybrid MBR 제안에서는 GUID Partition Table(GPT; GUID 파티션 테이블)과 함께 MBR-VBR 인터페이스에 [5]대한 다른 확장을 권장합니다.

  • EAX =54504721h("!GPT")
  • DL = 부팅 드라이브 장치(위 참조)
  • ES:DI = "를 가리킵니다.$PnP설치 체크 구조(위 참조)
  • DS:SI = 16바이트 더미 MBR 파티션테이블 엔트리로 구성된 하이브리드 MBR 핸드오버 구조를 가리킵니다(부트 플래그를 제외한 모든 비트가 오프셋으로 설정됩니다).+0h파티션 타입을 오프셋으로 합니다.+4h)에 이어 추가 데이터가 표시됩니다.이것은 이전 DS와 부분적으로 호환됩니다.위에서 설명한 SI 확장자는 16바이트 파티션엔트리만 있는 경우 이들 오래된 확장자에 의해 파티션테이블 전체가 필요하지 않습니다.

「 」를 참조해 주세요.

메모들

  1. ^ 오프셋 시 서명+1FEh부트 섹터에서는55h AAh,그것은55h오프셋으로+1FEh그리고.AAh오프셋으로+1FFhlittle-endian 표현은 IBM PC 호환기의 컨텍스트에서 가정해야 하므로 16비트 단어로 작성할 수 있습니다.AA55hx86 프로세서용 프로그램(스왑 순서 주의)에서는, 다음과 같이 기술할 필요가 있습니다.55AAhBig-endian 표현을 사용하여 다른 CPU 아키텍처용 프로그램에서 사용할 수 있습니다.이 내용은 서적이나 원래의 Microsoft 레퍼런스 문서에서도 여러 번 혼재되어 있기 때문에, 이 문서에서는, 오해를 피하기 위해서, 디스크상의 오프셋 베이스의 바이트 단위의 표현을 사용하고 있습니다.

레퍼런스

  1. ^ 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]
  2. ^ a b c d Compaq Computer Corporation; Phoenix Technologies Ltd.; Intel Corporation (1996-01-11). BIOS Boot Specification 1.01 (PDF). 1.01. Archived from the original (PDF) on 2016-04-14.
  3. ^ a b 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 2018-05-01. Retrieved 2018-05-01. […] SYS […] /O[:nnn] Override IPL reported boot drive unit (n=0..126, 128..254). […] Preparing target disk... Choosing FAT12 CHS Boot Sector (requires IPL to report boot unit). Treating target as diskette or superfloppy medium (boot drive unit 0). Writing new Boot Sector... […]
  4. ^ a b Compaq Computer Corporation; Phoenix Technologies Ltd.; Intel Corporation (1994-05-05). Plug and Play BIOS Specification 1.0A (PDF). 1.0A. Archived from the original (PDF) on 2018-02-02.
  5. ^ Elliott, Robert (2010-01-04). "EDD-4 Hybrid MBR boot code annex" (PDF). Hewlett Packard, T13 Technical Committee. e09127r3. Archived (PDF) from the original on 2018-05-01. Retrieved 2018-05-01.

추가 정보