우분투에서 Windows로 재부팅하는 방법?


35

10.10 / Vista 이중 부팅 시스템에서 우분투에서 Windows로 재부팅하는 방법을 찾고 있습니다. 구체적인 유스 케이스는 실행중인 Ubuntu 인스턴스로 ssh하고 Windows로 직접 재부팅을 시작하는 명령을 발행하고 싶다는 것입니다.

유망한 블로그 게시물을 찾았 지만 제안하는 스크립트가 작동하지 않습니다.

#!/bin/bash

WINDOWS_ENTRY=`grep menuentry /boot/grub/grub.cfg  | grep --line-number Windows`
MENU_NUMBER=$(( `echo $WINDOWS_ENTRY | sed -e "s/:.*//"` - 1 ))
sudo grub-reboot $MENU_NUMBER
sudo reboot

man grub-reboot 별로 도움이되지 않지만 올바른 방향으로 나를 인도하는 것 같습니다.

GRUB의 기본 부팅 항목을 다음 부팅에만 설정

WINDOWS_ENTRY=`grep menuentry /boot/grub/grub.cfg  | grep --line-number Windows`
MENU_NUMBER=$(( `echo $WINDOWS_ENTRY | sed -e "s/:.*//"` - 1 ))
echo $MENU_NUMBER

예상 값이 반환되지만 재부팅시 첫 번째 메뉴 항목이 여전히 강조 표시됩니다. 왜 이것이 효과가 없거나 다른 솔루션에 대한 제안이 있습니까?


Windows grub 부트 라인을 grub 메뉴의 목록 맨 위에 복사하면 각 부트 윈도우가 기본로드가됩니다. 우분투에 있고 ssh라면. sudo reboot nowgrub 목록의 첫 번째 항목으로 머신을 재부팅해야합니다.
karthick87

물론 그 Windows 파티션으로 부팅하는 경우는 거의 없습니다. 기본 항목으로 만들고 싶지 않습니다.
andrewsomething

답변:


43
  • 그럽을 먼저 편집해야합니다.

    sudo gedit /etc/default/grub
    
  • GRUB_DEFAULT = 0 행을 검색 하여 GRUB_DEFAULT = saved로 수정하십시오. 대체 텍스트

  • 다음 명령을 사용하여 그럽을 업데이트하십시오.

    sudo update-grub  
    
  • 이제 스크립트 파일을 만들고

    sudo gedit switch-to-windows.sh
    
  • 그런 다음이 줄을 추가하십시오.

    #!/bin/bash
    WINDOWS_ENTRY=`grep menuentry /boot/grub/grub.cfg  | grep --line-number Windows`
    MENU_NUMBER=$(( `echo $WINDOWS_ENTRY | sed -e "s/:.*//"` - 1 ))
    sudo grub-reboot $MENU_NUMBER
    sudo reboot
    
  • 스크립트를 실행 가능하게 만드십시오.

    sudo chmod +x switch-to-windows.sh
    
  • 이제 터미널에서이 스크립트를 실행하여 창으로 재부팅 할 수 있습니다.

    ./switch-to-windows.sh
    
  • 또는 터미널에서 다음 명령을 실행할 수 있습니다

    sudo grub-reboot X  
    
  • 여기서 X는 GRUB 메뉴에서 다시 시작하려는 OS의 메뉴 항목 위치입니다 (첫 번째 항목으로 0으로 시작).

예를 들어 :

  • 이것이 grub 메뉴이고 Windows로 부팅하려면 X 값을 5로 지정해야합니다.
  • sudo grub-reboot 5

    대체 텍스트

  • 런처를 두 번 클릭하면 창으로 재부팅되도록 위 명령에 대한 런처를 작성할 수도 있습니다.

한 번만 작동시킬 수 있습니다. 그런 다음 비밀번호를 입력해야합니다.

7
그런 식으로 그럽을 어떻게 얻었습니까?
맨디

위의 질문을 따르시겠습니까? 당신은 어떻게 그렇게 끈질긴 모습을 얻을 수 있습니까?
Diego

5
솔루션은 정말 훌륭하지만 항목 앞에 탭이있는 14 개의 메뉴 항목이 있으므로 메뉴 항목 번호의 제목이 더 좋습니다. 당신은 #으로 코드를 변경할 수 / 빈 / bash는 WINDOWS_TITLE =! grep -i 'windows' /boot/grub/grub.cfg|cut -d"'" -f2sudo는 애벌레 - 재부팅 "$ WINDOWS_TITLE"sudo를 재부팅
필립 Gachoud

Philippe Gachoud, 답변 해주세요. 작동하는 유일한 사람입니다!
honi

12

그렇게하는 grub 명령이 grub-reboot있습니다.

마지막 저장된 항목으로 시작하도록 grub을 구성한 경우에만 작동하는 것 같습니다. 따라서 아직 수행하지 않은 경우 수정 /etc/default/grub하고 설정하십시오.

GRUB_DEFAULT=saved

그런 다음 grub 구성 파일을 업데이트하십시오.

sudo update-grub

이제부터는 각 부트 그룹에서 마지막으로 사용한 항목을 시작합니다.

다음에 부팅 할 시스템을 미리 설정하려면 다음을 사용하십시오.

sudo grub-reboot ENTRY

여기서 ENTRY메뉴 항목 (0부터 시작하는 번호)과 관련된 숫자 또는 정확한 메뉴 항목 제목 (예 :

sudo grub-reboot "Microsoft Windows XP Professional (on /dev/sda1)"

이 명령은 런처로 쉽게 사용할 수 있습니다

#!/usr/bin/env xdg-open
#
# save as ~/Desktop/reboot-into-windows.desktop
#

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=sh -c 'gksu "grub-reboot 2" && gnome-session-save --shutdown-dialog'
Name=Reboot into Windows
Icon=gnome-panel-launcher

그러나 그것이 시스템 메뉴에 어떻게 통합 될 수 있는지 모르겠습니다.

사용 가능한 메뉴 항목 제목을 얻을 수 있습니다

sed -n '/menuentry/s/.*\(["'\''].*["'\'']\).*/\1/p' /boot/grub/grub.cfg 

설정할 이유가 없으며 GRUB_DEFAULT=saved구성이 엉망이됩니다. grub-reboot는에 쓰는 next_entry=ENTRY/boot/grub/grubenv입니다. 그렇지 않습니다 saved_entry=ENTRY. 그래도 다음 재부팅해도 괜찮습니다 next_entry. grub reads . saved-entry=ENTRYgrubenv에서 와 같이 항목이 저장되지 않으면 다음 부팅이 실패 할 수 있습니다 .
mook765

4

나는 ssh없이 PC에서 로컬로 동일하게하고 싶은 사람들에게 더 좋은 방법을 찾았다 고 생각합니다.

unity launcher를 통해 선택된 특정 시스템으로 재부팅하는 솔루션은 webupd8에 게시되었습니다. http://www.webupd8.org/2011/05/custom-unity-launcher-to-reboot-in.html을 참조 하십시오

나는 이것이 질문에 관한 것이 아니라는 것을 알고 있지만 나중에 비슷한 질문이있는 사람이 도움이 될 수 있습니다.


3

내가 이해하는 한 이것은 정확히 당신이 원하는 것이 아니지만 거의 비슷하다고 생각합니다. 링크 webupdate 기사를 따르십시오 .


3
이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
Marco Ceppi

2

나에게 가장 좋은 것은 grub-reboot명령으로 다음 스크립트를 만드는 것이 었습니다.

#!/bin/bash 
WINDOWS_TITLE=$(grep -i 'windows' /boot/grub/grub.cfg|grep "^[^#;]"|cut -d"'" -f2) 
sudo grub-reboot "$WINDOWS_TITLE" 
echo "Your computer will reboot on ${WINDOWS_TITLE} in 3 seconds, press Ctrl+C if you want to abord it"
sleep 3 && sudo reboot

0

모두의 정보가 도움이되었지만 결국 grub 기본값을 변경 한 다음 한 번의 클릭으로 다시 시작할 수 없었습니다. 2 시간 동안 땜질을 한 후에 나는이 프로그램을 발견했습니다.이 프로그램은 모두 우리가 구축하려고하는 것과 똑같으며 5 분 안에 창으로 재부팅합니다. 감사합니다. 여기 모두가 포기하는 사람들을위한 사기꾼 링크입니다. http://www.webupd8.org/2013/01/unity-reboot-launcher-to-quickly-reboot.html


-1

이것이 100 %가 우분투에서도 작동하는지 확실하지 않지만 한 번 centos 기계 에서이 작업을 수행했습니다.

기본적으로 grub.conf에서 어떤 id #이 다음에 실행되어야하는지 grub에게 알려줘야합니다. ID 번호는

echo `sudo grep ^title /boot/grub/grub.conf | grep -n Windows | cut -f 1 -d:`-1

따라서 제 경우에는 grub.conf의 네 번째 항목에 "Windows"라는 텍스트가 포함되어 있으므로 "4-1"이 출력됩니다. (이를 사용하려는 실제 항목 이름 (또는 부분적으로)으로 바꾸십시오. 그런 다음 다음과 같이 그럽을 제공 할 수 있습니다.

echo "savedefault --stage2=/boot/grub/stage2 --default=4-1 --once" | sudo /sbin/grub

다음에 다시 부팅하면 사용자가 지정한 항목을 자동으로 부팅해야합니다.

이 모든 것을 다음과 같은 스크립트로 만들 수 있습니다.

#!/bin/sh
let NEWBOOT=`sudo grep ^title /boot/grub/grub.conf | grep -n Windows | cut -f 1 -d:`-1
echo Booting $NEWBOOT - `sudo grep ^title.\*Windows /boot/grub/grub.conf`
echo "savedefault --stage2=/boot/grub/stage2 --default=$NEWBOOT --once" | sudo /sbin/grub
sudo reboot

스크립트는 grub.conf의 어떤 항목이 "Windows"텍스트에 해당하는지 자동으로 결정하고 다음 부팅시에 무엇을로드해야하는지 알려주기 위해 grub에이를 공급하고 PC를 재부팅합니다.

GUI의 경우 바탕 화면에 바로 가기 아이콘을 추가하여이를 달성 할 수 있습니다.


1
grub-legacy의 구성 파일은 grub.conf가 아니라 menu.lst입니다. grub2의 경우 grub.cfg이지만 두 번째 명령은 grub-legacy 전용입니다.
psusi

-4

/boot/grub/grub.cfg부팅하려는 항목을 가리 키도록 기본 항목을 편집 하고 변경하면됩니다. 값은 항목의 서수 (첫 번째 항목은 0부터 시작)이거나 원하는 항목의 전체 제목을 따옴표로 묶을 수 있습니다.


2
수정하지 마십시오 . boot.cfg각 수동 또는 자동으로 복원됩니다 update-grub. /etc/default/grub대신 사용자를 수정해야합니다 .
enzotib

1
@enzotib, 변경 사항은 다음 부팅에만 적용되므로 그렇게 할 이유가 없습니다.
psusi

2
해당 파일을 편집 잘못이 시스템을 부팅으로 이어질 수 있음을 잊지
enzotib

1
@enzotib, 실제로는 아닙니다. grub2의 아름다운 점 중 하나는 프롬프트에서 항상 수동으로 복구 할 수 있다는 것입니다. 또한 파일의 다른 부분을 망칠 위험은 의심의 여지가 있으며 기본 줄이 잘못되면 가장 먼저 발생하는 것은 첫 번째 항목입니다.
psusi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.