부트 섹터(GPT 또는 MBR), 펌웨어(BIOS 또는 UEFI) 조합에 대한 설치 및 부팅 시나리오는 무엇입니까?

부트 섹터(GPT 또는 MBR), 펌웨어(BIOS 또는 UEFI) 조합에 대한 설치 및 부팅 시나리오는 무엇입니까?

이 글의 모든 혼란은 기존 기술과 신기술의 공존, 그리고 용어의 오용에서 비롯된다고 생각합니다.https://en.wikipedia.org/wiki/System_partition_and_boot_partition. 컴퓨터 기술이나 용어의 창시자가 상황을 혼란스럽게 만드는 것을 피하고 명확하고 일관되게 기록하도록 노력했는지는 잘 모르겠습니다. 나는 그것들을 스스로 알아낼 수 없습니다.

https://en.wikipedia.org/wiki/BIOS_boot_partition부트 섹터(GPT 또는 MBR), 펌웨어(BIOS 또는 UEFI), 부트 ​​로더(GRUB 또는...?)의 다양한 조합에 대해 언급된 다양한 시나리오가 있는 것 같습니다. 나는 이것을 읽으면서 길을 잃었다고 느꼈습니다:

GRUB의 두 번째 단계를 유지하려면 GPT 파티션 저장 장치에 BIOS 부팅 파티션이 필요합니다. 기존 MBR 파티션 장치에서는 첫 번째 섹터 바로 다음에 오는 디스크 섹터가 일반적으로 사용되지 않습니다. 파티션 구성표가 특별한 목적으로 지정하지 않고 파티션 도구가 정렬 목적으로 사용하지 않기 때문입니다. GPT 기반 장치에서는 섹터가 실제 파티션 테이블을 보유하므로 추가 파티션이 필요합니다. MBR로 파티션된 디스크에서 부트로더는 일반적으로 MBR에 저장된 코드 부분(512바이트를 초과할 수 없음)이 첫 번째 단계로 실행되도록 구현됩니다. 주로 더 복잡한 두 번째 단계를 로드하기 위한 것입니다. 파일 시스템에서 운영 체제 커널을 읽고 로드합니다.

EFI 파티셔닝에 대한 기사도 있습니다.https://en.wikipedia.org/wiki/EFI_system_partition. UEFI가 BIOS를 대체하고 BIOS는 파티션이 아닌 ROM에 저장되므로 UEFI도 ROM에 저장되어 있다고 생각했는데 "EFI 파티션"을 보고 혼란스러워졌습니다. "EFI 파티션"은 UEFI를 저장하는 데 특별히 사용되는 파티션입니까, 아니면 일부 부트 로더입니까?

나도 찾았어https://askubuntu.com/a/579259/1471이것이 더 잘 설명되는 것 같지만 "레거시 모드에서 Linux 부팅"과 "다른 레거시 운영 체제 부팅"이라는 표현에서 여전히 헤매고 있습니다.

당신은 사용해 볼 수 있습니다일반 언어어떤 장면이 있는지 설명해주세요.

더 이상 사용되지 않는 것은 무엇이며, 점점 더 많이 채택되고 있어 시간을 투자할 가치가 있는 것은 무엇입니까?

이게 내가 들은 거야

  1. Modern Operating Systems와 같은 일부 운영 체제 책에서는 부트 로더의 일부가 부팅 디스크의 MBR 섹터에 저장되고 나머지는 부팅 파티션의 부트 섹터에 저장된다고 말합니다. 펌웨어나 부트로더 전용 파티션이 없는 것 같습니다. 내가 아는 한, 부트 파티션은 부트로더 저장(일부) 전용 파티션이 아니라 운영 체제가 설치되는 곳입니다. 부팅 디스크의 MBR 섹터는 부트 로더 저장(일부) 전용 파티션도 아닙니다.

  2. GPT 부팅 디스크와 BIOS GRUB 파티션이 있는 오래된 노트북이 있습니다.. 이 파티션이 GRUB의 전체 프로그램을 저장하는 전용인지, 아니면 GRUB의 일부만 저장하고 GRUB의 나머지 부분은 운영 체제가 설치된 파티션의 부트 섹터에 저장되는지 모르겠습니다. ..?

    $ sudo parted -l
    [sudo] password for t: 
    Model: ATA ST1000LM014-1EJ1 (scsi)
    Disk /dev/sda: 1000GB
    Sector size (logical/physical): 512B/4096B
    Partition Table: gpt
    Disk Flags: 
    
    Number  Start   End     Size    File system     Name  Flags
     1      1049kB  2097kB  1049kB                        bios_grub
     2      2097kB  16.0GB  16.0GB  linux-swap(v1)
     4      116GB   716GB   600GB   ext4
     3      716GB   1000GB  284GB   ext4
    
  3. GPT 부팅 디스크와 UEFI 파티션이 있는 오래되었지만 최신 노트북을 찾았습니다. 2와 비슷한 문제가 있으며 UEFI 파티션이 UEFI 또는 일부 부트로더(일부 또는 전체)를 저장하는지 알 수 없습니다.

    $ sudo parted -l
    [sudo] password for t: 
    Model: ATA TOSHIBA MQ01ABF0 (scsi)
    Disk /dev/sda: 500GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    
    Number  Start   End    Size   File system  Name                  Flags
     1      1049kB  538MB  537MB  fat32        EFI System Partition  boot, esp
     2      538MB   500GB  500GB  ext4
    

    감사해요.

답변1

컴퓨터가 방금 POST를 완료하고 특정 디스크에서 OS를 부팅하도록 실행된 위치부터 시작하여 전체 체인을 살펴보는 것이 도움이 될 것이라고 생각합니다. MBR을 사용하면 많은 역사적 한계에 직면하고 매우 작은 단계를 수행해야 하며 매우 간단한 작업만 수행해야 합니다. UEFI를 사용하면 하드웨어와 작업을 추상화하는 데 도움이 되는 플랫폼 드라이버가 있습니다.

MBR 체인:

  • 파티션 테이블의 부트로더 코드(벡터)입니다.
  • 부트 로더 코드가 파티션 테이블의 끝과 첫 번째 파티션 사이에 있는 마스터 부트 레코드입니다.
  • 운영 체제 또는 전용 부팅 파티션의 볼륨 부팅 레코드입니다.
  • 운영 체제의 Grub과 같은 메뉴가 있는 전체 부트로더 또는 전용 부팅 파티션(운영 체제 커널과 부트로더가 지원하지 않는 파일 시스템을 읽는 드라이버를 보관하기 위한).

GPT 체인이 있는 MBR:

  • BIOS 부팅 파티션의 부팅 로더 코드입니다.
  • 운영 체제 또는 전용 부팅 파티션의 볼륨 부팅 레코드입니다.
  • 운영 체제의 Grub과 같은 메뉴가 있는 전체 부트로더 또는 전용 부팅 파티션(운영 체제 커널과 부트로더가 지원하지 않는 파일 시스템을 읽는 드라이버를 보관하기 위한).

여전히 이전 방식으로 부팅하고 있으므로 파티션의 특별한 첫 번째 섹터에 있는 운영 체제 파티션에서 운영 체제의 다음 부팅 단계를 찾는 것과 같은 이전 메커니즘에 의존해야 합니다.

내가 본 특이한 것 중 하나는 chrx 개발자가 특별한 ChromeOS-GPT 레이아웃을 사용하여 Chromebook에서 타사 Linux를 부팅하는 방법이며, 내가 아는 한 BIOS 부팅 파티션은 본 적이 없습니다. Grub은 차단 목록으로 부팅하는 것이 안전하지 않다고 불평하지만 많은 사용자가 이런 방식으로 Chromebook을 부팅합니다.

UEFI 체인:

  • /boot/efi/EFI/ubuntu부트 로더는 기본 디렉터리의 운영 체제 파티션이나 EFI 시스템 파티션의 운영 체제별 디렉터리(예:)에 있습니다.
  • 운영 체제의 Grub과 같은 메뉴가 있는 전체 부트로더 또는 전용 부팅 파티션(운영 체제 커널과 부트로더가 지원하지 않는 파일 시스템을 읽는 드라이버를 보관하기 위한).

이미 루트 파티션을 동기화하고 Grub 이미지를 EFI 파티션의 올바른 위치에 넣었습니다(ESP 파티션도 이와 같이 표시되었습니다). 이는 일반적으로 더 복잡한 MBR 부팅 체인에서는 작동하지 않습니다. 이 경우 파일이 올바른 위치에 있는지 확인해야 할 뿐만 아니라 파티션 테이블의 데이터 패턴이 파티션 테이블 뒤에 있는지 확인해야 합니다. , OS 파티션이 범위를 벗어나지 않는지 확인하십시오. 이 단계에서는 부트로더 코드로 주소를 지정할 수 있으며 확장 파티션이 아닌 최대 4개의 기본 파티션 중 하나입니다(이러한 경우에도 Grub은 부팅을 관리할 수 있습니다).

더 이상 혼란을 야기하지 않았으면 좋겠습니다. 죄송합니다. 지금은 더 간단하게 설명할 수 없으며 전체 주제를 스스로 마스터했다고 생각하지도 않으며 이에 대한 코드 작성에는 관여하지 않습니다.

관련 정보