본문 바로가기
[Linux]

[Linux] grub 부팅이란 무엇이가

by SAMSUNG Metaverse-Cloud 2024. 11. 18.
728x90

 

grub는 GRand Unified Bootloader의 줄임말로 GNU 프로젝트의 부트로더이다.

현재 운영체제 대부분의 커널을 지원한다. 

LILO와 다르게 리눅스 뿐 아닌 Windows를 포함한 다양한 운영 체제를 지원한다. 

AWS의 경우에도 grub2 를 통해 부트 된다. 

그러므로 AWS에서도 /boot/efi 에 마운트 된 파티션을 잘못 건드리면 부팅이 안되거나

직렬 콘솔을 통해서 붙어야 할 때도 있다. 

 

grub을 통해서 부트를 진행하려면 어떻게 해야할까?

grub은 리눅스의 커널 이미지를 이용하며, 파일 시스템 이미지를 RAM Disk에 로드하려면 vmlinuz와 initrd 파일이 필요하다.

vmlinuz는 vmlinux라는 커널이미지의 압축파일이다. 

initrd는 Initial Ram Disk의 약자로 부트 로더에 의해 RAM 디스크를 읽어 들인다. 

 

이 두 설정을 해주면 리눅스에 대해 수동부팅을 진행할 수 있다. 

grub > 이 형식으로 부팅이 된다면

먼저 ls를 통해서 내 디스크 정보를 파악한다.

ls 명령어를 입력하면

(hd0, gpt1) (hd0, gpt127) 이런식으로 디스크 정보가 나온다. 

만약 어떤게 내 부팅디스크인지 모르겠다면 ls (디스크정보)/boot 

라고 입력하게 되면 어떤 디스크가 부팅 디스크인지 파악할 수 있을 것이다. 

보통 우분투, AmazonLinux 의 경우 /boot 하위에 관련된 커널 이미지들이 존재한다. 

ls 명령어를 통해 vmlinuz-xxxxxx 와 initrd-xxxxx 파일이 있는지 확인해보면 된다. 

확인이 된다면 root 경로를 지정해 준다

set root=(hd0,gpt1)

그 후 리눅스 커널 이미지 경로를 넣어준다.

linux /boot/vmlinuz-xxxxx root=/dev/nvme0n1p1 

이미지 경로를 넣어준 후 실제 루트 파일 시스템 마운트를 위해 초기 파일 시스템 이미지 경로를 지정한다.

initrd /boot/initrd-xxxxx.img

 

boot

이렇게 하면 grub을 통해서 부팅이 가능하다.

 

만약 볼륨의 부트 파티션을 건드려서 제대로 화면이 뜨지 않는 경우 직렬 콘솔을 통해서 grub 화면이 뜨는지 확인한 후 위 명령대로 입력해주면 부팅이 되며, 부팅이 된 후 문제된 부분을 다시 수정해준다면 

부팅시 제대로 올라오는 것을 확인할 수 있다. 

 

 

 

출처

[Linux] GRUB Command Line을 이용하여 리눅스 수동 부팅하기

 

[Linux] GRUB Command Line을 이용하여 리눅스 수동 부팅하기

어제, 계속 사용하던 Ubuntu 18.04 LTS를 20.04 LTS 버전으로 업데이트의 계획을 수행하고 있었습니다. 사용했던 IDE 도구, vim과 환경 변수 설정 등을 모두 정리하고, 살펴보니 그다지 많은 설정 값이 적

blog.neonkid.xyz

 

 

 

728x90