Linux에서 Grub 부트로더를 복원하는 방법

Linux에서 Grub 부트로더를 복원하는 방법

GRUB(GNU Grand Unified Bootloader)는 마더보드의 BIOS를 운영 체제의 커널에 연결하는 강력하고 유연한 유틸리티입니다. 더 큰 멀티부팅 바이너리를 부트스트랩하는 데 사용하는 마더보드의 메모리에 작은 프로그램을 로드하여 작동합니다.

그러나 GNU GRUB이 운영 체제의 커널을 로드하지 못하는 경우가 있습니다. 예를 들어 Linux와 Windows의 이중 부팅 설정은 종종 후자가 GNU 부트로더를 지우는 결과를 낳습니다. 이 자습서에서는 가장 널리 사용되는 Linux 배포판을 사용하여 GRUB를 다시 설치하여 시스템을 복구하는 방법을 보여줍니다.

Ubuntu 및 Debian에서 GRUB 복원

Ubuntu 및 Debian에서 GNU GRUB을 다시 설치하는 가장 빠른 방법 중 하나는 배포판의 라이브 복사본을 부팅하는 것입니다. 이렇게 하면 시스템의 루트 파티션을 마운트하고 라이브 배포판의 GRUB 바이너리를 사용하여 시스템의 부트로더를 다시 만들 수 있습니다.

Ubuntu Live의 시작 화면을 보여주는 창.
  • 라이브 배포판 환경에서 터미널을 엽니다.
Ubuntu Live 환경의 스크린샷.
  • 시스템 루트 파티션의 장치 이름을 찾으십시오. 다음 명령을 실행하여 이를 수행할 수 있습니다.

sudo fdisk -l | grep "Linux filesystem$"

시스템의 현재 루트 파일 시스템을 보여주는 창.
  • 라이브 배포판의 “/mnt” 디렉터리에 시스템의 루트 파티션을 마운트합니다.

sudo mount /dev/sda1 /mnt

라이브 세션 내에 마운트되는 루트 파티션을 보여주는 창.
  • GRUB 바이너리를 다시 설치하십시오.

sudo grub-install --force --boot-directory=/mnt/ /dev/sda1

Ubuntu용 GRUB 재설치 프로세스를 보여주는 창.
  • PC를 종료합니다. USB 드라이브를 제거하고 다시 부팅하십시오. Linux OS로 부팅해야 합니다.
  • 시스템의 현재 상태를 반영하도록 시스템의 GRUB 구성 파일을 새로 고칩니다.

sudo update-grub

Ubuntu의 GRUB 업데이트 프로세스를 보여주는 창.

Arch Linux에서 GRUB 복원

Ubuntu 및 Debian 외에도 Arch Linux 의 라이브 복사본을 사용하여 부트로더를 복원할 수도 있습니다. 이것의 한 가지 장점은 라이브 Arch Linux가 그래픽 디스플레이에 의존하지 않으므로 SSH를 통해 헤드리스 시스템에서도 GRUB를 쉽게 복원할 수 있다는 것입니다.

라이브 Arch Linux 환경을 보여주는 스크린샷.
  • lsblk를 사용하여 시스템의 루트 파티션을 결정합니다 .

lsblk

현재 세션에서 사용 가능한 모든 파티션을 보여주는 스크린샷.
  • 라이브 환경에 루트 디렉터리를 마운트합니다.

mount /dev/sda1 /mnt

  • 시스템의 루트 디렉터리에 라이브 시스템의 프로세스를 바인딩합니다.

mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
mount --bind /run /mnt/run
mount --bind /dev /mnt/dev

특수 파일을 마운트하는 과정을 보여주는 스크린샷.
  • 현재 세션의 루트를 시스템으로 변경합니다.

chroot /mnt /bin/sh -i

  • 다음을 실행하여 시스템의 부트로더 바이너리를 다시 설치하십시오.

/sbin/grub-install --target=i386-pc /dev/sda

Arch Linux에서 GRUB의 재설치 프로세스를 보여주는 창.
  • 시스템의 GRUB 구성 파일을 다시 로드합니다.

/sbin/grub-mkconfig > /boot/grub/grub.cfg

  • Ctrl+를 눌러 D시스템의 루트에서 로그아웃합니다.
시스템의 GRUB 구성을 다시 생성하는 grub-mkconfig 프로그램을 보여주는 스크린샷.
  • 시스템을 재부팅하여 새 부트로더를 테스트합니다.

reboot

Arch Linux의 재부팅 명령을 보여주는 스크린샷.

Fedora에서 GRUB 복원

Ubuntu 및 Debian과 마찬가지로 Fedora에서 Grub을 복원하는 것도 똑같이 쉽습니다.

기본 Fedora 라이브 세션의 스크린샷.
  • 머신의 루트 파티션 찾기:

sudo fdisk -l | grep "Linux filesystem$"

라이브 세션에서 Linux 파일 시스템 파티션을 보여주는 창.
  • 시스템의 루트 파티션을 마운트하고 이 파티션과 라이브 세션 사이에 바인드 마운트를 만듭니다.

sudo mount /dev/sda3 /mnt
sudo mount --bind /sys /mnt/root/sys
sudo mount --bind /proc /mnt/root/proc
sudo mount --bind /run /mnt/root/run
sudo mount --bind /dev /mnt/root/dev

  • 루트 파일 시스템을 “/mnt” 디렉토리로 이동합니다.

sudo chroot /mnt/root bashmount /dev/sd3 /mount /dev/sda2 /boot

Fedora에 대한 chroot 및 추가 마운트를 보여주는 창.
  • 시스템에서 기존 부트로더 구성 파일을 모두 제거합니다.

rm -f /etc/grub.d/*rm -f /etc/sysconfig/grub

기본 GRUB 파일의 제거 프로세스를 보여주는 창.
  • 시스템에 대한 새 GRUB 구성 파일을 만듭니다.

grub2-mkconfig -o /boot/grub2/grub.cfg

  • 컴퓨터의 부팅 파티션에 GRUB를 설치합니다.

grub2-install --target=i386-pc /dev/sda

Fedora용 GRUB 재설치 프로세스를 보여주는 창.

FYI: Systemd-boot는 Linux용 차세대 부트로더 바이너리입니다. 그것이 특별한 이유와 systemd-boot가 유서 깊은 GRUB와 어떻게 비교되는지 알아보십시오 .

자주 묻는 질문

내 시스템이 LVM을 사용하는 경우 GRUB를 복원할 수 있습니까?

예. 시스템이 LVM을 사용하는 경우에도 GRUB를 복원할 수 있습니다. 이렇게 하려면 ls /dev/mapper/*--vg-root컴퓨터의 루트 파티션에 대한 절대 파일 경로를 결정하기 위해 실행하십시오. 전통적인 “/dev/sda1” 대신 이 절대 경로를 사용하십시오.

GRUB를 복원하면 내 디스크의 다른 운영 체제가 지워집니까?

아니요. 설계상 부트로더는 운영 체제 커널의 처음 몇 바이트만 찾을 수 있습니다. 부트로더를 교체해도 디스크의 기존 운영 체제에는 영향을 미치지 않습니다.

UEFI 시스템에 GRUB를 다시 설치할 수 있습니까?

예. 이렇게 하려면 UEFI 시스템의 “/boot/efi” 파티션을 제대로 마운트했는지 확인해야 합니다. --boot-directory또한 플래그 값을 grub-install“/boot/efi”로 수정해야 합니다.

-oFedora의 경우 플래그를 “/boot/efi/EFI/fedora/grub.cfg” grub2-mkconfig로 변경해야 합니다 .

이미지 크레디트: Unsplash . Ramces Red의 모든 변경 및 스크린샷.

  • 페이스북
  • 트위터

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다