Grub boot kernel argument 설정
대상 : RHEL7 이상 시스템
grubby 를 이용한 방법
# 파라메터 추가시 $ grubby --update-kernel=ALL --args="<NEW_PARAMETER>" # 다중 값 추가시 예제 (반드시 ""로 묶어줘야함) $ grubby --update-kernel=ALL --args="rd.lvm.lv=vg/lv1 rd.lvm.lv=vg/lv2" # 파라메터 제거시 $ grubby --update-kernel=ALL --remove-args="<PARAMETER_TO_REMOVE>" # 특정 커널만 적용시 $ grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="<NEW_PARAMETER>"
수동으로 수정 적용시
/etc/default/grub
파일을 수정한다.
예를 들어 아래 항목을 추가한다고 할때
GRUB_TERMINAL="serial" GRUB_SERIAL_COMMAND="serial --speed=9600 --unit=0 --word=8 --parity=no --stop=1"
GRUB configuration 을 업데이트
커널파라메터를 수정했으면 해당 내용을 grub.cfg
에 반영해야 한다.
# Legacy-BIOS System $ grub2-mkconfig -o /boot/grub2/grub.cfg # UEFI-BIOS System (실제로는 위의 legacy config를 참조하기때문에 안해도 상관 없음) $ grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
주의사항
grubby
로 추가된 파라메터는 /etc/default/grub
에 GRUB_CMDLINE_LINUX
와 같이 추가가 되는데 이것은 따로 /boot/grub2/grub.cfg
에 추가하지 않아도 자동으로 반영이 되는 구조이다.
그런데 여기서 문제는 동일한 값을 여러개 넣은경우는 문제가 된다.
예를 들어 rd.lvm.lv
라는 파라메터를 여러개 넣는다고 가정하자
/boot/grub2/grub.cfg
내에
set kernelopts="root=/dev/mapper/rhel_kvm33-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rhel_kvm33-swap rd.lvm.lv=rhel_kvm33/root rd.lvm.lv=rhel_kvm33/swap rhgb quiet "
위와 같이 존재한다고 할때
grubby
를 통해서 --arg="rd.lvm.lv=rhel_kvm33/root rd.lvm.lv=rhel_kvm33/swap rd.lvm.lv=rhel_kvm33/test"
와 같이 동일한 파라메터의 추가된 값 rd.lvm.lv=rhel_kvm33/test
를 추가했다고 하면
/etc/default/grub
에는 해당 내용이 추가되지만 실제 부팅할때 이 값은 반영되지 않는다. 왜냐하면 에서 부팅할때 /boot/grub2/grub.cfg
에 정의되어 있지 않은 추가 항목만 반영이 되기 때문에 실제 /boot/grub2/grub.cfg
에는 rd.lvm.lv
라는 파라메터가 있기 때문에 동일한게 몇개 추가가 되던 있는걸로 가정하고 추가적으로 로딩 하지 않는다.
따라서 이런경우 꼭 grub.cfg
를 업데이트 해줘야 한다.