Install Arch Linux from existing Linux (Español)
Este documento describe el proceso de bootstrapping necesario para instalar Arch Linux desde un sistema anfitrión de Linux en ejecución. Después del bootstrapping, la instalación continúa como se describe en la guía de instalación.
La instalación de Arch Linux desde un sistema Linux en ejecución es útil para:
- instalar remotamente Arch Linux, por ejemplo, un servidor root (virtual);
- sustituir un Linux existente sin un LiveCD (véase #Reemplazar el sistema existente sin un LiveCD);
- crear un distribución Linux nueva o LiveCD basada en Arch Linux;
- crear un entorno chroot de Arch Linux, por ejemplo para un contenedor de base Docker;
- rootfs-sobre-NFS para máquinas sin disco.
El objetivo del procedimiento de bootstrapping es configurar un entorno desde el que ejecutar los arch-install-scripts (tales como pacstrap
y arch-root
).
Si el sistema anfitrión ejecuta Arch Linux, esto se puede lograr simplemente instalando arch-install-scripts. Si el sistema anfitrión ejecuta otra distribución de Linux, primero deberá configurar un entorno chroot basado en Arch Linux.
Realizar copia de seguridad y preparación
Haga una copia de seguridad de todos sus datos, incluidos correos electrónicos, servidores web, etc. Tenga toda la información a su alcance. Preserve todas las configuraciones de su servidor, nombres de equipos, etc.
Aquí hay una lista de datos que probablemente necesitará:
- Direcciones IP.
- Nombre(s) de equipo, (nota: los servidores raíces también son en su mayoría parte del dominio de proveedores, verifique o guarde su
/etc/hosts
antes de eliminar). - Servidores DNS (compruebe
/etc/resolv.conf
). - Claves SSH (si otras personas trabajan en su servidor, de lo contrario tendrán que aceptar nuevas claves. Esto incluye claves de su Apache, sus servidores de correo, su servidor SSH y otros).
- Información de hardware (tarjeta de red, etc. Consulte su preinstalado
/etc/modules.conf
). - Archivos de configuración de Grub.
En general, es una buena idea tener una copia local de su directorio original /etc
en su disco duro local.
Desde un sistema anfitrión que ejecuta Arch Linux
Instale el paquete arch-install-scripts.
Siga Installation guide (Español)#Montar los sistemas de archivos para montar el sistema de archivos y todos los puntos de montaje necesarios. Si ya utiliza el directorio /mnt
para otra cosa, simplemente cree otro directorio como /mnt/install
, y úselo en su lugar como la base del punto de montaje.
Crear una nueva instalación de Arch
Siga la Installation guide (Español)#Instalación.
Respecto a la Installation guide (Español)#Seleccionar los servidores de réplica se puede omitir ya que el equipo debería tener una lista de servidores de réplica correcta.
-c
de pacstrap'.grub-mkconfig
puede detectar dispositivos incorrectamente. Esto resultará en Error:no such device
al intentar arrancar desde el dispositivo. Para resolver este problema, desde el sistema anfitrión que ejecuta Arch Linux, monte las particiones recién instaladas, ejecute arch-chroot en la nueva partición, luego instale y configure grub. El último paso puede requerir desactivar lvmetad en /etc/lvm/lvm.conf
configurando use_lvmetad=0
.Crear una copia de una instalación de Arch existente
Es posible replicar una instalación existente de Arch Linux copiando el sistema de archivos del sistema anfitrión a la nueva partición y hacer algunos ajustes para que sea arrancable y única.
El primer paso es copiar los archivos del anfitrión en la nueva partición montada, para esto, considere usar el enfoque presentado en rsync#Full system backup.
Luego, siga el procedimiento descrito en Installation guide (Español)#Configuración del sistema con algunas salvedades y pasos adicionales:
- Installation guide (Español)#Zona horaria, Installation guide (Español)#Idioma del sistema y Installation guide (Español)#Contraseña de root se pueden omitir.
- Installation guide (Español)#Initramfs puede ser necesario en particular si se cambia el sistema de archivos, por ejemplo de ext4 (Español) a Btrfs.
- Con respecto a Installation guide (Español)#Instalar gestor de arranque, es necesario reinstalar el cargador de arranque.
- Elimine
/etc/machine-id
para que se genere un id nuevo y único en el próximo arranque.
Si la instalación replicada de Arch se quiere usar dentro de una configuración diferente o con otro hardware, considere las siguientes operaciones adicionales:
- Utilice microcode para la actualización de la CPU adaptada al sistema de destino durante el paso Installation guide (Español)#Instalar gestor de arranque.
- Si alguna Xorg (Español)#Configuración específica estuvo presente en el anfitrión y puede ser incompatible con el sistema de destino, siga Moving an existing install into (or out of) a virtual machine#Disable any Xorg-related files.
- Realice cualquier otro ajuste apropiado para el sistema de destino, como reconfigurar la red o el audio.
Desde un sistema anfitrión que ejecuta otra distribución de Linux
Existen múltiples herramientas que automatizan una gran parte de los pasos descritos en las siguientes subsecciones. Consulte sus respectivas páginas de inicio para obtener instrucciones detalladas.
- arch-bootstrap (Bash)
- digitalocean-debian-to-arch (disco de reparticionado, específico de DigitalOCean)
- image-bootstrap (Python)
- vps2arch (Bash)
En las siguientes subsecciones se presenta la forma de hacerlo manualmente. La idea es hacer que pacman trabaje directamente en el sistema anfitrión, o ejecutar un sistema Arch dentro del sistema anfitrión, con la instalación real ejecutada desde el sistema Arch. El sistema anidado estará contenido dentro de un entorno chroot.
Utilizar pacman desde el sistema anfitrión
Pacman puede compilarse en la mayoría de las distribuciones de Linux y usarse directamente en el sistema anfitrión para arrancar Arch Linux. El script arch-install-scripts debería ejecutarse sin problemas directamente de las fuentes descargadas en cualquier distribución reciente.
Algunas distribuciones proporcionan un paquete para pacman y/o arch-install-scripts en sus repositorios oficiales que pueden usarse para este propósito. Desde febrero de 2019, se sabe que «Gentoo» proporciona el paquete pacman, y «Alpine Linux» y «Fedora» se sabe que proporcionan tanto pacman como arch-install-scripts.
Crear un entorno chroot
A continuación se presentan dos métodos para configurar e ingresar en chroot, desde el más fácil hasta el más complicado. Seleccione solo uno de los dos métodos. Luego, continúe en #Utilizar un entorno chroot.
Método A: utilizar una imagen de bootstrap (recomendado)
Descargue la imagen de bootstrap desde un servidor de réplica en /tmp
.
También puede descargar la firma (misma URL con .sig
añadido) y verifíquela con GnuPG.
Extraiga el tarball:
# tar xzf <path-to-bootstrap-image>/archlinux-bootstrap-*-x86_64.tar.gz
Seleccione un servidor de repositorio editando /tmp/root.x86_64/etc/pacman.d/mirrorlist
.
Entre en entorno chroot:
- Si tiene instalado bash 4 o posterior, y la orden unshare admite las opciones --fork y--pid, ejecute:
# /tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/
- De lo contrario, ejecute las siguientes órdenes:
# mount --bind /tmp/root.x86_64 /tmp/root.x86_64 # cd /tmp/root.x86_64 # cp /etc/resolv.conf etc # mount -t proc /proc proc # mount --make-rslave --rbind /sys sys # mount --make-rslave --rbind /dev dev # mount --make-rslave --rbind /run run ## (suponiendo que /run existe en el sistema) # chroot /tmp/root.x86_64 /bin/bash
Método B: utilizar una imagen LiveCD
Es posible montar la imagen raíz desde el soporte de instalación de Arch Linux más reciente y luego hacer un chroot en ella. Este método tiene la ventaja de proporcionar una instalación de Arch Linux en funcionamiento dentro del sistema anfitrión sin la necesidad de prepararlo instalando paquetes específicos.
FATAL ERROR aborting: uncompress_inode_table: failed to read block
.- La imagen raíz se puede encontrar en uno de los servidores de réplicas en
arch/x86_64/
. El formato squashfs no es editable, por lo que realizamos la descompresión de la imagen raíz con unsquash y la montamos.
- Para realizar unsquash de la imagen raíz, ejecute:
# unsquashfs airootfs.sfs
- Antes de efectuar chroot, necesitamos configurar algunos puntos de montaje y copiar el archivo resolv.conf a fin tener conexión de red:
# mount --bind squashfs-root squashfs-root # mount -t proc none squashfs-root/proc # mount -t sysfs none squashfs-root/sys # mount -o bind /dev squashfs-root/dev # mount -o bind /dev/pts squashfs-root/dev/pts ## importante para pacman (para comprobar la firma) # cp -L /etc/resolv.conf squashfs-root/etc ## esto es necesario para usar la red dentro del chroot
- Ahora, todo está preparado para pasar al entorno chroot en el recién instalado entorno de Arch:
# chroot squashfs-root bash
Utilizar un entorno chroot
El entorno de arranque es realmente básico (sin nano o lvm2). Por lo tanto, necesitamos configurar pacman para descargar otros paquetes necesarios.
Inicializar el depósito de claves de pacman
Las claves de pacman deben configurarse antes de comenzar la instalación. Antes de ejecutar las siguientes dos órdenes, lea pacman-key (Español)#Inicializar el depósito de claves para comprender los requisitos de la entropía:
# pacman-key --init # pacman-key --populate archlinux
ls -Ra /
en otra consola (TTY, terminal, SSH session...), no tenga miedo de ejecutarlo en un bucle varias veces: cinco o seis veces de repetición desde el sistema anfitrión será suficiente para generar suficiente entropía en un servidor remoto sin encabezado.Seleccionar un servidor de réplica y descargar herramientas básicas
Después de seleccionar un servidor de réplica, actualice la lista de paquetes e instale lo que necesite: base-devel, parted, etc.
- Como todavía no hay ningún editor de texto, debe salir de arch-chroot y editar la lista de servidores de réplicas utilizando el editor de texto del anfitrión.
- Puede que cuando intente instalar paquetes con pacman, obtenga
error: could not determine cachedir mount point /var/cache/pacman/pkg
. Para solucionarlo, puede ejecutar:mount --bind directory-to-livecd-or-bootstrap directory-to-livecd-or-bootstrap
antes de realizar chroot. Vea FS#46169.
Sugerencias de instalación
Ahora puede continuar con Installation guide (Español)#Particionar el disco y seguir el resto de la Installation guide (Español).
Algunos sistemas anfitriones o configuraciones pueden requerir ciertos pasos adicionales. Consulte las secciones siguientes para obtener consejos.
Anfitrión basado en Debian
/dev/shm
En algunos sistemas anfitriones basados en Debian, pacstrap puede producir el siguiente error:
# pacstrap /mnt base
==> Creating install root at /mnt mount: mount point /mnt/dev/shm is a symbolic link to nowhere ==> ERROR: failed to setup API filesystems in new root
Esto se debe a que en algunas versiones de Debian, /dev/shm
apunta a /run/shm
, mientras que en el entorno chroot basado en Arch, /run/shm
no existe y el enlace está roto. Para corregir este error, cree un directorio /run/shm
:
# mkdir /run/shm
/dev/pts
Al instalar archlinux-2015.07.01-x86_64
desde un sistema anfitrión Debian 7, el siguiente error impidió que tanto pacstrap(8) como arch-chroot funcionasen:
# pacstrap -i /mnt
mount: mount point /mnt/dev/pts does not exist ==> ERROR: failed to setup chroot /mnt
Aparentemente, esto se debe a que estos dos scripts usan una característica común. chroot_setup()
[1] se basa en las nuevas características de util-linux, que son incompatibles con Debian 7 (vea FS#45737).
La solución para pacstrap consiste en ejecutar manualmente sus diversas tareas, pero utilizando el procedimiento normal para montar los sistemas de archivos del kernel en el directorio de destino ("$newroot"
):
# newroot=/mnt # mkdir -m 0755 -p "$newroot"/var/{cache/pacman/pkg,lib/pacman,log} "$newroot"/{dev,run,etc} # mkdir -m 1777 -p "$newroot"/tmp # mkdir -m 0555 -p "$newroot"/{sys,proc} # mount --bind "$newroot" "$newroot" # mount -t proc /proc "$newroot/proc" # mount --rbind /sys "$newroot/sys" # mount --rbind /run "$newroot/run" # mount --rbind /dev "$newroot/dev" # pacman -r "$newroot" --cachedir="$newroot/var/cache/pacman/pkg" -Sy base base-devel ... ## add the packages you want # cp -a /etc/pacman.d/gnupg "$newroot/etc/pacman.d/" ## copy keyring # cp -a /etc/pacman.d/mirrorlist "$newroot/etc/pacman.d/" ## copy mirrorlist
En lugar de usar arch-chroot para realizar chroot, simplemente utilice:
# chroot "$newroot"
lvmetad
Intentar crear volúmenes lógicos desde un entorno archlinux-bootstrap-2015.07.01-x86_64
en un sistema anfitrión Debian 7 dará como resultado el siguiente error:
# lvcreate -L 20G lvm -n root
/run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. /dev/lvm/root: not found: device not cleared Aborting. Failed to wipe start of new LV.
(El volumen físico y la creación del grupo de volúmenes funcionaron a pesar del fallo /run/lvm/lvmetad.socket: connect failed: No such file or directory
mostrado.)
Esto podría solucionarse fácilmente creando los volúmenes lógicos fuera de chroot (desde el anfitrión Debian). Luego estarán disponibles una vez que se vuelva a entrar en chroot.
Además, si el sistema que está utilizando tiene lvm, es posible que obtenga la siguiente salida:
# grub-install --target=i386-pc --recheck /dev/main/archroot
Installing for i386-pc platform. /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning. /run/lvm/lvmetad.socket: connect failed: No such file or directory WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
Esto se debe a que debian no usa lvmetad por defecto. Debe editar /etc/lvm/lvm.conf
y establecer use_lvmetad
en 0
:
use_lvmetad = 0
Esto dará más tarde un error en el arranque en la etapa initrd. Por lo tanto, debe volver a cambiarlo después de la generación de grub. En un RAID por software + LVM, los pasos serían los siguientes:
- Después de instalar el sistema, verifique mkinitcpio y la configuración de su gestor de arranque. Consulte Arch boot process (Español)#Gestor de arranque para obtener una lista de cargadores de arranque.
- Es posible que deba cambiar
/etc/mdadm.conf
para que refleje su configuración RAID (si corresponde). - Es posible que deba cambiar sus
HOOKS
yMODULES
de acuerdo con sus requisitos LVM y RAID:MODULES="dm_mod" HOOKS="base udev mdadm_udev ... block lvm2 filesystems ..."
- Lo más probable es que necesite generar nuevas imágenes initrd con mkinitcpio. Vea mkinitcpio (Español)#Creación de la imagen y activación.
- Establezca
use_lvmetad = 0
en/etc/lvm/lvm.conf
. - Actualice la configuración de tu gestor de arranque. Consulte la página wiki de su gestor de arranque para más detalles.
- Establezca
use_lvmetad = 1
en/etc/lvm/lvm.conf
.
Anfitrión basado en Fedora
En sistemas anfitriones basados en Fedora y USB live, puede encontrar problemas al usar genfstab para generar su fstab. Elimine las entradas duplicadas y la opción «seclabel» donde aparezca, ya que esto es específico de Fedora y evitará que su sistema arranque normalmente.
Cosas que verificar antes de reiniciar
Antes de reiniciar, vuelva a verificar algunos detalles en su instalación para lograr una instalación exitosa. Para hacerlo, primero entre en chroot en el sistema recién instalado y luego:
- Cree un usuario con contraseña, para que pueda iniciar sesión a través de sh. Esto es crítico ya que el inicio de sesión raíz está desactivado por defecto desde OpenSSH-7.1p2.
- Establezca una contraseña de root para que pueda cambiar a root a través de su más tarde.
- Instale una solución ssh y active su instancia de servidor para iniciarse automáticamente en el arranque.
- Configure su conexión de red para que la conexión se inicie automáticamente en el arranque.
- Configure un gesgtor de arranque y configúrelo para usar la partición de intercambio que se apropió anteriormente como la partición raíz. Es posible que desee configurar su gestor de arranque para poder arrancar en su sistema anterior; es útil reutilizar la partición
/boot
existente del servidor en el nuevo sistema para este propósito.
Reemplazar el sistema existente sin un LiveCD
Encuentre ~700 MB de espacio libre en algún lugar del disco, por ejemplo, formateando una partición de intercambio. Puede desactivar la partición de intercambio y configurar su sistema allí.
Establecer la antigua partición de intercambio como nueva partición raíz
Compruebe cfdisk
, /proc/swaps
o /etc/fstab
para encontrar su partición de intercambio. Suponiendo que su disco duro esté ubicado en sdaX
(X
será un número).
Haga lo siguiente:
Desactive el espacio de intercambio:
# swapoff /dev/sdaX
Crea un sistema de archivos en él:
# fdisk /dev/sda (establezca el campo de identificación de /dev/sdaX para "Linux" - Hex 83) # mke2fs -j /dev/sdaX
Crea un directorio para montarlo:La instalación de Arch Linux
# mkdir /mnt/newsys
Finalmente, monte el nuevo directorio para instalar el sistema:
# mount -t ext4 /dev/sdaX /mnt/newsys
Instalación
Instale los paquetes esenciales y cualquier otro paquete requerido para obtener un sistema con conexión a Internet en funcionamiento en la partición temporal, teniendo cuidado con el límite de los ~700 MB de espacio. Cuando especifique paquetes para instalar con pacstrap, considere agregar el indicador -c
para evitar llenar un espacio valioso descargando paquetes al sistema anfitrión.
Una vez que el nuevo sistema Arch Linux esté instalado, arregle la configuración del cargador de arranque, luego reinicie en el sistema recién creado y realice rsync de todo el sistema en la partición primaria.