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]' 카테고리의 다른 글
[linux] logrotate란 무엇인가? (0) | 2024.11.28 |
---|---|
/etc/systemd 와 /usr/lib/systemd 의 차이점 (1) | 2024.11.01 |
리눅스 메모리 사용량 확인 명령어 (0) | 2024.10.28 |
[Linux] su 와 su - 의 차이점 (0) | 2024.10.28 |
인프라 무중단 배포 방식 (0) | 2024.10.24 |