lunes, 25 de junio de 2012

Instalación de 3 Sistemas Operativos en el mismo PC (¡aunque se puedan instalar hasta 21025!)

                    (P) Hugo Napoli, 2012                    

¡Muy buenas!

Hace tiempo que no escribo ninguna entrada en el blog, por razones de tiempo.
Llegué a administrar tan bien mis tiempos, que podía, en el pasado reciente, escribir al menos algo así como un artículo por mes, o bien, modificar alguna información interesante que ya existía en Internet, para traerla aquí.
Ahora hace tiempo ya que no poseo el tiempo que quisiera, pero agradezco que aún hago espacios "a la fuerza" para seguir haciendo experiencia.
Por lo tanto, hoy traigo la siguiente información, que espero que a muchos le sea útil como lo fue para mí.
La garantía de esto es que yo mismo lo hice y que lo comparto aquí luego del logro.

NOTA SOBRE EL TÍTULO DE LA ENTRADA: lo más común de ver hoy en día es un sólo Sistema Operativo en cada PC. Generalmente esta configuración se da en la mayoría de los hogares, siendo normalmente Windows el único Sistema a disposición.
Según mi criterio, deberían tenerse 2, es decir, un Sistema GNU/Linux, y otro Microsoft (a menos que seas usuario MAC y quieras poseer Linux y/o Windows junto a tu bello Sistema Operativo).
Esto es debido a la cantidad de necesidades informáticas de hoy en día, y por temas de compatibilidad entre diversas plataformas, y también por si, en algún momento, se dañase uno de los dos Sistemas y no pudieses hacerlo encender: tendrías al otro para utilizar cómodamente tu máquina, y hasta para reparar el Sistema dañado. 
Puedes tener 3 o 4 en el mismo disco duro, como en el caso de este post (personalmente estoy teniendo excelentes resultados con 3 de ellos en mi PC portátil: Fedora 17, Ubuntu 12 y Windows 7 original, el cual vino pre-instalado en la computadora).
Pero... ¿imaginas 145? (1)
¡Sí, escribí correctamente! ¡145 Sistemas Operativos en el mismo PC!
Si quieres embarcarte en esa tarea, visita este post del usuario Saikee de la web JustLinux.
Si no es así, quédate en el mío. ¡Ja ja!
El autor teoriza sobre cómo instalar esa cantidad de sistemas en un mismo ordenador, y yo agrego lo siguiente: en el caso de poder instalar 145 Sistemas en un mismo PC, podemos también instalar en cada uno de los Sistemas instalados, una máquina virtual con otro/s Sistema/s más.
Una máquina virtual, normalmente soporta varios Sistemas, pero supongamos que instalamos una máquina virtual en cada Sistema Operativo, y que a cada máquina virtual le instalamos un sólo Sistema, el cual, lógicamente, debería ser diferente de los ya instalados...
Tendríamos, entonces -y si no me equivoco-, 145 Sistemas instalados + 145 Sistemas virtualizados... Un total de 290 Sistemas en la misma computadora.
¿Y si instaláramos una máquina virtual con 145 Sistemas Operativos dentro de cada uno de los 145 Sistemas Operativos instalados en ese ordenador infernal? ¡Podríamos tener hasta 21025 Sistemas en el mismo ordenador!
¿Habrá tantos Sistemas que valga la pena tener instalados en una misma máquina? Yo creo que no, pero el experimento bien vale la pena... ¿Alguien se anota para el Guiness?

Hoy veremos cómo instalar 3 Sistemas Operativos en una misma computadora.
En mi caso, he elegido Windows 7, Fedora (17) y Ubuntu (12).

Puedes sustituir Windows 7 por Windows Vista, o por Windows XP, si quieres.
Y a los Sistemas Linux, también puedes sustituírlos por otros. No tienen por qué ser exactamente estos 3 que yo elegí. El resultado será el mismo, independientemente de la combinación que se utilice. Lo que sí debe respetarse es la familia de cada Sistema: sustituyamos Windows por Windows y GNU/Linux por GNU/Linux. No entreveremos Sistemas insolubles.

¿Por qué elegí justamente estos tres Sistemas Operativos y no otros?

Windows 7, por su popularidad y compatibilidad, y por la practicidad de uso y su gigantesco universo de software. ¿Hacía falta decirlo?

Fedora, porque pertenece a la familia de OpenSuSE, distribución de Linux que hace años que es mi preferida. Si instalaba OpenSuSE, me quedaba sin poder experimentar a fondo con otra "distro", por lo tanto, opté por ella en vez de invocar al viejo y querido camaleón geeko, a quien tengo en el PC de trabajo y no en la netbook por estas mismas razones. 

Y Ubuntu (con todo respeto, es una de las distribuciones que menos me agrada, pese a su popularidad dentro del mundo Linux y a su gran estabilidad, universo de software, cuidado y solidez), porque me resulta bastante antipática por varias razones más filosóficas que pragmáticas, pero que para mí están por encima de otro tipo de juicios, por más razonables y defendibles que las críticas a este punto de vista puedan ser.
Más allá de todo, Ubuntu es parte de la familia Linux Mint, distribución que sí me resulta atractiva, y del majestuoso Debian, uno de los referentes más importantes en materia de comunidades y Sistemas Operativos en general.
Y además -y esta es la razón fundamental de la elección de Ubuntu- este Sistema se utiliza en las computadoras portátiles "Magallanes" o "Magalhães" que el Plan Ceibal ha dado gratuitamente a muchos estudiantes de nivel secundario en mi país.
Desde que empecé a dar clases de Informática, necesito ese Sistema para compatibilizar con los estudiantes.
Espero que esta experiencia logre sensibilizarme en cuanto a esta gran distribución. (2)

Vamos al grano, basta de palabrería redundante.

Vayamos a desenmascarar el primer misterio de esta tarea: el correcto particionado.

1. Particionar correctamente el disco duro antes de comenzar con la instalación de los Sistemas.

Desde hace un tiempo, encontré que es mejor llevar a cabo el trabajo de particionado del disco antes y no durante la instalación.

¿Por qué?
RAZÓN 1: políticas descuidadas o autoritarias de Microsoft.

Si instalamos Windows 7 antes de particionar, este Sistema creará 2 particiones primarias de forma totalmente violenta, no configurable, sin avisar, sin permitirnos optar. Bien a la manera de Microsoft.

Si en un disco duro necesitamos 4 particiones para 3 sistemas operativos (1 para cada uno de los Sistemas y otra para compartir datos entre ellos), y Windows 7 nos quita 2... ¿cómo consigo 3 más? Imposible.

Pero hay un truco: para que Windows 7 no particione a su exagerado y despilfarrado modo nuestro preciado espacio en disco, particionémoslo por él, y obliguémoslo nosotros a él a instalarse en donde exactamente queremos y del modo como exactamente necesitamos que sea. Tal como debe ser en este caso: el usuario dispone, y la$ empre$a$ obedecen.
RAZÓN 2: necesidades estructurales de la lógica de Linux.

Los Sistemas Linux (o al menos la enorme mayoría de sus distribuciones más importantes), podrían hacerse más sólidos si poseyeran una partición primaria para su directorio raíz o root, o para los archivos de arranque (/boot). Por lo tanto, por cada Sistema Linux que quisiéramos instalar, sería conveniente al menos una partición primaria, y alguna/s otra/s partición/particiones (no primaria/s) más.

Habrá que particionar el disco, antes que nada, y eso se logrará con "gParted live", aunque hay otras herramientas para lograr el mismo cometido también. Yo uso esta desde hace años, y ni siquiera me importa saber cuáles otras hay, puesto que gParted me ha dado resultados excelentes siempre, sin excepción.
Este software nos permitirá, al encender el ordenador, cargar el contenido del CD de GParted antes que cualquier otro Sistema que pudiera haber allí pretenda "levantar" archivos directamente desde el disco duro, evitando de este modo que se cargue el Sistema operativo que ya existe en nuestro PC -si es que existe alguno- y que no se pueda particionar todo el disco debido a que el mismo está siendo utilizado por el Sistema local. (3)


Deberás hacer algunas cosas una vez descargado este software:

1. Grabarlo como CD de IMAGEN, no como CD de datos. De otro modo, GParted no funcionará, como todo archivo ".iso". Si no dispones de un programa que grabe imágenes ISO en CD o DVD, puedes descargar CDBurner XP (funciona en Windows y necesita la versión de .net framework 3.5 para funcionar), o bien ahorra tiempo y esfuerzo y descarga InfraRecorder, también para Windows (un poco menos sencillo de utilizar). Para Sistemas Linux, te recomiendo k3b o Brasero.
2. Acceder al BIOS de tu ordenador, e indicarle que inicie la secuencia de arranque desde la unidad óptica (unidad de CD o DVD), no desde el disco duro.
3. Observar que el CD de gParted esté colocado en el ordenador antes de ser encendido el mismo.
4. Haber comprendido exactamente cómo funciona GParted antes de "meter mano". GParted es una herramienta extremadamente valiosa y eficaz, pero que, mal utilizada, puede llevarte a perder datos mucho más valiosos que la herramienta en sí...
Si no sabes cómo utilizar gParted, aquí tienes un manual online completísimo.

Está claro que si no quieres utilizar esta aplicación, dispones de decenas de particionadores que hacen la misma tarea. Solo es cuestión de dar con el programa ideal para tí.
Consigue cualquiera de ellos o busca en Internet. No todos son comerciales, no te preocupes. Aún así, te recomiendo utilizar el que vengo mencionando.

Una vez resueltos todo estos detalles, haz las siguientes particiones en tu disco duro:

Elimina todas las particiones existentes en el disco duro. Déjalo completamente "vacío". Esto hará que se pierdan todos los datos que había en él, ¡cuidado! (4)

 NOTA IMPORTANTE: lee -antes de particionar el disco- los comentarios en verde y azul claro 
 que aparecen un poco más abajo, en donde se sugiere un modelo de partición alternativo a éste. 

a. Partición primaria, NTFS, llamada "Windows 7"  ,                      60 GB
b. Partición primaria, ext4, llamada "Ubuntu"     , montada en raíz (/), 20 a 40 GB
c. Partición primaria, ext4, llamada "Fedora"     , montada en raíz (/), 20 a 40 GB
d. Partición extendida que abarque toda la superficie que quedó libre.

Dentro de la partición extendida, haz las siguientes particiones:

e. Partición lógica, ext4, llamada "Ubuntu_Fedora", montada en /home,  60 GB
f. Partición lógica, de área de intercambio, montada en "swap", de entre 2 y 4 GB
g. Partición lógica, ext4, de arranque,      montada en /boot,         300 a 500 MB aprox.
h. Partición lógica, NTFS, llamada "Datos", que ocupe todo el espacio sobrante

Aplica las operaciones pendientes, es decir, particiona el disco y procede a instalar, por orden de jerarquía, cada uno de los 3 Sistemas disponibles.

Nota extraída de la realidad reciente (1 día después de haber publicado esta parte del post):
Fedora me pidió más espacio libre en su partición raíz de 30 GB. Ignoro el por qué.
Instalé más programas en Ubuntu que en Fedora hasta este momento, por lo cual no entiendo por qué ésto mismo no sucedió con Ubuntu... Tal vez los paquetes instalados en Fedora hayan sido menores en número, pero mayores en volumen...

De todos modos, en cuanto el Sistema me notificó de ello, revisé la partición "root" y vi que quedaban solamente... ¡457 KB de espacio!
No entiendo aún qué fue lo que sucedió.

Nota del 21/11/2012: ahora sí creo saber lo que sucedió, porque he continuado en mis intentos de instalar Fedora junto a Ubuntu y a Windows 7 y... ¿adivinen qué?
¡Sucedió exactamente lo mismo en 3 oportunidades!
Y por mi propia experiencia lo pude solucionar, utilizando el programa gParted para ello.
Revisé cada resumen de cada tarea efectuada por gParted, hasta que ví que en algún momento siempre se ejecutaba la tarea de revisión lógica del disco duro (fsck, o bien "file system check" o "file system consistency check", equivalente al chkdsk de Windows), con lo cual se solucionaba el problema. Entonces, corrí el fsck en el disco duro, y el problema desapareció.

Ubuntu, que también es GNU/Linux igual que Fedora, mostraba un uso razonable de su partición raíz de 30 GB. En este caso, los datos allí contenidos no superaban los 10 GB.
Pero, adelantándome a los posibles acontecimientos, ejecuté el Live USB de gParted una vez más, y:

- achiqué la partición NTFS llamada "Datos".
- achiqué el directorio "Home"
- corrí la partición extendida hasta dejar un espacio no asignado entre ésta y la partición raíz de Fedora.
- agrandé la partición raíz de Fedora utilizando para ello la mitad del espacio libre no asignado.
- agrandé la partición raíz de Ubuntu utilizando para ello la otra mitad del espacio libre no asignado restante.

Los Sistemas arrancaron sin problemas :)


Sigamos develando el segundo misterio que nos aguarda en este trabajo: el orden jerárquico en la instalación de los Sistemas.

2. Orden jerárquico para la instalación de los 3 Sistemas citados.

Como se dijo anteriormente, no tienen por qué ser éstos los 3 Sistemas a instalar:

"Puedes sustituir Windows 7 por Windows Vista, o por Windows XP si quieres. Y a los Sistemas Linux, también puedes sustituírlos por otros. No tienen por qué ser exactamente estos 3 que yo elegí. El resultado será el mismo, independientemente de la combinación que se utilice. Lo que sí debe respetarse es la familia de cada Sistema: sustituyamos Windows por Windows y Linux por Linux. No entreveremos Sistemas insolubles."
(5) Lo que sí hay que respetar es el orden en el cual vamos a instalar los Sistemas: Windows primero.
Si un "¿por qué?" gigantesco nos aborda súbitamente tras haber leído esto, la explicación está aquí:

Todos los Sistemas Operativos poseen su cargador de arranque, gestor de arranque, bootloader o bootmanager.

En el caso de Windows 2000 y Windows XP, se trata del NTLDR (New Technology LoaDeR).
Para Windows Vista y Windows 7, es el nuevo Windows Boot Manager.

Para la mayoría de las distribuciones GNU/Linux, el más ampliamente utilizado es GRUB (GRand Unified Bootloader), mientras que el resto utilizan LILO (LInux LOader), salvo excepciones.

Cuando Windows se instala (y esto es así desde tiempos inmemoriales), Microsoft no tiene el más mínimo cuidado por el software ajeno y, literalmente, aplasta cualquier cargador de arranque de Linux que pueda existir en el "Master Boot Record" del disco duro local. (5)

Por lo tanto, si allí estaba GRUB, GRUB será aplastado por este petulante y tosco cargador de arranque, haciendo que el sistema Linux "desaparezca". (5)



18/1/2015: NOTAS Y ACTUALIZACIONES DEL POST.

(1): Esta información data de la fecha de creación del artículo.
Desde comienzos del año 2014 hasta hoy, poseo en mi máquina portátil Windows + Puppy Linux + OpenSuse, y en el resto de las máquinas, Windows + OpenSuse.

(2): Esto, no ha sucedido -ni con el Plan Ceibal, ni con Ubuntu-, y sinceramente, no creo que vaya a suceder. Es aún peor: la experiencia fue contraproducente en mi caso.

(3): Desde mediados de 2014, recomiendo la última versión de 64 bits para máquinas en donde se vaya a utilizar EFI/UEFI. gParted de 32 bits, hoy, no puede hacer particiones bajo este tipo de estándar.

(4): Si bien creo que no es mala la propuesta de particionado de este artículo, también creo que he aprendido mucho al trabajar con Sistemas GNU/Linux, y hoy, recomendaría otro tipo de particionado.
Básicamente, haría 2 particiones primarias obligatorias: una pequeña en formato ext4 para los archivos de arranque en donde solo estaría instalado GRUB2, y otra mucho mayor en formato NTFS o FAT32 (dependiendo del caso) para el área de intercambio de datos entre los Sistemas (clásica partición D: o E: de Windows). El resto de las particiones, serían primarias o lógicas, en función de lo que se necesite hacer.

(5): Hoy, esto, no es exactamente así. Si bien la información es correcta para la mayoría de los casos, cada vez más máquinas tienen soporte EFI/UEFI (visita haciendo clic aquí este buen artículo oficial de Intel para saber más), haciendo que el orden en el cual sean instalados los Sistemas, ya no dependa de uno de los Sistemas, sino del "BIOS", quien ve como particiones independientes y manejables a cada Sistema EFI/UEFI instalado en la máquina en cuestión. ¿Debemos decirle adiós, entonces, al querido MBR?



NOTA ADICIONAL: propuesta de cantidad de particiones, y del tamaño de cada partición Linux.
Me basaré en mi propia experiencia (basada en el más cuidadoso empirismo puro) respecto al tema, puesto que cuando busqué información, jamás encontré quien me quitara las dudas. Y aún conservo una: la del tamaño del particionado de GRUB2 en relación a la cantidad de Sistemas Operativos que este albergará. Propondré entonces un tamaño de partición para GRUB2 (/boot), lo bastante espaciosa para contener la información de 3 sistemas, puesto que de esto se trata este post.

Partición raíz: será la unidad, es decir que valdrá 1, y debe ser multiplicada por la cantidad de GigaBytes que se deseen. Estas cifras pretenden representar magnitudes o porcentajes, no tamaños, puesto que los "tamaños" varían en cuanto el tiempo pasa. Por ejemplo, hoy, recomiendo 40 GB para la partición /root, si bien muchos usuarios Linux dirían que con 20 GB basta. Te dirán que si vas a utilizar la máquina para Internet y tareas de oficina, eso está bien -y estoy de acuerdo con ellos-, pero me surgen 2 importantes preguntas para estos amigos: 1) ¿quién, hoy en día, utiliza una máquina solamente de ese modo?; 2) siendo el tamaño de los discos gigantesco... ¿para qué reducirse a una penosa partición de 20 GB que posiblemente haya que redimensionar en un futuro, con toda la pérdida de tiempo y el riesgo que ello ocasiona?

Partición /boot: 0,0125
Partición /root: 1
Partición /tmp: 0,2
Partición /home: mínimo, 0,5; máximo, el que quieras.
Partición /swap: igual de grande que la cantidad de memoria RAM del equipo. (*)

(*): Si posees bastante memoria RAM y no quieres seguir este procedimiento, puedes ajustarte a lo que oficialmente recomienda Red Hat (comprobado por mí al día de hoy en el siguiente enlace oficial: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s2-diskpartrecommend-x86.html)

Table 9.2. Recommended System Swap Space
Amount of RAM in the systemRecommended swap spaceRecommended swap space if allowing for hibernation
⩽ 2GB2 times the amount of RAM3 times the amount of RAM
> 2GB – 8GBEqual to the amount of RAM2 times the amount of RAM
> 8GB – 64GBAt least 4 GB1.5 times the amount of RAM
> 64GBAt least 4 GBHibernation not recommended

(o bien según lo que recomendaba Red Hat para Centos 5.5, según lo que he leído en el siguiente artículo):

Los Sistemas con 4GB de RAM o menos, requieren un mínimo de 2GB de espacio para /swap
Los Sistemas con 4GB a 16GB de RAM requieren un mínimo de 4GB de espacio para /swap
Los Sistemas con 16GB a 64GB de RAM requieren un mínimo de 8GB de espacio para /swap
Los Sistemas con 64GB a 256GB de RAM requieren un mínimo de 16GB de espacio para /swap

Y podríamos seguir, multiplicando por 4 cada cifra que aparezca en el renglón anterior, salvo la última, la cual multiplicaremos x 2:

Los Sistemas con (64x4) 256GB  a (256x4) 1024GB de RAM requieren un mínimo de (16x2) 32GB de espacio para /swap

Entonces... ¿cómo se calculan los tamaños correctos?

Primero, hay que determinar qué tan grande (en MB) será la partición raíz, es decir, /root.
En mi caso, serán -al día de hoy- 40 GB (40960 MB).

Partición /boot:      0,0125 * 40960 = 512   MB (0.5 GB)
Partición /root:           1 * 40960 = 40960 MB (40  GB)
Partición /tmp :         0,2 * 40960 = 8192  MB (8   GB)
Partición /home: mínimo, 0,5 * 40960 = 20480 MB (20  GB); máximo, el que quieras.
Partición /swap: igual a la cantidad de memoria RAM del equipo (*)



Actualización del 13/4/2015: aportación acerca del espacio de disco necesario para este complejo proyecto y del tiempo necesario para llevar a cabo dicha tarea.
 
Dijimos que, teóricamente, podían instalarse -en un ordenador con tecnología BIOS- 145 Sistemas Operativos.
¿Cuánto espacio sería necesario para todo el conjunto?
Asumiendo que: 1) únicamente los Sistemas más modernos necesitan más espacio en disco que el resto, y que: 2) la mayoría de los sistemas GNU-Linux necesarios para el desarrollo de esta idea consumen, en general, mucho menos espacio que los más modernos (ya sean GNU-Linux, Microsoft o Apple), estableceremos en un mínimo de 15 GB (promedial) la cifra para el espacio de cada partición.
Según esto, entonces, será necesaria una unidad de 2175 GB (poco más de 2 TeraBytes) para albergar a los 145 sistemas.
Esto, podría solucionarse con 1 disco de 2 TB y otro complementario de entre 360 y 500 GB, lo cual, no representa nada descabellado.

Veamos ahora el espacio necesario para albergar a... ¡21025 sistemas!
El espacio resultante sería de 315375 GB, y esto sí que es cosa seria... Al menos, al día de hoy.
Nos estamos refiriendo a 308 TB.
El disco duro de mayor capacidad al que en Uruguay una persona "común" puede acceder -hoy- es de 6 TB, lo que equivaldría a adquirir 52 de estos discos (¡habría que ver cómo conectarlos y qué fuente de poder utilizar!), siendo, por cierto, cada uno de ellos, bastante caros.

¿Alguien se anima a calcular cuánto tiempo se necesita para instalar un Sistema Operativo, y a multiplicarlo por 145?
 
Para mí, calculando rápidamente y sin investigar mucho, para una persona trabajadora que no puede dedicarse estrictamente a esa tarea, digamos que tomaría 1 día entero la instalación de cada sistema moderno (serán unos 15, tomando 4 o 5 Windows, el sistema de Apple más moderno al momento de hacer la tarea, y una decena de GNU-Linux y otros) y medio día para cada uno de los restantes sistemas (130 sistemas más).
Serían, entonces, 15 días para los primeros 15 sistemas, más 65 días más para instalar los restantes 130 sistemas. Tenemos entonces 195 días: entre 6 y 7 meses.
 
Y para el proyecto de 21025... ¿se hace la misma cuenta?
No.
Tomará un poco más que 6 o 7 meses instalar una máquina virtual con 145 sistemas más en uno solo de los 145 sistemas anteriores.
Las máquinas virtuales corren sobre el sistema "padre", el cual, corre sobre el hardware.
No podemos pedirle a una máquina virtual que sea tan veloz como un sistema "nativo", por lo tanto, ampliaremos un 50% ese tiempo.
En lugar de 6 a 7 meses, nos tomaría entre 9 y 10 meses esta tarea, por lo cual, para instalar 290 sistemas, necesitaríamos 1 año y medio.

No sería necesario volver a instalar 145 sistemas virtualizados en el siguiente sistema "nativo", puesto que los sistemas virtuales se pueden exportar o copiar, así que ahora habría que ver cuánto tiempo insumiría copiar 145 sistemas virtuales en cada sistema nativo restante (restan 144 nativos)...



ENTRADA EN CONSTRUCCIÓN O ACTUALIZACIÓN PERMANENTE.