GRUB2 muestra el entorno de recuperación de Windows 7 o Windows en lugar de Windows 10

8

Este es un Q&A que he descubierto recientemente, por lo que he publicado la respuesta a continuación.

Después de instalar Windows 10, cada vez que recibo una actualización del kernel o ejecuto update-grub2, siempre se muestra Windows 7o Windows Recovery Environmentno Windows 10. ¿Cómo soluciono esto permanentemente?

Terrance
fuente
Esos cambios ya existen en (mi Mint 19.2) / usr / lib / os-probes / montado / 20microsoft, pero aún devuelve "Windows Vista". Tenga en cuenta que, cuando el sistema de arranque dual era Windows 7, devolvía el valor correcto, por lo que parece que es la fuente de la información que falta.
CDG
@cdg Esto debería preguntarse en Linux y Unix ya que este sitio es solo para sabores oficiales de Ubuntu . Además, debe presentar un informe de error con Mint Development si ya tiene todo esto, ya que es posible que no lo detecten correctamente.
Terrance

Respuestas:

10

Actualización: Acabo de realizar una instalación limpia de Xubuntu 14.04 y las entradas al archivo que se enumeran a continuación ya estaban allí. Parece que el equipo GRUB ahora ha incluido la actualización. Dejaré esto aquí para cualquiera que pueda tropezar con esto sin la actualización en su sistema todavía.


Actualización n. ° 2: Si crea un Ubuntu 14.04 LiveUSB con al menos un archivo persistente de 1GB, esta ubicación de archivo es la misma y el archivo persistente permitirá que los cambios que se realicen permanezcan. Este archivo solo debe modificarse después de iniciar el sistema en la unidad USB durante el Try Ubuntuinicio.


La razón por la que aún se muestra Windows 7o en Windows Recovery Environmentlugar de Windows 10es que el archivo /usr/lib/os-probes/mounted/20microsoftno contiene la etiqueta Windows 10, por lo que durante la os-proberdetección del sistema operativo vuelve a Windows 7o Windows Recovery Environment.

Para corregir esto, debe realizar los siguientes cambios en el siguiente archivo (voy a poner gedit como editor, pero usaré lo que quiera):

sudo gedit /usr/lib/os-probes/mounted/20microsoft

NOTA: ¡Siempre debe hacer una copia de seguridad de un archivo antes de modificarlo!

if item_in_dir -q bootmgr "$2"; then
        # there might be different boot directories in different case as:
        # boot Boot BOOT
        for boot in $(item_in_dir boot "$2"); do
                bcd=$(item_in_dir bcd "$2/$boot")
                if [ -n "$bcd" ]; then
                        if grep -qs "W.i.n.d.o.w.s. .1.0" "$2/$boot/$bcd"; then
                                long="Windows 10 (loader)"
                        elif grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; then
                                long="Windows 8 (loader)"
                        elif grep -qs "W.i.n.d.o.w.s. .7" "$2/$boot/$bcd"; then
                                long="Windows 7 (loader)"

los cambios anteriores están cambiando la línea if grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; thena elif grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; then, y agregando if grep -qs "W.i.n.d.o.w.s. .1.0" "$2/$boot/$bcd"; theny por long="Windows 10 (loader)"encima de esa línea y guardándola.

Una vez guardado, la ejecución os-proberahora se ve así:

terrance@terrance-ubuntu:~$ sudo os-prober
[sudo] password for terrance: 
/dev/sdf1:Windows 10 (loader):Windows:chain

luego, ejecutarlo update-grub2ahora hará las actualizaciones a su /boot/grub/grub.cfgpermanente cada vez que obtenga una actualización del núcleo, por lo que mostrará la versión correcta de Windows ahora (ejemplo a continuación):

terrance@terrance-ubuntu:~$ sudo update-grub2
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.19.0-26-generic
Found initrd image: /boot/initrd.img-3.19.0-26-generic
Found linux image: /boot/vmlinuz-3.13.0-58-generic
Found initrd image: /boot/initrd.img-3.13.0-58-generic
Found linux image: /boot/vmlinuz-3.13.0-57-generic
Found initrd image: /boot/initrd.img-3.13.0-57-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 10 (loader) on /dev/sdf1
done

¡Espero que esto ayude!

Terrance
fuente
44
¿Se ha publicado esto en sentido ascendente (como error / corrección), para los mantenedores de Grub2?
david6
@ david6 No tengo idea si lo ha sido. Anoche hice el descubrimiento mientras intentaba aprender más sobre GRUB2 y cómo determina qué sistema operativo encuentra.
Terrance
Los scripts '20microsoft' se ven desordenados y pueden necesitar otras mejoras.
david6