UEFI Windows/Linux 멀티부팅 설정을 위한 사용자 정의 Grub 메뉴를 구축하려고 합니다. 다음이 포함된 USB 드라이브를 통해 메뉴를 성공적으로 테스트했습니다.
/EFI/boot/BOOTX64.EFI
/grub/grub.cfg
/grub/x86_64-efi/*
…etc.
해당 드라이브에서 부팅하면 문제 없이 메뉴에 액세스할 수 있습니다. 다음으로 grub을 PC의 EFI 시스템 파티션으로 전송했습니다.
/boot/grub/bootx64.efi
/boot/grub/grub.cfg
/boot/grub/x86_64-efi/*
…etc.
이 파티션에는 Windows용 부트 로더도 있습니다 /EFI/Microsoft/boot
.
마지막으로 Windows 유틸리티 BOOTICE(또는 시스템 BIOS)를 사용하여 이를 추가하고 \boot\grub\bootx64.efi
재부팅하면 grub이 나타납니다.
...메뉴를 불러오는 대신에 구조 메시지를 받게 된 것을 제외하면요. 내 가정은 grub.cfg와 모듈을 잘못된 위치에 넣었다는 것입니다. 그러나 정말 이상한 점은 ls
파티션을 표시하지 않는다는 것입니다 (hd0) (hd1)
. 내 기대는 (hd0) (hd0,msdos1)
그런 것이었지만 그럽 구조는 ls
어떤 파티션에서도 전혀 작동하지 않는 것 같습니다. ls (hd0)
둘 다 ls (hd1)
"알 수 없는 파일 시스템"이 생성됩니다.
내 시스템에는 파티션이 있는 하나의 물리적 디스크가 포함되어 있습니다.
1 = EFI system partition (fat32)
2 = Veracrypted partition (with Windows installation)
3 = Veracrypted partition (data)
4 = Linux swap
5 = Linux root
6 = Linux home
Grub이 EFI 시스템 파티션에서 부팅할 수 있지만 해당 파티션이나 다른 파티션을 볼 수 없는 이유는 무엇입니까? 더 중요한 것은 USB와 같은 내부 드라이브에서 메뉴를 어떻게 얻을 수 있습니까?
답변1
ls (hd0)
단일 파일 시스템으로 전체 디스크에 액세스하려고 한다는 의미입니다. 이 메시지 (hd0): Filesystem is unknown.
는 정상이며 디스크가 어떤 방식으로든 분할된 경우 예상됩니다.
대신에 그냥 입력하세요ls (hd0
아니요대괄호를 닫은 다음 Tab 키를 누릅니다. GRUB가 파티션 유형을 인식하는 경우 GRUB에 알려진 파티션과 해당 파일 시스템 유형을 나열해야 합니다.
문제는 GRUB의 구성 파일이 모듈 디렉토리와 마찬가지로 <partition root>/grub/grub.cfg
가 아닌 에 있을 것으로 예상한다는 점일 수 있습니다 .<partition root>/boot/grub/grub.cfg
GRUB bootx64.efi
파일에는 GRUB 코어 이미지와 일부 선택적 GRUB 모듈이 포함되어 있습니다. 이 내장 모듈 세트가 포함되어 있지 않으면 part_gpt
GRUB는 GPT 파티션 테이블을 인식하지 못하므로 나머지 GRUB 모듈이 포함된 파일 시스템에 액세스할 수 없게 됩니다. 이는 GRUB 복구 모드로 들어가는 또 다른 이유일 수 있습니다.
답변2
bootx64.efi에 포함된 모듈에 대한 telcoM의 정보 덕분에 해결책을 찾을 수 있었습니다. 기본적으로 모든 grub 파일을 USB 스틱에 복사하는 대신 grub-install
명시적으로 내부 시스템 파티션에 직접 복사해야 했습니다 .grub-install
아마도 USB 스틱에서 grub-install을 실행하면 MBR 파티션 장치이고 bootx64.efi에 part_gpt 모듈이 내장되어 있지 않다는 사실이 발견됩니다. 이것이 내부 파티션을 인식하지 못하는 이유입니다. install 내부 디스크에서 직접 실행하면 GPT를 확인하고 모듈을 내장합니다. 두 경우 모두 해결책은 USB 스틱에서 grub 파일을 복사하는 것이 아니라 grub을 내부 파티션에 직접 설치하는 것입니다.
답변3
msdos 파티션으로 인해 커널 오류가 발생하여 컴퓨터가 디스크를 찾을 수 없고 grub으로만 부팅할 수 있다는 메시지가 표시되었습니다. grub에서 ls 명령을 실행했는데 아무것도 나열되지 않았습니다. ls가 목록을 표시하도록 하기 위해 내가 한 일은 다음과 같습니다.
Go to your grub command line type:
set root=ls ; Hit enter
그런 다음 ls 명령을 다시 실행하면 모든 파티션이 나열됩니다. 이는 msdos 커널 오류가 발생하는 경우 도움이 될 것이며, grub이 실행되도록 하는 손상된 msdos 파티션을 찾아 복구할 수 있습니다.