GRUB

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
Cerulean (토론 | 기여)님의 2025년 1월 18일 (토) 23:48 판 (→‎리눅스 -> 윈도우 설치 후 문제 발생)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

grub, GRUB(GRand Unified Bootloader)[1]는 유닉스/리눅스 시스템에서 사용되는 GNU 프로젝트의 부트로더이다. 멀티 부팅을 지원하여 유닉스/리눅스 이외에도 윈도우나 mac까지 부팅할 수 있다. 윈도우는 리눅스를 깔고 윈도우를 깔면 grub를 씹고 Windows Boot Manager로 바뀐다. 수동으로 설정해주면 grub로 부팅가능하다. 반대로 윈도우를 깔고 리눅스를 설치하면 자동으로 운영체제를 잡아줘[2] 부팅 메뉴에 뜨게한다.

리눅스 -> 윈도우 설치 후 문제 발생[편집 | 원본 편집]

리눅스 멀티부팅 환경에서 윈도우 재설치 후 문제 발생, grub를 찾지 못해서 grub rescue가 뜬다. 리눅스를 파티션 통째로 날려도 이런 grub rescue >가 뜬다[3]. grub 설정 전용 쉘로 일반 쉘에 있는 모든 기능이 다 빠져있다. 리눅스 설치하고 윈도우 깔았더니 이게 뜬다면 높은 확률로 grub를 못찾는 것이다. 다른 상황에서 grub rescue가 뜬다면 다른 곳에서 에러가 난 것이므로 아래와 같은 방법이 통하지 않을 수 있다.

해결 방법

grub rescue > ls

(hd0,gpt1) (hd0,gpt2) ......

grub rescue > ls (hd0,gpt1)

unknown file system

grub rescue > ls (hd0,gpt2)

unknown file system

grub rescue > ls (hd0,gpt3)

this file system is ext2(?) 리눅스 파일 시스템임을 알려준다. 이게 부팅할 OS로 추정되면 아래를 입력)

grub rescue > set root=(hd0,gpt3) 루트 파티션 지정

grub rescue > set prefix=(hd0,gpt3)/boot/grub grub의 경로 설정

grub rescue > insmod normal

grub rescue > normal

이건 그냥 임시로 부팅 메뉴 띄우기다. 여기까지만 하면 다음에 또 원상복구되므로 grub rescue에서 했던 것들 다시 반복하지 않게 grub.cfg를 기록해야한다.

update-grub 명령어가 있으면 아래

$ sudo update-grub

없으면

$ sudo grub-mkconfig -o /boot/grub/grub.cfg

디렉터리[편집 | 원본 편집]

GRUB에 연관된 디렉터리는 /boot 디렉토리가 있다. 그 아래에 /boot/efi와 /boot/grub 디렉터리도 중요하다.

/boot는 부팅을 위한 디렉터리이고 그 아래 /boot/efi는 여러 운영체제가 공유하는 공간으로 EFI 파티션이 마운트되고 이곳에 여러 운영체제의 부팅 정보가 담겨있다.

/boot/grub 디렉터리는 운영체제의 /boot 디렉터리 하에 있으며 여기에 grub 부트로더가 저장된다. grub는 운영체제를 하나씩 추가할 때마다 각 운영체제들의 루트 파티션에 설치된다. 우분투 페도라 둘 다 설치했다면 우분투의 grub, 페도라의 grub 두 개가 되고 /boot/efi 하에 우분투와 페도라의 부팅 정보가 저장된다.

/boot/efi/EFI 디렉터리는 부팅 과정 중 처음으로 읽는 부분으로 이곳에 각종 운영체제의 정보가 저장된다. 여러 종류의 리눅스를 깔고 지우고 반복하면 BIOS의 부팅 순서 설정 메뉴가 지저분해질 수 있는데 EFI 디렉터리에서 사용하지 않는 os의 디렉터리를 정리해주면 깔끔해진다.

BCD Edit[편집 | 원본 편집]

Grub-Customizer[편집 | 원본 편집]

Grub의 부트로더 메뉴를 수정하는 Gui 프로그램이다. 복잡한 grub 설정 파일을 건들 필요도 없고 마우스를 이용해서 부팅메뉴 순서 변경도 가능하고 grub의 배경 사진도 편리하게 넣을 수 있다. 이걸 실행시키기만 해도 자동으로 설정되기도해서[4] 리눅스 초보자에게 추천하는 프로그램. 아치리눅스 같은 일부 리눅스는 부트로더 설정을 저장할 때 오류가 나는데 흔히 로케일 문제이기 때문에 LANG=C로 환경변수를 지정해주어 grub-customizer를 열면 잘 작동한다.

각주

  1. 대통일 부트로더, 대통일 이론(grand unified theory)의 패러디이다.
  2. 이때 동작하는 리눅스 프로그램이 os-prober인 듯 하다.
  3. grub가 됐으니 구조한다는 뜻이다.
  4. 이때 작동되는 건 os-prober.