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
yininrd.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.