부팅 할 때 GRUB 메뉴를 숨기고 Shift 또는 Esc 키를 사용하여 숨겨진 GRUB 메뉴를 표시하는 방법


10

Ubuntu 16.10을 실행 중이며 전원을 켜거나 부팅 할 때 GRUB 메뉴를 숨기려고하는데 Shift또는 Esc키를 누를 때만 메뉴가 나타나기를 원합니다 .

적절한 옵션을 변경 /etc/default/grub했는데도 메뉴가 숨겨지지 않습니다.

이 연구에서 2013 GRUB 숨겨진 메뉴가 작동하지 않는 것으로 나타 났습니다.이 메뉴 는 문제가 잠시 동안 있었다는 것을 /etc/grub.d/30_os-prober나타내며 내가하지 않을 변경을 제안합니다 . 이 코드는 여러 OS를 찾은 이후 GRUB_TIMEOUT=10어쨌든 설정 될 것이라고 제안 합니다.

여기 내가 지금 가지고있는 스 니펫이 있습니다 /etc/default/grub... 10 초 카운트 다운 메뉴가 있습니다 ...

GRUB_DEFAULT = 저장
GRUB_SAVEDEFAULT = true
GRUB_HIDDEN_TIMEOUT_QUIET = true
# GRUB_HIDDEN_TIMEOUT = 0
GRUB_TIMEOUT = 10
GRUB_DISTRIBUTOR =`lsb_release -i -s 2> / dev / null || 에코 데비안`
GRUB_CMDLINE_LINUX_DEFAULT = "자동 시작"

내가 주석을 제거하면 #GRUB_HIDDEN_TIMEOUT=0, 그때 sudo update-grub나는 또한 설정할 것을 주장 GRUB_TIMEOUT=10GRUB_TIMEOUT=0. 그래도 여전히 GRUB 메뉴가 나타납니다.

에서 terminal, 입력은 info -f grub -n 'Simple configuration'다양한 옵션을 설명하고 정보의 맨 끝에, 그것은 쇼 현재 명령 중 일부는 감가 상각되었는지, 그리고 새로운 교체는 더 나은 제안합니다.

나는 16.10에 숨기기 내 GRUB 메뉴를 얻을 수있는 방법 누구의 알고 있나요 AND 가 인식 할 수있는 Shift또는 Esc부팅시 키는?


나는 당신이 이것을 물어서 기쁘다. 나는 나도 일을 할 수 없었고, 이것은 상자가 이중 부팅 장치이기 때문임을 확인한다.
유기농 대리석

1
@OrganicMarble 문제는 여러 OS와 관련이 있습니다. 테스트하기 위해 /etc/grub.d/30_os-prober에서 해당 코드 부분을 수정했으며 메뉴가 없어도 부팅시 shift 또는 esc를 사용하여 메뉴를 강제 실행할 수 없었습니다. 아직 작업 중입니다.
heynnema 2012

내 답변에 버그 관련 정보가 더 추가되어 문제의 본질을보다 철저하게 이해하는 데 도움이 될 수 있습니다. 나는 또한 Grub2 코드를보고 있습니다-도움을 주려고 :)
xtrchessreal

일반 설정 탭을 순서대로 지정하지 않은 경우 Grub Customizer를 사용해보십시오.-1 "다른 운영 체제 찾기"상자를 선택 취소하고 "메뉴 표시"를 선택 해제 한 다음 저장하십시오. 이를 테스트하고 "Shift"가 메뉴를 표시하는지, 아무것도 누르지 않으면 어떻게되는지 확인하십시오.
xtrchessreal 2019

나는 당신이 오히려 수정 /etc/grub.d/30_os-prober하지는 않지만 실제로 해를 보지 못한다는 것을 이해할 수 있습니다 . 사본을 백업 된 상태로 유지하거나 필요에 따라 변경 사항을 되돌릴 수 있도록 # 주석을 주석 처리 할 수 ​​있습니다. 해결 방법을 찾은 순간에 가장 합리적인 솔루션을 보인다.
Geek

답변:


7

여러분, 여기 대답이 있습니다 ... 듀얼 부트 구성에서 숨겨진 GRUB 메뉴를 얻는 것입니다 ... 두 개의 편집 ...과 sudo update-grub...

편집 # 1

다중 부팅 구성에서 숨겨진 GRUB 메뉴를 얻으려면 먼저 편집해야합니다 /etc/default/grub. 아래 명령을 사용하여이 파일을여십시오.

sudo editor /etc/default/grub

파일이 열리면이 줄을 바꾸십시오.

GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10

이것들과 함께 :

GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT_STYLE=countdown
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=3

GRUB은 3 초 카운트 다운 타이머를 화면에 표시합니다. 이렇게하면 사용자가 Esc키를 눌러 기본 메뉴를 불러올 수 있습니다. 그렇지 않으면 기본 OS가 부팅됩니다.

기본 OS를 마지막으로 부팅 한 OS로 설정하려면 위에 표시된 "GRUB_TIMEOUT = 3"아래에 아래 두 줄을 추가하십시오.

GRUB_DEFAULT=saved    # change an existing line to this
GRUB_SAVEDEFAULT=true # add this line

편집 # 2

다음으로 quick_boot 기능을 비활성화하려면 OS 프로브를 업데이트해야합니다. 이렇게하려면 열 /etc/grub.d/30_os-prober좋아하는 편집기와 대체하여 (17.04에 23 행) 라인 아래를 변경 1로모그래퍼 0:

quick_boot="1"

완료되면 줄은 다음과 같아야합니다.

quick_boot="0"

파일을 저장 한 후 아래 명령을 실행하여 부트 로더를 재구성하고 변경 사항을 적용하십시오.

sudo update-grub

그랬어! +1.
유기농 대리석

좋은 해결책처럼 보입니다. :) 이제 간단한 질문이 있습니다. GRUB_TIMEOUT을 "3"에서 "1"로 변경하면 더 빨리 부팅됩니다. 또한이 코드의 작동 방식을 읽을 수있는 링크를 제공 할 수 있습니다 (있는 경우). 이 코드가 수행하는 작업과 함수 호출 시퀀스 등을 이해하고 싶습니다. 자신의 질문을 해결할 수 있으면 좋을 것입니다.
xtrchessreal

@xtrchessreal 예, 3을 1로 변경하면 2 초가 짧아집니다. 원하는 경우 3 초가 Esc 키로 넘어갈 시간이 충분하다고 생각했습니다. info -f grub -n 'Simple configuration'자세한 내용을 볼 수 있습니다 .
heynnema

Q는 +1, A는 +1. 지난 이틀 밤 나는 모든 종류의 머리를 30_os-proper로 수정하여 31_blah_blah를 만들고 40_custom을 모두 쓸모 없게 만들었다. AU, ArchLinux, Fedora 및 기타 여러 장소에 있습니다. 더 많은 투표를 원하면 AU (많은 곳이 있음)의 모든 잘못된 답변을 추적하고 투표를 하여이 답변을 복제 한 다음 핑 ( @ me) 중복으로 연결되는 AU 일반 대화방에서 투표하면 투표하겠습니다. 이 훌륭한 연구 및 작업 솔루션에 감사드립니다! :)
WinEunuuchs2Unix

@ WinEunuuchs2Unix 좋은 의견과 투표에 감사드립니다! 나는 아무도 우아한 솔루션이나 솔루션을 전혀 가지고 있지 않다는 것을 알기 전에 많은 연구를했다. 그러나 나는 결정되었다 :-)
heynnema

3

Grub2 위키의 발췌에 따르면이 문제는 여러 OS로 인해 발생할 수 있다고 생각합니다 .

다른 운영 체제가 감지되지 않으면 GRUB 2가 기본 운영 체제로 바로 부팅되고 메뉴가 표시되지 않습니다. 다른 운영 체제가 감지되면 GRUB 2 메뉴 표시됩니다.

GRUB_DEFAULT = saved가 / etc / default / grub에 설정된 경우 sudo grub-set-default를 실행하여 OS를 저장할 수 있습니다. GRUB_SAVEDEFAULT = true가 / etc / default / grub에 설정된 경우에도 저장 될 수 있습니다. 이 경우 GRUB 2 메뉴에서 새 OS를 수동으로 선택하거나 grub-set-default 명령을 실행할 때까지 기본 OS가 유지됩니다.

Grub2 Wiki는 또한 다음과 같이 말합니다 : 참고 : GRUB 1.97에서 GRUB 1.99의 숨겨진 메뉴 기능에 오랫동안 확인 된 버그가 있습니다. 이 페이지의 설명에 지정된대로 메뉴가 숨겨지지 않을 수 있습니다. 30_os-prober 스크립트를 편집하면이 문제를 해결할 수 있지만이 페이지의 범위를 벗어납니다.

해결 방법으로를 설정할 수 GRUB_TIMEOUT="1"있으며 메뉴는 1 초 동안 만 표시됩니다. 다른 OS로 전환해야하는 경우 해당 초 안에 화살표 아래로 키를 누르면 메뉴가 선택 될 때까지 나타납니다.

버그와 관련된 구문 문제가있을 수 있습니다. 나는 Grub2 전문가는 아니지만 내 grub 파일에서 모든 명령 줄은 = "일부 인용 설정"으로 끝납니다. "따옴표"는 인용 부호가 아닌 단순한 숫자 값을 변수에 전달하는 문자열을 "따옴표"로 전달했음을 기억합니다. 나는 아니다 UP 새로운 코드를 기술한다. 예를 들어 다음은 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="Ubuntu"
#GRUB_HIDDEN_TIMEOUT="0"
GRUB_HIDDEN_TIMEOUT_QUIET="true"
GRUB_TIMEOUT="1"
GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
GRUB_CMDLINE_LINUX_DEFAULT=""
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"

나는 이 버그 뿐만 아니라 더 많은 정보 를 위해이 Grubbug를 찾고 있습니다. 둘은 Grub2 관련 2 세입니다. 이 중 일부는 Grub2로 전달하기 전에 MBR 코드와 관련이있을 수 있습니다.


답변 주셔서 감사합니다. 이미 SAVEDEFAULT 메소드를 사용하고 있습니다. TIMEOUT = 1은 메뉴 표시 시간을 확실히 단축시킵니다. 문제는 여러 OS와 관련이 있습니다. 테스트하기 위해의 코드 부분을 수정 /etc/grub.d/30_os-prober했지만 메뉴가 없지만 부팅시 shift 또는 esc를 사용하여 메뉴를 강제 실행할 수 없었습니다.
heynnema 2012

링크 한 버그가 관련이없는 것 같거나 뭔가 빠졌습니까?
Geek

버그 # 1401318과 관련하여 @ElderGeek TJ에 버그가 할당 된 사람은 MBR에서 Grub으로의 동작을 설명합니다. 그는 "sleep --interruptable $ timeout"등을 말합니다. 문제의 적어도 일부가 무엇인지 알 수 있습니다. 또한 문제와 유사한 버그 # 425979에 할당됩니다. 숨겨 지도록 설정했을 때 Grub 메뉴가 작동하지 않도록 Shift 키를 누르고있는 두 버그. 이것은 OP가 파악하려고하는 것입니다. 이것이 링크가 내 게시 된 답변에있는 이유를 분명히하기를 바랍니다.
xtrchessreal 2019

혼란을 용서해주세요. "GRUB 메뉴를 숨기려면 어떻게해야합니까?"라는 질문을 읽었습니다. 설명해 주셔서 감사합니다. 그 의견을 놓쳤을 것입니다.
Geek

@ElderGeek의 실제 질문은 "GRUB 메뉴를 숨기려면 어떻게해야합니까? 그리고 부팅시 Shift 또는 esc 키를 사용하여 숨겨진 GRUB 메뉴를 표시 할 수 있습니다"입니다. 숨기려고 했어요 Shift 키나 Esc 키를 얻지 못했습니다. 분명히이 문제는 2013 년 이전으로 돌아가고 멀티 부팅 구성에만 영향을 미칩니다.
heynnema

3
  1. 통해 당신이 사용할 수있는 '모든 것'을 시도하고 싶다고 생각합니다 /etc/default/grub. 이 링크를 읽었습니까?

    help.ubuntu.com/community/Grub2/Setup#Configuring_GRUB_2

  2. 에서 다음 줄을 삭제 해 보시기 바랍니다 /boot/grub/grub.cfg.

    ...
    set timeout_style=menu
    if [ "${timeout}" = 0 ]; then
      set timeout=10
    fi
    ### END /etc/grub.d/30_os-prober ###
    

    예, 알고 있습니다. 매번 update-grub실행될 때마다 수행해야 하지만 스크립트를 작성할 수 있습니다.


답변 주셔서 감사합니다. 그 링크를 살펴 보겠습니다. 또한 매번 grub.cfg를 편집 할 필요가 없도록 /etc/grub.d/30_os-prober를 수정하는 방법을 찾았습니다.
heynnema

멀티 부트 시스템에서이 코드는 시간 초과를 0에서 10으로 다시 변경하는 것처럼 보입니다. HIDDEN_TIMEOUT을이기는 것 같습니다.
Geek

@heynnema 변경 사항을 os-prober에 게시 할 수 있습니까? 귀하의 질문에있는 링크를보고 내 os-prober의 코드와 비교했을 때 줄 번호가 의미가 없으므로 os-prober가 그 이후로 변경되었다고 가정하고 그 문제를 두려워했습니다.
유기농 대리석

1
@OrganicMarble 내 질문에 대한 업데이트를 봅니다. 어쩌면 당신은 내 개조의 일부 / 전부를 시도하고 당신이 생각해내는 것을 볼 수 있습니다.
heynnema 17

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