재부팅하기 전에 GRUB에 Windows로 재부팅하고 싶다고 어떻게 알 수 있습니까?


33

이중 부팅 Linux / windows 시스템이 설치되어 있으며 자주 다른 시스템으로 전환합니다. GRUB 프롬프트에서 멈추지 않고 메뉴 중 하나에 메뉴 항목을 추가하여 창으로 직접 재부팅 할 수 있는지 생각하고있었습니다.

나는 이 질문 을 포럼에서 보았습니다. 그것은 정확히 내가 원하는 것이지만 그것은 내 경우가 아닌 lilo를 다루고 있습니다.

GRUB 메뉴에서 기본 항목을 수정 한 다음 재부팅 할 솔루션을 생각했지만 몇 가지 단점이 있으며 더 확실한 대안이 있는지 궁금합니다.

(또한 Windows에서 Linux로 직접 부팅하는 솔루션에 관심이 있지만 더 어려울 수 있으며 여기에 속하지 않습니다. 어쨌든 한 가지 방법으로 다른 방법으로 설정할 수 있습니다 디폴트

UPDATE 그것은 누군가가 물었다 보인다 비슷한 질문을 하고, 그 제안 된 답변이 있다면, 나뿐만 아니라 편집 수도 /boot/grub/grubenv로가 grub-rebootgrub-set-defaultgrub-editenv않습니다. )

모든 팁에 미리 감사드립니다.

업데이트 :

이것은 내 GRUB 버전입니다. (GRUB) 1.99-12ubuntu5-1linuxmint1

실행을 시도했지만 grubonce명령을 찾을 수 없습니다. 그리고 저장소에서 그것을 찾는 것은 나에게 아무것도주지 않습니다. 저는 Linux Mint를 사용하고 있습니다.

보고 man grub-reboot, 그것으로, 그것이 내가 원하는 것을하는 것처럼 보인다 grubonce않습니다. 그것은 어디서나 사용할 수 있습니다 (적어도 그것은 grub 패키지의 일부라고 생각합니다). 나는 두 개의 관련 명령을 보았다 : grub-editenvgrub-set-default.

나는 후 실행 것을 발견 sudo grub-set-default 4실행할 때, grub-editenv list당신이 비슷한 얻을 :

saved_entry=4

그리고를 실행 grub-reboot 4하면 다음과 같은 결과가 나타납니다.

prev_saved_entry=0
saved_entry=4

이것은 둘 다 같은 일을한다는 것을 의미합니다 (하나는 일시적이 아닙니다).

놀랍게도, 내가 시도했을 때 :

sudo grub-reboot 4
sudo reboot now

마치 아무것도하지 않은 것처럼 작동하지 않았으며 평소와 같이 메뉴를 표시하고 첫 번째 항목을 선택하여 10 초 후에이 항목을 부팅 할 것이라고 말했습니다.

다시 시도했지만 잘못된 항목을 작성했을 수 있다고 생각했습니다 (제로 기반입니까?). 그때는 메뉴 화면에 걸려서 부팅 할 수 있도록 PC를 강제 재설정해야했습니다.

누구든지 이것을 시도해 볼 수 있다면 그냥 나인지 확인하기 위해 고맙겠습니다. (민트는 나에게 힘든 시간을 주었다. 그리고 그것은 좋은 기회가 될 것이다 : P).

에서 코드를 읽으면 다음 /boot/grub/grub.cfg과 같은 방법으로 보이지만 내 관찰 에서이 설정을 무시하는 것입니다 ...


어떤 배포판에 있습니까? 내 데비안에서 작동한다고 생각합니다.
jw013

답변:


20

위해서는 grub-reboot작업에 대한 명령, 여러 가지 필요한 구성 변경은 장소에 있어야합니다 :

  • grub의 기본 항목은로 설정해야합니다 saved. 이것에 대한 가능한 위치 중 하나 GRUB_DEFAULT=/etc/default/grub
  • 사용은 grub-set-default일반적으로 사용하는 것과 기본 항목을 설정합니다.
  • grub 설정을 업데이트하십시오 (예 :) update-grub.

초기 설정을 처리해야합니다. 앞으로는 grub-reboot <entry>일회성 부팅을 수행하십시오 <entry>.


"grub의 기본 항목을"으로 설정해야합니다. "라는 문구가 표시 saved되는 반면 내 보관 GRUB_DEFAULT=0도 충분합니다. 그래서 saved불필요합니까?
zhangxaochen

모두가이 기능이 얼마나 멋진 지 잘 모르겠다면 rhel64로 win7ult64를 부팅 할 계획이고, 그 반대로 rhel zfs raidz2로 진행되는 다른 win 네트워크 시스템 예약 백업 작업에서 rhel을 자동으로 사용할 수있게하려고합니다. 그런 다음 백업이 완료되면 그럽 시스템은 나머지 주 동안 Windows 게이머 iis 서버 놀이터로 자동 부팅되어 헹구고 반복합니다. 모양 시프터입니다. :-)
Brian Thomas

grub-reboot가 자동으로 실패하여 성공 리턴 코드를 제공한다는 사실을 알기까지 오랜 시간이 걸렸습니다. 내 제안 편집이 괜찮기를 바랍니다. :-)
아무도

23
  1. 편집은 / etc / 기본 / 애벌레 및 교체 GRUB_DEFAULT=0와 함께GRUB_DEFAULT=saved
  2. sudo update-grub
  3. 당신의 명령은 다음과 같습니다

    sudo grub-reboot "$(grep -i 'windows' /boot/grub/grub.cfg|cut -d"'" -f2)" && sudo reboot
    

~ / .bashrc의 예쁜 기능은 다음과 같습니다.

# ******************************************************************
# reboot directly to windows 
#   Inspired by http://askubuntu.com/questions/18170/how-to-reboot-into-windows-from-ubuntu
# ******************************************************************
function my_reboot_to_windows {
    WINDOWS_TITLE=`grep -i 'windows' /boot/grub/grub.cfg|cut -d"'" -f2`
    sudo grub-reboot "$WINDOWS_TITLE"
    sudo reboot
}

grub.conf에 Windows 용 여러 줄이 포함 된 경우 다음 함수는 menuentryWindows를 참조하여 첫 번째 줄부터 시작하여 선택 하는 줄만 처리합니다 .

function my_reboot_to_windows {
    WINDOWS_TITLE=`grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2`
    sudo grub-reboot "$WINDOWS_TITLE"
    sudo reboot
}

내 파일 /boot/grub/grub.cfg에는 "Windows"가있는 줄이 더 많이 포함되어 있습니다 ...=1 i915.semaphores=1 acpi_osi='!Windows 2012' $vt.... 에 대한 grepping하여 해결할 수 있습니다 ^menuentry 'Windows.
Jan Vlcinsky

정답으로 표시해야합니다.
Taha Rehman Siddiqui

생각보다 기능이 더 도움이됩니다.
카슨 Ip

2

GRUB Reboot GNOME Shell Extension 을 사용하는 것이 가장 쉬운 방법입니다 (즉, 그놈을 사용하는 경우).

확장 프로그램을 사용하려면 위에 링크 된 사이트로 이동하여 오른쪽 상단에있는 작은 토글을 클릭하십시오 (처음 페이지를 탐색 할 때 꺼짐이라고 표시됨). 확장 프로그램을 다운로드하여 설치할 것인지 묻는 메시지가 표시됩니다.

설치가 완료되면 시스템 메뉴를 열고 일반적으로 다시 시작하는 것처럼 전원 단추를 클릭하십시오. 종료 또는 재시작을 확인하는 팝업 창에 이제 "다시 시작 ..."이라는 레이블이 붙은 버튼이 있습니다. 해당 버튼을 클릭하면 grub 메뉴의 항목이 목록에 표시되어 재시작 후 자동으로 시작할 OS를 선택할 수 있습니다. 해당 항목 중 하나를 선택하면 시스템이 선택된 grub 옵션을 사용하여 종료되고 다시 시작됩니다.


1
확장 프로그램 설치 및 사용에 대한 세부 정보를 포함하도록 게시물을 편집했습니다.
Dylan Smith

1

나는라는 스크립트와 함께 제공되는 openSUSE를 사용합니다.이 스크립트는 grubonce다음에 다시 부팅 할 때 grub 항목을 설정해야합니다.

# grubonce
0: Trace -- openSUSE 12.1 - 3.1.10-1.16
1: Debug -- openSUSE 12.1 - 3.1.10-1.16
2: Desktop -- openSUSE 12.1 - 3.1.10-1.16
3: Failsafe -- openSUSE 12.1 - 3.1.10-1.16

# grubonce 0
Using entry #0: Trace -- openSUSE 12.1 - 3.1.10-1.16

# grubonce 2
Using entry #2: Desktop -- openSUSE 12.1 - 3.1.10-1.16

다른 배포판에이 스크립트가 포함되어 있는지 알 수 없으므로 배포판에없는 경우이 페이지를 확인할 수 있습니다.

http://sidvind.com/wiki/GRUB:_Boot_another_OS_once


실제로 grub 및 trustedgrub (그것이 무엇이든간에) 및 grub2가 아니므로 2019 년 6 월 tumbleweed에 설치되지 않았습니다
redanimalwar

1

grub-set-default더 사용 가능한 것 같습니다 ( grubonce우분투 '절에 나열되지 않음). 또한 마지막 종료시 업데이트가 적용된 경우 (즉, 시작을 시작하고 일부 업데이트 데이터를 처리하고 재부팅 한 다음 로그인 페이지를 표시하는 경우) Windows 7에 시작하는 동안 재부팅을 수행하는 습관이 있으므로 더 유용 할 수 있습니다.
나는 종종 돌아와서 우분투를 실행하기 위해 Windows 7을 시작했습니다.


1
Windows 업데이트를 해제 했으므로 문제가되지 않아야합니다 .D, 시도하겠습니다. 내가 본 것에서 이것은 똑같은 일을하는 것처럼 보입니다 grub-reboot. 더 자세히 질문을 편집하고 있습니다. 어쨌든 고마워
jadkik94

1

Fedora에서는 다음 스크립트를 사용할 수 있습니다. 이것은 https://askubuntu.com/a/18186/149422에 설명 된 것과 거의 동일하며 Fedora의 GRUB 2에 대한 몇 가지 수정 사항 이 있습니다 .

#!/bin/bash
if [ `readlink /boot/grub2/grubenv` == "/boot/efi/EFI/fedora/grubenv" ]; then
    sudo mv /boot/grub2/grubenv /boot/grub2/grubenv-original
    sudo ln -s ../efi/EFI/fedora/grubenv /boot/grub2/grubenv
fi
MENU_ENTRY=`grep ^menuentry /boot/grub2/grub.cfg  | grep --line-number Windows`
MENU_NUMBER=$(( `echo $MENU_ENTRY | sed -e "s/:.*//"` - 1 ))
sudo grub2-reboot $MENU_NUMBER
sudo reboot

1

우분투 16.04를 사용하고 그리고 위의 솔루션은 나를 위해 작동하지 않았다 ... 어떤 이유로 sudo grub-reboot 2업데이트 듯 결코 /boot/grub/grubenv심지어 변경 한 후, 파일 GRUB_DEFAULT=0GRUB_DEFAULT=saved모두 /etc/default/grub/boot/grub/menu.lst. savedefault --default=2 --oncegrub 에서 명령을 사용해 도 grubenv 파일이 작동하지 않거나 변경되지 않은 것 같습니다. 아무 것도하지 않은 것처럼 원래 그럽 메뉴로 돌아 왔습니다.

그래서 수동으로 끝내고 작동했습니다 (RAID 드라이브와 어떻게 작동하는지 잘 모르겠습니다).

sudo grub-editenv - set next_entry=2
reboot

여기서 2는 grub 시작 메뉴에서 Windows 항목에 대한 0부터 시작하는 메뉴 항목 위치입니다.

/boot/grub/grub.cfgnext_entry 값을 사용하고 다음 부팅을 위해 파일을 재설정하므로 파일 을 보면 이것이 왜 작동하는지 알 수 있습니다 .


0

@ jw013에 동의하십시오. 또한 메뉴 타일에 grub-reboot (부모 메뉴 제목 포함)를 제공 할 수 있습니다. 예 :

$ sudo grub-reboot "Advanced options for Ubuntu>Ubuntu, with Linux 4.13.0-26-generic"
$ sudo reboot

"Ubuntu의 고급 옵션"이 상위 메뉴 인 경우 "Linux 4.13.0-26-generic을 사용하는 Ubuntu"는 하위 메뉴입니다.


0

머신을 특정 부팅 대상으로 재부팅합니다 (Grub 항목).
부팅 대상은 fzf와 대화식으로 선택됩니다.

# Search for grub.cfg
GRUB_CFG=$(find /boot -name grub.cfg 2> /dev/null)

if [[ -z ${GRUB_CFG} ]]; then
  echo "No grub.cfg found under /boot. Try as root."
  exit 1
elif [[ ! -r ${GRUB_CFG} ]]; then
  echo "${GRUB_CFG} is not readable. Try as root."
  exit 1
fi

GRUB_MENUENTRY=$(awk -F\' '/menuentry / {print $2}' ${GRUB_CFG} | fzf)

# Set boot target for next boot
grub2-reboot "${GRUB_MENUENTRY}"

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