C'è un modo per grub di riavviarsi automaticamente in Windows da Windows?


11

Ho una configurazione a doppio avvio:

  1. Ubuntu 16.04 LTS
  2. finestre

Attualmente, quando desidero rebootpassare da Ubuntu a Windows, utilizzo grub-rebootcome argomento il numero appropriato. Funziona bene

Tuttavia a volte Windows necessita di un riavvio in modo che un determinato programma possa essere installato o aggiornato e devo selezionare manualmente la voce di menu di avvio di grub corretta. Esiste un modo simile (dall'interfaccia utente di Windows) per dire a grub quale voce avviare?

Suppongo che il grub-rebootcomando passi l'argomento a un file che a sua volta viene letto da grub reboot.

modifica (riguardante la mia risposta selezionata): Sto attualmente cercando di montare l'unità ext4 che contiene / boot e creare script per la modifica. questo richiederà probabilmente un po 'di tempo dal momento che lo sto facendo nel mio tempo libero accanto al mio lavoro non tecnologico di 40 ore settimanali. ^^


I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
terdon,

Ti preghiamo di aggiornare la tua domanda in futuro con quello che hai finito per riavviare automaticamente grub in Windows. Sono curioso di sapere quale metodo ha funzionato per te e di vedere la sceneggiatura di Window (se presente) che hai scritto. Sono sicuro che anche molte altre persone sono interessate.
WinEunuuchs2Unix

@ WinEunuuchs2Unix al momento ci sto lavorando. come ha detto Oli, la sceneggiatura in Windows è una PITA reale.
amon san

@amonsan Ho aggiornato la mia risposta con la reboot-to-windowsfunzione che è un compromesso sull'uso di ext2fsd che corrompe i superblocchi ext4 .
WinEunuuchs2Unix

@amonsan Hai configurato il tuo sistema ora per riavviare Windows Update per tornare automaticamente a Windows?
WinEunuuchs2Unix

Risposte:


8

Puoi replicare cosa grub-rebootfa. È solo uno script che alla fine chiama:

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

Dov'è Windowsil nome della voce del menu di grub. Potrebbe non essere quello

L'ho gestito io. Tutto lo fa inserto next_entry=Windowsin /boot/grub/grubenv. On line 2. Quindi se è solo un file, su un filesystem, puoi fare esattamente la stessa cosa da Windows . È un problema di Windows da risolvere, ma ecco la panoramica di alto livello:

  • Montare il disco su cui vive l'avvio. Questo è probabilmente il bit più difficile perché probabilmente è ext4. Questo potrebbe essere d'aiuto, ma non è inopportuno che tu possa aver bisogno di Linux in esecuzione con Windows per modificarlo.

    Come sottolinea Muru, non deve essere così difficile. È possibile passare /bootalla propria partizione FAT32 . Questo rende banale il montaggio su Windows.

  • Inserisci next_entry=Windows(o qualsiasi altra cosa) nel file dopo il commento, prima degli hash.

  • Smonta.
  • Reboot.

Lo scripting che in Windows è ben al di fuori della mia zona di comfort e non proprio quello che facciamo qui. Ma questo dovrebbe essere tutto ciò che devi fare.


1
In questo metodo, come ho detto in un commento ora spostato in chat, è meglio passare a una /bootpartizione separata e formattarlo su FAT32 o NTFS, quindi modificarli comodamente su Windows. Non c'è nulla /bootche richieda in particolare le funzionalità Unix-y. Lo scripting con Powershell dovrebbe quindi essere facile.
Muru,

19

Il modo più semplice è con Grub

È ingombrante il controllo grubda Windows. È necessaria un'applicazione di terze parti per accedere a Ubuntu da Windows e alcuni hacking. Tuttavia, nella parte superiore di questo post: Come modificare l'ordine sulle mie distro dual boot , è possibile impostare grubper riavviare automaticamente l'ultima opzione di menu. Quindi, quando si avvia inizialmente con Windows e si sveglia alle 2 del mattino per eseguire gli aggiornamenti, grubricaricherà Windows in modo da poter terminare con grazia gli aggiornamenti.

Quando grubriavvii manualmente e scegli Ubuntu da tutti i tuoi successivi riavvii, carica automaticamente Ubuntu. Questa funzione funziona ugualmente bene se si hanno bug nel kernel corrente e si desidera grubriavviare automaticamente una versione del kernel precedente selezionata.

Come ottenere Grub per ripetere l'ultima selezione di avvio

Questo è abbastanza semplice. Utilizzando i sudopoteri, modifica /etc/default/grube modifica quanto segue:

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

La prima riga che commenterai e proprio sotto che inserisce le due righe successive.

Salvare il file e digitare nel terminale:

sudo update-grub

Riga di comando di Ubuntu per riavviare in Windows

Attualmente usi qualcosa del genere:

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

Da questa risposta modificata di Stack Exchange è possibile utilizzare il default di grub per riavviare in Windows. Copia questo codice nel tuo ~/.bashrcfile:

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
}
  • Salva il ~/.bashrcfile con una nuova reboot-to-windowsfunzione.
  • Chiudi la sessione terminale corrente.
  • Aprire una nuova sessione terminale per la modifica ~/.bashrcda caricare.
  • È possibile digitare : ~/.bashrcper ricaricarlo nella sessione terminale esistente, ma alcune persone sconsigliano di farlo.

Per riavviare Windows dalla riga di comando, utilizzare:

reboot-to-windows

Se Windows si riavvia automaticamente quando non stai guardando, Windows viene riavviato. Ciò consente agli aggiornamenti automatici di Windows di essere elaborati normalmente su cicli di riavvio multiplo che a volte utilizza Windows.


1
Questa domanda non ha nulla a che fare con l'ordine di avvio.
Jennifer,

2
@Jennifer La domanda è, tuttavia, un'istanza del problema XY. Quindi questa risposta è utile. Inoltre, si tratta in realtà di un ordine di avvio in quanto richiede un modo per modificare temporaneamente l'ordine di avvio da un'interfaccia utente di Windows.
wizzwizz4,

2

grub-set-defaultdovrebbe fare lo stesso di grub-reboot, ma rendere l'impostazione permanente. Questo non è esattamente dall'interfaccia utente di Windows, come hai chiesto, ma forse funziona per te.


Questa domanda non ha nulla a che fare con l'ordine di avvio.
Jennifer,

Non capisco bene cosa intendi con quel commento, puoi spiegarmi?
Sebastian Stark,

Amon San non mi sta chiedendo come posso ottenere grub come predefinito su windows - ze sta chiedendo, se windows è già stato avviato, come causare un riavvio ora e selezionare da quale sistema operativo avviare.
Jennifer

@Jennifer OP non chiede "come riavviare ora in Windows". In tal caso, OP potrebbe semplicemente selezionare il riavvio di Windows e quindi selezionare Windows dal menu di grub. OP chiede "Quando Windows si riavvia automaticamente quando non ci sono, come posso assicurarmi che si riavvii in Windows, non nell'opzione di menu predefinita di grub". Almeno questo è il modo in cui vedo il problema principale .
WinEunuuchs2Unix

Sì, OP potrebbe semplicemente selezionare Riavvio di Windows e quindi selezionare Windows dal menu di grub. Ma OP sta chiedendo specificamente come posso tornare automaticamente a Windows, senza dover selezionare Windows nel menu di avvio - in altre parole, come posso farlo senza il mio intervento? Troppo X Ying!
Jennifer,

1

Non hai detto quale versione di Windows o se sei su UEFI.

Se si utilizza un avvio UEFI corretto (e non un avvio legacy), è possibile avviare temporaneamente la voce di avvio UEFI di Windows. Su Linux, questo può essere fatto usando strumenti come efibootmgr. Su Windows, utilizzo personalmente EasyUEFI . È gratuito per uso personale e con interfaccia grafica, ma non per uso aziendale o CLI. Non posso garantire per la sua sicurezza. Sembra anche un po 'lento, ma sembra funzionare

Nella mia configurazione, che utilizza Arch Linux (kernel EFI shim, senza GRUB) e Windows 10, ecco come appare, dopo aver selezionato "Gestisci opzione di avvio EFI" nella schermata iniziale:

Immagine che mostra l'opzione di avvio singolo

Se stai usando l'avvio UEFI, dovresti vedere qualcosa di simile per Windows, oltre a una singola voce per Ubuntu (che carica GRUB), oltre ad alcune altre opzioni specifiche del dispositivo. L'opzione di avvio singolo può quindi essere utilizzata per impostare l'avvio una volta alla voce di avvio UEFI per Windows, quindi riavviare su GRUB. Dopo averlo impostato, si riavvia normalmente.


1
grazie, ma ciò richiede ogni volta troppe interazioni manuali per i miei gusti.
amon san

1
Scrollata di spalle. In ogni caso dovresti passare /boota NTFS o FAT32 invece di modificarlo come ext4. Scrivere il supporto per ext4 in Windows è incerto, stai rischiando troppo in quel modo.
Muru,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.