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은 내가 부팅 한 최신 커널을 기억하고 하위 메뉴에서 자동으로 선택합니다. 하위 메뉴에 액세스하고 싶지 않다는 것입니다.
답변
하위 메뉴 “고급 옵션”에서 메뉴 항목을 선택하려면 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_DEFAULT
0은 오프셋이므로 3은 원하는대로 네 번째 항목을 선택합니다.