Noticia Pseudo-instalación offline de ArchLinux paso a paso

Este artículo me lo envió nuestro amigo Hugo Florentino via correo electrónico, donde nos cuenta su experiencia al tratar de instalar ArchLinux sin tener a la mano repositorio alguno, solo usando el disco de instalación



Hace un par de días descargué el ISO de ArchLinux para hacer una instalación en casa. Habiendo utilizado anteriormente otras distribuciones que permiten instalar al menos una base mínima desde el CD, deseaba hacer algo parecido, pero curiosamente el proceso de instalación de Arch no está concebido para un equipo que no tenga acceso a Internet (efectos colaterales de que los desarrolladores vivan en el primer mundo).

En mi caso, ya tenía en mi disco Windows 7 (con su partición de arranque y de sistema) y Fedora (con su swap y su partición dedicada para /boot). La idea era entonces lograr instalar Arch donde anteriormente estaba Fedora, sin destruir Windows en el proceso.

Pseudo-instalación offline de ArchLinux


Pues bien, inicié desde el CD de Arch, eligiendo x86_64, y sin muchos preámbulos me dejó en una consola. Pensé: “Wow, estos sí que se toman en serio aquello de no ser una distribución para novatos… muy bien, sigamos el juego entonces a ver qué ocurre”.

Listé el directorio donde me encontraba para ver si había alguna documentación y descubrí que efectivamente había un texto con una guía elemental de instalación. Escribí lo relevante en un papel (en casa no tengo impresora) y puse manos a la obra.

Lo primero que hice fue cambiar la distribución del teclado a español de España, que resultó más fácil de lo que esperaba (incluso hay una llamada curiosamente us-acentos):

loadkeys es

Lo próximo fue montar un disco externo para guardar una copia del MBR en caso de problemas y de paso hacer una salva de la información importante que tenía en mi Fedora:

mkdir -p /mnt/tmp1 && mount /dev/sdb1 /mnt/tmp1
dd if=/dev/sda of=/mnt/tmp1/mbr.bin bs=512 count=1

Afortunadamente el LiveCD de Arch soporta NTFS y trae integrado Midnight Comander (MC), de modo que en poco tiempo terminé de salvar el resto de la información.

Luego desmonté el disco, eliminé el directorio temporal y extraje el disco externo físicamente para reducir el riesgo de posibles “cagástrofes”.

umount /mnt/tmp1 && rmdir /mnt/tmp1

Entonces di formato a mis particiones, monté la raíz y la partición de arranque, y activé la swap:

mkfs -t ext4 /dev/sda3
mkfs -t ext4 /dev/sda6
mount /dev/sda6 /mnt
mkdir -p /mnt/boot
mount /dev/sda3 /mnt/boot
swapon /dev/sda5

El próximo paso fue mi primer obstáculo:

pacstrap /mnt base

Arch naturalmente intentó buscar las bases de datos de los repositorios en alguno de los mirrors, y al no poder encontrar ninguna, todo lo que pacstrap hizo fue crear en /mnt una estructura de directorios, muy organizadita, pero obviamente vacía.

Vía telefónica, pregunté a un par de amigos que usan Arch si no existía una forma de instalar sin acceso a Internet al menos los mismos paquetes que están en el LiveCD, sin tener tampoco un repositorio copiado en un disco, y me dijeron que al menos ellos desconocían como hacerlo.

El “reto” tecnológico me pareció interesante, de modo que pensé: “si Arch es capaz de iniciar sesión en modo LiveCD, debe poder instalarse en un disco duro al menos en ese mismo modo”, así que intenté copiando manualmente los archivos y siguiendo el resto del tutorial (con algún que otro cambio menor) a ver que sucedía:

rsync -avl /{bin,etc,home,lib,lib64,opt,root,sbin,srv,usr,var} /mnt
arch-chroot /mnt
genfstab -p / >> /etc/fstab
echo hpc > /etc/hostname
ln -sf /usr/share/zoneinfo/Cuba /etc/localtime
locale-gen

El próximo paso fue mi siguiente obstáculo:

mkinitcpio -p linux

Este comando producía algunos errores, después de leer el manual del comando y el contenido de los archivos /etc/mkinitcpio.conf y /etc/mkinitcpio.d/linux.preset, comprendí que el comando no encontraba el archivo vmlinuz-linux, de modo que presioné Ctrl+D para salir del entorno chroot, y busqué cualquier archivo que se le pareciera:

find / -type f -iname "*vmlinuz*"

Sucede que el LiveCD de Arch monta los archivos de arranque bajo el directorio /run/, de modo que decidí copiarlos a mi /boot/ para tenerlos a mano dentro de mi entorno chroot:

cp /run/archiso/bootmnt/arch/boot/{memtest,intel_ucode.img} /mnt/boot/
cp /run/archiso/bootmnt/arch/boot/x86_64/* /mnt/boot/
arch-chroot /mnt

Como otro de los errores que encontré experimentando con mkinitcpio era que no podía encontrarse la etiqueta (label) de la partición raíz, apunté su UUID (que identifiqué mediante el comando blkid) para usarla con el comando, que finalmente quedó así:

mkinitcpio -p linux -k /boot/vmlinuz root=UUID=d85938aa-83b8-431c-becb-9b5735264912

Esta vez la generación terminó exitosamente, solo con un par de advertencias de módulos que no pudieron encontrarse, pero que en mi caso no eran necesarios. Por si acaso, volví a generar el fstab, pero esta vez especificando UUID:

genfstab -U -p / > /etc/fstab

Pensé: ah bueno, al fin progresos. Y pasé a cambiar la contraseña e instalar un gestor de arranque.

passwd
grub-install --target=i386-pc --recheck /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

Finalmente y para ser metódico, presioné nuevamente Ctrl+D para salir del entorno chrooted, desmonté todo y reinicié a ver que ocurría:

umount /mnt/boot
umount /mnt
reboot

El equipo reinició mostrando el menu de Grub con Arch (Windows no apareció por parte alguna), así que lo seleccioné y todo parecía estar cargando bien hasta que… el sistema indicó que se habían producido errores que debía revisar con el siguiente comando:

journalctl -xb

Analizando los errores, vi que la mayoría podía ignorarse, pero el último era insólito, y me indicaba que no había podido encontrarse plymouth.

Inmediatamente pensé: “¿¿¿Plymouth??? ¿Para qué rayos necesita algo así un entorno que arranca en consola? Eso no parece muy KISS que digamos. Yo ciertamente no lo he puesto, ni lo necesito.”

Pero para ser práctico, pensé: “Bueno, pero al menos debería estar referenciado en algún archivo, veamos…”:

find /etc -type f -print0 | xargs -0 grep -i "plymouth"

Sorprendentemente, no apareció en el directorio de configuración ningún archivo con la cadena de texto “plymouth”. Pensé entonces: “Ah, conque… ¿fuercitas conmigo? veamos entonces cómo asimilas una ‘cañona'” (como decimos en Cuba), y “construí” plymouth desde cero:

vi /usr/bin/plymouth
chmod 755 /usr/bin/plymouth

Para los que se pregunten qué puse en ese archivo, he aquí el contenido en su gloriosa totalidad:

#! /bin/sh
exit

Reinicié nuevamente esperando algún error y… sorprendentemente, systemd quedó feliz al haber encontrado ese “componente esencial”, porque terminó el proceso de inicio y sin más demoras me dejó en la consola. Como no podía dar crédito a lo que veían mis ojos, decidí “desinstalar” plymouth y reiniciar, a ver que ocurría:

rm -fr /usr/bin/plymouth
reboot

Curiosamente, esta vez el sistema inició tranquilamente sin fastidiarme más con la ausencia de Plymouth. (Sin comentarios)

Agregando Windows al GRUB


Quedaba entonces agregar la entrada de Windows a GRUB. Como las vías tradicionales no funcionaban (la combinación de grub-mkconfig con os-prober no parecía estar funcionando bien), decidí crear la entrada manualmente, para lo cual necesitaba detectar la cadena del gestor de arranque de Windows y el UUID de la partición de arranque:

mkdir -p /mnt/winboot && mount /dev/sda1 /mnt/winboot
grub-probe --target=hints_string /mnt/winboot/bootmgr
grub-probe --target=fs_uuid /mnt/winboot/bootmgr

Esto me devolvió respectivamente estas dos cadenas:

--hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1
DC788F27788EFF8E

De esta manera comprobé que el UUID devuelto era el mismo que se obtenía para esa partición al ejecutar el comando blkid. Quedaba entonces generar una entrada de grub personalizada con dichos datos:

vi /etc/grub.d/40_custom

En su contenido:

#!/bin/sh
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 "Microsoft Windows 7 SP1" --class windows --class os {
insmod part_msdos
insmod ntfs
insmod search_fs_uuid
insmod ntldr
search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 DC788F27788EFF8E
ntldr /bootmgr
}

Una vez terminado este paso, decidí establecer Windows como sistema operativo por defecto, para que mi esposa no se aterre y mi sobrinita pueda jugar sus Barbies cuando viene. Para esto simplemente edité el archivo /etc/default/grub y establecí la entrada a lanzar por defecto y el tiempo de espera en solo 3 segundos.

GRUB_DEFAULT=2
GRUB_TIMEOUT=3

Solo quedaba regenerar nuevamente la configuración de GRUB, y reiniciar:

grub-mkconfig -o /boot/grub/grub.cfg
reboot

Afortunadamente, todo salió como esperaba. Seleccioné la entrada de Windows y este inició alegremente.

De modo que como ven, si que puede hacerse al menos una Pseudo-instalación offline de ArchLinux paso a paso sin estar online solo con el CD, aunque obviamente, lo que quedará instalado en el disco duro es esencialmente un LiveCD, pero al menos puede arrancarse un sistema, copiarse archivos, y ejecutar algunas aplicaciones.

Afortunadamente el Arenoso (KZKG^Gaara) pasó por la casa y me copió el repo de Arch (por lo cual le estoy muy agradecido), de modo que pronto pienso terminar de hacer una verdadera instalación offline, pero esto sería otra historia. Lo que puedo asegurarles es que desde hace un tiempo extrañaba un poco esta clase de experimentaciones divertidas. De hecho si tuviese tiempo, conectividad en la casa y ciertas condiciones materiales aseguradas, probablemente intentaría hacer una distribución personalizada basada en LFS, que sería un proyecto mucho más divertido. ;)

The post Pseudo-instalación offline de ArchLinux paso a paso appeared first on Desde Linux.


V0IO8MG84Eg


Continúar leyendo...