grub2-install: "이 GPT 파티션 레이블에는 BIOS 부팅 파티션이 없습니다."

grub2-install: "이 GPT 파티션 레이블에는 BIOS 부팅 파티션이 없습니다."

이에 대해 꽤 많은 논의가 있는 것 같지만 간단한 답을 찾을 수 없습니다.

grub2를 설치하려고 하면 다음 오류가 발생합니다.

# grub2-install /dev/sda
Installing for i386-pc platform.
grub2-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub2-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub2-install: error: will not proceed with blocklists.

/dev/sda의 레이아웃은 다음과 같습니다.

Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 7ECE06D0-9F0C-44FF-BCFB-142283172CCA

Device        Start       End   Sectors  Size Type
/dev/sda1      2048    411647    409600  200M Linux filesystem (/boot)
/dev/sda2    411648   4605951   4194304    2G Linux swap
/dev/sda3   4605952  46548991  41943040   20G Linux filesystem (/)
/dev/sda4  46548992 234441614 187892623 89.6G Linux LVM (/var)

이 문제를 해결할 수 있는 간단한 방법이 있습니까? 디스크 시작 부분에 "BIOS 부팅 파티션"으로 작은 파티션을 만들어야 한다는 것을 알고 있습니다. 한 가지 옵션은 스왑을 /dev/sda4 논리 볼륨으로 이동하고 /dev/sda2를 /boot로 사용하는 것이라고 가정합니다.

아니면 그냥 grub-legacy로 돌아가서 그것에 대해 걱정하지 않아도 됩니다.정말이렇게 많은 문제가 발생한다면 grub2로 업그레이드하는 것이 유리할까요?)

생각?

답변1

먼저 BIOS/CSM/레거시 모드 부팅을 사용할지 EFI/UEFI 모드 부팅을 사용할지 결정해야 합니다. 전자는 1980년대부터 PC가 부팅해 온 방식이지만, 머지않아 도도의 길로 갈 추악하고 해킹적인 시스템입니다. Windows는 BIOS 모드 부팅을 사용하지 않는 MBR 파티션 테이블에 연결합니다(그러나 가능합니다. 디스크가 GPT를 요구할 만큼 크지 않습니다). Linux, FreeBSD 및 대부분의 기타 최신 OS는 더 유연하며 GPT에서 BIOS 모드 부팅을 지원합니다. 그러나 펌웨어로 인해 문제가 발생하는 경우도 있으며, 물론 나중에 이중 부팅 설정으로 Windows를 설치하기로 결정한 경우에는 변경하거나 타협해야 합니다.

EFI/UEFI 모드 부팅은 해킹이 아닙니다. 그러나 EFI 구현은 품질이 크게 다르며 EFI 웹에서의 전반적인 전문 지식 및 지원 수준은 BIOS보다 낮습니다. Windows는 GPT 사용을 EFI 모드 부팅과 연결하므로 컴퓨터에 Windows를 설치하려는 경우 EFI를 사용하는 것이 좋습니다. 구형 컴퓨터는 BIOS 전용입니다. EFI는 2011년 중반부터 시장에 등장하기 시작했기 때문에 컴퓨터가 그보다 오래되면 EFI를 사용하지 못할 수도 있습니다.

BIOS 모드 부팅을 사용하는 경우 다음을 생성해야 합니다.BIOS 부팅 파티션디스크에. 디스크 시작 부분에는 이 파티션을 위한 충분한 공간이 있지만 이것이 작동하려면 섹터 정렬 값을 1(보통 2048)로 설정해야 합니다. 로 이 작업을 수행할 수 있는지는 잘 모르겠지만 parted로 수행할 수 있습니다 gdisk. (디스크 시작 부분의 공간은 BIOS 부팅 파티션에 권장되는 1MiB 크기보다 약간 작지만 섹터 수가 적다는 점에 유의하세요. 아마도 정상적으로 작동할 수 있지만 향후 어느 시점에 실패할 수도 있습니다.) , BIOS 부팅 파티션을 위한 공간을 확보하기 위해 파티션을 1-2MiB로 축소할 수 있습니다. 이 파티션은~ 아니다일반적인 위치이기는 하지만 디스크의 첫 번째 파티션이어야 합니다.

EFI/UEFI 모드 부팅을 사용하는 경우EFI 시스템 파티션(ESP).이 파티션은 FAT 형식이어야 하며 BIOS 부팅 파티션보다 훨씬 커야 하므로 파티션을 만들려면 크기를 조정해야 합니다. 나는 550MiB 크기를 권장하지만, 그 중 10분의 1도 급작스럽게 작동할 수 있습니다.

GRUB를 설치하려면 먼저 올바른 GRUB 패키지를 설치했는지 확인해야 합니다. 모든 배포판의 이름이 확실하지는 않지만 Ubuntu에서는 grub-pcBIOS/CSM/레거시 모드 및 grub-efi-amd64EFI/UEFI 모드용 입니다 . EFI 모드 설치에는 EFI 모드에서 GRUB(아마도 라이브 CD/USB)를 설치하는 데 사용하는 모든 항목을 부팅해야 합니다. 이렇게 하려면 일반적으로 기능 키를 통해 액세스하는 컴퓨터에 내장된 부팅 관리자를 사용해야 할 수 있지만 세부 사항은 컴퓨터마다 다릅니다.

답변2

이미 이 작은 파티션이 있으므로 첫 번째 파티션은 1이 아닌 2048로 시작합니다.

/dev / sda1 2048 411647 409600 200M Linux file system (/boot)

라벨 유형을 다음에서 변경해야 합니다.신병에게bios_grub예를 들어 parted를 통해:

parted /dev/sda
set 1 boot off
set 1 bios_grub on
q

그런 다음 다시 :

grub2-install /dev/sda

답변3

이전 스타일 BIOS 부팅 모드에서 GPT 파티션을 사용하려면 grub-install.

fdisk예를 들어 디스크 어딘가에 "BIOS 부팅" 유형의 파티션을 생성하는 데 사용합니다 . 예제 출력:

# fdisk -l /dev/sda
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 57E16A16-36B4-4445-A216-031EF6501415

Device        Start        End    Sectors   Size Type
/dev/sda1      2048    4196351    4194304     2G Linux RAID
/dev/sda2   4196352   35653631   31457280    15G Linux RAID
/dev/sda3  35653632   37750783    2097152     1G Linux swap
/dev/sda4  37750784   37816319      65536    32M BIOS boot
/dev/sda5  37816320 1953525134 1915708815 913.5G Linux LVM

답변4

지금 GPT 디스크(Ubuntu 18.04 서버)가 있는 EFI 모드 시스템에서 이 문제가 발생했는데, 어느 날 자체적으로 GRUB 셸까지만 부팅하기로 결정했습니다.

어쨌든 grub-pc(BIOS 모드/i386 시스템용)는 설치되었지만 grub-efi는 설치되지 않았습니다. 문제가 확인되면 수정은 간단했습니다.

# apt install grub-efi
# update-grub
# grub-install

첫 번째 명령은 grub-pc를 제거했습니다.

관련 정보