¿Cómo instalo dos instalaciones de Ubuntu independientes en un solo disco duro con UEFI?

8

Por razones de seguridad, me gustaría instalar un sistema operativo secundario completamente independiente en una computadora con un solo disco duro usando UEFI. Ambas instalaciones deben poder usar diferentes particiones criptográficas LUKS como dispositivo raíz (LVM encima de la criptografía) y deben poder usar sus propios núcleos.

Tener un arranque dual con dos sistemas operativos diferentes no es gran cosa. Un Ubuntu y Fedora no interferirán y pueden compartir la partición del sistema EFI, pero dos instalaciones de Ubuntu lucharán entre sí porque quieren que ambos instalen su instancia de Grub en la misma ubicación de EFI.

  • ¿Hay alguna forma de cambiar Ubuntu para instalar Grub en una ubicación diferente que /boot/efi/EFI/ubuntudurante la instalación? Necesito una forma persistente, para que las actualizaciones de paquetes y las actualizaciones de kernel / grub todavía se instalen en esa ruta. Justo como la instalación de Fedora's Grub /boot/efi/EFI/fedora. No puedo encontrar esa opción de configuración en Grub. Si pudiera, mi menú de arranque UEFI de Dell me permitiría elegir qué sistema operativo cargar. Quizás me falta algo de pegamento entre efibootmgr y grub-efi aquí.

  • Alternativamente, ¿sería posible usar una sola instalación de Grub desde una de las dos instalaciones de Ubuntu y hacer que detecte automáticamente la configuración de arranque correcta? Quiero decir, sé os-proberque encontrará la otra /bootpartición con núcleos, pero ¿cómo puede conocer los parámetros de arranque correctos para ese sistema operativo (por ejemplo, el volumen LVM dentro del volumen criptográfico bloqueado como sistema de archivos raíz)? Puedo entender que puede con instalaciones de una sola partición sin cifrar, pero no puede coincidir /bootcon un sistema de archivos raíz correspondiente, ¿verdad? Y es completamente imposible si está encriptado. Eso requeriría muchos ajustes manuales de los archivos de configuración de grub. También no me gusta esta opción de una única configuración de cargador de arranque compartido, lo que hace que los dos sistemas operativos estén menos aislados hasta cierto punto.

Por cierto, estoy bien con la instalación experta basada en texto del servidor. También algunas configuraciones personalizadas siempre que no tenga que repetir los pasos para cada actualización de kernel / Grub.

gertvdijk
fuente

Respuestas:

6

Tengo dos sugerencias ...

Opción n. ° 1: ESP separados

Bajo EFI, el cargador de arranque reside en "la" Partición del Sistema EFI (ESP). Puse la palabra "the" entre comillas porque no hay una regla que diga que estás limitado a un ESP. Si crea dos ESP en su disco duro, puede usar uno de ellos para su primera instalación y el segundo ESP para la segunda instalación. Esto debería funcionar sin problemas, aunque tendrá que crear sus particiones manualmente (usando la opción "Something Else" durante la instalación), al menos para su segunda instalación de Ubuntu.

Un problema con este enfoque es que, aunque la especificación EFI establece explícitamente que puede crear tantos ESP como desee, algunos programas pueden confundirse. Un ejemplo destacado de esto es el instalador de Windows, al menos a través de Windows 7 (no sé sobre Windows 8 o posterior); cuando el instalador de Windows 7 ve un disco con dos ESP, se descama y hace cosas raras. IIRC, no completa su propia instalación correctamente. Es concebible que las herramientas de reparación de Windows sufran el mismo problema. Si no está iniciando Windows en este sistema, esto no debería ser un gran problema. Si usted esal arrancar con Windows, simplemente debe tener en cuenta el problema, porque puede superarlo fácilmente cambiando temporalmente el código de tipo de los ESP que no son de Windows si tiene problemas. Tenga en cuenta que Windows arrancará bien en un disco con múltiples ESP; es solo el instalador el que se ahoga en tales discos.

Otro problema es cómo cambiaría entre sus dos distribuciones. Es posible que necesite personalizar una o ambas configuraciones de GRUB de sus instalaciones utilizando una herramienta como GRUB Customizer. Otra opción (pero no incompatible) sería usar el propio administrador de arranque de su firmware para cambiar entre sus dos instalaciones de GRUB, y usar cada una para arrancar solo su propia versión de Ubuntu.

Opción # 2: Abandonar GRUB (o al menos las herramientas GRUB de Ubuntu)

El problema con GRUB para su situación es que tiene dos instalaciones y es probable que esa configuración confunda las herramientas de mantenimiento de GRUB. Esta observación lleva a la solución obvia de que simplemente no debe usar esas herramientas. Hay varios otros cargadores de arranque EFI para Linux, la mayoría de los cuales son más fáciles de mantener manualmente que GRUB. Puede configurar ELILO, SYSLINUX, el parche GRUB Legacy de Fedora, gummiboot o rEFInd y administrar ambas instalaciones manualmente. De hecho, debido a que rEFInd detecta los núcleos cada vez que se inicia, rEFInd debería estar cerca de no necesitar mantenimiento, una vez que esté configurado. Alternativamente, pero en una línea similar, puede editar manualmente su grub.cfgarchivo para hacer lo que quiera, en lugar de confiar en los scripts de configuración de GRUB.

Además de rEFInd, todas estas herramientas requerirán que realice cambios de configuración cada vez que actualice un kernel, lo que será una molestia. También está la cuestión de cuándo y cómo instalar el programa de arranque adicional. Probablemente lo pospuse hasta después de su segunda instalación de Ubuntu, ya que cada instalación registrará su propia copia de GRUB como el gestor de arranque predeterminado, y desea anular ese valor predeterminado.

Tenga en cuenta también que ninguna de estas herramientas puede leer un núcleo de un sistema de archivos cifrado o de un LVM, por lo que necesitará tener una /bootpartición no cifrada por separado para cada una de sus instalaciones de Ubuntu. Esta es la forma en que la mayoría de las instrucciones que he visto dicen configurar una instalación cifrada de Ubuntu de todos modos, por lo que probablemente no sea un gran problema a menos que desee jugar en el "borde de la sangría" del cifrado de disco.

Algunos cargadores de arranque EFI tienen particiones específicas adicionales o requisitos del sistema de archivos. En particular, ELILO, SYSLINUX y gummiboot requieren que el núcleo resida en una partición FAT, y el ESP funciona mejor para esto. Puede hacer esto montando el ESP en /boot, pero esta es una solución dudosa en Ubuntu porque algunas actualizaciones de paquetes requieren enlaces simbólicos. También tendría problemas para hacer esto con dos instalaciones de Ubuntu separadas porque ambos intentarían reclamar los mismos archivos. (En este caso, "el ESP" realmente significa "la partición desde la que se ejecutó el cargador de arranque", por lo que puede tener un solo ESP en este caso). GRUB Legacy y rEFInd son más flexibles al respecto.

Mi recomendación

Personalmente, usaría rEFInd para esto, pero como mantengo rEFInd, no soy exactamente imparcial. De hecho, tengo una computadora que arranca varias veces entre tres instalaciones de Ubuntu, y rEFInd cambia entre ellas perfectamente. Este sistema en particular no usa encriptación, pero dudo que eso cause nuevos problemas desde la perspectiva de rEFInd.

Dicho esto, los ESP separados también deberían funcionar bien, con la advertencia de que podría necesitar usar GRUB Customizer para ajustar la configuración de al menos una de esas copias de GRUB.

Rod Smith
fuente
Muy buenas sugerencias, gracias! Estoy seguro de que tiene razón acerca de que uno puede tener múltiples ESP según la especificación, pero dudo que mi implementación de Dell Latitude UEFI también lo admita. Solo me permite explorar rutas por unidades individuales. Sin embargo, tengo que probarlo.
gertvdijk
Si la implementación de EFI de su Dell está tan rota que no puede manejar múltiples ESP, entonces debe devolverla a la tienda para obtener un reembolso. Seriamente; ese tipo de mal indicaría tal horror que no confiaría en el firmware para realizar sus tareas más básicas. En la práctica, no creo que sea tan malo; Nunca he oído hablar de un EFI que no pueda manejar múltiples ESP.
Rod Smith
1

Estos son los pasos que utilicé para el arranque dual con dos sistemas Ubuntu cifrados con LUKS en un solo disco duro con UEFI usando la opción # 2 recomendada por Rod Smith anteriormente. Esto fue específicamente con Ubuntu 18.04.1-escritorio. El cifrado del directorio principal ya no se ofrece como una opción durante la instalación, ya que existen dudas sobre la confiabilidad y el mantenimiento de eCryptfs. Se recomienda usar LUKS en su lugar, por lo que creo que es la mejor opción para tener múltiples usuarios con particiones de inicio cifradas.

    1. Arranque en un USB en vivo, esto fue descargando el ISO y usando el Startup Disk Creator para formatear y configurar una unidad USB.
    1. Use GParted para particionar el disco. Esto se basó en las recomendaciones en https://help.ubuntu.com/community/ManualFullSystemEncryption y en el uso de algunos de los valores predeterminados establecidos por el instalador de Ubuntu al seleccionar el cifrado de disco para el disco completo.
      • Partición del sistema EFI / 512MiB / FAT32 / boot, esp (flags)
      • Sistema de arranque # 1 / 732MiB / EXT4
      • Sistema de arranque # 2 / 732MiB / EXT4
      • Datos cifrados # 1 / [tamaño deseado] / borrados
      • Datos cifrados # 2 / [tamaño deseado] / borrados
    1. Reiniciar de nuevo en Live USB
      • Instalar Ubuntu
      • Seleccionar preferencias de instalación
      • Seleccione "Algo más" para el diseño del disco de partición, y dentro de esa configuración de partición para la instalación:
        • Seleccione "Partición del sistema EFI" como el gestor de arranque en el menú en la parte inferior.
        • Seleccione "Datos cifrados # 1" y seleccione "dispositivo físico para cifrado" y luego ingrese la frase de cifrado que se utilizará para la partición.
        • Seleccione la partición recién creada con EXT4 y cambie el punto de montaje a "/".
        • Seleccione el "Sistema de arranque # 1" y haga que el punto de montaje sea "/ boot".
      • Continuar e instalar
    1. Reiniciar en la nueva instalación
      • Instale "refind" a través de "apt-get install refind" y haga que se instale automáticamente en el ESP, la "Partición del sistema EFI".
    1. Reiniciar de nuevo en el USB en vivo
      • Repita los pasos 3 y 4 para el sistema de arranque n.º 2 y las particiones cifradas con datos n.º 2 que instalan la segunda instalación de Ubuntu.
    1. Configure y actualice cada instalación según sea necesario.
brihoriq
fuente
1

Utilizo el siguiente enfoque con un solo ESP:

Creé cargadores de arranque adicionales para cada sistema operativo con

sudo grub-install --bootloader-id=ID

usando un diferente IDpara cada sistema operativo.

Ejemplo:

Tengo Ubuntu 16.04 y Ubuntu 18.04 instalado. Arranco en Ubuntu 16.04 y ejecuto

sudo grub-install --bootloader-id=Ubuntu1604

Luego, desde arrancado en Ubuntu 18.04, ejecuto

sudo grub-install --bootloader-id=Ubuntu1804

En la configuración UEFI-Veo las nuevas entradas de arranque con los nombres Ubuntu1604y Ubuntu1804y cambiar el orden de arranque para un conjunto de las nuevas entradas en el primer lugar.

También puedo ver las carpetas con estos nombres en el ESP.

Cuando una actualización del sistema se envía con una nueva versión de grub, reinstalará una nueva instancia de grub en la ubuntucarpeta en el ESP, no afectará a los cargadores de arranque que creé yo mismo, pero tengo que reorganizar el orden de arranque nuevamente ya que la ubuntuentrada será empujada al primer lugar en el orden de arranque.

Esto es lo que se efibootmgr -vmuestra en mi configuración:

~ $ efibootmgr -v
Corriente de arranque: 0001
Tiempo de espera: 0 segundos
Orden de arranque: 0001,0002,0004,0000,0003,0005
Boot0000 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Archivo (\ EFI \ ubuntu \ shimx64.efi)
Boot0001 * US1804 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Archivo (\ EFI \ US1804 \ grubx64.efi)
Boot0002 * US1604 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Archivo (\ EFI \ US1604 \ grubx64.efi)
Boot0003 * UEFI OS HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Archivo (\ EFI \ BOOT \ BOOTX64.EFI)
Boot0004 * US1904 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Archivo (\ EFI \ US1904 \ shimx64.efi)
Boot0005 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Archivo (EFI \ Ubuntu \ grubx64.efi)
mook765
fuente
Todavía no funcionó para mí. Cambio el valor predeterminado en / etc / default / grub a distribución como GRUB_DISTRIBUTOR="Bionic_18_04"y reinstalo grub utiliza eso como ID predeterminado UEFI. Pero cada vez solo usa /EFI/ubuntu/grub.cfg como ubicación predeterminada para arrancar desde mi nuevo /EFI/bionic_18_04/grub.cfg.
oldfred
@oldfred Para mí, esto funciona bien durante varios años ejecutando un arranque triple.
mook765
Intenté su comando, en lugar del cambio de nombre en / etc / default / grub. No hizo ninguna diferencia. UEFI está configurado para la nueva entrada de arranque predeterminada. Pero arrancó usando mi / efi / ubuntu con Disco como arranque predeterminado, en lugar de grub en la nueva carpeta / EFI / ubuntu1804. Creo que es grub, no UEFI, lo que marca la diferencia.
oldfred
@oldfred Por favor, eche un vistazo a la salida efibootmgr -vque agregué a mi respuesta. Funciona. Es posible que tenga cambios adicionales que le impiden hacerlo. Lo que describí es lo único que hago para que funcione.
mook765
Verifiqué efibootmgr -v y estaba configurado para una nueva entrada, pero arranqué el grub en / EFI / ubuntu. El mío está arrancando /EFI/ubuntu1804/shimx64.efi. ¿Está utilizando un grubx64.efi o shimx64.efi, tal vez eso sea una diferencia? Tengo el arranque seguro desactivado, pero por defecto se calzó como la primera entrada de ubuntu1804. En algún momento terminé con tantas entradas o carpetas UEFI en / EFI que tuve problemas para arrancar y tuve que usar rEFInd en otra unidad para arrancar. Así que ahora no me gusta tener demasiado en la carpeta / EFI o entradas en UEFI.
oldfred