Apakah ada cara bagi grub untuk secara otomatis reboot ke Windows dari Windows?

11

Saya memiliki pengaturan dual boot:

  1. Ubuntu 16.04 LTS
  2. Windows

Saat ini ketika saya ingin rebootdari Ubuntu ke Windows saya gunakan grub-rebootdengan nomor yang sesuai sebagai argumen. Ini bekerja dengan baik.

Namun terkadang Windows membutuhkan reboot agar program tertentu dapat menginstal atau memperbarui dan secara manual saya harus memilih entri menu boot grub yang tepat. Apakah ada cara yang serupa (dari Windows UI) untuk memberi tahu grub entri mana yang akan di-boot?

Saya kira grub-rebootperintah meneruskan argumen ke file yang pada gilirannya dibaca oleh grub atas reboot.

edit (mengenai jawaban yang saya pilih): Saat ini saya sedang mencari cara memasang drive ext4 yang berisi / boot dan membuat skrip hasil edit. ini mungkin akan memakan waktu cukup lama karena saya melakukan ini di waktu luang saya di samping pekerjaan non-tech 40 jam / minggu. ^^

amon san
sumber
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
terdon
Harap perbarui pertanyaan Anda di masa depan dengan apa yang akhirnya Anda lakukan agar grub secara otomatis reboot ke Windows. Saya ingin tahu metode apa yang berhasil untuk Anda dan untuk melihat skrip Window (jika ada) yang Anda tulis. Saya yakin banyak orang lain juga tertarik.
WinEunuuchs2Unix
@ WinEunuuchs2Unix saat ini saya sedang mengerjakannya. seperti kata Oli - scripting di windows adalah PITA kerajaan.
amon san
@amonsan Saya telah memperbarui jawaban saya dengan reboot-to-windowsfungsi yang merupakan kompromi atas penggunaan ext2fsd yang merusak ext4 superblok .
WinEunuuchs2Unix
@amonsan Apakah Anda memiliki pengaturan sistem sekarang untuk Pembaruan Windows yang me-reboot untuk kembali ke Windows secara otomatis?
WinEunuuchs2Unix

Jawaban:

8

Anda dapat meniru apa yang grub-rebootdilakukan. Itu hanya sebuah skrip yang akhirnya memanggil:

grub-editenv /boot/grub/grubenv set next_entry="Windows"

Di mana Windowsnama entri menu grub Anda. Mungkin bukan itu

Saya berlari itu. Semua itu dimasukkan next_entry=Windowske dalamnya /boot/grub/grubenv. Pada baris 2. Jadi jika itu hanya sebuah file, pada sistem file, Anda dapat melakukan hal yang persis sama dari dalam Windows . Ini masalah Windows yang harus dipecahkan, tapi inilah ikhtisar tingkat tinggi:

  • Pasang disk tempat boot hidup. Ini mungkin yang paling sulit karena ini mungkin ext4. Ini mungkin membantu tetapi itu tidak dapat disangkal bahwa Anda mungkin perlu Linux berjalan dengan Windows untuk mengeditnya.

    Seperti yang ditunjukkan muru, tidak perlu sesulit ini. Anda dapat pindah /bootke partisi FAT32 sendiri . Ini membuatnya mudah untuk dipasang di Windows.

  • Masukkan next_entry=Windows(atau apa pun) ke dalam file setelah komentar, sebelum hash.

  • Lepas.
  • Mulai ulang.

Scripting yang di Windows jauh di luar zona nyaman saya dan tidak benar-benar apa yang kita lakukan di sini. Tetapi hanya itu yang harus Anda lakukan.

Oli
sumber
1
Dalam metode ini, seperti yang saya katakan di komentar sekarang pindah ke obrolan, yang terbaik adalah pindah ke /bootpartisi yang terpisah , dan memformatnya ke FAT32 atau NTFS, kemudian mengeditnya dengan nyaman di Windows. Tidak ada /bootyang khusus membutuhkan fitur Unix-y. Menulis skrip ini menggunakan Powershell seharusnya mudah.
muru
19

Cara termudah adalah dengan Grub

Ini rumit mengendalikan grubdari Windows. Aplikasi pihak ketiga untuk mengakses Ubuntu dari Windows dan diperlukan beberapa peretasan. Namun dari bagian atas posting ini: Bagaimana mengubah urutan pada distro boot ganda saya , Anda dapat mengatur grubuntuk reboot secara otomatis ke opsi menu terakhir. Jadi ketika Anda pertama kali boot dengan windows, dan bangun jam 2 pagi untuk menjalankan pembaruan, grubakan memuat ulang Windows sehingga dapat menyelesaikan pembaruan dengan anggun.

Ketika Anda me-reboot secara manual dan memilih Ubuntu dari grubsemua reboot Anda selanjutnya secara otomatis memuat Ubuntu. Fitur ini berfungsi sama baiknya jika Anda memiliki bug di kernel saat ini dan ingin grubmem-boot ulang secara otomatis ke versi kernel lama yang Anda pilih.

Cara membuat Grub mengulangi pilihan boot terakhir

Ini cukup lurus ke depan. Menggunakan sudokekuatan, edit /etc/default/grubdan ubah yang berikut:

#GRUB_DEFAULT=0 # Rather than option #1, we'll always default to last boot choice.
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

Baris pertama yang akan Anda komentari dan tepat di bawahnya, masukkan dua baris berikutnya.

Simpan file dan ketik di terminal:

sudo update-grub

Baris perintah Ubuntu untuk reboot ke Windows

Saat ini Anda menggunakan sesuatu seperti ini:

sudo grub-reboot x # Where x is Windows zero-based grub menu number
sudo reboot now

Dari jawaban Stack Exchange yang dimodifikasi ini Anda dapat menggunakan grub default untuk mem-boot ulang ke Windows. Salin kode ini ke ~/.bashrcfile Anda :

function reboot-to-windows {
    WINDOWS_TITLE=`grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2`
    sudo grub-set-default "$WINDOWS_TITLE"
    sudo reboot
}
  • Simpan ~/.bashrcfile dengan reboot-to-windowsfungsi baru .
  • Tutup sesi terminal Anda saat ini.
  • Buka sesi terminal baru untuk diubah ~/.bashrcagar dimuat.
  • Anda dapat mengetik : ~/.bashrcuntuk memuatnya kembali ke sesi terminal yang sudah ada, tetapi beberapa orang merekomendasikan untuk tidak melakukannya.

Untuk mem-boot ulang ke Windows dari baris perintah, gunakan:

reboot-to-windows

Jika Windows secara otomatis restart ketika Anda tidak melihat, Windows reboot. Hal ini memungkinkan pembaruan otomatis Windows untuk diproses secara normal melalui siklus multi-reboot yang kadang-kadang digunakan oleh Windows.

WinEunuuchs2Unix
sumber
1
Pertanyaan ini tidak ada hubungannya dengan urutan boot.
Jennifer
2
@ Jennifer Pertanyaannya adalah, bagaimanapun, adalah contoh dari masalah XY. Jadi jawaban ini bermanfaat. Plus, ini sebenarnya tentang urutan boot karena meminta cara untuk sementara mengubah urutan boot dari Windows UI.
wizzwizz4
2

grub-set-defaultharus melakukan hal yang sama dengan grub-reboot, tetapi buat pengaturan ini permanen. Ini bukan dari Windows UI, seperti yang Anda tanyakan, tetapi mungkin ini bekerja untuk Anda.

Sebastian Stark
sumber
Pertanyaan ini tidak ada hubungannya dengan urutan boot.
Jennifer
Saya tidak mengerti maksud Anda dengan komentar itu, dapatkah Anda menjelaskan?
Sebastian Stark
Amon San tidak bertanya bagaimana cara mendapatkan grub ke default ke windows - ze bertanya, apakah windows sudah di-boot, bagaimana menyebabkan reboot sekarang, dan pilih OS mana untuk boot.
Jennifer
@Jennifer OP tidak menanyakan "bagaimana cara mem-boot ulang sekarang ke Windows". Jika demikian OP cukup memilih Windows Restart dan kemudian pilih Windows di menu grub. OP bertanya "Ketika windows secara otomatis reboot ketika saya tidak ada, bagaimana saya bisa memastikan itu reboot kembali ke Windows, bukan opsi menu grub default". Setidaknya begitulah cara saya melihat masalah utama .
WinEunuuchs2Unix
Ya, OP hanya bisa memilih Windows Restart dan kemudian pilih Windows di menu grub. Tetapi OP secara khusus menanyakan bagaimana cara saya kembali ke Windows secara otomatis, tanpa harus memilih Windows di menu boot - dengan kata lain, bagaimana melakukan ini tanpa campur tangan saya? Terlalu banyak X Ying!
Jennifer
1

Anda belum mengatakan versi Windows mana atau apakah Anda menggunakan UEFI.

Jika Anda menggunakan boot UEFI yang tepat (dan bukan boot legacy), dimungkinkan untuk boot sementara ke entri booting UEFI Windows. Di Linux, ini bisa dilakukan menggunakan alat seperti efibootmgr. Di Windows, saya pribadi menggunakan EasyUEFI . Ini gratis untuk penggunaan GUI pribadi, tetapi tidak untuk perusahaan atau CLI. Saya tidak bisa menjamin keamanannya. Tampaknya juga agak lambat, tetapi tampaknya berhasil

Dalam pengaturan saya sendiri, yang menggunakan Arch Linux (kernel EFI shim, tanpa GRUB), dan Windows 10, seperti inilah tampilannya, setelah memilih "Manage EFI Boot Option" di layar mulai:

Gambar menampilkan opsi booting satu kali

Jika Anda menggunakan UEFI boot, Anda akan melihat sesuatu yang serupa untuk Windows, plus satu entri untuk Ubuntu (yang memuat GRUB), plus beberapa opsi khusus perangkat lainnya. Opsi booting satu kali kemudian dapat digunakan untuk mengatur boot ke entri boot UEFI untuk Windows sekali, dan kemudian kembali ke GRUB boot setelah itu. Setelah mengatur itu, Anda me-restart seperti biasa.

muru
sumber
1
terima kasih, tetapi itu membutuhkan terlalu banyak interaksi manual setiap kali untuk seleraku.
amon san
1
Mengangkat bahu. Bagaimanapun Anda harus pindah /bootke NTFS atau FAT32 alih-alih mengeditnya sebagai ext4. Menulis dukungan untuk ext4 di Windows adalah rapuh, Anda berisiko terlalu banyak.
muru