Vamos a instalar la distributión Arch Linux en una memoria USB desde un sistema preexistente GNU/Linux (Debian).
Este artículo no trata de crear un live USB sino una distribución estandar en una memoria USB.
Realizaremos la instalación de Arch Linux en un proceso de dos pasos. Primero crearemos un lanzador (bootstrap) de Arch Linux en nuestro sistema huesped Debian.
Después ejecutaremos chroot para introducirnos en el lanzador, y entonces instalaremos Arch Linux en la memoria USB.
Instalar Arch Linux desde un sistema Debian preexistente en una memoria USB
Instalar desde un Linux preexistente:
https://wiki.archlinux.org/index.php/Install_from_existing_Linux
Primero enchufamos el dispositivo USB, y comprobamos los dispositivos y particiones con el comando lsblk:
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 system cbdfff17-0865-448e-b7c1-04a50d168439 /
├─sda2 swap ee7134ec-a542-4c42-8b2e-8e40d3f59980 [SWAP]
└─sda3 ext4 home 9fbcbeb8-8723-43e1-8d08-340af9e14b8b /home
sdb
└─sdb1
sr0
Vamos a instalar Arch Linux en el dispositivo /dev/sdb (usa el adecuado para tu sistema)
Particionamos el dispositivo y creamos una partición arrancable.
$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 15 GiB, 16131293184 bytes, 31506432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x04030201
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 31506431 31504384 15G 83 Linux
Formateamos la partición con el sistema de ficheros ext4 sin journaling para minimizar el número escrituras a la memoria USB.
$ sudo mkfs.ext4 -O "^has_journal" -L 'ArchUSB' /dev/sdb1
Descargamos el lanzador de Arch Linux
La arquitectura de mi sistema es x86_64.
$ uname -m
x86_64
Obtenemos la imagen ISO del lanzador de un mirror listado en la siguiente página:
https://www.archlinux.org/download/
Descargamos el lanzador:
$ curl -O http://sunsite.rediris.es/mirror/archlinux/iso/2016.11.01/archlinux-bootstrap-2016.11.01-x86_64.tar.gz
Bajamos la firma al mismo directorio:
$ curl -O http://sunsite.rediris.es/mirror/archlinux/iso/2016.11.01/archlinux-bootstrap-2016.11.01-x86_64.tar.gz.sig
Y verificamos que la firma coincide con la imagen ISO:
$ gpg --keyserver-options auto-key-retrieve --verify archlinux-bootstrap-2016.11.01-x86_64.tar.gz.sig
Creamos el directorio en el sistema huesped para extraer el lanzador:
$ mkdir arch_chroot
Extraemos el archivo tar.gz:
$ tar xzf archlinux-bootstrap-2016.11.01-x86_64.tar.gz -C arch_chroot
Editamos arch_chroot/root.x86_64/etc/pacman.d/mirrorlist y descomentamos el mirror que vamos a usar:
(Descomentar varios mirrors es una buena idea)
P.ej:
Server = http://sunsite.rediris.es/mirror/archlinux/$repo/os/$arch
Vamos a entrar en la jaula chroot:
https://wiki.archlinux.org/index.php/Change_root
$ sudo mount --bind arch_chroot/root.x86_64 arch_chroot/root.x86_64 # Esto proporciona / en el entorno chroot.
$ cd arch_chroot/root.x86_64/
$ sudo cp /etc/resolv.conf etc
$ sudo mount -t proc /proc proc
$ sudo mount --rbind /sys sys
$ sudo mount --rbind /dev dev
$ sudo mount --rbind /run run # (asumiendo que /run existe en el sistema)
$ sudo chroot . /bin/bash
[root@ /]#
Ahora estamos dentro de la jaula chroot.
Instalamos los paquetes que necesitamos en el lanzador de Arch Linux
Primero vamos a inicializar el administrador de paquetes pacman:
https://wiki.archlinux.org/index.php/Pacman
Inicializamos el anillo de claves de pacman:
https://wiki.archlinux.org/index.php/Pacman-key#Initializing_the_keyring
# pacman-key --init
El sistema necesitará entropía así que abrimos otra consola (en la máquina huesped) y ejecutamos
$ ls -Ra /
varias veces.# pacman-key --populate archlinux
https://wiki.archlinux.org/index.php/Mirrors#Enabling_a_specific_mirror
sincronizamos las bases de datos de paquetes: (si un servidor no funciona editamos más en etc/pacman.mirrorlist)
# pacman -Syyu
:: Synchronizing package databases...
Instalamos los paquetes básicos:
# pacman -S base
Instalamos los paquetes básicos de Arch Linux en la memoria USB
Guía general de instalación:
https://wiki.archlinux.org/index.php/Installation_guide
Montamos el dispositivo USB en el directorio /mnt:
# mount /dev/sdb1 /mnt
Instalamos los paquetes base:
# pacstrap /mnt base
Generamos el fichero fstab (Yo uso -U para usar el UUID en las definiciones):
# genfstab -U /mnt /mnt/etc/fstab
Comprobamos que /mnt/etc/fstab contiene los datos correctos.
Cambiar a usuario root en el nuevo sistema:
# arch-chroot /mnt
Configuramos la zona horaria: (utiliza tu Región y Ciudad /usr/share/zoneinfo/Región/Ciudad )
# ln -s /usr/share/zoneinfo/Europe/Madrid /etc/localtime
Ejecutamos hwclock(8) para generar /etc/adjtime:
# hwclock --systohc
Locale
Descomentamos en_US.UTF-8 UTF-8 y las localizaciones que necesitemos en /etc/locale.gen, y la generamos mediante:# locale-gen
Configuramos la variable LANG en locale.conf(5) adecuadamente, por ejemplo:
/etc/locale.conf
LANG=en_US.UTF-8
No existía así que la creamos:
# echo "LANG=en_US.UTF-8" /etc/locale.conf
Teclado
Si configuras el mapa del teclado, recuerda hacer los cambios persistentes en vconsole.conf(5):/etc/vconsole.conf
P.ej: KEYMAP=de-latin1
Para listar los mapas de teclado disponibles:
# ls /usr/share/kbd/keymaps/**/*.map.gz
Elijo 'es' para el mapa de teclado en español:
# echo "KEYMAP=es" /etc/vconsole.conf
Hostname
Creamos el fichero hostname(5):/etc/hostname
P.ej: A mi sistema lo llamo archUSB:
# echo "archUSB" > /etc/hostname
Considerar el añadir una entrada que concuerde al fichero hosts(5):
/etc/hosts
127.0.0.1 localhost.localdomain localhost ::1 localhost.localdomain localhost 127.0.1.1 archUSB.localdomain archUSB
Password de Root
Configuramos el password del usuario root:# passwd
Configuración de red (dentro de la jaula chroot)
Configuramos la red para en entorno recien instalado
https://wiki.archlinux.org/index.php/Network_configuration
Para la configuración 'Wireless', instalamos iw, wpa_supplicant, el paquete dialog, y los paquetes que sean necesarios de firmware.
Instalamos en administrador de red:
# pacman -S networkmanager
y dhclient:
# pacman -S dhclient
Initramfs
En este caso vamos a necesitar crear un nuevo initramfs.
Modificamos el fichero mkinitcpio.conf(5):
Editamos y decomentamos ésto en /etc/mkinitcpio.conf para que aparezca la palabra block:
HOOKS="base udev block filesystems"
Para evitar el error crc32c al cargar los módulos:
MODULES="crc32 libcrc32c crc32c_generic crc32c-intel crc32-pclmul"
Recreamos la imagen initramfs:
# mkinitcpio -p linux
BOOTLOADER
Bootloader (Selecciono GRUB porque mi sistema no soporta UEFY):
https://wiki.archlinux.org/index.php/GRUB#BIOS_systems
Instalo grub en lugar de grub-legacy:
# pacman -S grub
# grub-install --target=i386-pc /dev/sdb
ó
# grub-install --target=i386-pc --recheck /dev/sdb
Installing for i386-pc platform.
Installation finished. No error reported.
# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image(s) in /boot: initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
done
Salimos del último entorno chroot usando el comando exit:
# exit
Ahora desmontamos manualmente todas las particiones (si alguna esta ocupada usamos fuser para buscar la causa)
# umount -R /mnt
Salimos del segundo chroot
# exit
Ahora volvemos a estar en el sistema huesped:
$ cd ..
$ sudo umount -R root.x86_64
Ahora ya podemos arrancar nuestro nuevo sistema Arch Linux en la memoria USB, o testearlo en un emulador.
Para testear la memoria USB con Arch Linux en virtualbox:
VirtualBox: add a physical hard disk to your virtual machine in Debian
Configuración de la red (en el sistema en marcha Arch Linux de la memoria USB)
https://wiki.archlinux.org/index.php/Network_configuration
Vamos a configurar una dirección dinámica en una interfaz de red cableada.
Hay que elegir un método de configuración de la red porque varios métodos a la vez pueden causar conflictos.
Comprobamos el estado actual de las interfaces de red
P.ej: Mostramos todos los dispositivos de red:$ ip link show
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0:
link/ether 70:5a:b6:43:58:8c brd ff:ff:ff:ff:ff:ff
P.ej: Mostramos las direcciones:
$ ip address
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0:
link/ether 70:5a:b6:43:58:8c brd ff:ff:ff:ff:ff:ff
inet 192.168.0.105/24 brd 192.168.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::725a:b6ff:fe43:588c/64 scope link
valid_lft forever preferred_lft forever
Configuramos la red usando dhclient
Para que ésto funcione necesitamos que hayamos instalado dhclient durante el proceso de bootstrap:# packman -S dhclient
Activamos el dispositivo de red:
# ip link set enp0s3 up
Pedimos una dirección dinámica:
# dhclient enp0s3
Comprobamos que funciona:
# ip address show enp0s3
# ping www.google.com
Cómo configurar un perfil de netctl y ponerlo en marcha
Configuramos la red usando un perfil (P.ej: el perfil dhcp)https://wiki.archlinux.org/index.php/Netctl
Copiamos el perfil de ejemplo:
# cp /etc/netctl/examples/ethernet-dhcp /etc/netctl/my-ethernet-dhcp-profile
Lo editamos para que coincida con el nombre de nuestra interfaz de red:
# nano /etc/netctl/my-ethernet-dhcp-profile
cambiamos Interface=eth0 a Interface=enp0s3
Hay que asegurarse que el dispositivo esta desactivado cuando ponemos en marcha el perfil:
# ip link set enp0s3 down
Lanzamos el perfil:
# netctl start my-ethernet-dhcp-profile
Comprobamos que funciona:
# ping www.google.com
La siguiente vez que arranquemos el sistema el perfil se ejecutará automáticamente.
Cómo configurar el servidor SSH
Si queremos conectarnos remotamente al sistema Arch Linux podemos usar un servidor sshd.
https://wiki.archlinux.org/index.php/Secure_Shell
Instalamos el servidor de ssh:
# pacman openssh
Editamos el fichero de cofniguración para el servidor de ssh:
# nano /etc/ssh/ssdh_config
Si queremos loguearnos como root (aunque es inseguro):
PermitRootLogin yes
Lanzamos el servidor
# systemctl edit sshd.socket
https://wiki.archlinux.org/index.php/Start
# systemctl start sshd.socket
Si falla, para mirar los logs:
# journalctl /usr/bin/sshd
En la máquina remota ejecutamos:
$ ssh -l root address_of_your_arch_linux_machine
TRADUCIDO DE
How to install Arch Linux on a USB key from an existing Linux (Debian)
REFERENCIA
Arch Linux distro - Introduction
Improving_performance (Arch Linux wiki)
No hay comentarios:
Publicar un comentario