Varios sistemas Linux en un PC, varias distribuciones y/o versiones

Uno de los problemas que me encuentro con el desarrollo de aplicaciones para Ubuntu es que tengo que ir probándola en las diferentes versiones que aparecen. Esto me obliga a tener una o dos distribuciones instaladas en mi equipo, porque en ocasiones, virtualizarlas no es suficiente. Desde hace tiempo, utilizo una partición donde guardo documentos. Sin embargo, esto no es suficiente. Y todo ello ha dado lugar este artículo como tener varios sistemas Linux en un PC y no morir en el intento.

El otro día mientras escuchaba un podcast de Yoyo en Salmorejo Geek sobre como guardaba sus documentos personales, me decidí a darle una vuelta mas al sistema, y esto es lo que te voy a intentar explicar a continuación.

Varios sistemas Linux en un PC, varias distribuciones y/o versiones. Portada.

Varios sistemas Linux en un PC

Antes de nada y para que nadie se lleve a engaño, indicar que todos los sistemas Linux que instalo en mi equipo son Ubuntu. Esto no quita que esta misma solución se pueda aplicar a otras distribuciones.

Desarrollo de aplicaciones en Ubuntu

Como comentaba en la introducción, el desarrollo de aplicaciones para Ubuntu se encuentra con la necesidad de revisar que cada aplicación funciona correctamente en cada una de las versiones que se liberan. Es decir, aunque yo desarrollé my-weather-indicator para Ubuntu 10.10 Maverick Meerkat, ahora en la versión 17.04 Zesty Zapus, necesito probarla también.

Esto es así, porque de unas versiones a otras cambian las librerías que utilizo en la aplicación, cambia el propio entorno de escritorio y cambia GNOME, lo que en muchas ocasiones obliga a un rediseño de la aplicación.

En otros casos…

No solo el desarrollo de aplicaciones lleva a tener varios sistemas Linux en un PC. Es posible que seas un distrohopper, es decir, uno de los tantos de usuarios Linux que disfrutan probando cada una de las distribuciones y versiones que aparecen en el extenso universo Linux.

Otra razón que se me ocurre, aunque seguro que hay cientos de razones mas, es que simplemente para según que trabajo estés mejor en un entorno de escritorio y otro.

Centralización

El problema de tener varios sistemas Linux en un PC (o no), es que en cada uno de ellos tienes documentos, y es probable que estando trabajando en un sistema quieras utilizar un documento que esté en otro sistema.

Existen diferentes soluciones para resolver esto, desde utilizar la misma partición /home para todos, a utilizar una partición independiente donde situar todos tus documentos.

El problema de la partición /home común son los archivos de configuración que puede ser que te generen problemas en un sistema operativo o en otro, por estar utilizando diferentes versiones.

Sin embargo, hay una solución muy simple, con la que no notarás el cambio de un Linux a otro… los enlaces simbólicos.

Y ¿porque no enlazarlo todo?. Pues la razón para esto radica en que al cambiar de versión, la configuración de un escritorio puede entorpecer en otra instalación…

La propuesta para resolver como tener varios sistemas Linux en un PC

Directorios

Mi propuesta es bastante simple. Cada uno de los Linux que tienes instalados en tu equipo, tiene sus directorios ~\Escritorio, ~\Documentos, ~\Descargas, etc… Elimina todos esos directorios y haz un enlace simbólico al que se encuentra en tu partición común.

Es decir, si tu partición común la montas en /datos en esta partición común tendrás un directorio que se llamará /datos/Escritorio de forma, que cada uno de los ~\Escritorio de todos los Linux instalados en tu equipo apuntaran a /datos/Escritorio.

De esta manera cuando entres en cualquiera de los sistemas Linux instalados y te enfrentes al escritorio, encontrarás exactamente lo mismo.

Esto mismo lo podemos hacer con el resto de directorios…

Configuraciones

Sin embargo, podemos ir mas lejos todavía… En mi caso particular, utilizo GIMP e Inkscape para hacer las imágenes que ves en este sitio y para mi trabajo.

Estas aplicaciones no suelen cambiar de versión tan frecuentemente como Ubuntu, con lo que su archivo de configuración, puede permanecer inalterado durante años, sin que esto afecte a las distintas versiones.

Igual que hemos hecho con los directorios, también podemos hacer con los archivos de configuración. Es decir, podemos hacer un enlace simbólico desde el directorio de configuración o archivo de configuración que se ubica en ~/.config/GIMP/ a /datos/.config/GIMP.

Siguiendo este procedimiento nos encontraremos que aunque entremos en diferentes Linux en nuestro equipo, y trabajemos con diferentes GIMP, la apariencia de cada uno de ellos siempre será la misma. Siempre y cuando tengamos instalados los mismos complementos, etc.

Esto nos llevará a ahorrar mucho tiempo y ser más productivos.

Una solución para tener varios sistemas Linux en un PC

Esta solución funciona muy bien, sin embargo, tiene un pequeño inconveniente. Cada vez que instales una nueva distribución o una nueva versión, tienes que realizar todos estos enlaces…

Para darle una solución a este problema he creado un sencillo script que realiza estos enlaces simbólicos, de forma que cada vez que instalo una nueva distribución o versión solo tengo que ejecutar el script, que por supuesto está instalado en /datos.

Este script está en GitHub. Puedes utilizarlo fácilmente, descargarlo, compartirlo, contribuir o lo que consideres.

Una indicación, en las primeras líneas de linker.py tienes el directorio de origen que no habría que modificarlo, y el directorio de destino (este a lo mejor si que consideras en borrarlo).

A continuación tienes todos los directorios a enlazar. Por supuesto que lo que enlazas es a~/ seguido del directorio o archivo que consideres. El funcionamiento es muy sencillo. Lo que hace es mirar si en /datos existe el directorio de origen, si existe borra, el directorio de tu directorio de inicio y realiza el enlace simbólico. Si en /datos no existe, primero copia el de tu directorio de inicio y luego lo enlaza.

Conclusiones

La solución de tener todo en un directorio aparte es muy buena solución tal y como lo comentaba Yoyo. Ahora, completado esto con los enlaces simbólicos, el funcionamiento es impecable. De esta manera, yo paso de una distribución, versión o instalación a otra, sin echar nada de menos. Muy recomendable.

  • Buena idea. Hago lo del enlace simbólico con mi equivalente del directorio de datos, pero no se me había ocurrido llevarlo tan lejos, con los ficheros de configuración de las herramientas que más uso, y con los directorios principales del home.

    Supongo que otra ventaja de este sistema es poder usar el mismo nombre de usuario, pues no va a entrar en conflicto con nada, al menos en principio.

    • Si. Lo cierto es que se trata de una buena solución, y te encuentras como en casa en todas las instalaciones.
      Un saludo

  • Mi solución fue semejante, aunque no sabría decir si es mejor o peor. En lugar de enlaces utilizo bindings en el archivo fstab por cada una de las típicas carpetas. Cada vez qu instalo una distro sólo actualizo ese archivo para tener mis datos a mano.

    • Joksan

      Los bind son la onda, son difíciles de aprender a usar porque casi no hay documentación, pero resuelven algunos problemas particulares que los enlaces simbólicos pueden acarrear.

  • Emiliano Ybarra

    A mi se me da siempre por hacer lo mismo: instalo el lts de ubuntu más reciente y agrego los entornos de escritorios que quiera probar.
    Siempre alguna dependencia de kde molesta al cargar gnome o unity, pero al menos comparten el mismo /home y más aún, el mismo /root. Y por supuesto hay que hacerse amigo de la ensalada de programas de GNOME y KDE que se genera. (siempre instalo full y no base)

    Y con kde pasa algo más copado: para noobs como yo, desde la configuración de sistema puedo elegir la dirección de cada directorio, de vital importancia si una partición es de Windows y el resto de la familia no se acostumbra a las distribuciones que yo use: tomo como /home a “Mis documentos” y asigno las carpetas correspondientes a cada equivalente de Linux. Es vital tener el automontado del disco o partición de Windows.

    Dolphin en kubuntu 16 esta más amigable que en otras versiones.

  • Joksan

    Eso mismo hago yo, tengo todo el todas las rutas frecuentes de home enlazadas con excepción de imágenes que he aprendido que tiene problemas de rendimiento con 15gb de referencia los thumb ya empiezan a ser un dolor de cabeza pra el gestor de archivos. También tengo respaldos y sus script de montajes de los archivos de configuración de mis aplicaciones de trabajo, inkcape, y gimp como las mas destacadas; y una partición dedicada para todas las aplicaciones que pueda “portalizar” y sus perspectivos script de enlace.

    Como un tiempo me di por usar android-x86, llego el momento en que necesitaba mis archivos, y las soluciones en la nube nunca son suficientes, aquí el proceso fue mucho mas complicado las técnicas de montaje/link entre particiones son diferentes ademas de que los premisos propios de android ponen muchas trabas, pero funciona se puede hacer del mismo modo. Es más aquí es donde ha sido mas esencial, android-x86 no es una distro, y cuando hay que actualizar el sistema se pierde todo.

    Lo mas difícil que he hecho fue empezar a construir un paquete que me permitiera enlazar toda usa sección de openbox entre diferentes sistemas operativos y sus configuraciones, que se reconstruyera en cada loging dependiendo de mi necesidades (usuario/workspace), y que los archivos de orígenes se actualizara en consecuencia ante cambios importantes. El trabajo iba bien funcionaba pero desistí, cuando solo faltaba la capa de personalización, por que me di cuenta que era un sinsentido me estaba adentrando demasiado en la construcción de un proto-escritorio que nunca estaría completo y que me demandaría largas horas de trabajo el solo mantenerlo. Pero sin duda fu un experimento Interesante, del que prendí muchísimo de scripting.

  • angel30co

    Magnífico. Gracias por este aporte,yo lo hago con directorios como Descargas, pero no se me había ocurrido el uso que me has descubierto.

  • JVare

    Muy buena idea. Y mas sencilla que modificar el fstab.
    De todas formas supongo que tendrás alguna diferencia en los escritorios para saber en cual estás.

    • No, la verdad es que hay momentos en que no se donde estoy, pero eso es los que andaba buscando

  • Sr. Paquito

    Antes de instalar Ubuntu 16.04 yo hacía esto siempre, pero no por tener varios sistemas, lo hacía porque mi Ubuntu está en un SSD de solo 128GB donde, además, comparte espacio con un Windows 10. Para evitar quedarme sin espacio en el SSD, la mejor opción era utilizar enlaces simbólilcos que apuntaban a carpetas homónimas en un disco HDD.

    Nunca había tenido problemas con esto hasta que instalé Ubuntu 16.04, por alguna razón cuando accedía a un directorio desde el enlace simbólico todo parecía ir bien, pero cuando intentaba eliminar un archivo no me permitía enviarlo a la papelera, sólo me permitía eliminarlo directamente. Cambié las opciones de montaje, revisé los permisos, pregunté en foros… nada, no había manera, algo había ahí, no sé si un bug de Nautilus, algo en el kernel, los permisos… no tengo ni idea, pero no había manera de eviar los archivos a la papelera si accedías al directorio desde un enlace simbólico.

    Finalmente, la solución más resultona que encontré fue retocar el archivo user-dirs.dirs, para modificar el destino de las cartepas de usuario. Pero, claro, esto lo hacía todo un poquito menos intuitivo, para mi gusto.

    Hoy, después de leer este artículo decidí volver a probarlo y, cual sería mi sorpresa, el problema, fuera lo que fuese, ha desaparecido, de modo que he recuperado los enlaces simbólicos, he vuelto a dejar el archivo user-dirs.dirs como estaba por defecto, y listo.

    No es que el artículo me haya descubierto nada, porque esto ya lo hacía desde hace años, pero me ha recordado el tema y me ha permitido volver a mi configuración preferida para mi directorio personal.

    Saludos y gracias.

    • Los misterios de la informática…
      Un saludo

  • Anón

    Gracias por la aplicación y la explicación.
    Me viene estupendo porque quiero reservar espacio en mi disco para probar diferentes distros.
    ¿Cuánto espacio recomiendas para el /home en la distribución principal y de las secundaria?

    • Hola Anón,
      Depende de lo que dejes en cada “/home”. Si lo tienes enlazado como indico en el artículo, tendras que dejar poco.
      Fijate en el gráfico, todavía queda mucho en .config, casi 1.6 GB, .cache es necesaria, y el resto se podía enlazar.
      En general te diría que cono menos de 10 GB deberías de tener mas que suficiente, pero ya te digo, que dependerá de lo que tengas enlazado.

      https://uploads.disquscdn.com/images/10c6c4eb8b68a24fbdc7e7467b8160d1988fdf758e34a880d94b894410d81b62.jpg

      • Anón

        Gracias por la rápida respuesta. 🙂
        Como quiero ponerme un SSD baratito en el ordenador (64 Gb), creo que voy a usar tu script para hacer dos tipos de destino de los enlaces:
        – Una partición de datos en un HDD de 500 Gb que contenga los Documentos, Imágenes, Vídeos, etc.
        – Una partición de configuración común en el SSD que contenga los archivos de configuración que quiero compartir (Gimp, Libreoffice, etc).

        De esta forma dejo los archivos de configuración dentro del SSD, que supongo que influirá en lo rápido que se abre un programa si tiene que leer de un sitio u otro.

        Tendría que estudiar cuánto espacio de los 64Gb dedico a la raíz y home de cada sistema para que me quepa además la partición de configuración común.

        • Para raíz depende de lo que suelas utilizar. En general yo le pongo unos 30 GB, sin embargo, ahora mismo no llego a utilizar ni 12 GB con lo que probablemente con 20 GB hubiera sido mas que suficiente.
          Saludos.