Linux에서 Grubby를 활용한 부트로더 설정 관리 - Change GRUB menu
- Linux Change GRUB menu - update kernel-image - grubby
- Update GRUB's default menu selection
Linux 시스템에서 부팅 프로세스를 제어하고 구성하기 위해 grubby를 사용하는 방법에 대해 알아봅니다.
1. Grubby란 무엇인가?
Grubby는 Linux 환경에서 사용되는 명령어로, 부트로더 설정을 관리하는 데에 유용합니다. 특히, Redhat 계열의 CentOS, RHEL, RockyLinux 등 에서 주로 사용됩니다.
또 리눅스는 (Linux)를 부터로더(GRUB)를 이용해서 멀티OS 부팅이 가능합니다. PC에서 리눅스와 Windows를 함께 설치하고 부팅 시 필요한 OS 또는 다양한 리눅스 버전을 바꾸어 로딩이 가능합니다.
주로 최신 버전의 Linux kernel로 업그레이드 하고 재부팅 후 사용하다가 이전 버전의 커널이 필요하거나 다른 버전의 OS를 사용하여야 할 경우 유용하게 사용할 수 있는 명령입니다.
2. Grubby의 주요 기능과 목적
Grubby는 부트로더의 설정 정보를 간편하게 수정하고 업데이트하는 데 사용됩니다. 운영체제의 부팅 구성을 변경하고 관리하는 데 반드시 필요한 도구 입니다.
#YUM 패키지 매니저를 이용한 설치:
sudo yum install grubby
#DNF 패키지 매니저를 이용한 설치:
sudo yum install grubby
# APT 패키지 매니저를 이용한 설치
sudo apt-get install grubby
3. Grubby의 기본 사용법
부트로더 설정 확인: grubby --info=DEFAULT 명령어를 사용하여 현재 부트로더 설정을 확인합니다.
커널 매개변수 추가: grubby --args="추가할_매개변수" 명령어로 커널 매개변수를 추가합니다.
기본 부트로더 설정 변경: grubby --set-default 명령어를 사용하여 기본 부트로더 설정을 변경합니다.
grubby --info=ALL
- 사용가능한 커널 이미지 목록 조회
grubby --default-kernel
- 현재 기본으로 사용 중인 커널 정보
grubby --set-default "/boot/vmlinuz-4.18.0-500.el8.x86_64"
- 교체할 커널 이미지 설정 (재부팅 시 적용)
4. 실제 예시: 커널 업데이트 및 Grubby 사용
새로운 커널이 설치된 경우, grubby를 사용하여 기본 부트로더 설정을 업데이트하는 방법을 실제 예시와 함께 살펴봅니다.
1) 현재 기본 커널을 보려면 다음 --default-kernel옵션을 사용하십시오.
# current default kernel
$ sudo grubby --default-kernel
/boot/vmlinuz-4.18.0-477.15.1.el8_8.x86_64
# 현재 사용중인 커널을 확인합니다.
$ uname -a
Linux vm1.im.com 4.18.0-477.15.1.el8.x86_64 #1 SMP Tue Jun 1 16:14:33 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
2) 사용가능한 모든 커널 메뉴 항목을 나열할 수 있습니다 --info.
$ grubby --info=ALL
# 사용가능한 커널 이미지 목록을 조회 합니다.
$ sudo grubby --info=ALL
index=0
kernel="/boot/vmlinuz-4.18.0-500.el8.x86_64"
args="ro crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet $tuned_params"
root="/dev/mapper/cl-root"
initrd="/boot/initramfs-4.18.0-500.el8.x86_64.img $tuned_initrd"
title="CentOS Stream (4.18.0-500.el8.x86_64) 8"
id="13f1789a18d547a393f67d8a55fdbeba-4.18.0-500.el8.x86_64"
index=1
kernel="/boot/vmlinuz-4.18.0-477.15.1.el8_8.x86_64"
args="ro crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet $tuned_params"
root="/dev/mapper/cl-root"
initrd="/boot/initramfs-4.18.0-477.15.1.el8_8.x86_64.img $tuned_initrd"
title="Rocky Linux (4.18.0-477.15.1.el8_8.x86_64) 8.8 (Green Obsidian)"
id="13f1789a18d547a393f67d8a55fdbeba-4.18.0-477.15.1.el8_8.x86_64"
... 생략 ...
3) 최신 커널로 변경합니다. 부팅시 기본으로 선택되는 커널 이미지가 변경됩니다. --set-default
$ grubby -- set-default "커널이미지명"
# 최신커널로 변경하고 재부팅시 사용할 수 있습니다.
$sudo grubby --set-default /boot/vmlinuz-4.18.0-500.el8.x86_64
The default is /boot/loader/entries/13f1789a18d547a393f67d8a55fdbeba-4.18.0-500.el8.x86_64.conf with index 0 and kernel /boot/vmlinuz-4.18.0-500.el8.x86_64
4) 변경된 커널 이미지 확인
$ sudo grubby --default-kernel
# 변경된 커널이미지를 확인 합니다.
$sudo grubby --default-kernel
/boot/vmlinuz-4.18.0-500.el8.x86_64
5) 재부팅하면 커널 이미지가 변경되어 부팅이 됩니다.
5. Grub 메뉴를 갱신하는 방법
- 커널이미지 변경이 안되는 경우 ( 강제로 grub2 menu를 변경하는 방법)
5.1. 부트로더 재설치:
- 커널 업데이트 후에도 메뉴가 갱신되지 않는 경우, 부트로더를 다시 설치하여 메뉴를 재구성할 수 있습니다.
sudo grub2-install /dev/sdx # sdX는 부트로더를 설치할 디스크를 나타냅니다.
# 일반적으로 /dev/sda에 설치 됩니다.
-- 부트로더가 설치되는 디스크 파이션을 확인 합니다. (/dev/sda를 확인)
sudo lsblk
$ lsblk -T -i
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 16G 0 disk
|-sda1 8:1 0 1G 0 part
`-sda2 8:2 0 15G 0 part
|-cl-root 253:0 0 13.4G 0 lvm /
`-cl-swap 253:1 0 1.6G 0 lvm [SWAP]
sdb 8:16 0 16G 0 disk
`-sdb1 8:17 0 16G 0 part /var/lib/docker
sr0 11:0 1 58.2M 0 rom
5.2. grub2-mkconfig 사용 하여 Grub 부트로더를 갱신
grub2-mkconfig 명령어는 Grub의 설정 파일을 갱신하고 새로운 커널이나 부트로더 설정을 감지하여 메뉴를 재구성합니다.
#grub2-mkconfig 사용:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
5.3 grubby 사용하여 커널 변경:
grubby 명령어를 사용하여 커널 업데이트가 있을 때 Grub 메뉴를 자동으로 갱신할 수 있습니다. 이 방법은 Red Hat 계열의 배포판에서 주로 사용됩니다.
sudo grubby --update-kernel=ALL --args="추가할_커널_매개변수"
감사합니다.
[참고]
* Linux에서 부팅 옵션을 변경하는 방법
https://www.redhat.com/sysadmin/linux-change-boot-options-grub
'InfraPlatform' 카테고리의 다른 글
[Shell-Script 고수되기] 셀스크립트의 이해와 AWK 프로그래밍 - 디렉토리 용량 조회 ( space.sh) (122) | 2024.01.16 |
---|---|
5가지 유용한 Docker 명령어 정리 (33) | 2024.01.10 |
VirtualBox 가상디스크 이미지 Shrink 하는 방법 (45) | 2024.01.07 |
(꿀팁) 리눅스 시스템 시간 동기화 하기 (Chrony,NTP ) (36) | 2023.11.24 |
(트렌드)클라우드 데이터 기술: Event-Stream-Processing 플랫폼 (70) | 2023.11.21 |
Rocky Linux에서 Docker Compose 사용 - Install Docker (49) | 2023.11.03 |
Virtual Box 네트워크 설정 정리 (113) | 2023.10.26 |