Linux에서 Grub 부트로더를 복원하는 방법
GRUB(GNU Grand Unified Bootloader)는 마더보드의 BIOS를 운영 체제의 커널에 연결하는 강력하고 유연한 유틸리티입니다. 더 큰 멀티부팅 바이너리를 부트스트랩하는 데 사용하는 마더보드의 메모리에 작은 프로그램을 로드하여 작동합니다.
그러나 GNU GRUB이 운영 체제의 커널을 로드하지 못하는 경우가 있습니다. 예를 들어 Linux와 Windows의 이중 부팅 설정은 종종 후자가 GNU 부트로더를 지우는 결과를 낳습니다. 이 자습서에서는 가장 널리 사용되는 Linux 배포판을 사용하여 GRUB를 다시 설치하여 시스템을 복구하는 방법을 보여줍니다.
Ubuntu 및 Debian에서 GRUB 복원
Ubuntu 및 Debian에서 GNU GRUB을 다시 설치하는 가장 빠른 방법 중 하나는 배포판의 라이브 복사본을 부팅하는 것입니다. 이렇게 하면 시스템의 루트 파티션을 마운트하고 라이브 배포판의 GRUB 바이너리를 사용하여 시스템의 부트로더를 다시 만들 수 있습니다.
- 라이브 배포판 환경에서 터미널을 엽니다.
- 시스템 루트 파티션의 장치 이름을 찾으십시오. 다음 명령을 실행하여 이를 수행할 수 있습니다.
sudo fdisk -l | grep "Linux filesystem$"
- 라이브 배포판의 “/mnt” 디렉터리에 시스템의 루트 파티션을 마운트합니다.
sudo mount /dev/sda1 /mnt
- GRUB 바이너리를 다시 설치하십시오.
sudo grub-install --force --boot-directory=/mnt/ /dev/sda1
- PC를 종료합니다. USB 드라이브를 제거하고 다시 부팅하십시오. Linux OS로 부팅해야 합니다.
- 시스템의 현재 상태를 반영하도록 시스템의 GRUB 구성 파일을 새로 고칩니다.
sudo update-grub
Arch Linux에서 GRUB 복원
Ubuntu 및 Debian 외에도 Arch Linux 의 라이브 복사본을 사용하여 부트로더를 복원할 수도 있습니다. 이것의 한 가지 장점은 라이브 Arch Linux가 그래픽 디스플레이에 의존하지 않으므로 SSH를 통해 헤드리스 시스템에서도 GRUB를 쉽게 복원할 수 있다는 것입니다.
- 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
- 시스템의 GRUB 구성 파일을 다시 로드합니다.
/sbin/grub-mkconfig > /boot/grub/grub.cfg
- Ctrl+를 눌러 D시스템의 루트에서 로그아웃합니다.
- 시스템을 재부팅하여 새 부트로더를 테스트합니다.
reboot
Fedora에서 GRUB 복원
Ubuntu 및 Debian과 마찬가지로 Fedora에서 Grub을 복원하는 것도 똑같이 쉽습니다.
- 머신의 루트 파티션 찾기:
sudo fdisk -l | grep "Linux filesystem$"
- 시스템의 루트 파티션을 마운트하고 이 파티션과 라이브 세션 사이에 바인드 마운트를 만듭니다.
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
- 시스템에서 기존 부트로더 구성 파일을 모두 제거합니다.
rm -f /etc/grub.d/*rm -f /etc/sysconfig/grub
- 시스템에 대한 새 GRUB 구성 파일을 만듭니다.
grub2-mkconfig -o /boot/grub2/grub.cfg
- 컴퓨터의 부팅 파티션에 GRUB를 설치합니다.
grub2-install --target=i386-pc /dev/sda
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”로 수정해야 합니다.
-o
Fedora의 경우 플래그를 “/boot/efi/EFI/fedora/grub.cfg” grub2-mkconfig
로 변경해야 합니다 .
이미지 크레디트: Unsplash . Ramces Red의 모든 변경 및 스크린샷.
- 페이스북
- 트위터
답글 남기기