[꿀팁] grubby를 이용한 grub2 커널 부팅 순서 변경하기
RHEL 8, CentOS8 : grubby를 이용한 커널 부팅 순서 변경하기
(읽기전에 당부할 내용)
우선 현재 커널로 부팅 순서가 잘되는지 연습을 해보고 실제 커널을 추가 설치해서 변경하는 것으로 커널을 만질때 혹시의 불상사를 방지하도록 글을 작성했습니다. 커널은 잘못 만지면 부팅이 안되기 때문에 항상 복구 방안을 생각하면서 작업을 해야 합니다.
(저는 20년 사이 커널 컴파일만 1천번 이상 해보았고, 시스템 설치는 대략 1만번 되는 경험을 가지고 있습니다. 항상 이런 실전의 상황을 고려하기를 당부 드립니다.)
GRUB2와 관련된 환경 파일의 디렉토리는 아래와 같습니다.
/etc/grub2.cfg
/etc/grub.d/*
/boot/grub/grub.cfg
예전에는 /etc/grub2.cfg 와 같은 환경 파일을 수정해서 부팅시 이미지 순서를 변경하는 것이 가능했었습니다. 이제는 이러한 환경 파일들에서 부팅 이미지의 순서를 알수 없게 되었습니다. 그리고 모든 것이 커멘드 명령으로 설정하고 조회하도록 변경 되었습니다.
* 이런 환경 파일들은 반드시 커멘드로 수정하고 임의로 수정하지 않도록 권고합니다.
grubby라는 명령으로 커널의 부팅 순서를 변경하는 것을 해보도록 하겠습니다.
아래와 같이 부팅을 하게 되면 나오는 메뉴를 부트로드의 메뉴라고 합니다. 여기에서 부팅 이미지를 선정하여 부팅시 다양한 버전의 리눅스 커널을 로딩하여 사용 가능합니다. (아래 이미지는 커널을 업그레이드 후의 모습입니다.)
1. grub2 의 기본 커널 목록을 확인합니다.
- grubby --default-kernel 명령으로 부팅시 사용되는 기본 커널을 확인 할 수 있습니다.
# grubby --default-kernel
/boot/vmlinuz-4.18.0-193.el8.x86_64
# grubby --default-index
0
2. grub2 의 기본 커널 을 수정합니다.
- grubby --set-default=/boot/vmlinuz-4.18.0-193.el8.x86_64 와 같이 /boot/ 아래 있는 부팅 이미지 파일 이름을 입력합니다.
# grubby --set-default=/boot/vmlinuz-4.18.0-193.el8.x86_64
The default is /boot/loader/entries/13f1789a18d547a393f67d8a55fdbeba-4.18.0-193.el8.x86_64.conf with index 0 and kernel /boot/vmlinuz-4.18.0-193.el8.x86_64
3. grub2 의 설정 상태를 확인합니다.
grubby --info=kernel이미지명을 입력하면 부팅 인덱스 이름을 알려 줍니다.
주의 인덱스는 0 부터 시작되며 새로운 커널을 설치하면 기존 인덱스는 변경됩니다. 아래 새로운 커널을 추가하고 난 후를 확인 바랍니다.
# grubby --default-kernel
/boot/vmlinuz-4.18.0-193.el8.x86_64
# grubby --default-index
0
# grubby --default-title
CentOS Linux (4.18.0-193.el8.x86_64) 8 (Core)
# grubby --info=/boot/vmlinuz-4.18.0-193.el8.x86_64
index=0 kernel="/boot/vmlinuz-4.18.0-193.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-193.el8.x86_64.img $tuned_initrd" title="CentOS Linux (4.18.0-193.el8.x86_64) 8 (Core)" id="13f1789a18d547a393f67d8a55fdbeba-4.18.0-193.el8.x86_64"
4. grub2 의 부팅시 사용되는 환경 상태를 확인합니다.
grub2-editenv list
# grub2-editenv list
saved_entry=13f1789a18d547a393f67d8a55fdbeba-4.18.0-193.el8.x86_64
kernelopts=root=/dev/mapper/cl-root ro crashkernel=auto resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet boot_success=0 boot_indeterminate=0
5. 재부팅을 해봅니다.
- 아직 새로운 커널을 설치 하지 않았기 때문에 기본 이미지만 보입니다.
연습을 해보았습니다. 작동 원리가 대충 이렇구나 이해 되면 새로운 커널을 설정하고 부팅 순서를 변경하는 순서를 해보시면 됩니다.
6. 커널 변경해 보기 (실전 적용하기)
- yum install kernel 또는 dnf install kernel 명령을 수행하면 최신 커널을 업데이트 할수 있습니다.
커널은 아래와 같은 3가지 패키지를 설치합니다.
kernel-4.18.0-240.1.1.el8_3.x86_64.rpm
kernel-core-4.18.0-240.1.1.el8_3.x86_64.rpm
kernel-modules-4.18.0-240.1.1.el8_3.x86_64.rpm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# dnf install kernel
Last metadata expiration check: 1:03:51 ago on Sat 26 Dec 2020 07:13:24 AM EST.
Package kernel-4.18.0-193.el8.x86_64 is already installed.
Dependencies resolved.
==================================================================================================
Package Architecture Version Repository Size
==================================================================================================
Installing:
kernel x86_64 4.18.0-240.1.1.el8_3 BaseOS 4.3 M
Upgrading:
linux-firmware noarch 20200619-99.git3890db36.el8 BaseOS 101 M
Installing dependencies:
kernel-core x86_64 4.18.0-240.1.1.el8_3 BaseOS 30 M
kernel-modules x86_64 4.18.0-240.1.1.el8_3 BaseOS 26 M
Transaction Summary
==================================================================================================
Install 3 Packages
Upgrade 1 Package
Total size: 161 M
Total download size: 101 M
Is this ok [y/N]:
|
cs |
7. 커널 설치 확인 하기
config-4.18.0-240.1.1.el8_3.x86_64
initramfs-4.18.0-240.1.1.el8_3.x86_64.img
System.map-4.18.0-240.1.1.el8_3.x86_64
vmlinuz-4.18.0-240.1.1.el8_3.x86_64
위 와 같은 파일이 추가 되어 있음을 확인 한다.
1 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root@vm1 ~]# ls -al /boot/
total 252564
dr-xr-xr-x. 6 root root 4096 Dec 26 08:28 .
dr-xr-xr-x. 19 root root 247 Dec 25 09:25 ..
-rw-r--r--. 1 root root 187648 May 8 2020 config-4.18.0-193.el8.x86_64
-rw-r--r--. 1 root root 189500 Nov 19 12:28 config-4.18.0-240.1.1.el8_3.x86_64
drwxr-xr-x. 3 root root 4096 Aug 29 08:39 efi
drwx------. 4 root root 4096 Dec 26 07:41 grub2
-rw-------. 1 root root 98497217 Aug 29 08:48 initramfs-0-rescue-13f1789a18d547a393f67d8a55fdbeba.img
-rw-------. 1 root root 53331022 Aug 29 08:52 initramfs-4.18.0-193.el8.x86_64.img
-rw-------. 1 root root 19600089 Sep 28 09:29 initramfs-4.18.0-193.el8.x86_64kdump.img
-rw-------. 1 root root 51469315 Dec 26 08:24 initramfs-4.18.0-240.1.1.el8_3.x86_64.img
drwxr-xr-x. 3 root root 4096 Aug 29 08:45 loader
-rw-------. 1 root root 3909996 May 8 2020 System.map-4.18.0-193.el8.x86_64
-rw-------. 1 root root 4032815 Nov 19 12:28 System.map-4.18.0-240.1.1.el8_3.x86_64
-rwxr-xr-x. 1 root root 8913656 Aug 29 08:47 vmlinuz-0-rescue-13f1789a18d547a393f67d8a55fdbeba
-rwxr-xr-x. 1 root root 8913656 May 8 2020 vmlinuz-4.18.0-193.el8.x86_64
-rwxr-xr-x. 1 root root 9514120 Nov 19 12:28 vmlinuz-4.18.0-240.1.1.el8_3.x86_64
|
cs |
8. 커널 부팅 순서 확인 하기
- 새로 설치된 커널 이미지가 기본 커널로 설정 되었습니다. 부팅하면 기존 커널이 아닌 새로운 커널로 부팅이 될 것입니다.
# grubby --default-kernel
/boot/vmlinuz-4.18.0-240.1.1.el8_3.x86_64
# grubby --default-title
CentOS Linux (4.18.0-240.1.1.el8_3.x86_64) 8
# grubby --default-index
0
# grubby --info=/boot/vmlinuz-4.18.0-240.1.1.el8_3.x86_64
index=0 kernel="/boot/vmlinuz-4.18.0-240.1.1.el8_3.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-240.1.1.el8_3.x86_64.img $tuned_initrd" title="CentOS Linux (4.18.0-240.1.1.el8_3.x86_64) 8" id="13f1789a18d547a393f67d8a55fdbeba-4.18.0-240.1.1.el8_3.x86_64"
* 기존 이미지는 인덱스가 0에서 1로 변경 되었습니다.
# grubby --info=/boot/vmlinuz-4.18.0-193.el8.x86_64
index=1 kernel="/boot/vmlinuz-4.18.0-193.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-193.el8.x86_64.img $tuned_initrd" title="CentOS Linux (4.18.0-193.el8.x86_64) 8 (Core)" id="13f1789a18d547a393f67d8a55fdbeba-4.18.0-193.el8.x86_64"
9. 커널 부팅 순서 변경 하기
# grubby --set-default=/boot/vmlinuz-4.18.0-193.el8.x86_64
The default is /boot/loader/entries/13f1789a18d547a393f67d8a55fdbeba-4.18.0-193.el8.x86_64.conf with index 1 and kernel /boot/vmlinuz-4.18.0-193.el8.x86_64
# grubby --default-kernel
/boot/vmlinuz-4.18.0-193.el8.x86_64
# grubby --default-title
CentOS Linux (4.18.0-193.el8.x86_64) 8 (Core)
# grubby --default-index
1
* 이상 부팅시 기본커널을 설정하는 방법을 알아 보았습니다.
* Introduction to GRUB 2
* 오래된 커널의 역사를 이해 하는 참고 자료
www.dedoimedo.com/computers/grub.html
'InfraPlatform' 카테고리의 다른 글
[꿀팁]고성능 Nginx를위한 튜닝(4)- 메모리 및 CPU 튜닝하기 (Processor) (0) | 2021.01.06 |
---|---|
[꿀팁] 고성능 Nginx를위한 튜닝 - (3) TCP 관련 처리량 늘리기-리눅스커널튜닝 (4) | 2020.12.28 |
[꿀팁] 고성능 Nginx를위한 튜닝 - (2) 프로세스 처리량 늘리기 (0) | 2020.12.27 |
OpenSSL/TLS 1부- SSL(Secure Socket Layer) 보안 소켓 계층 이해 (0) | 2020.12.13 |
OpenSSL/TLS 2부- SSL인증서 만들기와 nginx와 Tomcat 연동하기 (0) | 2020.12.13 |
[리눅스 꿀팁] fdisk 사용하기 (전문가모드) (0) | 2020.11.30 |
[셀스크립트 응용] ICONV 을 이용한 파일 인코딩(Encoding) (0) | 2020.11.29 |