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

Pseudo-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. 😉


El contenido del artículo se adhiere a nuestros principios de ética editorial. Para notificar un error pincha aquí.

19 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   petercheco dijo

    Espero que pruebes FreeBSD Elav.
    En cuánto a tu guía, muy muy muy buena y completita…

    1.    Ramp dijo

      Que cambiante eres. Te aseguro que te aburriras de FreeBSD en unos meses.

      1.    lf dijo

        Interesante informacion, sin embargo aun no veo guias para instalar arch en sistemas con UEFI no tienen PC nuevas los archers?

        1.    elav dijo

          La instalación con UEFI en ArchLinux se simplifica instalando Antergos, solamente tienes que crear una partición en Fat32 con menos de 500MB y automáticamente (cuando inicias el USB con UEFI), Antergos marcará la partición como /boot.

      2.    petercheco dijo

        Por eso cambio… Para no cambiar más me paso de Linux a BSD :D.

    2.    petercheco dijo

      Cambio realizado y guía escrita :D.

    1.    Ozkar dijo

      Mantente usando Arch, que cuando vaya a La Habana paso a recogerlo.

  2.   Alex dijo

    Tengo un iso de Arch Linux en mi usb no me atrevia a usarlo por falta de tiempo.
    Voy a echarle un buen repaso al articulo y despues a usarlo!!.

  3.   Warheart dijo

    Excelente articulo, por cierto que me recuerda la odisea que pase para instalar Arch via WIFI con una BCM4312.

  4.   kalevito dijo

    Elav, disculpa la pregunta pero soy nuevo en linux, solamente he utilizado ubuntu y me llama la atención arch linux. Mis amigos dicen q no podre instalarla xq es para expertos, pero viendo tu tutorial offline, pienso que siguiendo paso a paso puedo hacerlo, es un reto para mi instalarlo. Solo que lo quiero hacer con Internet, alli mi pregunta: tienes o cuando haras un tutorial con tanto detalle (como este ) para instalarlo?

    1.    daecko dijo

      la guia esta publicada en este mismo sitio.. https://blog.desdelinux.net/guia-de-instalacion-de-arch-linux-2014/

      😀 Asi que utilizando la guia y poniendo atencion en lo que se realiza tendremos una instalacion sin complicaciones suerte¡¡¡¡

    2.    elav dijo

      Igual puedes instalar Antergos, que es Archlinux pero con instalación «a lo Ubuntu».. 😀

  5.   aphanic dijo

    En Arch hay otro medio de instalación alternativo a las imágenes oficiales llamado Archboot que a diferencia de las imágenes oficiales contiene el repositorio [core] (y alguna cosa más), útil para hacer instalaciones offline (además es de arquitectura híbrida, sirve para i686 y para x86_64).

    Lo malo es que ocupa 1GB ahora mismo (solía ocupar mucho menos hace años) que habría que descargarse anteriormente… y sin conexión estable para hacer esa descarga inicial es complicado.

    Os dejo aquí un enlace por si os resulta útil: https://wiki.archlinux.org/index.php/archboot

    1.    elav dijo

      Interesante, no lo conocía 😀

    2.    Hugo dijo

      Pues curiosamente hace un rato probé archboot y cuando llego a la parte del pacstrap me dice que no puede encontrar el paquete ntfs-3g 🙁

      Además tiene otras peculiaridades, como que no trae mc ni las paginas de manual, y necesita bastante ram para instalarse. No parece una solución bien pulida.

  6.   Max Steel dijo

    La verdad es que sí hay una forma muy sencilla de instalar arch offline y la cual tuve que hacer el cásico prueba y error para instalarlo en la PC de casa (donde no tengo internet).

    Para ello se necesita obviamente alguna otra PC con arch y conexión a internet. Basta con hacer un pacman -Syu primero y luego un pacman -Sw base (más todo lo que quieran instalar obviamente). Copiar todos los archivos del cache de pacman a una memoria usb y también los archivos de base de datos (/var/lib/pacman/sync/{core.db, extra.db, community.db}.

    Después proceder a hacer la instalación normal de arch, pero antes de llegar al punto de hacer el pacstrap – d /mnt base (o lo que sea, todo lo digo de memoria >.< ) hay que editar precisamente a pacstrap (con vi o lo que prefieran o traiga el disco de instalación) y casi hasta el final hay una línea que hace referencia a "pacman -Syy", simplemente la borramos. Seguido de esto copiamos los archivos de la base de datos de pacman a su lugar correspondiente (todos los .db a /var/lib/pacman/sync), y los archivos de cache al directorio de cache.

    Entonces ahora sí procedemos con pacstrap -loquenomeacuerdo /mnt base y todo lo demás.

    Todo eso lo digo de memoria, así que puede haber algún detalle que se me haya ido, como lo de los archivos de cache no recuerdo exactamente dónde van pero debería ser en /var/cache/pacman/pkg o si no se puede especificar en pacstrap me parece.

  7.   leonel dijo

    Podrían hacer un tuto de cfdisk con doble o triple boot 🙁 ,bes lo que me falta para instalar arch

    1.    Hugo dijo

      Realmente no hay mucho que decir en cuanto a cfdisk ya que no es para nada complejo, y de hecho en la guía de instalación a la que hacen referencia más arriba se muestra básicamente como usarlo. Pero igual si tienes otros sistemas instalados podrías usar otra cosa más amistosa, Gparted quizás. Para Windows hay una herramienta gratuita (aunque lamentablemente no libre) llamada Easeus Partition Master que podrías utilizar, parece funcionar muy bien.

      Por lo demás me alegro que les haya parecido interesante el artículo, yo no le veía el gran mérito a mi experiencia, pero Elav me animó a preparar algo al respecto.