그럽 메뉴가 시간 초과되거나 사라지지 않음


18

우분투 12.04를 실행 중입니다.

나는 내 인생에서 그럽 메뉴 (옵션 포함)를 제거 할 수 없습니다.

첫 번째 옵션으로 자동 부팅하고 싶습니다. / etc / default / grub 을 다음과 같이 편집 했습니다.

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

그런 다음 sudo update-grub을 실행했습니다 . 그런 다음 grub 2가 있음을 깨달았으므로 sudo update-grub2를 실행 했습니다 (둘 다 grub.cfg 파일을 성공적으로 생성하는 것처럼 보이게 만듭니다 .

컴퓨터를 다시 시작하면 grub 메뉴로 돌아가서 선택할 때까지 그대로 있습니다. 전원이 꺼지면 바람직하지 않습니다 ... :-)

또한 sudo grub-install / dev / sda를 사용하여 grub을 다시 설치하려고 시도했지만 실패했습니다.


현재 자동 파티션으로 부팅하려는 현재 파티션을 설정 한 후 우분투를 설치 한 다른 파티션이 있습니까?
fabricator4

나는 당신이 무슨 뜻인지 잘 모르겠습니다. 리눅스를 처음 접했습니다. 이전 Ubuntu 설치 위에 설치했지만 업그레이드하지 않았습니다. 새로 설치하십시오. 나는 파티션 단위로 무언가를 비웃었을 수도 있습니다 ... 그것에 대한 아이디어는 가능합니까?
Eric

sudo update-grubsudo update-grub2같은 명령을 실행합니다. 따라서 그 부분에 대해 걱정하지 마십시오.
saji89

cat /boot/grub/grub.cfg via pastebin 의 출력을 게시하고 여기에 링크를 공유하십시오. 실제 grub.cfg생성 된 것을 볼 수 있습니다.
saji89

grub.cfg 의 pastebin : pastebin.com/xxe2rLhg 가 있습니다. 모든 도움을 주셔서 감사합니다!
Eric

답변:


22

다른 답변에서 알 수 있듯이 레코드 실패 상황 의 피해자 일 수 있습니다 . /boot/grub/grub.cfg수동으로 편집 하면 자동으로 생성되므로 질문에서 벗어나야합니다. 또 다른 제안은 편집하는 /etc/grub.d/00_header것이지만 업데이트에 대한 사용자 개입을 요구할 수 있습니다.

가장 쉬운 해결책은에 문서화되지 않은 GRUB_RECORDFAIL_TIMEOUT 변수 를 정의하는 것 입니다 /etc/default/grub. 예를 들면 다음과 같습니다.

GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT

편집하다

자세한 내용은 이 답변 을 참조하십시오.


대단히 감사합니다. 이것이 바로 제가 찾던 것입니다!
Avio

변경 후 update-grub업데이트 된 /boot/grub/grub.cfg파일 생성을 위해 실행
콜트

기능을 죽이지 마십시오 recordfail! 부팅에 실패한 경우 더 긴 시간 초과를 원합니다. 수동으로 지우려면 @sniffski의 답변이 필요합니다 grub-editenv create. 그러나 다른 이유 recordfail가 있을 수 있습니다 ...
Cameron Tacklind

6

사용하다:

grub-editenv create

이것은 grub 환경 파일을 지우고 다음에 명확하게 부팅해야합니다.


공유해 주셔서 감사합니다. 이것은 SSH를 통해 작동하여 grub 헤드리스 서버에 갇히게되었습니다.
Geppettvs D' Constanzo

grub-editenv - unset recordfail잘 작동하고 설정 될 수있는 다른 환경에 영향을 미치지 않습니다
Cameron Tacklind

2

GRUB_TIMEOUT=10를 0으로 변경

이것은 내 구성 파일입니다.

GRUB_DEFAULT="Ubuntu, with Linux 3.2.0-30-generic-pae"
#GRUB_HIDDEN_TIMEOUT=10
#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=""

먼저 부팅하려는 OS의 이름을 직접 작성하십시오. 광산은 우분투입니다. 그래서 당신은GRUB_DEFAULT="Ubuntu, with Linux x.x.x-xx-generic-pae"

그런 다음 GRUB_TIMEOUT=기본 OS를 선택하기 전에 1 초 동안 1 초를 사용했습니다 (Xubuntu와 같은 다른 OS로 부팅 해야하는 경우)

에 관해서는 GRUB_CMDLINE_LINUX_DEFAULT=""당신이 제거하면 quite splash그것은 당신이 (I 그것 같이이 방법 : P)를 대신 부팅 과정에서 우분투 로고의 텍스트가 표시됩니다


또 다른 해결책이 있습니다.

GUI로 구성하는 데 도움이되는 boot-repair 라는 프로그램이 있습니다 .

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

이미지에서 볼 수 있듯이. 라는 상자가 Unhide boot menu있습니다. 상자를 선택 해제하고 appy를 누르십시오. 고급 옵션 화살표를 클릭하여 액세스 할 수 있습니다.

부팅 복구를 설치하려면

sudo add-apt-repository ppa:yannubuntu/boot-repair

sudo apt-get update

sudo apt-get install -y boot-repair

그런 다음 boot-reapir터미널 또는 대시에서 실행하십시오.


세 번째 해결책 :

grub-customizer라는 사용하기 쉬운 GUI 응용 프로그램을 사용하여 인생을 좀 더 쉽게 만들 수 있습니다. 이름에서 알 수 있듯이 Grub 메뉴 항목을 재정렬하는 것 이상의 작업을 수행 할 수 있습니다.

다음을 통해 설치할 수 있습니다.

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

여기에 이미지 설명을 입력하십시오

메뉴에서 볼 수 있듯이 show menu옵션 이 있습니다. Unhceck과 그것이 작동하는지 확인


변경 없음. :-/ 메뉴의 목록에 따라 GRUB_DEFAULT가 숫자 #로되어 있다고 생각 했습니까? GRUB_TIMEOUT을 0으로 변경해도 도움이되지 않았습니다.
Eric

@Eric 당신은 두 가지 방법을 사용할 수 있습니다 : grub 목록에서 OS의 위치를 ​​알고 있다면 숫자를 사용할 수 있습니다. 그러나 저에게는 4 개의 Linux 배포판과 1 개의 Windows 및 memTest 및 복구가 있습니다. 그래서 나는 자신의 장소를 암기하기가 어렵습니다. grub-update값을 변경 한 후 를 실행 했습니까 ?
Suhaib

값을 변경 한 후 grub-update를 실행했습니다. :-/
Eric

제공 한 부팅 복구 앱을 설치하고 사용 했는데 처음 재부팅 할 때 작동합니다 . 그 후 GRUB 메뉴가 다시 나타나고 키를 누를 때까지 거기에 앉아 있습니다. 모든 도움을 주셔서 감사합니다. 정말 감사합니다. 여기에서 어디로 가야할지 모르겠다.
Eric

@Eric ok 제 3의 해결책을 찾았습니다
Suhaib

2

GRUB_HIDDEN_TIMEOUTGRUB_HIDDEN_TIMEOUT_QUIET옵션은 사용되지 않습니다. 따라서 의견을 말하십시오.

메뉴를 건너 뛰고를 누르고있을 때만 표시하려면 ESC다음을 추가하십시오.

GRUB_TIMEOUT_STYLE='countdown'
GRUB_TIMEOUT=1

견본 /etc/default/grub

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=1
GRUB_TIMEOUT_STYLE=countdown
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

'GRUB_TIMEOUT_STYLE' :이 옵션이 'countdown'또는 'hidden'으로 설정된 경우 메뉴 표시 하기 전에 GRUB은 'GRUB_TIMEOUT'에서 설정 한 제한 시간이 만료 될 때까지 기다립니다. 경우 ESC가 그 시간 동안 누르면,이 메뉴를 표시 및 입력을 기다립니다.


그것은 해야 하지만이하는 모든 쇼 1 초 표준 메뉴입니다. 최소한 새로운 16.04
frnhr

1

다음 줄을 추가하여 문제를 해결할 수 있습니다 /etc/default/grub

GRUB_DISABLE_OS_PROBER=true

... 그리고 실행 중 sudo update-grub입니다.

설명 : 및 의 파일을 사용하여 파일 /boot/grub/grub.cfg을 실행 update-grub하여 파일 이 생성됩니다 . 따라서 편집하지 말아야 하지만 시간 초과가 설정되는 이유를 찾는 것이 도움이 될 수 있습니다. 로 시작하는 줄 을 검색 한 다음로 시작하는 다음 줄을 검색하십시오 . 이것은 어떤 스크립트가 타임 아웃을 설정했는지 암시 할 수 있습니다. 필자의 경우 os-prober 스크립트가 시간 초과를 담당했습니다. 에 의해 설정되지 않은 10 초 하드 코딩 된 시간 초과가 있음이 밝혀졌습니다 . os-prober를 비활성화 하거나 편집 하거나 하드 디스크 파티션의 일부를 건너 뛰는 데 사용할 수 있습니다 (30_os-prober는 다른 OS가있는 경우 사용됩니다). 자세한 내용은 이 Q & A를 참조하십시오/etc/grub.d/etc/default/grubgrub.cfgset timeout=### END /etc/grub.d/ .../etc/grup.d/30_os-proberGRUB_TIMEOUTGRUB_DISABLE_OS_PROBER=true/etc/grup.d/30_os-proberGRUB_OS_PROBER_SKIP_LIST. 다른 사람들이 지적한 것처럼 또 다른 이유는 recordfail 일 수 있습니다 GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT.


0

루트 파일 시스템을 읽기 전용으로 설정하기 위해 AUFS (unionfs)를 사용한 후에 항상 grub 메뉴가 나타나는 문제가있었습니다. 매번 부팅 할 때마다 서버에서 Enter 키를 누르는 것이 실제로있었습니다. 나는 지침을 따르십시오 : grub 2 메뉴를 비활성화 하십시오 . 이후 전혀 문제가 없었습니다.

/boot/grub/grub.cfg를 편집하고 다음을 변경하십시오.

if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi

if [ ${recordfail} = 1 ]; then
  set timeout=1
else
  set timeout=10
fi

솔루션의 이전과 이후는 정확히 동일합니다.
RawwrBag

set timeout=-1와 동일하지 않습니다 set timeout=1. 전자는 "영원히 기다립니다", 후자는 "1 초 동안 기다립니다"입니다.
Jeff McJunkin

0

내 우분투는 항상 시간을 30 초로 설정했거나 값을 설정했을 것입니다. 다음은 recordfail이 누락 된 값 이라는 것을 알게 된 방법 입니다.

1. 실제 grub 스크립트 확인 /boot/grub/grub.cfg

Grub의 기능을 확인하는 가장 좋은 방법은 IMHO를 여는 것 /boot/grub/grub.cfg입니다. 의 grub-mkconfig템플릿 /etc/grub.d과 설정을 사용하여 자동으로 생성 된 스크립트 입니다 /etc/default/grub.

109 라인 주위에 다음과 같은 내용이 표시됩니다.

108 if [ "${recordfail}" = 1 ] ; then
109   set timeout=30 # Note here this value
110 else
111   if [ x$feature_timeout_style = xy ] ; then
112     set timeout_style=hidden
113     set timeout=3
114   # Fallback hidden-timeout code in case the timeout_style feature is
115   # unavailable.
116   elif sleep --interruptible 3 ; then
117     set timeout=0
118   fi
119 fi

필자의 경우 생성 된 스크립트를 사용하여 recordfail변수가 설정되지 않았 음을 알 수 있습니다.

2. recordfail변수가 설정되어 있지 않으면 설정하십시오

/etc/default/grub자주 사용하는 텍스트 편집기 (예 : vim)에서 열고 변수 GRUB_RECORDFAIL_TIMEOUT를 지정된 값 (예 : 5 초)으로 설정하십시오.

설정 파일은 다음과 같아야합니다 :

GRUB_DEFAULT=0
GRUB_TIMEOUT=3
GRUB_TIMEOUT_STYLE=hidden
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_RECORDFAIL_TIMEOUT=5

3. 실행할 구성 업데이트 update-grub

마지막 단계로 실행하도록 구성을 업데이트하십시오 update-grub. 지금부터 GRUB2는 설정된 타임 아웃을 사용합니다. 이 명령은 /boot/grub.cfg파일 을 재생성 합니다.

4. 생성 된 스크립트 결과 확인

다시, /boot/grub.cfg109 행 주위의 결과를 열고 확인하십시오.

108 if [ "${recordfail}" = 1 ] ; then
109   set timeout=5 # Note here this value
110 else
111   if [ x$feature_timeout_style = xy ] ; then
112     set timeout_style=hidden
113     set timeout=3
114   # Fallback hidden-timeout code in case the timeout_style feature is
115   # unavailable.
116   elif sleep --interruptible 3 ; then
117     set timeout=0
118   fi
119 fi

109 행의 값은 이전과 같이 30이 아니라 5가됩니다.

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