GRUB을 EFI 파티션에 다시 설치하려면 어떻게해야합니까?


32

GRUB 2를 다시 설치하고 다음 지침을 찾았 습니다. Ubuntu Live CD 또는 USB를 사용하여 Grub 2를 복구, 복원 또는 다시 설치하는 방법 . 필자의 경우 부트 로더는 EFI 파티션에 설치됩니다. 이 안내서에 제공된 명령을 사용하면 GRUB이 EFI 파티션에 자동으로 다시 설치되거나 Ubuntu가 설치된 루트 파티션에 설치됩니까? 분명히, 나는 이것이 일어나기를 원하지 않습니다.


3
제공된 링크의 지침은 레거시 BIOS 모드에서만 GRUB을 다시 설치할 때만 유효하며,이 경우에는 작동하지 않습니다. EFI BIOS 모드에서 GRUB을 Ubuntu 설치에 다시 설치하려면 내 대답을 읽으십시오. :)
cl-netbox

대단히 감사합니다! :) 몇 가지 질문이 있습니다. UEFI 시스템에 Ubuntu를 설치했을 때 BIOS에서 두 항목이 발견되었습니다. unic 우분투 항목을 가질 수있는 방법이 있습니까? MBR 파티션 테이블 (EFI 또는 다른 부팅 파티션이없는 경우)의 경우 sudo mount / dev / sd ** / mnt / boot / efi를 제외하고 동일한 명령을 사용할 수 있습니까?
Generoso

다음을 사용하여 두 번째 Ubuntu 항목을 제거 할 수 있습니다. sudo efibootmgr (모든 항목 나열) | sudo efi bootmgr -b <entry-number> -B .... 및 기존 BIOS 모드에서 GRUB을 다시 설치하려면 다음 명령을 실행하십시오. sudo mount / dev / sd ** / mnt | sudo grub-install --boot-directory = / mnt / boot / dev / sd * (* = 디스크 | ** = 시스템 파티션)! :)
cl-netbox

Perfect :) 어쨌든 UEFI 시스템과 EFI 파티션이 있으므로 새 Windows 설치를 수행 할 때 grub을 무시하지 않는 방법이 있습니까?
Generoso

글쎄, Microsoft는 자체 제품 이외의 다른 것을 돌보지 않으므로 Windows에 해를 끼치 지 않고 Linux 시스템을 설치할 수 있습니다. 불행히도 다른 방법은 아닙니다. 따라서 설치 후 Windows를 설치할 때 우분투, 나중에 GRUB 부트 로더를 복원해야합니다. :)
cl-netbox

답변:


54

이 방법으로 GRUB 부트 로더를 EFI 모드로 Ubuntu 설치에 다시 설치하십시오 ...

Ubuntu 설치 매체에서 부팅하고 '설치하지 않고 Ubuntu 설치'를 선택하십시오.
(EFI 모드에서 설치 매체를 부팅하려면 UEFI가 앞에있는 Ubuntu 항목을 선택하십시오.)

라이브 데스크탑에 있으면 터미널을 열고 다음 명령을 실행하십시오.

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub  

참고 : sdX= 디스크 | sdXX= efi 파티션 | sdXXX= 시스템 파티션

GParted를 사용하는 파티션을 식별하기 위해 도구가 설치 매체에 포함되어 있습니다.
GRUB 명령을 실행하면 별도의 EFI 파티션에 GRUB이 설치됩니다.


+1 그러나 우분투 자체에서 설치하지 않는 이유는 무엇입니까?

1
@ MarkYisri : 대단히 감사합니다! :) 시스템을 손상시키지 않고 GRUB 부트 로더를 다시 설치하는 가장 안전한 방법이기 때문에 시스템이 제대로 부팅되지 않는 경우 ... 유일한 방법입니다! :)
cl-netbox

1
이 솔루션에서 'grub-install'은 EFI 모드로 설치해야한다는 것을 어떻게 알 수 있습니까?
user334639

3
중요한 점은 설치 미디어를 올바른 부팅 모드 grub-efi로 부팅 하는 것입니다. 다시 설치 하려면 UEFI 모드 grub-pc로 부팅해야하며 다시 설치 하려면 레거시 모드로 부팅해야합니다.
mook765

1
이것은 한 번의 변경을 제외하고는 나를 위해 일했습니다 : grub-install /dev/sdXX디스크를 사용하지 않고 EFI 파티션을 grub 설치에 사용했습니다.
오리 다저스

3

이것은 나를 위해 일한 유일한 방법입니다 : (시스템 : sdb8, 부팅 : sdb6, efi : sdb2)

sudo mount /dev/sdb8 /mnt 
sudo mount /dev/sdb6 /mnt/boot 
sudo mount /dev/sdb2 /mnt/boot/efi

sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys

sudo chroot /mnt

grub-install --target=x86_64-efi /dev/sdb

grub-install --recheck /dev/sdb

exit &&
sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt

무엇을 --recheck합니까? 매뉴얼은 말합니다 delete device map if it already exists?
MrCalvin

부트 엔트리를 호출하면 기본값과 다른 것이 --bootloader-id=Ubuntu_02있습니다. 예를 들어 부트가 실패합니다. grub 콘솔에서 부팅하면 어떤 솔루션입니까?
MrCalvin

예. grub-install --recheck필요한 것 같습니다 . 작동하지 않는 USB HDD EFI를 수정했습니다.
solsTiCe

2

지침에 대한 @ cl-netbox에 감사합니다!

(Linux Mint 18.2 Sonya를 18.3 Sylvia로 업그레이드 한 후) 시스템이 부팅되지 않으므로 위의 지침을 따랐지만 여전히 성공하지 못했습니다. 그러나 내 컴퓨터에는 별도의 파티션에 / boot가 있고 (LVM을 사용하고 있기 때문에) 약간 수정 된 프로세스는 다음과 같습니다.

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXY /mnt/boot
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub 

참고 : sdX = 디스크 | sdXX = efi 파티션 | sdXY = 부팅 파티션 | sdXXX = 시스템 파티션


우연히 rm -Rf / boot / efi 한 우분투 바이오닉 시스템을 사용하고있었습니다! 시스템이 여전히 실행 중이므로 마지막 두 명령 (grub-install / dev / mapper / ubuntu--vg-root AND update-grub)을 사용해 보았습니다. 재부팅하면 모든 것이 완벽하게 작동합니다. 휴와 감사합니다 :)
Roel Van de Paar

2

또한 라이브 CD로 부팅하여 복구하는 경우 grub-efi-amd64-bin 패키지가 누락 된 다음 줄이 생길 수 있습니다

"grub-install --target=x86_64-efi /dev/sdb" 

"grub-install : error : /usr/lib/grub/x86_64-efi/modinfo.sh가 존재하지 않습니다. --target 또는 --directory를 지정하십시오."라는 오류 메시지와 함께 실패합니다.

이 경우 chroot 외부에서 이것을 실행하십시오.

sudo apt get grub-efi-amd64-bin

그런 다음 / usr / lib / grub / x86_64-efi를 chroot 마운트에 추가하십시오.

BTW "/ dev / sdb"매개 변수는 더 이상 사용되지 않으며 무시됩니다.


0

ci-netbox 답변 외에도.
pendrive OS 버전이 디스크에 설치된 버전과 일치하지 않으면 grub-install에서 올바른 grub 설치를 식별하기 어려울 수 있습니다.

$ sudo chroot /mnt
# grub-install /dev/sdX
grub-install: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. 
Please specify --target or --directory.

사용할 설치를 수동으로 식별하십시오

# ls /usr/lib/grub/
grub-mkconfig_lib  x86_64-efi  x86_64-efi-signed

그런 다음 grub-install을 다시 시작하십시오.

# grub-install --target=x86_64-efi /dev/sdX 
Installing for x86_64-efi platform.
Installation finished. No error reported.

0

EFI 파티션이 손실되면 쉽게 복구 할 수 있습니다. "EFI 파티션 (1)"유형의 새 GPT 파티션을 사용 fdisk하거나 parted생성하여 다음과 같이 포맷 할 수 있습니다.

sudo mkfs.msdos /dev/sdX

그런 다음 마운트하고 다음을 수행 할 수 있습니다.

sudo grub-install /dev/sdX

다른 솔루션에서와 같이.


0

그래서 내 추측은 문제의 원인은 우분투 설치가 fstab 인 경우 efi 파티션을 마운트하지 않기 때문입니다. 그리고 grub을 업데이트합니다. 업데이트시.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.