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

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

내가 수동으로 내 자신의 커널을 컴파일하고 나는 그들을 설치 /bootmake 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은 내가 부팅 한 최신 커널을 기억하고 하위 메뉴에서 자동으로 선택합니다. 하위 메뉴에 액세스하고 싶지 않다는 것입니다.



답변

하위 메뉴 “고급 옵션”에서 메뉴 항목을 선택하려면 GRUB_DEFAULT = “1> 3″을 설정하십시오. 이제 grub2-mkconfig를 실행하여 grub 구성 파일을 생성 할 수 있습니다. 다음에 재부팅 할 때 vmlinuz-3.7.4-gentoo-5가 부팅됩니다.

참고 : 이것은 grub 메뉴에서 기본 항목을 변경하지 않습니다. 즉, 기본 항목은 여전히 ​​현재와 동일한 항목을 나타냅니다. 그러나 기본적으로 부팅되는 이미지는 “고급 옵션”아래의 네 번째 이미지입니다. grub 메뉴에서 vmlinuz-3.7.4-gentoo-5를 기본 항목으로 설정하려면 grub2-mkconfig를 실행할 때 vmlinuz-3.7.4-gentoo-5가 첫 번째 이미지가되도록 이미지 순서를 정해야합니다. .


답변

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'

재부팅합니다.


답변

당신은뿐만 아니라 사용할 수 있습니다 GRUB_DEFAULT=saved. 이 경우에는

$ grub2-set-default -h
Usage: grub2-set-default [OPTION] MENU_ENTRY
Set the default boot menu entry for GRUB.

  -h, --help              print this message and exit
  -v, --version           print the version information and exit
  --boot-directory=DIR    expect GRUB images under the directory DIR/grub2
                          instead of the /boot/grub2 directory

MENU_ENTRY is a number, a menu item title or a menu item identifier.

또는 다음 부팅에만 해당되는 경우 :

$ grub2-reboot -h
Usage: grub2-reboot [OPTION] MENU_ENTRY
Set the default boot menu entry for GRUB, for the next boot only.

  -h, --help              print this message and exit
  -v, --version           print the version information and exit
  --boot-directory=DIR    expect GRUB images under the directory DIR/grub2
                          instead of the /boot/grub2 directory

MENU_ENTRY is a number, a menu item title or a menu item identifier.

답변

시험

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 이외의 백업 디렉토리 뭔가에있는 모든 커널을 reame


답변

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)'

답변

원하는 결과를 얻기 위해 내가 한 일은 다음과 같습니다.

  • 도움말에 GRUB_DEFAULT=saved설명 된대로 설정grub-set-default

    grub-set-default
    Menu entry not specified.
    Usage: grub-set-default [OPTION] MENU_ENTRY
    Set the default boot menu entry for GRUB.
    This requires setting GRUB_DEFAULT=saved in /etc/default/grub.
    -h, --help print this message and exit
    -V, --version print the version information and exit
    --boot-directory=DIR expect GRUB images under the directory DIR/grub instead of the /boot/grub directory
    MENU_ENTRY is a number, a menu item title or a menu item identifier.

  • 기본값 설정

    grub-set-default "1>2"

    필요한 정보와 함께 / boot / grub에 grubenv라는 새 파일을 만듭니다.

  • 그 후 구성 파일을 다시 만듭니다.

    grub-mkconfig > /boot/grub/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


답변

숫자 값으로 기본 선택을 설정할 수 있습니다. 설정하면

`GRUB_DEFAULT=3`

in /etc/default/grub
기본값을 gentoo-5 항목으로 설정합니다.
GRUB_DEFAULT0은 오프셋이므로 3은 원하는대로 네 번째 항목을 선택합니다.