GNU/Linux >> Tutoriales Linux >  >> Linux

Compartir/partición de arranque entre distribuciones

Puedes, pero no es una gran idea.

En GRUB, lo que haría es especificar un kernel diferente y initrd archivos para cada distribución instalada en el sistema.

Sin embargo, la configuración de inicio de una distribución puede entrar en conflicto con la configuración de las otras distribuciones, dependiendo de cómo cada distribución establece su configuración de inicio y nombra sus archivos en /boot . Esto podría conducir a una configuración desordenada y potencialmente dejar una o más distribuciones sin poder arrancar. Se debe tener especial cuidado al actualizar el kernel o cambiar la configuración de arranque en cualquiera de las distribuciones. Sin embargo, si no hay conflictos, debería poder iniciar ambos sistemas operativos sin problemas.


Me doy cuenta de que es un poco tarde para la fiesta, pero acepté esto para mantener tres instalaciones simultáneas y una /boot partición:

  • Arco Linux
  • ubuntu 14.04
  • ubuntu 16.04

He usado arch durante años, pero no estaba muy familiarizado con ubuntu y no estaba seguro de cómo evitar que instalara un cargador de arranque, así que simplemente lo dejé. Para arch, he estado usando syslinux , no grub así que estoy mucho más familiarizado con él. Si bien esto es algo al principio de mi experimento, este es mi procedimiento:

  • identifique los archivos potencialmente conflictivos. Después de observar las convenciones de nomenclatura de ubuntu vs. arch, esto se redujo a 14.04 y 16.04 vmlinuz y ininrd.img , que tienen el mismo nombre (quizás aparte del número de versión si se actualizan en momentos diferentes). Por lo que sé, son compatibles, pero opté por tratarlos como no.
  • configurar syslinux como de costumbre, creando entradas para cada distribución (que se muestra a continuación)
  • tras la actualización de cualquiera de las distribuciones potencialmente conflictivas, implemente una estrategia de nomenclatura para evitar problemas
  • tener un plan alternativo

Si ubuntu actualiza el kernel, obtengo dos archivos clave:

  • /boot/initrd.img-x.x.x-xx-generic
  • /boot/vmlinuz-x.x.x-xx-generic

Para cada uno de los anteriores, simplemente agrego _distro hasta el final, así como reemplazar una variante con nombre estático para evitar cambiar mi syslinux.cfg cada actualización (más se muestra a continuación). El proceso se vería así, usando 14.04/Trusty como ejemplo y mostrando solo los archivos de interés.

$ cd /boot
$ sudo mv ./initrd.img-4.4.0-62-generic ./initrd.img-4.4.0-62-generic_trusty
$ sudo cp ./initrd.img-4.4.0-62-generic_trusty ./initrd-trusty.img
$ sudo mv ./vmlinuz-4.4.0-62-generic ./vmlinuz-4.4.0-62-generic_trusty
$ sudo cp ./vmlinuz-4.4.0-62-generic_trusty vmlinuz-trusty

Dado que la convención de nomenclatura de arch nunca entra en conflicto, esto significa que termino con 2 copias de seguridad/con un nombre preciso initrd y vmlinuz archivos junto con dos que puedo usar para evitar cambiar mi syslinux.cfg todo el tiempo. Los archivos clave son así (con comentarios añadidos):

$ ls /boot/

initramfs-linux.img                 ## arch main initramfs
initramfs-linux-fallback.img        ## arch fallback initramfs
initrd.img-4.4.0-62-generic_trusty  ## named recent 14.04 initrd
initrd.img-4.4.0-62-generic_xenial  ## same for xenial (16.04)
initrd-trusty.img                   ## statically named initrd
initrd-xenial.img
vmlinuz-4.4.0-62-generic_trusty     ## named vmlinuz
vmlinuz-4.4.0-62-generic_xenial
vmlinuz-linux                       ## arch's vmlinuz
vmlinuz-trusty                      ## statically named vmlinuz
vmlinuz-xenial

Para arrancar, aquí está mi syslinux entradas:

LABEL arch
  MENU LABEL arch
  LINUX ../vmlinuz-linux
  APPEND luks-options-here rootflags=compress=lzo,discard,ssd,subvol=arch rw
  INITRD ../intel-ucode.img,../initramfs-linux.img

LABEL xenial
  MENU LABEL xenial
  LINUX ../vmlinuz-xenial
  APPEND luks-options-here ro rootflags=compress=lzo,discard,ssd,subvol=xenial quiet splash $vt_handoff
  INITRD ../initrd-xenial.img

LABEL trusty
  MENU LABEL trusty
  LINUX ../vmlinuz-trusty
  APPEND luks-options-here ro rootflags=compress=lzo,discard,ssd,subvol=trusty quiet $vt_handoff
  INITRD ../initrd-trusty.img

Hasta ahora he dejado grub en ubuntus y se queja en cada actualización, pero nada ha salido mal. Mi plan alternativo era copiar mbr.bin a /boot/ (normalmente reside en /usr/lib/syslinux... en arco) de modo que si grub decide sobrescribir mi gestor de arranque, puedo al menos dd el syslinux cargador de arranque de vuelta. Estoy más del 95 % seguro de que mi instalación de arco nunca se estropeará (al menos para arrancar), por lo que casi siempre podré arrancar y arreglar el ubuntus si copié o nombré algo incorrectamente. Probablemente mantendré una versión anterior de cada initrd/vmlinuz alrededor para que pueda cambiar cuál se carga en el arranque en caso de que algo salga mal con el initramfs proceso.

Esperemos que sea relativamente claro lo que está pasando. Probablemente podría usar enlaces, algún tipo de secuencia de comandos posterior a la actualización, etc. para automatizar, pero aún no he llegado allí.

La respuesta aceptada revela que las cosas podrían salir mal, pero como busqué en Google ejemplos de otros haciendo esto, y solo encontré respuestas como esta (básicamente, "es posible, pero no"), pensé en agregar un ejemplo tangible de cómo uno podría configura algo como esto.

Personalmente, estoy bastante emocionado por ello. Tengo una partición de arranque y, como habrás notado, tres distribuciones en paralelo en un btrfs dividir. No es necesario preasignar tamaños, no se preocupa de que no le guste una configuración y la elimine (quedarse con una partición sin usar flotando) y no es necesario un montón de volúmenes lógicos solo para iniciar una partición de Linux cuando ya tener ¡un gestor de arranque!

Espero que esto ayude a alguien.


Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. Bash =~ Regex y Https://regex101.com/?

  3. ¿Para qué sirve realmente la partición /boot?

  4. Debian – ¿Mover /var, /home a una partición separada?

  5. Cambiar el tamaño de la partición de arranque

¿La diferencia entre /opt y /usr/local?

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

¿Es bueno hacer una partición separada para /boot?

¿Por qué poner otras cosas que no sean /home en una partición separada?

Linux:diferencia entre /dev/console, /dev/tty y /dev/tty0

¿Cuál es la diferencia entre /tmp y /run?