¿Cómo se puede instalar Linux en una unidad RAM?

‘Instalar’ probablemente no sea la palabra correcta para ello, pero puede ejecutar Linux sin montar ningún medio giratorio o no volátil. El kernel de Linux puede usar un sistema de archivos raíz basado en RAM incorporado, o el gestor de arranque puede proporcionar uno externo en el momento del arranque ( initrd e initramfs ). Puede sorprenderle saber que este es el método utilizado para cargar Linux en la mayoría de las PC. El kernel desenrolla un sistema de archivos raíz en RAM que tiene lo suficiente para montar un sistema de archivos físico o de red. Una vez que los controladores utilizados para arrancar el sistema de archivos adicional y el soporte del dispositivo se cargan desde el sistema de archivos RAM, el kernel cambia al disco físico como el sistema de archivos raíz ( raíz_ pivote ). El sistema de archivos basado en RAM puede estar compuesto fácilmente por el software instalador, lo que permite adaptarlo a la huella mínima para el host en el que está instalado.

Es posible cargar el kernel y un pequeño sistema de archivos raíz en la RAM, y ejecutarlo durante el tiempo que el sistema se ejecute. He usado este modelo para ejecutar Linux en dispositivos que están completamente sin disco, arrancando el kernel e initramfs desde los servidores de archivos de red. Puede usar un kit de herramientas como Buildroot para crear un sistema así para usted.

Hmm

Puede ejecutar Linux directamente en RAM, con una unidad de memoria RAM y no discos físicos, pero creo que esta no era la cuestión.

Pero las unidades RAM no existen realmente: un sistema operativo simula un disco duro usando RAM, por lo que para tener una unidad RAM necesita un sistema operativo, y no puede instalar un sistema operativo dentro de otro (pero con virtualización, pero probablemente realmente no quiere usar unidades de RAM).

Y las unidades de RAM no son persistentes, por lo que no tiene sentido utilizar “instalar”. Simplemente ejecuta las partes necesarias.

En realidad, en la mayoría de las situaciones, eso es exactamente lo que sucede.

Nuevamente, esto es para la MAYORÍA de las situaciones, ya que los sistemas integrados son diferentes. Esto funciona para cualquier cosa, desde computadoras portátiles en adelante.

El BIOS / UEFI carga un programa de arranque (grub o un alternativo). Grub luego copia un núcleo en la memoria física. Luego copia el initrd … Esto se copia en la memoria física en la primera página que sigue al núcleo.

Cuando se inicia el núcleo, realizará el inventario de hardware habitual y la configuración inicial. NOTA: los únicos dispositivos realmente inicializados son el teclado / mouse / pantalla. Luego se asigna memoria para un disco ram, que se carga desde el initrd, que es una copia cpio comprimida de un sistema raíz mínimo. Una vez que se completa, el núcleo libera la memoria ocupada por initrd e inicia un programa init (proceso 1) que se encuentra en el disco ram.

En este punto, Linux se está ejecutando, utilizando el ramdisk como root; enteramente en la memoria.

Sin discos, sin USB. Nada.

Debido a los límites esperados del disco ram, el programa init generalmente inicia udev para crear el árbol de directorios / dev (un sistema de archivos virtual) y lo completa con los diversos dispositivos encontrados.

Los parámetros del kernel se examinan y el disco del sistema deseado (del parámetro “root =”) se montará como / sysinit (creo que es así). Una utilidad especial que utiliza una llamada especial del sistema (ambas se denominan raíz_protota) intercambiará la mitad de la estructura inferior de un punto de montaje (que apunta al dispositivo y cualquier memoria intermedia) entre la raíz existente (que es el disco RAM) y el disco montado ( / sysinit). Una vez que esto se haya completado, se puede desmontar el sysinit (que es el disco RAM).

Creo que el init en ejecución luego ejecuta el programa / sbin / init desde el sistema de archivos raíz en el disco. Este reemplazo luego finaliza el inicio del sistema al montar cualquier otro disco, iniciar los servicios del sistema … y eventualmente habilitar los inicios de sesión de los usuarios.

Entonces tu respuesta es SÍ.