26장. Working with GRUB 2
Red Hat Enterprise Linux 7은 GNU GRand Unified Bootloader (GRUB 2)의 버전 2와 함께 배포되므로 사용자가 시스템 부팅 시 로드할 운영 체제 또는 커널을 선택할 수 있습니다. 또한 GRUB 2는 사용자가 커널에 인수를 전달할 수 있도록 합니다.
26.1. GRUB 2 소개
GRUB 2는 기존 BIOS 기반 시스템의 /boot/grub2/grub.cfg
파일과 UEFI 시스템의 /boot/efi/EFI/redhat/grub.cfg
파일에서 해당 설정을 읽습니다. 이 파일에는 메뉴 정보가 포함되어 있습니다.
GRUB 2 설정 파일인 grub.cfg
, 는 설치 중에 생성되거나 /usr/sbin/grub2-mkconfig 유틸리티를 호출하여 생성되며 새 커널이 설치될 때마다 grubby
에 의해 자동으로 업데이트됩니다. grub2-mkconfig 를 사용하여 수동으로 다시 생성하면 /etc/grub.d/
에 있는 템플릿 파일과 /etc/default/grub
파일의 사용자 지정 설정에 따라 파일이 생성됩니다. grub.cfg
의 편집은 파일을 다시 생성하는 데 언제든지 grub2-mkconfig 가 손실되므로 /etc/default/grub
의 수동 변경 사항을 반영하려면 주의해야 합니다.
새 커널 제거 및 추가와 같은 grub.cfg
의 일반적인 작업은 grubby
툴을 사용하여 수행해야 하며, 스크립트의 경우 new-kernel-pkg
툴을 사용해야 합니다. grubby
를 사용하여 기본 커널을 수정하면 새 커널이 설치되면 변경 사항이 상속됩니다. grubby
에 대한 자세한 내용은 26.4절. “grubby 도구를 사용하여 GRUB 2 메뉴의 영구 변경 사항 만들기” 을 참조하십시오.
/etc/default/grub
파일은 설치 프로세스 중에 grub.cfg
를 생성할 때 anaconda
에서 사용하는 grub2-mkconfig
도구에서 사용하며, 시스템 오류 발생시 시스템 오류 발생시 사용할 수 있습니다(예: 부트 로더 구성을 다시 생성해야 하는 경우). 일반적으로 마지막 수단으로 아닌 grub2-mkconfig
를 수동으로 실행하여 grub.cfg
파일을 대체하지 않는 것이 좋습니다. /etc/default/grub
을 수동으로 변경하려면 grub.cfg
파일을 다시 빌드해야 합니다.
grub.cfg의 메뉴 항목
다양한 코드 조각 및 지시문 중에 grub.cfg
설정 파일에는 단일 GRUB 2 부팅 메뉴
항목을 나타내는 하나 이상의 메뉴 항목이 포함되어 있습니다. 이러한 블록은 항상 menuentry
키워드로 시작한 다음 제목, 옵션 목록, 열린 curly 브래킷으로 시작하고 닫는 curly 브래킷으로 끝납니다. 열기 및 닫기 브래킷 사이의 모든 내용을 들여쓰기해야 합니다. 예를 들어 다음은 Linux 커널 3.8.0-0.40.el7.x86_64를 사용하는 Red Hat Enterprise Linux 7의 샘플 메뉴 입력
블록입니다.
menuentry 'Red Hat Enterprise Linux Server' --class red --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-c60731dc-9046-4000-9182-64bdcce08616' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod xfs set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' 19d9e294-65f8-4e37-8e73-d41d6daa6e58 else search --no-floppy --fs-uuid --set=root 19d9e294-65f8-4e37-8e73-d41d6daa6e58 fi echo 'Loading Linux 3.8.0-0.40.el7.x86_64 ...' linux16 /vmlinuz-3.8.0-0.40.el7.x86_64 root=/dev/mapper/rhel-root ro rd.md=0 rd.dm=0 rd.lvm.lv=rhel/swap crashkernel=auto rd.luks=0 vconsole.keymap=us rd.lvm.lv=rhel/root rhgb quiet echo 'Loading initial ramdisk ...' initrd /initramfs-3.8.0-0.40.el7.x86_64.img }
menuentry 'Red Hat Enterprise Linux Server' --class red --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-c60731dc-9046-4000-9182-64bdcce08616' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod xfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' 19d9e294-65f8-4e37-8e73-d41d6daa6e58
else
search --no-floppy --fs-uuid --set=root 19d9e294-65f8-4e37-8e73-d41d6daa6e58
fi
echo 'Loading Linux 3.8.0-0.40.el7.x86_64 ...'
linux16 /vmlinuz-3.8.0-0.40.el7.x86_64 root=/dev/mapper/rhel-root ro rd.md=0 rd.dm=0 rd.lvm.lv=rhel/swap crashkernel=auto rd.luks=0 vconsole.keymap=us rd.lvm.lv=rhel/root rhgb quiet
echo 'Loading initial ramdisk ...'
initrd /initramfs-3.8.0-0.40.el7.x86_64.img
}
설치된 Linux 커널을 나타내는 각 메뉴 입력
블록에는 64비트 IBM POWER 시리즈의
, x86_64 BIOS 기반 시스템의 linux16, UEFI 기반 시스템의 linux
linuxefi
가 포함되어 있습니다. 그런 다음 initrd 지시문 뒤에 커널의 경로와
initramfs
이미지 경로가 각각 있습니다. 별도의 /boot
파티션이 생성된 경우 커널 및 initramfs
이미지에 대한 경로는 /boot
를 기준으로 합니다. 위의 예에서 initrd /initramfs-3.8.0-0.40.el7.x86_64.img
줄은 initramfs
이미지가 실제로 /boot/initramfs-3.8.0-0.40.el7.el7.x86_64.img에 있고 커널 경로에 대해 마찬가지로 initramfs 이미지가 /boot/initramfs-3.8.0-0.
el7.x86_64.img에 있음을 의미합니다.
linux16 /vmlinuz-kernel_version
행에 지정된 커널 버전 번호는 각 menuentry
블록의 initrd /initramfs-kernel_version.img
줄에 제공된 initramfs
이미지의 버전 번호와 일치해야 합니다. 초기 RAM 디스크 이미지를 확인하는 방법에 대한 자세한 내용은 Red Hat Enterprise 7 커널 관리 가이드 를 참조하십시오.
menuentry
블록에서 initrd
지시문은 동일한 커널 버전에 해당하는 initramfs
파일의 위치( /boot/
디렉토리를 별도의 파티션에 있는 경우)를 가리켜야 합니다. 초기 RAM 디스크 이미지인 mk initrd
, mkrd 파일라는 이전 도구가 생성되었기 때문에 이 지시문을 initrd
라고
합니다. grub.cfg
지시문은 다른 툴과 의
호환성을 유지하기 위해 initrd로 유지됩니다. dracut
유틸리티를 사용하여 초기 RAM 디스크 이미지를 생성하는 시스템의 파일-naming 규칙은 initramfs-kernel_version.img
입니다.
Dracut 에 대한 자세한 내용은 Red Hat Enterprise 7 커널 관리 가이드 를 참조하십시오.