Jump to content
From ArchWiki
Esta traducción de Install from existing Linux fue revisada el 2019-11-13. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Artículos relacionados

- Instalar desde SSH

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.

Nota: esta guía requiere que el sistema anfitrión existente sea capaz de ejecutar los nuevos programas de Arch Linux para la arquitectura de destino. Esto significa que tiene que ser un sistema anfitrión x86_64.
Advertencia: Asegúrese de comprender cada paso antes de continuar. Es fácil destruir su sistema o perder datos críticos, y su proveedor de servicios, probablemente, le cobrará mucho para ayudarle a recuperarlo.

## 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.

Sugerencia: Para evitar volver a descargar todos los paquetes, considere seguir Pacman (Español)/Tips and tricks (Español)#Caché de pacman compartida en red o utilizar la opción `-c` de pacstrap'.
Sugerencia: Cuando se utiliza el cargador de arranque grub, el script `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 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#Configuration 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.

Nota: antes de continuar, asegúrese de que la última versión de squashfs esté instalada en el sistema anfitrión. De lo contrario, obtendrá errores como los siguientes: `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

Sugerencia: La instalación y ejecución de haveged debe realizarse en el sistema anfitrión, ya que no es posible instalar paquetes antes de inicializar pacman keyring y porque systemd detectará que se está ejecutando en un entorno chroot e ignorará la solicitud de activación. Si continúa haciendo `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.

Nota:

- 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` y `MODULES` 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#Image creation and activation.
- 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.

Category:

- Installation process (Español)