이 상황에서 Grub을 수정하는 가장 좋은 방법

이 상황에서 Grub을 수정하는 가장 좋은 방법

처음에는 Windows 10과 Ubuntu의 이중 부팅을 사용했습니다. 세부 사항:
- /dev/sda1의 Windows EFI 파일
- /dev/sda8의 Ubuntu

배우기 위해 저는 Linux From Scratch 프로젝트를 따르기 시작했고 나만의 Linux를 만들어 보았습니다. 나는 이를 위해 /dev/sda9 파티션을 사용했습니다. 완료한 후에는 grub 메뉴에서 Windows와 Ubuntu를 찾을 수 없었고 Linux로 처음부터 시작해야 했습니다. 하지만 Live CD로 부팅하려고 하면 Ubuntu와 Windows 모두 Live CD 옵션이 표시됩니다.
다음은 Live CD 옵션을 사용할 때 일부 명령의 출력입니다.

ls -l /dev/disk/by-label/

total 0
lrwxrwxrwx 1 root root 10 Mar 19 10:15 DELLSUPPORT -> ../../sda7
lrwxrwxrwx 1 root root 10 Mar 19 10:15 ESP -> ../../sda1
lrwxrwxrwx 1 root root 10 Mar 19 10:15 Image -> ../../sda6
lrwxrwxrwx 1 root root 10 Mar 19 10:15 New\x20Volume -> ../../sda4
lrwxrwxrwx 1 root root 10 Mar 19 10:15 OS -> ../../sda3
lrwxrwxrwx 1 root root 10 Mar 19 10:15 UBUNTU\x2017_1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Mar 19 10:15 WINRETOOLS -> ../../sda5


sudo fdisk -l 명령의 경우

    Disk /dev/loop0: 1.3 GiB, 1425731584 bytes, 2784632 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


Disk /dev/sda: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: B128B55E-BDDA-4F19-8CBA-8FAD8E802736

Device          Start        End    Sectors   Size Type
/dev/sda1        2048    1026047    1024000   500M EFI System
/dev/sda2     1026048    1288191     262144   128M Microsoft reserved
/dev/sda3     1288192 1722216447 1720928256 820.6G Microsoft basic data
/dev/sda4  1722216448 2656086015  933869568 445.3G Microsoft basic data
/dev/sda5  3879495680 3880417279     921600   450M Windows recovery environment
/dev/sda6  3880417280 3904839679   24422400  11.7G Windows recovery environment
/dev/sda7  3904841728 3907028991    2187264     1G Windows recovery environment
/dev/sda8  2752610304 3879495679 1126885376 537.3G Linux filesystem
/dev/sda9  2656086016 2752610303   96524288    46G Linux filesystem

Partition table entries are not in disk order.




Disk /dev/sdb: 14.7 GiB, 15744892928 bytes, 30751744 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: dos
Disk identifier: 0xcf80b994

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1  *     2048 30751743 30749696 14.7G  c W95 FAT32 (LBA)


명령의 경우 sudo blkid:

/dev/sda1: LABEL="ESP" UUID="C496-69E5" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="4950763d-c24d-4680-927a-1e595c303648"
/dev/sda3: LABEL="OS" UUID="9254944E54943747" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="b16a3bfb-16fb-4275-a3fe-6e3dbcb689a1"
/dev/sda4: LABEL="New Volume" UUID="48103B2D103B20FC" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="25545acb-af8e-4230-a6d8-24337815dde9"
/dev/sda5: LABEL="WINRETOOLS" UUID="5018B15D18B14330" TYPE="ntfs" PARTUUID="c1f4defe-71d1-46fd-a501-cabfd279c132"
/dev/sda6: LABEL="Image" UUID="B23AB2C13AB281C1" TYPE="ntfs" PARTUUID="cfa18786-2f02-4b3a-ae6e-d44dc0364e50"
/dev/sda7: LABEL="DELLSUPPORT" UUID="6CE0AEC7E0AE973C" TYPE="ntfs" PARTUUID="82b58d3a-141a-4134-91cb-f41c3994121c"
/dev/sda8: UUID="972bea99-5b5f-410b-830b-b3c248d54062" TYPE="ext4" PARTUUID="3ee28255-1737-405c-8bf7-90695a0ce8b2"
/dev/sda9: UUID="180af068-75e7-4fb4-b459-271231cec69f" TYPE="ext4" PARTUUID="5dfc33a2-73a5-4ebb-994e-c1cc7d655d21"
/dev/sdb1: LABEL="UBUNTU 17_1" UUID="D29D-D873" TYPE="vfat" PARTUUID="cf80b994-01"
/dev/loop0: TYPE="squashfs"
/dev/sda2: PARTLABEL="Microsoft reserved partition" PARTUUID="6eec3d1c-1f7f-46a9-9d7a-fa7b75775a1f"

sdaX를 모두 설치하고 실행한 후grub-install --boot-directory=/mnt/boot /dev/sda, 다음 오류가 발생합니다.

Installing for i386-pc platform.
grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub-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..
grub-install: error: will not proceed with blocklists.

나는 많이 검색했지만 아무 것도 작동하지 않는 것 같습니다. 어떤 도움이라도 좋을 것입니다.

답변1

시스템이 UEFI 및 GPT를 사용하고 레거시 BIOS용 GRUB 버전을 설치하려고 하지만 레거시 호환 BIOS 부팅 파티션이 없습니다. 이는 유효한 조합이 아닙니다.

UEFI는 개발 환경을 훨씬 뛰어넘기 때문에 기존 스타일의 부트 로더에는 UEFI 부팅 구성표를 사용하는 운영 체제를 포함할 수 없습니다. 일부 UEFI 부트로더가능한UEFI 부트로더 작성자가 이 특정 UEFI 구현에서 레거시 호환성을 호출하는 방법을 알고 있는 경우 이전 운영 체제를 부팅하는 옵션을 제공할 수 있습니다.

가장 좋은 방법은 GRUB의 UEFI 버전을 사용하는 것입니다( Installing for x86_64-efi platformi386-pc와 유사한 내용이 표시되어야 합니다).

이렇게 하면 삽입이나 차단 목록과 같은 BIOS 스타일 트릭이 전혀 필요 없이 GRUB를 \EFI[선택한 이름]\grubx64.efi와 같은 디렉터리의 /dev/sda1에 파일로 설치할 수 있습니다. grub-installGRUB 명령의 UEFI 버전은 이를 자동으로 처리해야 합니다.

Live CD로 부팅할 때 시스템이 기존 BIOS와 UEFI라는 두 가지 방법으로 CD에서 부팅될 수 있다는 점을 알고 있어야 합니다. 비결은 부트로더 설치에 중요한 UEFI 펌웨어 부팅 변수는 시스템이 UEFI 모드에서 부팅될 때만 액세스할 수 있다는 것입니다. 일부 운영 체제 설치 프로그램은 실제로 UEFI 부팅 변수에 액세스할 수 있는지 여부를 감지하고 해당 변수를 사용하여 UEFI 또는 부트 로더의 레거시 BIOS 버전을 설치할지 여부를 결정합니다. 레거시 부팅 CD/DVD에서 UEFI 부팅 가능 운영 체제를 설치해야 하는 경우 이 결정을 무시할 수 있는 방법을 찾아야 합니다.

GPT 파티션 디스크에 BIOS 부팅 파티션을 생성하려면 펌웨어 설정(Windows용 UEFI 부팅, Linux 설치용 레거시 부팅)을 지속적으로 바꿔야 합니다. 이는 이상적인 것은 아니며 모든 시스템이 BIOS+GPT 조합을 지원하는 것은 아닙니다.

새 하드웨어의 프로세스를 배우는 것이 목표라면 전체 레거시 작업을 위해 시스템을 완전히 다시 설치하는 것은 많은 작업이 필요하고 비생산적입니다.

관련 정보