GRUB2 : 마지막 선택을 기억하는 방법


11

나는 현재 다양한 배포판을 시험 중이므로 랩톱을 부팅 할 때 선택할 수있는 몇 가지 OS가 있습니다. 일반적으로 모든 배포판 grub2은 설치가 완료된 후 부팅되는 기본 배포판 이므로 목록의 맨 위에 설치되어 있습니다.

그러나 Manjaro는 다른 일을했습니다. 그것은 몇 가지 버전의 설치 grub2그 것이다 기억 나는 하나가 (다시 시작시) 내가 다른 하나를 선택 할 때까지 (후 등등 하나와 부팅 것) 지난 시간과 유지 부팅 부팅 배포판있다.

내가 이것을 상상 했습니까? Manjaro는 실제로 그렇게합니까? 그렇다면 시스템에 해당 버전 을 어떻게 설치할 수 grub있습니까? 건배.


이것은 내 /etc/grub.d/40_custom파일입니다.

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

그리고 이것은 내 /etc/default/grub파일입니다.

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=3
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

나는 그 질문의 지시를 따랐다 (주로 내 두 줄을 추가했다 grub). 이전에 다른 것을 선택했지만 다시 시작하면 최상위 배포판이 부팅됩니다.
Gabriel

나는 대답의 지시를 따랐다. 나는 /etc/default/grubGRUB_DEFAULT=0을 편집 하고 줄 을 바꾸고 거기에없는 GRUB_DEFAULT=savedGRUB_SAVEDEFAULT=true을 추가 했습니다. 그런 다음 sudo update-grub. 재부팅하고 부팅 할 배포판을 선택했습니다. 다시 재부팅하면 기본적으로 상단 (내가 선택하지 않은) 배포판이 선택되어 부팅됩니다.
Gabriel

두 파일 안에 무엇이 들어 있는지 질문을 업데이트했습니다. 어떻게해야합니까?
Gabriel

답변:


11

당으로 GRUB 설명서 :

'GRUB_DEFAULT'

.................

이것을 'saved'로 설정하면 기본 메뉴 항목은 'GRUB_SAVEDEFAULT', grub-set-default 또는 grub-reboot에 의해 저장된 항목이됩니다.


'GRUB_SAVEDEFAULT'

이 옵션을 'true'로 설정 한 경우 항목을 선택하면 차후 GRUB 실행에서 사용할 수 있도록 새 기본 항목으로 저장하십시오. 'GRUB_DEFAULT = saved'인 경우에만 유용합니다. 'GRUB_DEFAULT = saved'는 grub-set-default 또는 grub-reboot와 함께이 옵션없이 유용하므로 별도의 옵션입니다. 기본적으로 설정 해제되어 있습니다. 이 옵션은 모든 상황에서 사용 가능하지 않을 수있는 환경 블록에 의존합니다 (환경 블록 참조).

다음을 추가해야합니다.

GRUB_DEFAULT=saved

GRUB_SAVEDEFAULT=true

당신에게 /etc/default/grub. 또한 사용자 정의 메뉴 파일을 사용 /etc/grub.d/40_custom하는 경우 옵션을 추가해야합니다

savedefault

해당 파일의 메뉴 항목 / 메뉴 항목으로 업데이트 후 GRUB :

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

또는

update-grub

배포판이 여러 개 설치되어 있으면 활성 GRUB을 구성하고 업데이트해야합니다 .


1

VirtualBox 게스트로 Arch를 사용하는 데 문제가있었습니다. 문제는 LVM을 사용하는 것으로 나타났습니다.

다시 GRUB 매뉴얼에서 :

13.2 GRUB 환경 블록

한 부팅에서 다음 부팅까지 적은 양의 정보를 기억할 수있는 것이 종종 유용합니다. 예를 들어, 마지막에 선택한 항목을 기반으로 기본 메뉴 항목을 설정할 수 있습니다. GRUB은 부트 로더가 파일 시스템 손상을 일으킬 가능성을 최소화하기 위해 의도적으로 파일 쓰기 지원을 구현하지 않으므로 GRUB 구성 파일은 일반적인 방식으로 파일을 작성할 수 없습니다. 그러나 GRUB은 적은 양의 상태를 저장하는 데 사용할 수있는 "환경 블록"을 제공합니다.

환경 블록은 사전 할당 된 1024 바이트 파일이며 일반적으로 / boot / grub / grubenv에 있습니다 (이를 가정해서는 안 됨). 부팅시 load_env 명령 (load_env 참조)은 환경 변수를로드하고 save_env (sav_env 참조) 명령은 환경 변수를 저장합니다. 실행중인 시스템에서 grub-editenv 유틸리티를 사용하여 환경 블록을 편집 할 수 있습니다.

안전상의 이유로이 스토리지는 일반 디스크 (LVM 또는 RAID 없음) , 비 체크섬 파일 시스템 (ZFS 없음) 및 BIOS 또는 EFI 기능 (ATA, USB 또는 IEEE1275 없음)을 사용하는 경우에만 사용 가능합니다.

grub-mkconfig는이 기능을 사용하여 'GRUB_SAVEDEFAULT'를 구현합니다 (단순 구성 참조).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.