올바른 GRUB 2 기본 메뉴 항목을 올바르게 설정하는 방법은 무엇입니까?

올바른 GRUB 2 기본 메뉴 항목을 올바르게 설정하는 방법은 무엇입니까?

저는 Gentoo Linux 시스템에서 GRUB 2.00을 실행하고 있습니다.

내 커널을 수동으로 컴파일한 다음 /boot에 설치했습니다 make install. /boot이제 다음과 같은 커널이 있습니다.

# ls -1 /boot/vmlinuz*
/boot/vmlinuz-3.7.4-gentoo-5
/boot/vmlinuz-3.7.4-gentoo-first
/boot/vmlinuz-3.7.4-gentoo-fourth
/boot/vmlinuz-3.7.4-gentoo-third

실행 grub2-mkconfig결과는 다음과 같습니다.

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.7.4-gentoo-third
Found linux image: /boot/vmlinuz-3.7.4-gentoo-fourth
Found linux image: /boot/vmlinuz-3.7.4-gentoo-first
Found linux image: /boot/vmlinuz-3.7.4-gentoo-5
done

지금 생성된 파일을 읽어보면 /boot/grub2/grub.cfg다음 항목이 생성되었음을 알 수 있습니다.

  • 시작을 위한 기본 기본 항목vmlinuz-3.7.4-gentoo-third
  • grub2-mkconfig명령과 동일한 순서 로 다른 모든 항목(복구 항목 포함)을 포함하는 하위 메뉴

vmlinuz-3.7.4-gentoo-5문제는 부팅 시 기본적으로 세 번째 버전( ) 대신 다섯 번째 커널 버전( vmlinuz-3.7.4-gentoo-third)을 로드하려고 한다는 것입니다. 또한 로드할 올바른 커널을 선택하기 위해 하위 메뉴에 액세스하고 싶지 않습니다.

이 동작을 어떻게 바꿀 수 있나요? 기본적으로 이전 세 번째 버전 대신 다섯 번째 커널 버전을 실행하고 싶다고 GRUB에 어떻게 알릴 수 있나요? 일반적으로 GRUB가 선택하는 임의의 커널이 아닌 내가 원하는 커널과 일치하도록 기본 입력 줄을 어떻게 변경합니까?

나는 또한 다음 줄을 넣어 보았습니다 /etc/default/grub.

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

이렇게 하면 내가 원하는 방식으로 문제가 해결되지 않습니다. 그러나 적어도 GRUB는 내가 부팅한 최신 커널을 기억하고 하위 메뉴에서 자동으로 선택하는 것 같습니다. 단지 하위 메뉴에 액세스하는 것을 좋아하지 않기 때문입니다.

답변1

"고급 옵션" 하위 메뉴에서 메뉴 항목을 선택하려면 GRUB_DEFAULT="1>3"을 설정하세요. 이제 grub2-mkconfig를 실행하여 grub 구성 파일을 생성할 수 있습니다. 다음에 재부팅하면 vmlinuz-3.7.4-gentoo-5가 시작되어야 합니다.

노트: grub 메뉴의 기본 항목은 변경되지 않습니다. 즉, 기본 항목은 여전히 ​​현재와 동일한 항목을 나타냅니다. 그러나 기본 부팅 이미지는 고급 옵션 아래의 네 번째 이미지가 됩니다. vmlinuz-3.7.4-gentoo-5를 grub 메뉴의 기본 항목으로 만들려면 이미지 순서가 다음과 같아야 합니다. grub2-mkconfig를 실행할 때 vmlinuz-3.7.4-gentoo-5가 첫 번째 이미지여야 합니다.

답변2

당신이 가지고 있다면하위 메뉴grub.cfg에서는 다음과 같이 두 자리 숫자를 사용해야 합니다.

grub-reboot '1>3'

이것첫 번째메뉴 인덱스이고,두번째하위 메뉴 색인입니다.

예를 들어 구성의 마지막 항목을 실행하려면 다음과 같습니다.

grep menu /boot/grub/grub.cfg

menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
    menuentry 'Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.6.0-0.bpo.1-amd64-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
    menuentry 'Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64 (sysvinit)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.6.0-0.bpo.1-amd64-init-sysvinit-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
    menuentry 'Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.6.0-0.bpo.1-amd64-recovery-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
    menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
    menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64 (sysvinit)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-init-sysvinit-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
    menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-recovery-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {

다음을 사용해야 합니다.

grub-reboot '1>5'

그리고 다시 시작하세요.

답변3

centos7(또는 RHEL7) 및 grub2 사용:

grub은 grubenv의 "saved_entry" 항목을 기본 부팅으로 사용합니다. /boot/grub2/grub.cfg의 조각은 다음과 같습니다.

if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${saved_entry}"
fi

현재 내 빌드에 "saved_entry"가 무엇인지 확인하세요.

grub2-editenv list

saved_entry=CentOS Linux (3.10.0-693.2.2.el7.ari.x86_64) 7 (Core)

이것을 내 디버그 버전으로 변경했습니다.

grub2-editenv - set saved_entry='CentOS Linux 3.10.0-693.2.2.el7.ari.x86_64.debug) 7 (Core)'

답변4

노력하다

mkdir -p /boot/grub/backup
mv -v /boot/grub/vmlinuz-3.7.4-gentoo-{first,third,fourth} /boot/grub/backup

이제 사용하지 않는 모든 코어가 백업 디렉터리로 이동됩니다.

grub2-mkconfig -o /boot/grub/grub.cfg

r5이렇게 하면 메뉴에 옵션 만 추가됩니다 . 다 하고 나면 이 글을 읽어보세요 이것백업 디렉터리의 모든 커널을 연결한 다음 이름을 바꿉니다. 커널을 유지하려면 vmlinuz 이외의 다른 것을 사용할 수 있습니다.

관련 정보