GRUB Linux 부트로더는 리눅스에서 가장 널리 사용되는 부트로더입니다. 모든 리눅스 사용자는 우분투 GRUB에 대해 학습하는 것이 도움이 될 것입니다. 이 튜토리얼에서는 GRUB가 무엇인지, 부팅 프로세스가 어떻게 작동하는지, 그리고 여러 유용한 우분투 GRUB 구성에 대해 자세히 알게 될 것입니다.
자세한 내용은 들어가서 알아보세요.
전제 조건
이 튜토리얼을 따라하려면 GRUB가 부트로더로 있는 리눅스 장치가 필요합니다. 이 튜토리얼은 Oracle VirtualBox에서 가상 머신으로 실행되는 우분투 18.04.5 LTS를 기반으로 합니다.
우분투 GRUB 부팅 프로세스 이해
GRUB는 Grand Unified Boot Loader의 약자로 기기를 부팅하는 데 주요하고 가장 중요한 구성 요소입니다. 또한 리눅스에서 가장 흔한 부트로더입니다. 여러분의 여정은 GRUB의 부팅 프로세스에 대해 조금 더 알게 되면서 시작될 것입니다.
일반적인 부팅 프로세스에서 BIOS는 POST 단계를 호출하고 나서 Master Boot Record(MBR)에서 부트로더를 찾습니다.
MBR은 어떤 하드 디스크의 첫 번째 섹터에 있는 정보입니다. MBR은 운영 체제의 위치를 식별합니다. MBR에 저장된 정보는 운영 체제를 기기의 RAM에 로드(부팅)합니다.
이 기사는 MBR 측면만 다룹니다. 그러나 GUID 파티션 테이블이라는 GPT를 사용하는 디스크도 찾을 수 있습니다. GPT는 MBR 디스크가 최대 4개의 기본 파티션을 보유할 수 있는 반면, 4개 이상의 파티션을 만들 계획이 있다면 더 나은 선택입니다.
아래 스크린샷에서 부팅 프로세스의 다이어그램을 볼 수 있습니다. Ubuntu GRUB가 선택한 커널을 주 메모리인 랜덤 액세스 메모리 (RAM)에 로드하는 것을 볼 수 있습니다. 커널이 로드된 후 사용자가 장치에 로그인할 수 있습니다.

Ubuntu GRUB와 LILO 부트로더 비교
리눅스 세계에는 세 가지 주요 부트로더가 있습니다: LILO, GRUB 및 GRUB2. GRUB2는 리눅스 배포판에서 최신이자 기본 부트로더입니다. GRUB2는 이 튜토리얼에서 가장 많이 사용되며 디폴트 Ubuntu 부트로더이지만 LILO도 여전히 리눅스에 존재합니다. 이 섹션에서는 그들이 어떻게 서로 경쟁하는지 배우게 될 것입니다.
Other Linux 부트로더들이 시장에서 이용 가능하며, GNU GRUB은 메모리 관리 및 객체 지향 프레임워크에 뛰어난 지원을 제공합니다. 다른 하나는 SYSLINUX으로 가벼운 부트로더입니다.
GRUB은 여러 운영 체제를 부팅할 수 있습니다. 반면에 LILO는 하나의 OS만 부팅할 수 있습니다.

우분투 GRUB는 Windows, Linux, Unix, macOS, BSD, Solaris와 함께 작동하며, 반면에 LILO는 주로 Linux 운영 체제를 지원합니다.
LILO에서 구성 파일을 업데이트하면 LILO를 MBR에 다시 설치해야 합니다. GRUB 설정을 변경하면 재설치가 필요하지 않습니다.
다른 커널 또는 복구 모드 선택
이 섹션에서는 손상된 커널에서 복구하는 동안 장치에서 커널을 선택하는 방법을 보여줍니다.
A kernel works as an interface between hardware and software. It controls all the processes that users run on the device.
다음은 Oracle VirtualBox에서 VM을 사용하여 커널을 선택하는 단계입니다.
1. Oracle VirtualBox를 사용하여 Ubuntu 장치 콘솔에 직접 로그인합니다.
2. 아래에 표시된 대로 종료 명령을 사용하여 Ubuntu 기계를 다시 시작합니다.
장치가 다시 시작되면 Ubuntu GRUB를 로드하는 동안 Shift 키를 누르고 GRUB 부트로더 메뉴가 표시됩니다. 아무것도 선택하지 않으면 GRUB가 기본 커널로 시스템을 부팅하고 부팅 프로세스를 진행합니다.
기본 커널 이외의 다른 커널로 부팅해야 하는 경우나 파일 손상, 커널 로드 문제 등 시스템 내에서 문제가 발생한 경우에는 우분투의 고급 옵션을 선택해야 합니다.

4. 우분투의 고급 옵션을 선택한 후, 우분투 GRUB 메뉴가 표시됩니다. 이 메뉴에서는 선택할 수 있는 다양한 커널 옵션이 표시됩니다. 옵션을 선택하지 않으면 처음에 표시된 커널이 기본으로 로드됩니다.
아래 이미지에서 볼 수 있듯이 각 커널에 대해 두 가지 추가 옵션이 있습니다: upstart 및 복구.
- (upstart): 부팅 중에 작업과 서비스를 시작하고 종료하는 /sbin/init 데몬을 대체하는 이벤트 기반 프로세스로, 시스템이 실행되는 동안 이러한 작업과 서비스를 감독합니다.
- (복구 모드): 시스템에서 발생한 모든 실패로부터 커널을 복구합니다.

5. 장치에 로그인한 후 uname
명령을 사용하여 지정된 커널이 로드되었는지 확인할 수 있습니다. -r
옵션은 커널 이름을 출력합니다.

기본 운영 체제 설정
이제 GRUB에 더 익숙해지셨으므로 몇 가지 GRUB 구성 옵션을 조정하게 될 것입니다. 먼저 기본적으로 로드될 운영 체제를 구성하기 시작하겠습니다.
1. 즐겨 사용하는 SSH 클라이언트를 사용하여 우분투 장치에 로그인합니다.
2. 이제 awk
명령어를 사용하여 GRUB 부트 메뉴 항목을 나열하세요. awk
명령어는 /boot/grub/grub.cfg에 저장된 모든 항목을 표시합니다. 파일 내용이 터미널에 나타날 것입니다. 라인에 주의하십시오. 각 라인에 연결된 숫자가 필요합니다. 첫 번째 라인은 Ubuntu
이므로 0
이고, Ubuntu, with Linux 4.4.0-210-generic
은 1
입니다.

3. 다음으로 GRUB 구성 파일을 편집하세요. 파일을 편집하려면 vi
를 사용하거나 GRUB_DEFAULT
의 값을 변경할 수 있지만, 원하는 편집기를 사용하세요.
이제 GRUB_DEFAULT
의 값을 원하는 OS 항목의 라인 번호로 설정하세요. 방금 실행한 awk
명령어가 OS 항목입니다. GRUB_DEFAULT
를 0
으로 설정하면 GRUB 부트 메뉴 항목에서 첫 번째 OS 항목이 기본으로 부팅됩니다. 1
로 설정하면 기기가 기본적으로 두 번째 OS 항목을 부팅합니다. 이어서 진행하세요. 아래 스크린샷에서는 첫 번째 OS 항목 Ubuntu이 기본으로 설정되어 있습니다.
기본적으로 GRUB은 부트 메뉴에 대기하지 않고 즉시 부팅을 시작합니다. 부팅이 시작되기 전에 메뉴가 표시되는 시간을 변경하여 대기 시간 설정을 변경할 수 있습니다.
GRUB_TIMEOUT
의 값을 변경하면 메뉴가 부팅 시작 전에 표시되는 초 단위의 시간이 됩니다. 값이5
이면 부팅 메뉴가 5초 동안 나타나므로 시스템이 시작될 때 로드할 OS를 선택할 수 있습니다.

4. GRUB 구성 파일에서 변경 사항을 저장한 후에는 반드시 update-grub
명령을 실행하십시오. update-grub
명령은 변경된 구성 파일을 시스템에 적용합니다.

우분투 GRUB에서 배경 이미지 설정
GRUB 구성은 단조로울 필요가 없습니다. GRUB에 배경 이미지를 추가하여 조금 더 맛을 낼 수 있습니다. GRUB_BACKGROUND
옵션을 사용하여 GRUB에 그림을 배경으로 설정할 수 있습니다. 다음은 GRUB를 사용자 정의하는 방법입니다.
1. 즐겨 사용하는 텍스트 편집기(예: vi
)로 GRUB 구성 파일을 편집하고 아래와 같이 GRUB_BACKGROUND
줄을 추가하십시오. 이 튜토리얼에서 이미지는 UBUNTU
라는 사용자 홈 폴더에 저장되어 있습니다. GRUB는 루트로 실행되므로 파일 시스템 전체의 이미지에 액세스할 수 있습니다. 수정한 후 구성 파일을 저장하십시오.
파일 shanky.jpeg 이미지는 이미 시스템에 있었습니다. 배경 이미지로 사용하려는 파일 이름으로 해당 이름을 바꾸십시오.
2. GRUB 구성 파일에서 변경 사항을 적용한 후에는 update-grub
명령을 실행하십시오.

3. 또한, GRUB 파일에 추가한 이미지가 의도한 대로 작동하는지 확인하십시오. 확인하려면 컴퓨터를 다시 시작하고 GRUB가 로드되는 동안 Shift 키를 누르십시오. 아래에서 볼 수 있듯이 GRUB에는 이제 배경 이미지가 있습니다.

GRUB와의 듀얼 부팅
Ubuntu GRUB의 가장 큰 기능 중 하나는 기기 부팅 시 Windows와 Linux 중에서 선택할 수 있게 해줍니다: 일명 dual booting입니다.
2021년 초 기준으로, 추가적인 운영 체제 메뉴 항목을 자동으로 추가하는 기본 os_prober
스크립트는 자동 운영 체제 감지와 관련된 잠재적 보안 문제로 인해 비활성화되었습니다. 이 기능을 다시 활성화하려면 설치된 운영 체제가 무엇인지 인식하고 있는지를 알고 있어야 하는데, 다음 명령어를 사용할 수 있습니다.
기기에서 dual booting을 구성한 후, 기계가 시작될 때 GRUB 메뉴와 유사한 화면이 표시됩니다.

결론
이 튜토리얼에서는 GRUB가 무엇인지 알아보았으며, 기사에서는 GRUB의 부팅 프로세스를 소개했습니다.
또한 Ubuntu GRUB 구성을 조정하고 다양한 커널을 로드하는 방법, 그리고 Dual-booting에 대한 정보도 알아보았습니다.
이제 GRUB에 대한 풍부한 지식을 갖게 되었으니, 어떤 구성 옵션을 변경하고 싶으신가요?