EFI 부팅 파티션을 다시 만드는 방법은 무엇입니까?

EFI 부팅 파티션을 다시 만드는 방법은 무엇입니까?

/내 컴퓨터, 파티션, swap파티션 및 ESPEFI 부팅 파티션 에 Fedora를 설치했습니다 .

이제 Fedora 대신 Elementary OS를 설치하겠습니다.

  1. /파티션(/dev/sda3)을 포맷했습니다 .
  2. 스왑 파티션 포맷(/dev/sda4)
  3. 하지만아니요EFI 부팅 파티션(/dev/sda1) 포맷

이제 부팅하면 Fedora 설치의 이전 grub 메뉴가 표시됩니다. 다음을 통해서만 Elementary OS로 부팅할 수 있습니다.

  1. 부팅 메뉴로 들어갑니다.
  2. EFI 파일에서 부팅하도록 선택
  3. 파일이 포함된 디렉터리 /dev/sda1/로 이동합니다 . 이것은 .elementarygrubx64.efi/boot/efi/EFI/elementary/grubx64.efi

이 문제를 어떻게 해결할 수 있나요? 부팅 파티션을 다른 /dev/sda1/것으로 포맷 fat16한 다음 grub을 다시 설치하고 싶습니다 .

/dev/sda1이제 내 내용은 다음과 같습니다.

root@rafael:/home/rafael# ls /boot/efi/
EFI  mach_kernel  System

root@rafael:/home/rafael# ls /boot/efi/EFI/
BOOT/       elementary/ fedora/     

root@rafael:/home/rafael# ls /boot/efi/EFI/fedora/
BOOT.CSV  fonts  gcdx64.efi  grub.cfg  grubx64.efi  MokManager.efi  shim.efi  shim-fedora.efi

root@rafael:/home/rafael# ls /boot/efi/EFI/elementary/
grubx64.efi

이것은 내 efibootmgr결과입니다.

BootCurrent: 003D
Timeout: 0 seconds
BootOrder: 2001,2002,2003
Boot0000* Notebook Hard Drive
Boot0010* Internal CD/DVD ROM Drive
Boot0011* Internal CD/DVD ROM Drive (UEFI)
Boot0012* Fedora
Boot0013* Fedora
Boot0014* Fedora
Boot0015* Fedora
Boot0016* Fedora
Boot0017* Fedora
Boot0018* Fedora
Boot0019* Fedora
Boot001A* Fedora
Boot001B* Fedora
Boot001C* Fedora
Boot001D* Fedora
Boot001E* Fedora
Boot001F* elementary
Boot2001* USB Drive (UEFI)
Boot2002* Internal CD/DVD ROM Drive (UEFI)

어떤 도움이라도 대단히 감사하겠습니다.

답변1

왜 grub을 사용하고 싶은지 모르겠습니다. UEFI는 부팅 로더 역할을 하며, 이를 통해 부팅 메뉴에서 다양한 운영 체제나 개별 커널을 선택할 수 있습니다. 몇 가지 예외가 있지만 일반적으로 두 번째 부트로더(이 경우 grub)를 연결할 필요는 없습니다.

기본 OS를 설치했다고 말씀하셨습니다.대신에Fedora는 로드만 하면 된다는 의미입니다.하나운영 체제. 여기서 방법을 소개합니다 아니요그럽을 사용하세요. 커널은 EFI_STUB로 컴파일되어야 합니다. 그렇다면 확인할 수 있습니다.

grep EFI_STUB /boot/config-<version>

커널 및 initramfs를 ESP(EFI 시스템 파티션)에 복사

cp /boot/vmlinuz-<version> /boot/efi/EFI/elementary/vmlinuz-<version>.efi
cp /boot/initrd.img-<version> /boot/efi/EFI/elementary/initrd.img-<version>

UEFI에서 커널을 부팅 옵션으로 등록

echo "root=UUID=<disk_uuid> ro quiet rootfstype=ext4 add_efi_memmap initrd=\\EFI\\elementary\\initrd.img-<version>" |
  iconv -f ascii -t ucs2 |
  efibootmgr \
    --create --gpt \
    --disk /dev/<disk> --part <partition_number> \
    --label "Elementary OS" \
    --loader "\\EFI\\elementary\\vmlinuz-<version>.efi" \
    --write-signature --append-binary-args -

매개변수는 --disk디스크의 장치 이름을 사용합니다(예: 4) --disk /dev/sda. --part매개변수는 ESP의 파티션 번호(예: 4)를 사용합니다. 다음 명령을 사용하여 ESP 파티션 번호를 찾을 수 있습니다.

gdisk -l /dev/sda | awk '$6=="EF00" {print $1}'

커널을 업데이트할 때마다 이 단계를 반복하세요.

이 작업을 수동으로 수행하거나(위 단계를 반복하기만 하면 됨) 작업을 수행하기 위한 작은 스크립트를 작성할 수 있습니다. 전체 자동화를 위해 스크립트는 커널 설치 후 프로세스, initramfs 사후 업데이트 프로세스 및 커널 postrm 프로세스(UEFI 부팅 항목 제거)에 연결할 수 있습니다. 실제로 이것이 배포판에서 기본적으로 수행되지 않는 이유를 모르겠습니다. 단지 몇 줄의 코드에 불과합니다.

답변2

내가 해냈어!

먼저 다음을 통해 불필요한 시작 항목을 모두 제거했습니다.

efibootmgr -b <entry_hex_number> -B

그런 다음 파일 시스템을 사용하여 ESP 파티션을 다시 포맷합니다 FAT32.

mkfs.vfat -F32 /dev/sda1

/dev/sda그런 다음 GRUB을 NOT 으로 설치하십시오 ./dev/sda1

grub-install /dev/sda

관련 정보