MBR : BIOS는 드라이브의 부팅 가능 여부를 어떻게 결정합니까?


12

askubuntu : GRUB를 제거하는 방법 MBR에 대한 Wikipedia 기사 와 수퍼 유저 에 관한 다소 관련된 질문에 대한 완벽한 답변을 읽었 지만 여전히 한 가지 분명하지 않습니다.

드라이브가 부팅 가능한지 여부를 BIOS가 정확히 결정하는 것은 무엇입니까? 시스템에 둘 이상의 드라이브가 설치된 경우 부팅 순서는 드라이브 # 1에서 어떻게 건너 뛰고 드라이브 # 2에서 부팅을 계속합니까?

제 이해는 BIOS가 일반적으로 MBR에서 확인하는 유일한 것은 512 바이트 섹터의 맨 끝에있는 서명이며, 부팅 섹터의 첫 번째 446 바이트에 위치한 초기 부트 로더로 제어권을 넘깁니다.

디스크를 부팅 할 수없는 경우에도 부트 섹터의 처음 446 바이트에 의미있는 부트 로더 코드가 포함되어야 함을 의미합니까?

BIOS가 "부팅 가능한"파티션이없는 드라이브 # 1의 부트 로더에 제어권을 전송 한 후-두 번째 드라이브의 부트 로더는 정확히 어떻게 호출됩니까?

너무 기술적 인 경우 죄송합니다 :) 짧은 질문은 "BIOS가 정확히 드라이브를 건너 뛰고 다음 드라이브에서 부팅을 시도하는 방법은 무엇입니까?"입니다.

답변:


16

드라이브가 부팅 가능한지 여부를 BIOS가 정확히 결정하는 것은 무엇입니까?

BIOS는 MBR 코드 영역 다음 에 존재하는 16 바이트 파티션 레코드를 기반으로 드라이브를 부팅 할 수 있는지 여부를 결정합니다 (446 번째 바이트 에서 시작하는 테이블에 유지 ). 각 파티션 레코드의 첫 번째 바이트는 드라이브의 부팅 가능 상태를 나타냅니다 ( 0x80부팅 가능 또는 0x00그렇지 않은 경우). 일부 BIOS는 MBR의 다른 부분 (예 : 파티션 유형, 체크섬)을 검사 할 수 있지만 기본 요구 사항은 부팅 가능한 플래그입니다.

시스템에 둘 이상의 드라이브가 설치된 경우 부팅 순서는 드라이브 # 1에서 어떻게 건너 뛰고 드라이브 # 2에서 부팅을 계속합니까?

이는 구현에 따라 다르므로 부팅 순서를 올바르게 선택해야합니다. 대부분의 경우 BIOS는 설정 한 순서대로 각 저장 매체를 살펴보고 MBR 데이터를 통해 해당 장치에서 부팅 할 수 있는지 여부를 결정합니다. 가능하다면 그렇지 않은 경우 다른 장치를 반복해서 반복합니다 (선택한 순서대로).

BIOS가 "부팅 가능한"파티션이없는 드라이브 # 1의 부트 로더에 제어권을 전송 한 후-두 번째 드라이브의 부트 로더는 정확히 어떻게 호출됩니까?

유효한 부팅 장치가 발견되면 (즉, 부팅 가능한 플래그가 설정되고 다른 추가 검사가 통과 된 경우) BIOS는 MBR 섹터를 RAM에 복사합니다. 그런 다음 BIOS는 명령 포인터를 JUMPMBR 코드 세그먼트가있는 이 위치의 시작 부분으로 이동 한 다음 컴퓨터를 시작합니다.

BIOS가 BIOS Boot Specification을 지원하는 경우 MBR 코드는 특정 명령으로 BIOS에 제어권을 반환하여 부팅 실패를 알리고 다음 장치를 시도하라는 메시지를 표시 할 수 있습니다. 오래된 BIOS는 오류 메시지를 출력합니다. BIOS가 지원하는지 잘 알면 USB로 부팅 할 수 있는지 여부입니다.

제 이해는 BIOS가 일반적으로 MBR에서 확인하는 유일한 것은 512 바이트 섹터의 맨 끝에있는 서명이며, 부팅 섹터의 첫 번째 446 바이트에 위치한 초기 부트 로더로 제어권을 넘깁니다.

대부분의 최신 BIOS는 GUID 파티션 테이블과 기존의 기존 MBR 스타일 테이블을 찾습니다.

디스크를 부팅 할 수없는 경우에도 부트 섹터의 처음 446 바이트에 의미있는 부트 로더 코드가 포함되어야 함을 의미합니까?

아니요 , 그러나 드라이브 에는 유효한 MBR 또는 GUID 파티션 테이블이 있어야합니다. 그렇지 않으면 컴퓨터가이를 감지하지 못합니다. MBR의 코드 부분은 실제로 비어있을 수 있지만 드라이브의 첫 번째 섹터에는 올바른 형식의 MBR / GPT가 있어야합니다.


매우 자세한 답변에 감사드립니다. 따라서 유효한 부팅 장치의 기준은 파티션 테이블에 부팅 가능한 파티션이 있고 "기타 추가 검사"가 있습니까? AskUbuntu의 원래 질문에서 저자는 드라이브의 모든 파티션을 부팅 할 수 없으며 여전히 GRUB이 손상되어 오류가 발생한다는 것을 알기 때문에 약간 혼란 스럽습니다 .BIOS에서 전혀 호출하지 않아야합니다. 드라이브가 "부팅 가능"기준에 맞지 않기 때문에 BIOS는 드라이브를 건너 뛰고 다음 드라이브로 넘어 가야합니다
— Sergey

@ Sergey 나는 그 질문을 보았고 확실하지 않습니다. MBR이 손상되었거나 부트 가능한 플래그가 유효하지 않은 값으로 설정되었을 수 있습니다 ( 원래 버전 이 유효하지 않은 MBR 헤더를 플래그로 지정 fdisk했음에도 불구 하고 이러한 경우를 어떻게 처리 할 지 확실하지 않음 ). OP가 원시 MBR 헤더를 게시하도록 권고했지만 부팅 가능한 플래그를 수동으로 설정 / 재설정하기 위해 "토글"/ 오프 할 수도 있습니다.
— 혁신적인

BIOS 코드는 일반적인 것이 아닙니다. 각 메인 보드에 따라 다르므로 어떤 포트에 어떤 종류의 드라이브가 연결되어 있는지 알고 있습니다.
— LatinSuD

이 답변은 완전히 정확하지 않습니다. FWIU, 활성 파티션 및 BIOS가 아닌 "기본"MBR 부팅 코드가 아닌지 확인합니다. NeoSmart는 보다 그럴듯한 설명을 제공 합니다.“IBM 호환 PC (기본적으로 모든 것)에서 512 바이트 MBR의 마지막 2 바이트를 부팅 서명이라고하며 BIOS에서 선택한 부팅 드라이브가 실제로 부팅 가능한지 여부를 결정하는 데 사용됩니다 아니." 마지막 부분은 잘못되었습니다. 레거시 BIOS는 기본적으로 "자유형"부팅이므로 GPT (적절한 BIOS 부팅 코드 사용)로 부팅 할 수 있습니다.
— Daniel B

@DanielB는이 두 가지에 대한 답을 직접적으로 다룹니다. "BIOS는 일반적으로 MBR을 512 바이트 섹터의 마지막에 서명 한 후 처음 446 바이트에 위치한 초기 부트 로더로 제어를 전송합니다. 부트 섹터 "의 및 "가장 현대적인 바이오스는 GUID 파티션 테이블뿐만 아니라 나이, 기존의 MBR-스타일 테이블 "를 찾습니다 .
— 획기적인
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.