¿Hay alguna forma de que Grub se reinicie automáticamente en Windows desde Windows?

12

Tengo una configuración de arranque dual:

  1. Ubuntu 16.04 LTS
  2. Ventanas

Actualmente, cuando quiero rebootpasar de Ubuntu a Windows, lo uso grub-rebootcon el número apropiado como argumento. Esto funciona bien

Sin embargo, a veces Windows necesita reiniciarse para que cierto programa pueda instalarse o actualizarse y yo manualmente tengo que seleccionar la entrada correcta del menú de arranque de grub. ¿Hay una forma similar (desde la interfaz de usuario de Windows) para indicarle a grub qué entrada iniciar?

Supongo que el grub-rebootcomando pasa el argumento a un archivo que a su vez es leído por grub upon reboot.

editar (con respecto a mi respuesta seleccionada): actualmente estoy buscando montar la unidad ext4 que contiene / boot y escribir la edición. Esto posiblemente tomará bastante tiempo ya que estoy haciendo esto en mi tiempo libre además de mi trabajo no técnico de 40h / semana. ^^

amon san
fuente
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
terdon
Actualice su pregunta en el futuro con lo que terminó haciendo para que Grub se reinicie automáticamente en Windows. Estoy ansioso por saber qué método funcionó para usted y ver el guión de Windows (si lo hubiera) que escribió. Estoy seguro de que muchas otras personas también están interesadas.
WinEunuuchs2Unix
@ WinEunuuchs2Unix actualmente estoy trabajando en ello. como dijo Oli: las secuencias de comandos en Windows son una PITA real.
amon san
@amonsan He actualizado mi respuesta con la reboot-to-windowsfunción, que es un compromiso sobre el uso de ext2fsd que corrompe los superbloques ext4 .
WinEunuuchs2Unix
@amonsan ¿Tiene la configuración de su sistema ahora para que el reinicio de Windows Update vuelva a Windows automáticamente?
WinEunuuchs2Unix

Respuestas:

8

Puedes replicar lo que grub-reboothace. Es solo un script que finalmente llama:

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

¿Dónde Windowsestá el nombre de su entrada de menú de grub? Puede que no sea eso

Yo corrí eso. Todo lo que hace se inserta next_entry=Windowsen /boot/grub/grubenv. En la línea 2. Entonces, si es solo un archivo, en un sistema de archivos, puede hacer exactamente lo mismo desde Windows . Es un problema de Windows para resolver, pero aquí está la descripción general de alto nivel:

  • Monta el disco donde vive el arranque. Esta es probablemente la parte más difícil porque probablemente sea ext4. Esto podría ayudar, pero no es inconcebible que pueda necesitar que Linux se ejecute con Windows para editarlo.

    Como señala Muru, no tiene por qué ser tan difícil. Puede moverse /boota su propia partición FAT32 . Esto lo hace trivial para montar en Windows.

  • Inserte next_entry=Windows(o lo que sea) en el archivo después del comentario, antes de los hash.

  • Desmontar
  • Reiniciar.

La secuencia de comandos que en Windows está fuera de mi zona de confort y no es realmente lo que hacemos aquí. Pero eso debería ser todo lo que necesitas hacer.

Oli
fuente
1
En este método, como dije en un comentario que ahora se trasladó al chat, es mejor pasar a una /bootpartición separada y formatearlo en FAT32 o NTFS, luego editarlos cómodamente en Windows. No hay nada en /booteso que requiera particularmente características de Unix-y. Encriptar esto usando Powershell debería ser fácil.
Muru
19

La forma más fácil es con Grub

Es engorroso controlar grubdesde Windows. Se requiere una aplicación de terceros para acceder a Ubuntu desde Windows y se requiere algún pirateo. Sin embargo, desde la parte superior de esta publicación: Cómo cambiar el orden en mis distribuciones de arranque dual , puede configurar grubpara reiniciar automáticamente a la última opción del menú. Entonces, cuando inicialmente inicia con Windows, y se despierta a las 2 am para ejecutar actualizaciones, grubvolverá a cargar Windows para que pueda finalizar las actualizaciones con gracia.

Cuando reinicie manualmente y elija Ubuntu de grubtodos sus próximos reinicios, cargue Ubuntu automáticamente. Esta característica funciona igual de bien si tiene errores en el núcleo actual y desea grubreiniciar automáticamente en una versión anterior del núcleo que seleccionó.

Cómo hacer que Grub repita la última selección de arranque

Esto es bastante sencillo. Usando sudopoderes edita /etc/default/gruby cambia lo siguiente:

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

La primera línea que comentará y justo debajo inserta las siguientes dos líneas.

Guarde el archivo y escriba en la terminal:

sudo update-grub

Línea de comando de Ubuntu para reiniciar en Windows

Actualmente usas algo como esto:

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

A partir de esta respuesta modificada de Stack Exchange , puede usar el valor predeterminado de grub para reiniciar en Windows. Copie este código en su ~/.bashrcarchivo:

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
}
  • Guarde el ~/.bashrcarchivo con una nueva reboot-to-windowsfunción.
  • Cierra tu sesión de terminal actual.
  • Abra una nueva sesión de terminal para que los cambios ~/.bashrcse carguen.
  • Puede escribir : ~/.bashrcpara volver a cargarlo en la sesión de terminal existente, pero algunas personas recomiendan no hacerlo.

Para reiniciar en Windows desde la línea de comando use:

reboot-to-windows

Si Windows se reinicia automáticamente cuando no está buscando, se reinicia Windows. Esto permite que las actualizaciones automáticas de Windows se procesen normalmente durante varios ciclos de reinicio que Windows a veces usa.

WinEunuuchs2Unix
fuente
1
Esta pregunta no tiene nada que ver con el orden de arranque.
Jennifer
2
@Jennifer La pregunta es, sin embargo, una instancia del problema XY. Entonces esta respuesta es útil. Además, en realidad se trata del orden de arranque, ya que está pidiendo una forma de cambiar temporalmente el orden de arranque desde una interfaz de usuario de Windows.
wizzwizz4
2

grub-set-defaultdebería hacer lo mismo que grub-reiniciar, pero hacer que la configuración sea permanente. Esto no es exactamente de la interfaz de usuario de Windows, como usted pidió, pero tal vez funcione para usted.

Sebastian Stark
fuente
Esta pregunta no tiene nada que ver con el orden de arranque.
Jennifer
No entiendo lo que quieres decir con ese comentario, ¿puedes explicarlo?
Sebastian Stark
Amon San no está preguntando cómo puedo hacer que grub vuelva a Windows por defecto; ze está preguntando, si Windows ya está arrancado, cómo provocar un reinicio ahora y seleccionar en qué sistema operativo arrancar.
Jennifer
@Jennifer OP no pregunta "cómo reiniciar ahora en Windows". Si es así, OP podría simplemente seleccionar Reiniciar Windows y luego seleccionar Windows en el menú de grub. OP pregunta "Cuando Windows se reinicia automáticamente cuando no estoy allí, ¿cómo puedo asegurarme de que se reinicie nuevamente en Windows, no en la opción predeterminada del menú de grub". Al menos esa es la forma en que veo el problema principal .
WinEunuuchs2Unix
Sí, OP podría seleccionar Reiniciar Windows y luego seleccionar Windows en el menú de grub. Pero OP pregunta específicamente cómo puedo volver a Windows automáticamente, sin tener que seleccionar Windows en el menú de arranque; en otras palabras, ¿cómo hago esto sin mi intervención? Demasiado X Ying!
Jennifer
1

No ha dicho qué versión de Windows o si está en UEFI.

Si está utilizando un arranque UEFI adecuado (y no un arranque heredado), es posible arrancar temporalmente en la entrada de arranque UEFI de Windows. En Linux, esto se puede hacer usando herramientas como efibootmgr. En Windows, yo personalmente uso EasyUEFI . Es gratis para uso personal, GUI, pero no para uso empresarial o CLI. No puedo responder por su seguridad. También parece ser algo lento, pero parece funcionar

En mi propia configuración, que usa Arch Linux (kernel EFI shim, sin GRUB) y Windows 10, así es como se ve, después de seleccionar "Administrar la opción de arranque EFI" en la pantalla de inicio:

Imagen que muestra la opción de arranque de una sola vez

Si está utilizando el arranque UEFI, debería ver algo similar para Windows, más una sola entrada para Ubuntu (que carga GRUB), además de algunas otras opciones específicas del dispositivo. La opción de inicio de una sola vez se puede usar para configurar el inicio en la entrada de inicio UEFI para Windows una vez, y luego volver a GRUB el inicio después de eso. Después de configurar eso, reinicia normalmente.

muru
fuente
1
gracias, pero eso requiere demasiada interacción manual cada vez para mi gusto.
amon san
1
Encogimiento de hombros. En cualquier caso, debe pasar /boota NTFS o FAT32 en lugar de editarlo como ext4. El soporte de escritura para ext4 en Windows es dudoso, de esa manera estás arriesgando demasiado.
muru