GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿Windows de arranque dual en el segundo disco duro, sistema Uefi/gpt?

Me gustaría instalar Linux, pero no quiero arriesgarme a dañar mi instalación actual de Windows, ya que he escuchado muchas historias de terror. Afortunadamente, tengo un disco duro adicional. ¿Puedo instalar Linux en eso y luego iniciar Windows de forma dual sin tener que modificar la unidad de Windows?

Además, tengo un "BIOS" UEFI y la unidad de Windows está en formato GPT.

Respuesta aceptada:

Voy a usar el término BIOS a continuación cuando se hace referencia a conceptos que son iguales tanto para los sistemas UEFI más nuevos como para los sistemas BIOS tradicionales, ya que si bien esta es una pregunta orientada a UEFI, hablar sobre el "BIOS" se burla mejor con, por ejemplo, la documentación de GRUB y "BIOS/UEFI" es demasiado torpe. GRUB (en realidad, GRUB 2; a menudo se usa de manera ambigua) es el cargador de arranque instalado por Linux y usado para el arranque dual de Windows.

Primero, unas palabras sobre el orden de las unidades y el orden de arranque. Orden de conducción se refiere al orden en que las unidades se conectan físicamente al bus en la placa base (primera unidad, segunda unidad, etc.); esta información es reportada por el BIOS. Orden de arranque se refiere a la secuencia en la que el BIOS busca una unidad de arranque. Esto no es necesariamente el mismo que el orden de las unidades y, por lo general, se puede configurar a través de la pantalla de configuración del BIOS. El orden de las unidades no debe ser configurable ni afectado por el orden de arranque, ya que eso sería algo muy hostil para el sistema operativo (pero en teoría, un BIOS obtuso podría hacerlo). Además, si desconecta la primera unidad, es probable que la segunda unidad se convierta en la primera. Vamos a utilizar UUID en la configuración del gestor de arranque para tratar de evitar problemas como este (los instaladores de Linux contemporáneos también hacen esto).

La forma ideal de obtener lo que desea es instalar Linux en el segundo disco en términos de orden de disco y luego selecciónelo primero en términos de orden de arranque utilizando la configuración UEFI. Una ventaja adicional de esto es que luego puede usar el orden de arranque BIOS/UEFI para seleccionar la unidad de Windows y omitir grub si lo desea. La razón por la que recomiendo Linux en la segunda unidad es porque GRUB debe "cargar en cadena" el cargador de arranque nativo de Windows, y el cargador de arranque de Windows siempre asume que está en la primera unidad. Sin embargo, hay una manera de engañarlo, si lo prefiere o lo necesita al revés.

Con suerte, puede seguir adelante y usar un CD en vivo o lo que sea y hacer esto usando el instalador de GUI. Sin embargo, no todos los instaladores se crean de la misma manera, y si esto se estropea y se quedan con problemas como:

  1. Instalé Linux en el primero disco y ahora no puedo iniciar Windows, o

  2. Instalé Linux en el segundo disco, pero usando el primer disco para el cargador de arranque, ¡y ahora no puedo arrancar nada!

Entonces sigue leyendo. En el segundo caso, primero debe intentar reinstalar Linux en el segundo disco, y esta vez asegúrese de que es ahí donde va el gestor de arranque. La forma más fácil y segura de hacerlo sería eliminar temporalmente la unidad de Windows de la máquina, ya que vamos a suponer que no hay nada adicional instalado, independientemente del orden de la unidad.

Una vez que haya instalado Linux y se haya asegurado de que puede arrancar, vuelva a conectar la unidad de Windows (si la quitó, y recuerde, idealmente la queremos primero en términos de orden de unidades, y la segunda unidad primero en términos de arranque). pedido) y continúe con el siguiente paso.

Acceso a la configuración de GRUB

Inicie Linux, abra una terminal y

> su root

Se le pedirá la contraseña de root. De ahora en adelante, usted es el superusuario en esa terminal (para verificar, intente whoami ), así que no hagas nada estúpido. Sin embargo, sigue siendo un usuario normal en la GUI y, dado que editaremos un archivo de texto, si prefiere un editor de GUI, tendremos que cambiar temporalmente la propiedad de ese archivo y el directorio en el que se encuentra:

> chown -R yourusername /etc/grub.d/

Si obtiene "Operación no permitida", no su adecuadamente. Si obtiene chown: invalid user: ‘yourusername’ , tomaste el último comando demasiado literalmente.

Ahora puede navegar a /etc/grub.d en su navegador de archivos y busque un archivo llamado 40_custom . Debería verse así:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

Si no puede encontrarlo, en la terminal raíz ingrese los siguientes comandos:

> touch /etc/grub.d/40_custom
> chmod 755 /etc/grub.d/40_custom
> chown yourusername /etc/grub.d/40_custom

Ábralo en su editor de texto, copie y pegue la parte anterior (comenzando con #!/bin/sh ) y al siguiente paso.

Relacionado:Bash:Shift+teclas de flecha hacen A,B,C,D?

Agregar una opción de arranque de Windows

Copie y pegue esto con el editor de texto al final del archivo:

menuentry "MS Windows" {
        insmod part_gpt
        insmod search_fs_uuid
        insmod ntfs
        insmod chain
}

Esta es la lista de módulos que GRUB necesitará para hacer las cosas (ntfs puede ser superfluo, pero tampoco debería doler nada). Tenga en cuenta que esta es una entrada incompleta — necesitamos agregar algunos comandos cruciales.

Cómo encontrar el cargador de arranque de segunda etapa de Windows

Su instalación de Linux probablemente haya montado automáticamente su partición de Windows y debería poder encontrarla en un explorador de archivos. Si no es así, encuentre una manera de hacerlo (si no está seguro de cómo, haga una pregunta en este sitio). Una vez hecho esto, necesitamos conocer el punto de montaje; esto debería ser obvio en el explorador de archivos, p. /media/ASDF23SF23/ . Para ahorrar algo de escritura, vamos a poner eso en una variable de shell:

win="/whatever/the/path/is"

No debe haber espacios a ambos lados del signo igual. No incluya cualquier elemento de una ruta de Windows aquí. Esto debería apuntar a la carpeta de nivel superior en la partición de Windows. Ahora:

cd $win
find . -name bootmgfw.efi

Esto podría tomar algunos minutos si tiene una partición grande, pero lo más probable es que lo primero que escupa sea lo que estamos buscando; puede haber más referencias en el sistema de archivos que contengan cadenas largas de chismes, no lo son. Utilice Ctrl-c para detener la búsqueda una vez que vea algo corto y simple como ./Windows/Boot/EFI/bootmgfw.efi o ./EFI/HP/boot/bootmgfw.efi .

Excepto por el . al principio, recuerda este camino para más adelante; puede copiarlo en su editor de texto en una línea en blanco en la parte inferior, ya que lo usaremos allí. Si desea volver a su directorio anterior ahora, use cd - , aunque no importa dónde se encuentre en el caparazón de ahora en adelante.

Establecer los parámetros correctos

GRUB debe poder encontrar y transferir el proceso de arranque al cargador de arranque de Windows de segunda etapa. Ya tenemos la ruta en la partición de Windows, pero también necesitamos algunos parámetros para decirle a GRUB dónde está esa partición. Debe haber una herramienta instalada en su sistema llamada grub-probe o (en, por ejemplo, Fedora) grub2-probe . Escribe grub y luego presiona Tab dos o tres veces; deberías ver una lista que incluye uno u otro.

> grub-probe --target=hints_string $win

Debería ver una cadena como:

--hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1

Regrese al editor de texto con la configuración de GRUB y agregue una línea después de todos los insmod comandos (pero antes de la llave de cierre) para que se vea así:

    insmod chain
    search --fs-uuid --set=root [the complete "hint bios" string]
}

No rompa esa línea ni permita que su editor de texto lo haga. Puede aparecer en la pantalla; una manera fácil de notar la diferencia es activar la numeración de líneas. Siguiente:

> grub-probe --target=fs_uuid $win

Esto debería devolver una cadena más corta de letras, números y posibles guiones como "123A456B789X6X" o "b942fb5c-2573-4222-acc8-bbb883f19043". Agregue eso al final de la search --fs-uuid línea después de la cadena bios sugerencia, separada por un espacio.

Siguiente, si (y solo si) Windows está en la segunda unidad en términos de orden de unidad , agregue una línea después de search --fs-uuid línea:

    drivemap -s hd0 hd1

Este es "el truco" mencionado anteriormente. Tenga en cuenta que no se garantiza que funcione, pero no está de más intentarlo.

Finalmente, la última línea debería ser:

    chainloader (${root})[the Windows path to the bootloader]
}

Para que quede claro, por ejemplo:

    chainloader (${root})/Windows/Boot/EFI/bootmgfw.efi

Eso es todo. Guarde el archivo y verifíquelo en un explorador de archivos para asegurarse de que realmente se haya guardado y se vea como debería.

Agregue la nueva opción de menú a GRUB

Esto se hace con una herramienta llamada grub-mkconfig o grub2-mkconfig; habrá estado en esa lista que encontraste con Tab más temprano. También puede tener un comando llamado update-grub . Para verificar eso, simplemente escríbalo en la terminal raíz. Si obtiene "comando no encontrado", debe usar grub-mkconfig directamente. Si no es así (incluido el error más largo), acaba de establecer la configuración y puede hojear un poco.

Para usar grub-mkconfig directamente, primero necesitamos encontrar grub.cfg :

> find /boot -name grub.cfg

Probablemente será /boot/grub/grub.cfg o /boot/grub2/grub.cfg .

> grub-mkconfig -o /boot/grub/grub.cfg

update-grub escaneará automáticamente la configuración en busca de errores. grub-mkconfig no lo hará, pero es importante hacerlo porque es mucho más fácil lidiar con ellos ahora que cuando intenta arrancar la máquina. Para esto, usa grub-script-check (o grub2-script-check ):

> grub-script-check /boot/grub/grub.cfg

Si esto (o update-grub ) produce un error que indica un número de línea, ese es el número de línea en grub.cfg, pero debe corregir la parte correspondiente en /etc/grub.d/40_custom (el archivo en su editor de texto). Sin embargo, es posible que deba ser root solo para ver el archivo anterior, así que intente less /boot/grub/grub.cfg en la terminal, presiona : e ingrese el número de línea. Deberías ver tu entrada de menú. Encuentra el error tipográfico, corrígelo en el editor de texto y ejecuta update-grub o grub-mkconfig de nuevo.

Relacionado:¿Híbrido en memoria y disco duro?

Cuando haya terminado, puede cerrar el editor de texto y escribir exit en la terminal para salir del modo superusuario.

¡Reiniciar!

Cuando llegue al menú de grub, desplácese hacia abajo rápidamente (antes de que expire el tiempo de espera, generalmente 5 segundos) hasta la opción "Windows" y pruébelo. Si recibe un mensaje de texto de error de grub, algo anda mal con la configuración. Si recibe un mensaje de error de Windows , ese problema es entre usted y Microsoft. Sin embargo, no se preocupe, su unidad de Windows no ha sido modificada y podrá iniciarla directamente colocándola primero (en términos de orden de inicio) a través de la configuración del BIOS.

Cuando regrese a Linux nuevamente, devuelva la propiedad de /etc/grub.d directorio y su contenido a su estado original:

sudo chmod 755 /etc/grub.d/40_custom

Referencias

  • Manual de GRUB 2

  • Página de GRUB Wiki de Arch Linux

    Arch tiene una de las mejores documentaciones, y gran parte de ella (incluida esa página) se aplica principalmente a cualquier distribución de GNU/Linux.


Linux
  1. Instalar Linux Mint con Windows 8 | Arranque dual Windows 8 y Linux Mint 12

  2. Cómo iniciar dualmente Windows 10 y MX Linux

  3. Cree una unidad USB de arranque de Windows 10 (UEFI) desde Linux

  4. Arranque dual Windows + Linux con encriptación

  5. ¿Es posible iniciar Linux desde un disco GPT en un sistema BIOS?

Cambiar el orden de inicio en Windows Linux Dual Boot con Grub Customizer

Cómo realizar un arranque dual de Linux Mint y Windows 10 [Guía para principiantes]

Arreglar Grub que no se muestra para el sistema de arranque dual de Windows y Linux

Cómo Arranque Dual Antergos Linux y Windows UEFI

Cómo realizar un arranque dual de Fedora y Windows

¿Cómo instalar Windows de arranque dual y Kali Linux?