두 개의 Grub 부트 로더 또는 Grub 메뉴. 어떻게 해결할 수 있나요?

두 개의 Grub 부트 로더 또는 Grub 메뉴. 어떻게 해결할 수 있나요?

Arch와 Ubuntu Linux를 이중 부팅하려고 하는데 어떻게든 두 개의 grub 메뉴로 끝나는 것 같습니다. grub 프롬프트에서 exit를 입력하면 두 번째 메뉴가 나타납니다. 더 이상한 점은 처음 나타나는 grub 메뉴에 Arch Linux용 부팅 항목이 있지만 내 시스템에 존재하지 않는 /dev/sde에서 uuid를 찾으려고 한다는 것입니다. 우분투 항목이 정상적으로 부팅됩니다.

이유는 잘 모르겠지만, 저는 grub이 Linux의 가장 혼란스러운 측면 중 하나라고 생각합니다.

Archlinux를 설치한 후 실행했습니다.

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ArchLinux --recheck

Th3에 대한 플래그를 추가하고 실행합니다.grub-mkconfig -o /boot/grub/grub.cfg

이 문제를 어떻게 해결하며 왜 이상한 구성이 발생합니까?

기타 관련 정보는 모두 아래에 있을 것으로 생각됩니다. 누락된 정보가 있으면 알려주시기 바랍니다.

트리의 출력:

/boot/efi/
|-- EFI
|   |-- ArchLinux
|   |   `-- grubx64.efi
|   |-- BOOT
|   |   |-- BOOTX64.EFI
|   |   |-- fbx64.efi
|   |   `-- mmx64.efi
|   `-- ubuntu
|       |-- BOOTX64.CSV
|       |-- grub.cfg
|       |-- grubx64.efi
|       |-- mmx64.efi
|       `-- shimx64.efi
`-- System\ Volume\ Information
    |-- AadRecoveryPasswordDelete
    `-- ClientRecoveryPasswordRotation

내가 추가한 부팅 미디어 레이아웃 [Ubuntu**].

lsblk /dev/nvme0n1
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1     259:0    0 476.9G  0 disk 
|-nvme0n1p1 259:1    0   487M  0 part /boot/efi
|-nvme0n1p2 259:2    0 274.4G  0 part [Ubuntu**]
|-nvme0n1p3 259:3    0 122.1G  0 part [SWAP]
`-nvme0n1p4 259:4    0    80G  0 part /

시작 시 나타나는 첫 번째 그럽 메뉴 첫 번째 메뉴

아치 리눅스 항목이 작동하지 않습니다 잘못된 아치 입구

첫 번째 그럽 인스턴스 종료 첫 번째 메뉴 종료

두 번째 그럽 메뉴 인스턴스? ! 두 번째 그럽 메뉴

답변1

이는 대부분의 efi BIOS가 efistub를 사용하여 Linux 커널을 부팅할 수 있는 경우 grub이 필요하지 않기 때문입니다. Efistub은 Linux 커널을 직접 부팅합니다.

https://wiki.archlinux.org/title/EFISTUB

grub을 계속 사용할 수도 있지만, 발견한 바와 같이 각 grub은 grub 중 하나가 두 가지 모두에 대한 커널 경로와 설정을 올바르게 찾을 수 있도록 추가 디버깅 없이 특정 운영 체제(Ubuntu 또는 아치)를 부팅하는 데만 능숙합니다. .

답변2

첫 번째 GRUB 메뉴는 Ubuntu의 GRUB(GRUB 버전 2.04)에서 제공됩니다. shimx64.efiUbuntu의 ESP 디렉터리에 설치되므로 Ubuntu는 완전히 grubx64.efi별도의 버전일 수 있습니다. 보안 부팅에서는 GRUB의 모듈 로드를 허용하지 않기 때문입니다. 왜냐하면 GRUB 모듈은 보안 부팅 펌웨어가 이해하는 PE32+가 아닌 ELF 바이너리 형식을 사용하기 때문입니다. 서명 확인을 통해 완료됩니다.)

어쩌면 당신의 Arch 설치는 GRUB 2.04가 인식하지 못하는 파일 시스템 유형을 사용할 수도 있지만, Arch의 자체 GRUB(버전 2.06)은 그것을 읽을 수 있습니다. 이 경우, Arch의 GRUB를 기본 부팅 항목으로 사용하고 grub.cfgUbuntu의 GRUB 메뉴를 표시하기 위해 Ubuntu의 부팅 항목을 읽는 사용자 정의 부팅 항목을 만드는 것이 가장 좋습니다 . 그런 다음 해당 메뉴 항목을 사용하여 Ubuntu를 부팅할 수 있습니다 grub.cfg. Ubuntu GRUB의 나머지 부분이 실제로 전혀 사용되지 않더라도 Ubuntu가 커널 업데이트를 받을 때마다 평소처럼 업데이트됩니다 .

실행 efibootmgr -v: Ubuntu의 시작 항목과 Arch의 다른 시작 항목이 표시됩니다. 이를 통해 efibootmgr -oArch의 GRUB가 첫 번째로 시도되도록 부팅 순서를 다시 정렬할 수 있습니다. 출력 BootOrder의 기존 설정을 살펴보고 efibootmgr -v숫자를 원하는 순서로 이동하세요.

( 이상한 UEFI 펌웨어 구현이 있는 경우에 BootOrder나열된 부팅 옵션의 총 수를 변경하지 않는 것이 가장 좋습니다 .)efibootmgr

관련 정보