Shift 키를 누른 상태에서 GRUB2 메뉴 숨기기 :이 작업을 수행하는 방법?


32

Ubuntu-Windows 7 이중 부팅 설정이 있으며 부팅 직후 Shift 키를 누르고 Grub2 메뉴를 표시하지 않으면 랩톱에서 Windows 7을 부팅하도록하고 싶습니다. 우분투.

나는 Grub2와 옵션에 대해 연구 etc/default/grub했으며 GRUB_TIMEOUTand와 GRUB_HIDDEN_TIMEOUT값 을 조합하여 놀아 보았지만 아무 소용이 없습니다. 나는 카운트 다운이 동시에 시작된다는 생각 GRUB_HIDDEN_TIMEOUT보다 더 높게 설정하려고 시도했지만 , 다른 하나가 끝난 후에는 시작 GRUB_TIMEOUT하지 않습니다 GRUB_TIMEOUT.

이 동작을 수행 할 수 있습니까?

그렇다면 어떻게?


1
내가하는 방법은 시간 제한을 0으로 설정하는 것입니다 (Grub Customizer를 사용하여 설정). BIOS 바로 다음에 Shift 키를 누르지 않으면 메뉴가 표시되지 않으면 GRUB2 메뉴가 나타나지 않습니다. sudo add-apt-repository ppa : danielrichter2007 / grub-customizer sudo apt-get 업데이트 sudo apt-get 설치 grub-customizer
Ryan McClure

이것이 일부 설치의 기본 동작이라는 것을 이해하고 있습니다.
RobotHumans

@RyanMcClure 수동으로 시간 초과를 0으로 설정하려고 시도했지만 오른쪽 Shift 키를 누른 상태에서 Grub2 메뉴가 전혀 표시되지 않습니다.
Bez Hermoso

답변:


15

더 간단한 해결책을 찾았습니다. / etc / default / grub 파일에서 다음 행을 수정하십시오.

GRUB_HIDDEN_TIMEOUT = 0.0

GRUB_TIMEOUT = 0.0

물론 우리는 마침내 update-grub을 실행합니다. 내 PC에서 작동합니다.


6
긁어 이것은 grub 메뉴를 제공하지 않지만 shift 키를 눌러도 얻을 수 없습니다.
zorkerz

9

우분투 16.04입니다.

위에서 찾은 답변 중 일부를 약간 조합 하여이 문제를 해결 했으므로 grub 패키지가 업데이트 될 때 향후 병합을 피하면서 30_os-prober를 수정할 필요가 없습니다 ...

도움이 되길 바랍니다.

내가 원하는 것을 반영하도록 / etc / default / grub의 일부 변수가 변경되었습니다.

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

GRUB_FORCE_HIDDEN_MENU="true"
export GRUB_FORCE_HIDDEN_MENU

그런 다음 새 파일을 만들었습니다.

sudo touch /etc/grub.d/50_hidemenu
sudo chmod +x /etc/grub.d/50_hidemenu

이 내용으로 채우십시오.

#!/bin/sh
cat <<EOF
if [ "x\${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then
      set timeout=0
    fi
  fi
fi
EOF

그리고 업데이트 된 grub;

sudo update-grub

건배.


나를 위해 작동하지 않습니다.
Menasheh

나는 이것을 16.04에서만 테스트했습니다. 다른 버전을 사용하고 있습니까?
tux1c

16.10 일 수 있습니다. 당신 말이 맞아요.
Menasheh

뿐만 아니라 데비안 쥐어 짜기에 작품
조슬린 delalande

7

Kubuntu 14.04에서는 작동하지 않습니다 GRUB_TIMEOUT= 0. 이상하게 설정 하고 재부팅 한 후 grub 메뉴는 10 초 동안 계속 표시됩니다.

다른 grub 스크립트에는 값이 0 인 경우 grub_timeout을 10으로 설정하는 코드가 있기 때문입니다.

그래서 이것이 내가 작동하게하는 방법입니다.

파일 grub30_osprober파일 을 모두 복사 하십시오 !!! 문제가 발생하면 원본 파일을 다시 넣을 수 있습니다

에서 /etc/default/grub

GRUB_DEFAULT=4    #set this value to the OS you want to boot
GRUB_HIDDEN_TIMEOUT=0

GRUB_TIMEOUT=0

/etc/grub.d/30_os-prober 0으로 설정되면 grub 시간 초과를 10 초로 설정하는 코드 조각이 /etc/default/grub있는데 개발자가 왜 거기에 넣었는지 모르겠지만 grub 메뉴를 숨길 수 없습니다.

set timeout_style=menu

if [ "\${timeout}" = 0 ]; then    
  set timeout=10  # I changed this from 10 to 0

이러한 변경 후에 sudo update-grub는 새 grub 부팅 순서를 생성하기 위해 실행 됩니다.

https://sites.google.com/site/marcshomesite/Home/linux-tuning 에 모든 Linux 수정 사항 / 수정 사항을 문서화했습니다.


나는 당신이 뒤에 공백을 두지 않았다 희망 =에서 GRUB_TIMEOUT= 0.
muru

4

GRUB 메뉴에서 선택하지 않고 Windows를 자동으로 부팅하려면 /etc/default/grub다음과 비슷한 값으로 파일 을 편집해야합니다 .

GRUB_DEFAULT= <number of default entry starting from 0>
GRUB_TIMEOUT= 0 # time in seconds to boot default
# GRUB_HIDDEN_TIMEOUT=0 # warning: activating this may lock you out from GRUB menu

이러한 파일을 편집하기 전에 항상 백업 해 두는 것이 좋습니다. 변경 한 후 다음을 사용하여 활성화해야합니다.

sudo update-grub

GRUB_DEFAULT의 값은 개별 시스템에 따라 다릅니다. 항상 Windows를 부팅하기 "Microsoft Windows XP Professional"위해 항목 번호 대신 그룹 메뉴 (예 :)에 표시된대로 항목 이름을 입력 할 수도 있습니다 .


중요 사항 : 일부 컴퓨터 Shift에서는 부팅시 왼쪽 을 길게 눌러 GRUB 메뉴를 표시 할 수 없습니다 ( 버그 # 425979 참조 ). 따라서 먼저 부팅하지 않은 우분투 (Windows가 아닌)를 기본 OS로 설정하여 테스트하는 것이 좋습니다. 그런 다음 영향을받는 경우 GRUB 설정을 쉽게 취소 할 수 있습니다.


그것은 우분투를 인간적으로 부팅 할 수 없게 만들지 않습니까, 아니면 부팅을 가로 채고 원할 때 우분투를 선택하기에 충분한 시간이 있습니까?
Bez Hermoso 2016 년

1
@Shasteriskt는 다른 부팅 OS를 선택하기 위해 키를 누를 수있을만큼 시간을 길게 설정해야합니다.
Takkat

시간 초과를 0으로 설정하고 Shift 키를 누른 채 메뉴가 여전히 표시되지 않습니다. (우편하게 설정을 편집 할 수있는 우분투로 부팅하도록 설정했습니다.)
Bez Hermoso

요컨대, 필요한 행동을 달성 할 수 없습니까?
Bez Hermoso

@Shasteriskt : 불행히도 일부 컴퓨터에서는 GRUB 메뉴를 불러 오기 위해 부팅하는 동안 누르고있는 왼쪽 Shift 키가 깨졌습니다 (예 : 이 버그 ). ESC 또는 SHIFT + ESC가 작동하는 경우 운이 좋을 수 있습니다.
Takkat

4

저도 같은 일을하려고하고 있었고, 난 특히에, 우분투 포럼에 큰 도움이 발견 스레드.

으로 /etc/default/grub올바르게 설정 GRUB_TIMEOUT하고 올바르게 설정 하고 GRUB_HIDDEN_TIMEOUT(각각 0과 5라고 말함) GRUB_DEFAULT부팅 할 기본 이미지를 지정 한다고 가정하면 올바른 방법으로 절차를 수행합니다.

  1. 그 줄을 추가

    GRUB_FORCE_HIDDEN_MENU="true"
    export GRUB_FORCE_HIDDEN_MENU
    

    끝까지 /etc/default/grub

  2. 백업 /etc/grub.d/30_os-prober하고 여기에있는 버전으로 덮어 씁니다.

  3. 그것을 테스트하십시오! 메뉴를 표시하려면 SHIFT키를 누릅니다

이 문제는 다중 OS 설정과 관련이 있으며 스크립트를 편집하는 것이이를 해결하는 방법 중 하나입니다.

30_os-prober :

#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009  Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

prefix="/usr"
exec_prefix="${prefix}"
datarootdir="${prefix}/share"

. "${datarootdir}/grub/grub-mkconfig_lib"

found_other_os=

make_timeout () {

  if [ "x${found_other_os}" = "x" ] || [ "x${GRUB_FORCE_HIDDEN_MENU}" = "xtrue" ] ; then 
    if [ "x${1}" != "x" ] ; then
      if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
    verbose=
      else
    verbose=" --verbose"
      fi

      if [ "x${1}" = "x0" ] ; then
    cat <<EOF
if [ "x\${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep$verbose --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
EOF
      else
    cat << EOF
if [ "x\${timeout}" != "x-1" ]; then
  if sleep$verbose --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then
    set timeout=0
  fi
fi
EOF
      fi
    fi
  fi
}

adjust_timeout () {
  if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
    cat <<EOF
if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
EOF
    make_timeout "${GRUB_HIDDEN_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_BUTTON}"
    echo else
    make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
    echo fi
  else
    make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
  fi
}

if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
  adjust_timeout
  exit 0
fi

if [ -z "`which os-prober 2> /dev/null`" -o -z "`which linux-boot-prober 2> /dev/null`" ] ; then
  # missing os-prober and/or linux-boot-prober
  adjust_timeout
  exit 0
fi

OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"
if [ -z "${OSPROBED}" ] ; then
  # empty os-prober output, nothing doing
  adjust_timeout
  exit 0
fi

osx_entry() {
    found_other_os=1
        cat << EOF
menuentry "${LONGNAME} (${2}-bit) (on ${DEVICE})" --class osx --class darwin --class os {
EOF
    save_default_entry | sed -e "s/^/\t/"
    prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
    cat << EOF
        load_video
        set do_resume=0
        if [ /var/vm/sleepimage -nt10 / ]; then
           if xnu_resume /var/vm/sleepimage; then
             set do_resume=1
           fi
        fi
        if [ \$do_resume = 0 ]; then
           xnu_uuid ${OSXUUID} uuid
           if [ -f /Extra/DSDT.aml ]; then
              acpi -e /Extra/DSDT.aml
           fi
           $1 /mach_kernel boot-uuid=\${uuid} rd=*uuid
           if [ /System/Library/Extensions.mkext -nt /System/Library/Extensions ]; then
              xnu_mkext /System/Library/Extensions.mkext
           else
              xnu_kextdir /System/Library/Extensions
           fi
           if [ -f /Extra/Extensions.mkext ]; then
              xnu_mkext /Extra/Extensions.mkext
           fi
           if [ -d /Extra/Extensions ]; then
              xnu_kextdir /Extra/Extensions
           fi
           if [ -f /Extra/devprop.bin ]; then
              xnu_devprop_load /Extra/devprop.bin
           fi
           if [ -f /Extra/splash.jpg ]; then
              insmod jpeg
              xnu_splash /Extra/splash.jpg
           fi
           if [ -f /Extra/splash.png ]; then
              insmod png
              xnu_splash /Extra/splash.png
           fi
           if [ -f /Extra/splash.tga ]; then
              insmod tga
              xnu_splash /Extra/splash.tga
           fi
        fi
}
EOF
}

wubi=

for OS in ${OSPROBED} ; do
  DEVICE="`echo ${OS} | cut -d ':' -f 1`"
  LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
  LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
  BOOT="`echo ${OS} | cut -d ':' -f 4`"

  if [ -z "${LONGNAME}" ] ; then
    LONGNAME="${LABEL}"
  fi

  echo "Found ${LONGNAME} on ${DEVICE}" >&2

  case ${BOOT} in
    chain)

      case ${LONGNAME} in
    Windows*)
      if [ -z "$wubi" ]; then
        if [ -x /usr/share/lupin-support/grub-mkimage ] && \
           /usr/share/lupin-support/grub-mkimage --test; then
          wubi=yes
        else
          wubi=no
        fi
      fi
      if [ "$wubi" = yes ]; then
        echo "Skipping ${LONGNAME} on Wubi system" >&2
        continue
      fi
      ;;
      esac

      found_other_os=1
      cat << EOF
menuentry "${LONGNAME} (on ${DEVICE})" --class windows --class os {
EOF
      save_default_entry | sed -e "s/^/\t/"
      prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"

      case ${LONGNAME} in
    Windows\ Vista*|Windows\ 7*|Windows\ Server\ 2008*)
    ;;
    *)
      cat << EOF
    drivemap -s (hd0) \${root}
EOF
    ;;
      esac

      cat <<EOF
    chainloader +1
}
EOF
    ;;
    linux)
      LINUXPROBED="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | paste -s -d ' '`"
      prepare_boot_cache=

      for LINUX in ${LINUXPROBED} ; do
        LROOT="`echo ${LINUX} | cut -d ':' -f 1`"
        LBOOT="`echo ${LINUX} | cut -d ':' -f 2`"
        LLABEL="`echo ${LINUX} | cut -d ':' -f 3 | tr '^' ' '`"
        LKERNEL="`echo ${LINUX} | cut -d ':' -f 4`"
        LINITRD="`echo ${LINUX} | cut -d ':' -f 5`"
        LPARAMS="`echo ${LINUX} | cut -d ':' -f 6- | tr '^' ' '`"

        if [ -z "${LLABEL}" ] ; then
          LLABEL="${LONGNAME}"
        fi

    if [ "${LROOT}" != "${LBOOT}" ]; then
      LKERNEL="${LKERNEL#/boot}"
      LINITRD="${LINITRD#/boot}"
    fi

    if [ -z "${prepare_boot_cache}" ]; then
      prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | sed -e "s/^/\t/")"
      [ "${prepare_boot_cache}" ] || continue
    fi
    found_other_os=1
        cat << EOF
menuentry "${LLABEL} (on ${DEVICE})" --class gnu-linux --class gnu --class os {
EOF
    save_default_entry | sed -e "s/^/\t/"
    printf '%s\n' "${prepare_boot_cache}"
    cat <<  EOF
    linux ${LKERNEL} ${LPARAMS}
EOF
        if [ -n "${LINITRD}" ] ; then
          cat << EOF
    initrd ${LINITRD}
EOF
        fi
        cat << EOF
}
EOF
      done
    ;;
    macosx)
      OSXUUID="`grub-probe --target=fs_uuid --device ${DEVICE} 2> /dev/null`"
      osx_entry xnu_kernel 32
      osx_entry xnu_kernel64 64
    ;;
    hurd)
      found_other_os=1
      cat << EOF
menuentry "${LONGNAME} (on ${DEVICE})" --class hurd --class gnu --class os {
EOF
      save_default_entry | sed -e "s/^/\t/"
      prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
      grub_device="`${grub_probe} --device ${DEVICE} --target=drive`"
      mach_device="`echo "${grub_device}" | sed -e 's/(\(hd.*\),msdos\(.*\))/\1s\2/'`"
      grub_fs="`${grub_probe} --device ${DEVICE} --target=fs`"
      case "${grub_fs}" in
    *fs)    hurd_fs="${grub_fs}" ;;
    *)  hurd_fs="${grub_fs}fs" ;;
      esac
      cat << EOF
    multiboot /boot/gnumach.gz root=device:${mach_device}
    module /hurd/${hurd_fs}.static ${hurd_fs} --readonly \\
            --multiboot-command-line='\${kernel-command-line}' \\
            --host-priv-port='\${host-port}' \\
            --device-master-port='\${device-port}' \\
            --exec-server-task='\${exec-task}' -T typed '\${root}' \\
            '\$(task-create)' '\$(task-resume)'
    module /lib/ld.so.1 exec /hurd/exec '\$(exec-task=task-create)'
}
EOF
    ;;
    *)
      echo "  ${LONGNAME} is not yet supported by grub-mkconfig." >&2
    ;;
  esac
done

adjust_timeout


    cat <<EOF
if [ "x\${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep$verbose --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
EOF

1
나는 당신의 방법을 시도했지만 실패했습니다. 우분투 14.04 LTS
Mayukh Nair

1
파일의 어떤 부분을 변경해야합니까? 내 14.04 파일은이 파일과 많은 차이가 있으므로 대상 변경 만해야한다고 생각합니다.
MakisH

@MayukhNair : 우분투 14.04가 있으며이 방법이 효과적입니다. 다음을 수행했습니다. 1. / etc / default / grub에서 GRUB_DEFAULT = 0을 설정합니다. (Dariopnc와 달리) GRUB_HIDDEN_TIMEOUT = 0을 설정합니다. 3. /etc/grub.d/30_os-prober를 백업하고 위에서 언급 한 붙여 넣기를 복사합니다. 30-os_prober 파일 4. sudo update-grub2
Pushpak Dagade

참고 파일 sudo update-grub을 변경 한 후 grub을 업데이트해야 /etc/default/grub합니다
Wilf

3

우분투 16.04에서 다음과 같이 변경했습니다. 물론 권한이있는 사용자 여야합니다.

  1. 첫 번째 변경 사항은 /etc/grub.d/30_os-prober파일에 있습니다.

    • 로 열어 sudo gedit /etc/grub.d/30_os-prober
    • 변경 quick_boot="1"quick_boot="0"
    • 파일을 저장
  2. 그런 다음 시간 종료 값 /etc/default/grub을 0 또는 다른 값으로 설정할 수 있습니다 .

    • 로 열어 sudo gedit /etc/default/grub
    • GRUB_HIDDEN_TIMEOUT=0그리고 GRUB_TIMEOUT=0.
    • 파일을 저장
  3. 마지막 단계는 grub을 업데이트하는 것입니다

    • sudo update-grub

첫 번째 파일의 변경 사항은 기본 설정이 다른 OS (예 : Windows 10)를 찾은 경우 시간 제한 값이 항상 10 초로 설정되어 있기 때문에 변경 될 수 없기 때문 /etc/default/grub입니다. 이것은 설정 되어 있는지 여부 다른 OS가 있는지 adjust_timeout묻는 기능으로 수행됩니다 .quick_boot


마침내 somzing zat vorks wiz 16.04!
JLTD

2

Grub Optimizer 설치

sudo add-apt-repository ppa : danielrichter2007 / grub-customizer

sudo apt-get update
sudo apt-get install grub-customizer

Grub Customizer가 이제 Applications> System Tools 메뉴에 나타납니다.

또는 명령 행에서 열 수도 있습니다.

gksudo grub-customizer

그럽 옵션 내부 이미지

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


3
편집으로는 할 수없는 일이 무엇입니까 etc/default/grub?
Bez Hermoso

3
@Shasteriskt : 영어가 아닌 사용자, 명령 줄에 익숙하지 않은 사람 또는 컴퓨터를 사용하고 구성 파일을 다루지 않는 사람에게 유용 할 수 있습니다.
Flimm

이것이 왜 상향 조정 되었습니까? 문제를 해결하지 못하는 것 같습니다. 나는 grub-customizer( '최적화'가 아닌) 시도했지만 작업하는 동안 Shift 키를 누르지 않으면 GRUB 메뉴를 숨기는 데 도움이되지 않습니다.
Nickolai Leschov

1

단일 부팅 시스템에서 동일한 문제가 발생했습니다. GRUB_TIMEOUT이 0이 아닌 경우 메뉴는 GRUB_HIDDEN_TIMEOUT에 관계없이 항상 팝업됩니다. GRUB_TIMEOUT이 0이면 GRUB_HIDDEN_TIMEOUT 초 동안 휴면 상태이지만 SHIFT 나 ESC는 메뉴를 표시하지 않습니다.

30_os-prober에서 adjust_time () 끝의 수면 상태에 else 절을 ​​추가하여 문제를 해결했습니다. 이제 중단되지 않으면 시간 초과가 0이고 메뉴없이 부팅되지만 중단되면 시간 초과를 10으로 설정했습니다.

수면이 중단되지 않으면 0 (거짓)을 반환하고 그렇지 않으면 1 (참)을 반환해야하기 때문에 실제로는 거꾸로 보입니다.


0

GRUB2 BOOT 메뉴를 자동으로 표시

어떤 이유로 든 GRUB_GFXMODE=640x480Grub Customizer에서 설정을 편집하면 일반적으로 부팅 메뉴가 표시됩니다.

  1. 위와 같이 grub-customizer를 설치하고 업데이트하십시오.
  2. GUI에서 Grub Customizer를 찾으십시오 (나에게는 System> Administration> ...이지만 일부는 Applications> System Tools>.에서 자금입니다.)
  3. Grub Customizer를 열고 Preferences> Advanced를 선택하십시오.
  4. GRUB_gfxmode (640X480)를 선택하십시오-이미 선택된 경우 선택을 해제하고 재부팅 한 후 다시 선택하십시오.
  5. 손가락을 교차시키고 재부팅하십시오!

왜 이것이 나를 위해 일했는지 모르겠지만 두 컴퓨터에서 모두 작동 했으므로 잘 작동합니다!


0

'SHIFT'솔루션의 대안 인 Shasteriskt는 이동 작업을 수행하는 스크립트를 작성하는 것입니다. 내 말은 파일 grub.bak의 정확한 사본 이라는 파일을 만드는 것 grub.cfg입니다. 단, 차이점은 예를 들어 set timeout=0줄이 변경된다는 것 set timeout=10입니다. 필요에 따라 재부팅 할 수있는 스위치를 수행하는 쉘 스크립트를 작성하십시오. 이러한 요구 사항을 충족하는 동등한 파이썬 스크립트를 만들었지 만 물론로 호출해야 sudo합니다. /usr/bin실제 스크립트 자체에 대한 심볼릭 링크로 설정에 넣었습니다 . 참고 : 아치에서 플럭스 박스를 실행하고 있으므로이 스크립트와 우분투 사이에 불일치가 있는지 확실하지 않지만 수정이 거의 없거나 전혀 없어야한다고 생각합니다. 스크립트는 다음과 같습니다

#! /usr/bin/python
from shlex import split
from subprocess import call
from os import rename, chdir

chdir('/boot/grub/')
try:
    with open('grub.bak','r') as alternate:
        pass
    if raw_input('Auto-boot is set. Un-set?> ') == 'y':
        rename('grub.cfg','grub.back')
        rename('grub.bak','grub.cfg')

    if raw_input('Reboot system?> ') == 'y':
        call(split('shutdown -r now'))

except:
    if raw_input('Auto-boot is not set. Set?> ') == 'y':
        rename('grub.cfg','grub.bak')
        rename('grub.back','grub.cfg')

    if raw_input('Reboot system?> ') == 'y':
        call(split('shutdown -r now'))

스크립트는 기본적으로 메뉴를로드할지 여부 (자동 부팅 여부)를 결정합니다. 찾은 결과에 따라, 켜거나 끌 것인지 묻고 다시 부팅 할 것인지 묻습니다. 반대로, 다른 방법으로 (예 : Windows에서) 작동하고 Windows에서 파일을 액세스하도록 Windows를 설정 한 경우 원하는 경우 해당 환경에서도 동일한 스크립트를 실행할 수 있습니다. 희망이 도움이됩니다.


0

따라서 GRUB_TIMEOUT을 0으로 설정하더라도 GRUB_HIDDEN_TIMEOUT이 있으면 30_os-prober는 원하는 시간에 상관없이 시간 제한을 10으로 설정합니다. 여기에있는 다른 솔루션은 해당 스크립트를 편집하지만 GRUB이 업데이트되면 업데이트 문제가 발생할 수 있습니다.

더 나은 해결책 : /etc/grub.d/50_goddamnit(새 파일)에 다음을 작성하십시오 .

#!/bin/sh
echo "set timeout=0"

기본적으로 이것은 마지막 으로 실행 되며 /boot/grub/grub.conf의 마지막 줄이므로 기본 구성의 다른 모든 미시 구스를 재정의합니다.

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