Bagaimana cara me-reboot ke Windows dari Ubuntu?

35

Saya mencari cara untuk reboot ke Windows dari Ubuntu pada sistem dual boot 10.10 / Vista. Kasus penggunaan khusus adalah bahwa saya ingin dapat ssh ke instance Ubuntu saya yang sedang berjalan dan mengeluarkan perintah yang akan memulai reboot langsung ke Windows.

Saya menemukan posting blog yang menjanjikan , tetapi skrip yang disarankannya tidak berfungsi:

#!/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 tidak banyak membantu, tetapi tampaknya mengarahkan saya ke arah yang benar:

atur entri boot default untuk GRUB, hanya untuk boot berikutnya

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

Ini mengembalikan nilai yang diharapkan, tetapi saat reboot entri menu pertama masih disorot. Adakah ide mengapa ini tidak berhasil atau saran untuk solusi lain?

andrewsomething
sumber
Jika Anda menyalin baris boot windows grub ke bagian atas daftar di menu grub maka pada setiap windows boot akan menjadi beban default .. jika Anda berada di ubuntu dan ssh ke dalamnya lalu. sudo reboot nowharus me-reboot mesin ke item pertama dalam daftar grub.
karthick87
Tentu, tapi saya jarang boot ke partisi Windows itu. Saya tidak ingin menjadikannya entri default.
andrewsomething

Jawaban:

43
  • Anda harus mengedit grub Anda terlebih dahulu.

    sudo gedit /etc/default/grub
    
  • Cari baris GRUB_DEFAULT = 0 dan ubah menjadi GRUB_DEFAULT = disimpan teks alternatif

  • Perbarui grub Anda menggunakan perintah berikut.

    sudo update-grub  
    
  • Sekarang buat file skrip,

    sudo gedit switch-to-windows.sh
    
  • Kemudian tambahkan baris-baris ini.

    #!/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
    
  • Jadikan skrip dapat dieksekusi.

    sudo chmod +x switch-to-windows.sh
    
  • Dan sekarang Anda dapat menjalankan skrip ini dari terminal untuk reboot ke windows.

    ./switch-to-windows.sh
    
  • Atau Anda dapat menjalankan perintah berikut di terminal Anda

    sudo grub-reboot X  
    
  • Di mana X adalah posisi menu masuk dari OS yang ingin Anda restart dari menu GRUB. (Dimulai dengan 0 sebagai entri pertama)

Sebagai contoh:

  • Jika ini adalah menu grub Anda dan jika Anda ingin boot ke windows Anda harus memberikan nilai X sebagai 5.
  • sudo grub-reboot 5

    teks alternatif

  • Anda juga dapat membuat peluncur untuk perintah di atas, sehingga mengklik dua kali peluncur akan reboot ke windows.
karthick87
sumber
Saya bisa membuatnya bekerja sekali. Setelah itu Anda harus memasukkan kata sandi.
7
Bagaimana Anda membuat grub terlihat seperti itu?
Mandy
tindak lanjuti pertanyaan di atas? bagaimana kamu bisa membuat grub terlihat begitu perty?
Diego
5
Solusi sangat bagus, tetapi karena saya memiliki 14 entri menu dengan tab sebelum entri, dengan judul insthead nomor entri menu bekerja lebih baik. Jadi Anda dapat mengubah kode Anda dengan #! / Bin / bash WINDOWS_TITLE = grep -i 'windows' /boot/grub/grub.cfg|cut -d"'" -f2sudo grub-reboot "$ WINDOWS_TITLE" sudo reboot
Philippe Gachoud
Philippe Gachoud, tolong jadikan jawaban Anda! itu satu-satunya yang berfungsi!
honi
12

Ada perintah grub hanya untuk melakukannya, itu grub-reboot .

Tampaknya hanya berfungsi ketika Anda telah mengkonfigurasi grub untuk memulai dengan entri yang disimpan terakhir. Jadi, jika Anda belum melakukannya, modifikasi /etc/default/grubdan atur

GRUB_DEFAULT=saved

kemudian perbarui file konfigurasi grub:

sudo update-grub

Mulai sekarang, pada setiap boot grub akan memulai entri yang terakhir digunakan.

Sekarang, jika Anda ingin mengatur terlebih dahulu apa yang seharusnya menjadi sistem untuk boot di lain waktu, gunakan

sudo grub-reboot ENTRY

di mana ENTRYbisa menjadi angka relatif terhadap entri menu (bernomor mulai dari 0), atau judul entri menu yang tepat , misalnya

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

Perintah ini dapat dengan mudah dibuat tersedia sebagai peluncur

#!/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

tapi saya tidak tahu bagaimana itu bisa diintegrasikan ke dalam menu sistem.

Anda dapat memperoleh judul entri menu yang tersedia dengan

sed -n '/menuentry/s/.*\(["'\''].*["'\'']\).*/\1/p' /boot/grub/grub.cfg 
enzotib
sumber
Tidak ada alasan untuk mengatur GRUB_DEFAULT=saved, itu akan mengacaukan konfigurasi Anda. Apa yang dilakukan grub-reboot adalah menulisnext_entry=ENTRY untuk /boot/grub/grubenv. Bukan itu saved_entry=ENTRY. Reboot berikutnya akan baik-baik saja meskipun, grub berbunyi next_entry. Boot berikut mungkin gagal jika tidak ada entri yang disimpan seperti saved-entry=ENTRYdi grubenv.
mook765
4

Saya pikir saya telah menemukan cara yang lebih baik bagi orang-orang yang ingin melakukan hal yang sama secara lokal di pc mereka tanpa ssh.

Solusi untuk mem-boot ulang ke sistem tertentu yang dipilih melalui peluncur persatuan baru saja diposting di webupd8. Lihat http://www.webupd8.org/2011/05/custom-unity-launcher-to-reboot-in.html

Saya tahu ini bukan pertanyaan yang sebenarnya, tetapi kalau-kalau ada orang yang memiliki pertanyaan serupa nanti mungkin bisa membantu.

K. Hendrik
sumber
3

Sejauh yang saya mengerti ini tidak akan persis seperti yang Anda inginkan tetapi saya kira cukup dekat. Ikuti saja tautannya artikel webupdate .

dago
sumber
3
Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Marco Ceppi
2

Jadi bagi saya yang terbaik adalah membuat skrip berikut dengan grub-rebootperintah

#!/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
Philippe Gachoud
sumber
0

Info semua orang sangat membantu bagi saya, tetapi pada akhirnya saya masih belum bisa menyelesaikan mengubah default grub dan kemudian memulai kembali dalam satu klik. Setelah bermain-main selama 2 jam saya menemukan program ini yang merupakan hal yang persis sama yang kita semua coba bangun dan dalam 5 menit saya me-reboot ke windows. Terima kasih semuanya, inilah tautan curang untuk mereka yang juga menyerah. http://www.webupd8.org/2013/01/unity-reboot-launcher-to-quickly-reboot.html

Mickey Brown
sumber
-1

Saya tidak yakin apakah ini akan 100% juga berfungsi di ubuntu, tapi saya pernah membuat ini bekerja pada mesin centos

pada dasarnya Anda harus memberi tahu grub id mana dari # grub.conf yang harus dijalankan berikutnya. Id # dapat ditemukan oleh

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

jadi dalam kasus saya ini akan misalnya keluaran "4-1" sebagai entri keempat di grub.conf saya berisi teks "Windows". (Ganti ini dengan nama entri yang sebenarnya (juga sebagian) yang ingin Anda gunakan. Kemudian Anda dapat memberi makan ini ke grub seperti:

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

dan pada reboot berikutnya seharusnya secara otomatis mem-boot entri yang telah Anda suruh.

ini semua dapat disatukan dalam skrip seperti berikut:

#!/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

skrip akan secara otomatis menentukan entri mana dari grub.conf Anda yang sesuai dengan teks "Windows", akan mengumpankan ini ke grub untuk memberi tahu apa yang harus dimuat pada boot berikutnya dan akan me-reboot pc Anda.

untuk gui misalnya Anda dapat menambahkan ikon cara pintas ke desktop Anda untuk mencapai ini.

Roland Kohn
sumber
1
File konfigurasi untuk grub-legacy adalah menu.lst, bukan grub.conf. Untuk grub2, itu adalah grub.cfg, tetapi perintah kedua Anda hanya untuk grub-legacy.
psusi
-4

Cukup edit /boot/grub/grub.cfgdan ubah entri default untuk menunjuk ke entri yang ingin Anda boot. Nilai dapat berupa nomor urut entri (mulai dari nol untuk yang pertama) atau Anda dapat menempatkan judul lengkap entri yang Anda inginkan dalam tanda kutip.

psusi
sumber
2
Jangan saran untuk memodifikasi boot.cfg, itu akan dikembalikan pada setiap manual atau otomatis update-grub. Pengguna harus memodifikasi /etc/default/grub.
enzotib
1
@enzotib, karena perubahan hanya ditujukan untuk boot berikutnya, tidak ada alasan untuk melakukannya dengan cara itu.
psusi
2
Anda lupa bahwa pengeditan yang salah pada file itu dapat menyebabkan sistem yang tidak dapat di-boot
enzotib
1
@enzotib, tidak juga; salah satu hal indah tentang grub2 adalah Anda selalu dapat memulihkan secara manual saat diminta. Juga bahaya mengacaukan bagian lain dari file adalah argumen yang tidak masuk akal, dan jika Anda mendapatkan garis default yang salah, yang terburuk yang terjadi adalah bahwa itu default ke entri pertama.
psusi