Linux 배포판이 설치된 USB 드라이브에 Grub을 설치합니다.

Linux 배포판이 설치된 USB 드라이브에 Grub을 설치합니다.

두 개의 Linux 배포판이 설치된 USB 드라이브를 만들려고 합니다. 아이디어는 USB 드라이브를 가지고 당시 제가 있던 컴퓨터에서 배포판을 부팅하는 것이었습니다. 나는 이것이 아마도 나쁜 습관이라는 것을 알고 있지만 단지 시도해 보고 싶었습니다.

다음을 기반으로 USB 드라이브에 Kali Linux 배포판을 설치하려고 했습니다.이 비디오여기서 VirtualBox VM은 USB 드라이브에 운영 체제를 설치하는 데 사용됩니다.

처음 시도했을 때 가상 머신을 EFI 모드로 부팅하지 않아서 OS가 레거시 모드로 설치되었습니다(부팅 지침은 MBR에 기록됩니다). 레거시 부팅을 지원하는 PC에서 부팅하면 모든 것이 잘 작동하지만 Microsoft Surface(레거시 부팅을 지원하지 않음)에서 부팅하려고 하면 외장 드라이브에서 부팅할 수 없는 것 같습니다.

그래서 가상 머신에서 EFI 모드를 활성화한 상태에서 Kali를 다시 설치해 보았는데, 이번에도 운이 좋지 않아 Surface에서 배포판을 부팅할 수 없었습니다. 레거시 모드로 배포판이 설치된 Surface에서 부팅하려고 할 때와 상황은 동일합니다. Surface가 부팅 가능한 USB 드라이브를 전혀 인식하지 못합니다.

인터넷 검색을 통해 USB/외부 드라이브에 GRUB를 설치/재설치하기 위한 여러 가지 솔루션을 찾았지만 시도해 보니 USB 드라이브에 GRUB를 설치한 것과 동일한 장치에서 부팅하는 경우에만 작동하는 것 같습니다. 예를 들어 VirtualBox VM을 사용하여 USB 장치에 GRUB를 설치하면 해당 VirtualBox VM에서 Kali 배포판을 USB 장치로만 부팅할 수 있습니다.

여기에 뭔가 빠진 것 같아요. 누군가 제가 명확하게 설명하고 고칠 수 있도록 도와줄 수 있나요?

도움이 될 수 있도록 Kali Linux의 EFI 모드로 설치한 후 USB 드라이브 파티션과 USB 드라이브의 ESP 파티션 내용을 설명하는 스크린샷을 첨부합니다.

분할

ESP 파티션 콘텐츠

- - 갱신 - -

EFI 부팅이 가능한 두 대의 컴퓨터에서 시스템을 부팅했습니다. 방금 ESP의 Kali 부트로더를 /EFI/Kali에서 대체 경로 /EFI/BOOT로 이동하고 부트로더 이름을 "grubx64.efi"에서 대체 이름 "bootx64.efi"로 바꿨습니다. 부팅 프로세스가 시작되지 않는 이유를 모르겠습니다. /EFI/Kali/grubx64.efi 누구든지 단서가 있습니까?

이제 모든 것을 레거시 모드(BIOS 사용)로 부팅하면 됩니다. 이것이 가능합니까? UEFI 및 레거시 모드에서 USB 드라이브를 부팅하는 것이 가능할 것 같지만 실제 EFI 부팅 가능 구성에서 아무 것도 망치지 않고 모든 것을 설정할 수 있는 방법이 있습니까?

답변1

@oldfred의 유용한 통찰력을 바탕으로 수많은 테스트와 심층적인 조사를 거친 후 문제를 해결한 것 같습니다. 이 답변에서는 제가 어떻게 이것을 달성했는지와 제가 찾은 결과를 간략하게 설명하고 싶습니다.

각 컴퓨터에서 이중 부팅(Kali + AVLinux) 시스템을 부팅하거나 그냥 부팅합니다.바이오스시작만 가능EFI부팅을 시작하거나 둘 다를 시작합니다.

이를 수행하기 위한 주요 요구 사항은 BIOS 모드 및 EFI 모드에서 grub을 설치하는 것입니다. 다음을 사용하여 장치/디스크를 준비하면 됩니다.GPT파티션 테이블을 만든 다음BIOS_boot파티션과 장치 시작 부분의 EFI 시스템 파티션. 두 가지 유형의 파티션을 만드는 방법에 대한 풍부한 자료가 온라인에 있으므로 쉽게 만들 수 있습니다. (예를 들어BIOS_boot 파티션,EFI 파티션).

더 명확하게 설명하기 위해 장치 파티션의 스크린샷을 첨부합니다.

듀얼 부팅 BIOS+EFI용 장치 파티션

이제 주제를 다음과 같이 나눕니다.EFI 시작부분합BIOS 부팅부분

EFI 지침

질문에서 말했듯이, VirtualBox VM을 사용하여 이중 부팅 시스템의 첫 번째 배포판(Kali Linux)도 설치했습니다(EFI 부팅 모드의 경우: 즉, EFI*가 활성화된 VirtualBox VM을 부팅함). 설치 프로그램의 .iso파일은 다음과 같이 로드됩니다. VM의 CD-ROM 드라이브 내용.

어떤 컴퓨터에서도 시스템을 부팅할 수 없다는 점을 제외하면 설치는 잘 진행되었습니다(설치에 사용한 것과 동일한 가상 머신을 제외하고는 확실하지 않습니다).

그 이유는 grub-installKali 설치 프로그램이 실행될 때 grub을 내 EFI 파티션 경로에 배치 /EFI/Kali/grubx64.efi하고 @oldfred가 제안한 대로:

외부 장치는 /EFI/Boot/bootx64.efi UEFI에서만 부팅됩니다.

그래서 EFI 파티션에 있는 부트로더를 경로별로 /EFI/Kali/grubx64.efi이동 + 이름 변경 하여 시스템을 부팅할 수 있었습니다 /EFI/BOOT/bootx64.efi.

또한 추가 조사에 따르면 grub을 다시 설치하면 문제를 제거할 수 있는 것으로 나타났습니다(아래에 표시된 방법에 따라 fe).이것질문) --removable명령 호출에 매개변수를 추가합니다 grub-install.

따라서 가이드의 명령은 다음과 같습니다.

grub-install --removable /dev/sdX

이렇게 하면 부트로더가 /EFI/BOOT/BOOTX64.EFI경로에 배치되어 문제가 해결됩니다.

* EFI 부팅을 지원하는 PC에서 인스톨러를 실행하는 것과 거의 동일합니다.

BIOS(레거시) 부팅

BIOS_boot 파티션을 생성한 후 package*를 통해 BIOS 부팅 모드용 grub을 설치해야 합니다(MBR에 설치라고도 함) grub-pc. EFI 디렉터리를 마운트하지 않는다는 점을 제외하면 프로세스는 EFI 부팅 모드용 grub 설치와 거의 동일합니다.

sudo mount /dev/sdXX /mnt/boot/efi

i386-pcgrub-install 명령에서 대상 플랫폼을 지정합니다 :

grub-install --target=i386-pc /dev/sdX

grub-pc* 실제로, 이 패키지가 MBR에 grub을 설치하는 데 사용된다는 점(따라서 BIOS 부팅 모드에 적합함)과 이 패키지가 EFI 파티션에 grub을 설치하는 데 사용된다는 점 (EFI 부팅 모드에 적합함) 을 읽지 grub-efi않는 한, 확실하지 않습니다. EFI 파티션에 grub을 설치하고 grub-pc 패키지를 설치했기 때문에 100% 확실하지는 않습니다.

관련 정보