/
내 컴퓨터, 파티션, swap
파티션 및 ESP
EFI 부팅 파티션 에 Fedora를 설치했습니다 .
이제 Fedora 대신 Elementary OS를 설치하겠습니다.
/
파티션(/dev/sda3)을 포맷했습니다 .- 스왑 파티션 포맷(/dev/sda4)
- 하지만아니요EFI 부팅 파티션(/dev/sda1) 포맷
이제 부팅하면 Fedora 설치의 이전 grub 메뉴가 표시됩니다. 다음을 통해서만 Elementary OS로 부팅할 수 있습니다.
- 부팅 메뉴로 들어갑니다.
- EFI 파일에서 부팅하도록 선택
- 파일이 포함된 디렉터리
/dev/sda1/
로 이동합니다 . 이것은 .elementary
grubx64.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