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.