Arrancar instalación libre de debian cargandola solo en ram
Despues de algunos dias luchando he conseguido poner la instalacion de un debian 10.4 amd64 configurado al gusto en un pendrive y hacer que dicho debian arranque en ram.
Primero he decir que mi ordenador no usa uefi.
Para hacer esto me he valido de puppy linux para ser exactos de su iso bionicpup64-8.0-uefi.iso.
Primero he instalado debian 10 amd64 sin entorno grafico, para poder asi ponerle openbox. Luego he instalado xorg, slim, pulseaudio, firefox, vlc, etc. y lo he configurardo todo a mi gusto.
Quite las contraseñas de user y root editando /etc/passwd (sino no me entrava a la sesion openbox).
Desde otro debian en otra particion he copiado los archivos con cp en un directorio (por cierto /dev me solto algun error com es normal) y con mksquashfs del paquete squashfs-tools he creado un sistema de ficheros squashfs de el contenido de dicho directorio.
Extraje los archivos de la iso del puppy en la particion del pendrive fat32 con la marca boot activada quedando pues el pendrive con estos archivos y directorios:
boot.catalog
help/
Windows_Installer/
efi.img
initrd.gz
splash.png
zdrv_bionicpup64_8.0.sfs <--< este lo borre (drivers privativos)
fix-usb.sh
isolinux.bin
vesamenu.c32
grub.cfg
isolinux.cfg
vmlinuz
puppy_bionicpup64_8.0.sfs
^
|
|
^
Este ultimo lo sustitui por el squashfs creado a partir de los archivos de la particion de debian al que le puse el mismo nombre: puppy_bionicpup64_8.0.sfs.
Luego ya es cuestion de arrancar una live de puppy sin alterar, ejecutar grub4dos desde el menu de esta live, y de objetivo para grub4dos seleccionar nuesto pendrive modificado.
Y ya esta, deveriamos poder arrancar cargando el debian en la ram, aunque el el kernel que se usa es el de puppy asi como el initrd.
¿Como podria generar un initrd estilo puppy a partir de kernel de debian? ya que este esta limpio de blobs y por lo tanto es libre.
Estoy pensando que igual esta hablidad casi magica de puppy de arrancar cargando integramente el sistema en la ram, igual no viene dada por el initrd sino por el kernel de puppy, si fuera asi seria mucho mas dificil librerizar este machihembrado que hize, a lo mejor podria probar de sustituir la parte puppy por tinycore que sino recuerdo mal arranca tambien en ram y creo tambien que alguna de sus versiones no trae drivers privativos, aunque desconozco si su kernel es totalmente libre. creo que knoppix tambien arrancava totalmente en ram, y tambien la live de clonezilla, ¿cual seria mejor opcion? porque de las distros totalmente libres, como trisquel, no hay ninguna con esta habilidad, ¿verdad?
Casi he llegado a la conclusion de que arrancar cargando en ram se puede hacer con cualquier distro que use grub observando el grub de clonezilla y la opcion:
toram=directoio_1,directorio_2,...,directorio_n
Pero llevo un buen rato peleando siempre me sale kernel panic.
He formateado una sola particion en el pendrive de tipo ext4 con la flag boot marcada.
He copiado les archivos y directorios que contiene la iso de la live de debian: debian-live-10.4.0-amd64-lxqt.iso a la particion del pendrive.
He puesto la imagen squashfs que genere del sistema ya instado en el directorio /live/ del pendrive dandole el nombre de filesystem.squashfs.
Y ya para terminar instalo el grub al pendrive con:
sudo grub-install /dev/sdc --root-directory=/media/user/ext4/
He modificado el grub.cfg de /boot/grub dejando la primera menuentry asi:
menuentry "Debian GNU/Linux Live (To RAM, boot media can be removed later)" {
linux /live/vmlinuz-4.19.0-9-amd64 boot=live components quiet toram=.disk,boot,d-i,dists,EFI,isolinux,live,pool "${loopback}"
initrd /live/initrd.img-4.19.0-9-amd64
}
Y aun con pequeños cambios siempre me sale kernel panic.
Sin envargo, si arranco la live en modo normal, sin cargar en ram, va perfectamente com mi squashfs.
SOLUCIONADO!
La cosa estava en la opcion del kernel en el grub toram, esta tenia que ir sin mas, es decir, sin los directorios.
REPITO TODO EL PROCESO:
He formateado una sola particion en el pendrive de tipo fat32 con la flag boot marcada.
He copiado los archivos y directorios que contiene la iso de la live de debian: debian-live-10.4.0-amd64-lxqt.iso a la particion del pendrive.
En el sistema instalado hay que editar /etc/passwd quitando la x de los usuarios:
root:x:0:0:root:/root:/bin/bash
user:x:1000:1000:user,,,:/home/user:/bin/bash
Nuestros ususarios quedarian asi:
root::0:0:root:/root:/bin/bash
user::1000:1000:user,,,:/home/user:/bin/bash
Poner la imagen squashfs generada del sistema ya instalado y personalizado com mksquashfs del paquete squashfs-tools en el directorio /live/ del pendrive dandole el nombre de filesystem.squashfs.
He modificado el grub.cfg de /boot/grub dejando la primera menuentry asi:
menuentry "Debian GNU/Linux Live (To RAM, boot media can be removed later)" {
linux /live/vmlinuz-4.19.0-9-amd64 boot=live components quiet toram "${loopback}"
initrd /live/initrd.img-4.19.0-9-amd64
}
Y ya para terminar instalo el grub al pendrive con:
sudo grub-install /dev/sdc --root-directory=/media/user/fat32/
¡Eso es todo!
--------------
Nota 0: Para arrancar desde dvd podemos usar isomaster para editar la iso de la live de debian, sustituyendo /live/filesystem.squashfs por el que generemos a partir de nuestra instalacion personalizada y en este caso en ver de editar grub.cfg, lo importate creo que es editar /isolinux/menu.cfg añadiendo toram donde la linia que define al kernel.
Nota 1: Con algun que otro cambio podemos arrancar cargando en ram trisquel o qualquier otra iso de distro live.
Nota 2: Con arranque EFI tambien funciona.