Instalar Linux desde un archivo ISO
En el artículo anterior habíamos visto el potencial de la shell de GRUB 2. Allí habíamos visto que podíamos arrancar directamente desde una imagen ISO sin necesidad de tener que grabarlo en un disco óptico ni copiarlo a una unidad USB.
Ahora bien, ¿podríamos además instalar un sistema operativo utilizando ese método? La respuesta es sí. En este caso puntual veremos como instalar Fedora 23.
Aquí, tendremos que tener en cuenta los dos software involucrados principalmente para poder realizar esta tarea. Estos programas son GRUB 2 (naturalmente) y dracut.
Recordemos que en el momento del arranque se utiliza un sistema de archivos temporal en memoria hasta que se pueda realizar el montaje del definitivo sistema de archivos raiz.
dracut es tanto una infraestructura de initramfs manejada por eventos como así también una herramienta que se usa para crear una imagen de disco en memoria. El comando dracut copiar herramientas y archivos de un sistema instalado y lo combina con el framework dracut.
Estos archivos se pueden ver en fedora en el directorio /usr/lib/dracut/modules.d:
[sergio@hope ~]$ ls /usr/lib/dracut/modules.d
00bash 30convertfs 90dm 90qemu-net 95fstab-sys 95zfcp 99base
00systemd 40network 90dmraid 91crypt-gpg 95iscsi 95zfcp_rules 99fs-lib
00systemd-bootchart 45ifcfg 90dmsquash-live 91crypt-loop 95nbd 95znet 99img-lib
01systemd-initrd 45url-lib 90kernel-modules 95cifs 95nfs 97biosdevname 99kdumpbase
02systemd-networkd 50drm 90kernel-network-modules 95dasd 95resume 98dracut-systemd 99shutdown
03modsign 50plymouth 90livenet 95dasd_mod 95rootfs-block 98ecryptfs 99uefi-lib
03rescue 80cms 90lvm 95dasd_rules 95ssh-client 98pollcdrom
04watchdog 90bcache 90mdraid 95debug 95terminfo 98selinux
05busybox 90btrfs 90multipath 95fcoe 95udev-rules 98syslog
10i18n 90crypt 90qemu 95fcoe-uefi 95virtfs 98usrmount
Por lo tanto aquí la clave es pasar los parámetros del kernel y opciones para dracut correctas. Y para agregar la entrada al menú de grub utilizamos el archivo /etc/grub.d/40_custom.
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the ‘exec tail’ line above.
menuentry “Live Fedora 23″ –class fedora {
set isofile=”/Fedora-Live-KDE-x86_64-23-10.iso”
loopback loop (hd0,gpt8)$isofile
linuxefi (loop)/isolinux/vmlinuz0 iso-scan/filename=${isofile} root=live:CDLABEL=Fedora-Live-KDE-x86_64-23-10 rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0
initrdefi (loop)/isolinux/initrd0.img
}
Aquí los comandos y opciones claves son respectivamente loopback e iso-scan.
El comando loopback sirve para especificar la ruta a un archivo ISO para que sea tomado como un dispositivo de bloques. Mientras tanto el parámetro iso-scan sirve para montar el dispositivo de loopback y pasarle los parámetros de kernel y dracut apropiadas.
¿Cómo sabemos las opciones y parámetros correctos? Las podemos averiguar montando el archivo ISO e inspeccionando el archivo isolinux.cfg:
[root@hope sergio]# mount -o loop /usr/Fedora-Live-KDE-x86_64-23-10.iso /media
mount: /dev/loop0 está protegido contra escritura; se monta como sólo lectura
[root@hope sergio]# grep -m1 append /media/isolinux/isolinux.cfg
append initrd=initrd0.img root=live:CDLABEL=Fedora-Live-KDE-x86_64-23-10 rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0
Sencillamente debemos copiar lo que está a continuación de append initrd=initrd0.img.
Además, se pueden apreciar los comandos linuxefi e initrdefi que son equivalente de manera respectiva a las ordenes linux e initrd al utilizar un sistema con UEFI.
Finalmente, debemos ejecutar el comando para generar el nuevo archivo de GRUB 2:
[root@hope sergio]# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
Reiniciamos, elegimos la opción Live Fedora 23 y luego podremos instalar el sistema operativo.
La partición importa
La partición en la que está ubicado el archivo ISO importa. Existe un bug en el módulo de python para la configuración de almacenamiento del sistema llamado blivet que impide la instalación del sistema operativo si la ISO está en alguna partición marcada en el editor de particiones, más allá de que esta se formatee o no. Como solución provisoria, se puede emplear una partición sin que el instalador la tenga en cuenta. De hecho, hice eso mismo. Luego, posterior a la instalación usé dicha partición para el directorio /usr, usando rysnc, editando el archivo /etc/fstab y borrando el /usr original.
Conclusión
Una vez más, podemos apreciar el potencial de GRUB 2 y como podemos prescindir de otros medios para instalar sistemas operativos. De hecho, dado el gran tamaño de los discos en la actualidad, podríamos tener una partición específicamente para tener ISOS.
Comentarios
Comments powered by Disqus