lunes, 8 de octubre de 2012

Instalando ARCH Linux en una máquina virtual

Hola, en este post vamos a ver como instalar en una máquina virtual (cuyo servidor configuramos previamente en este blog aquí) ARCH Linux 64 bits y todas sus optimizaciones.
Pueden como crear una nueva VM en el post anterior, sólo deben cambiar el tipo de sistema operativo. En mi caso cree una VM con 10Gb de espacio.




1) Empezamos: Bajamos la ISO de Arch de http://www.archlinux.org/download/ y la montamos para la máquina virtual. Ni bien comienza debemos elegir x86_64 (nuestro caso)


Arrancamos y luego nos devuelve una terminal como root.


2) Escribimos el comando
loadkeys la-latin1
Para cargar el teclado en castellano. En mi caso era ese, para ver todas las distribuciones "más comunes" hacer
ls /usr/share/kbd/keymaps/i386/qwerty
3) Hacemos las particiones con fdisk. primero ejecutamos
fdisk -l
para ver que discos tenemos. en mi caso es el /dev/sda asi que hacemos
fdisk /dev/sda
NOTA: Supongo que el disco es de 10G.
Creamos una tabla de particiones nueva con el comando "o". Para crear particiones presionamos "n", luego "p", luego "enter" ("1" es el default), luego "enter" ("2048" es el default), luego "+9G", aquí hicimos la particion de "/". Luego "n" de vuelta, luego "p", luego "enter" ("2" es el default), luego "enter" (deja el default) y luego "enter" de vuelta (deja el default) para completar el espacio en disco. Esta va a ser nuestra partición de swap.
Luego escribimos "t", luego "2", luego "82". (esto es para marcar como swap la partición número 2)
Luego escribimos "w" para grabar los cambios.

4) Formateamos esas particiones
mkfs -t ext4 /dev/sda1
mkswap /dev/sda2
5) Tengo que activar la partición de swap
swapon /dev/sda2
6) Monto lo que va a ser el / sobre /mnt
mount /dev/sda1 /mnt
7) Monto el /home
mkdir -p /mnt/boot
(creo el directorio /boot por las dudas pero lo voy a colgar en la misma partición que mi /, no en una separada)
mkdir -p /mnt/home
8) Conexión a internet: Como estamos en una máquina virtual y le pusimos una NIC con driver virtio, ya tenemos nuestro eth0 configurado. Sólo hacemos un ping para comprobar que esté todo bien.
ping -c 4 www.google.com
deberiamos ser capaces de pinguear a google sin más.

9) Instalo todos los paquetes base necesarios para arrancar ARCH
pacstrap /mnt base base-devel dialog net-tools git wget linux-headers open-vm-tools
10) Instalo el bootloader (GRUB)
pacstrap /mnt grub os-prober 
NOTA: Si tu mother usa EFI/UEFI/GPT, tenes que realizar otro procedimiento.

11) Genero el fstab
genfstab -p /mnt >> /mnt/etc/fstab
12) Hago chroot a lo que va a ser mi / en el futuro
mount -o bind /dev /mnt/dev
mount -t proc /proc /mnt/proc
mount -t sysfs /sys /mnt/sys
modprobe dm-mod
chroot /mnt bash
dhcpcd eth0
Sólo hacemos un ping para comprobar que esté todo bien.
ping -c 4 www.google.com
deberiamos ser capaces de pinguear a google sin más.

13) Edito el archivo
nano /etc/mkinitcpio.conf
para armar la imagen de inicio y agrego en la sección MODULES lo siguiente
MODULES="virtio virtio_blk virtio_pci virtio_net"
y luego hacemos
mkinitcpio -p linux
para armar la imagen de inicio.

14) Configuro GRUB2
grub-install --no-floppy /dev/vda
grub-mkconfig -o /boot/grub/grub.cfg

15) Establecer una password de root
passwd
16) Salir del chroot
exit
17) reiniciamos!
reboot

18) Si todo salió bien, como fue mi caso, arrancamos con el nuevo ARCH en modo texto. Iniciamos con usuario root y contraseña la que pusimos en el paso 15. Una vez que reiniciamos, veremos al grub


y luego nos pedirá el login, ingresamos con usuario root y la contraseña que hayamos ingresado.


Volvemos a configurar el teclado en español
loadkeys la-latin1
Luego nos disponemos a configurar el nombre de la computadora
hostnamectl set-hostname nombre_de_la_compu
pongo "nombre_de_la_compu" (pone el que más te guste)

19) Configuramos la fuente y la distribución del teclado para la consola. Para eso editamos
nano /etc/vconsole.conf
y agregamos (el archivo esta vacío)
KEYMAP=la-latin1
FONT=lat9v-16
FONT_MAP=8859-1_to_uni
y luego hacemos
chmod 644 /etc/vconsole.conf
chown root:root /etc/vconsole.conf
y ahora seteamos la configuración por defecto
localectl set-keymap la-latin1
Ahora hacemos
nano /etc/mkinitcpio.conf
y agregamos "consolefont" y "keymap" en la sección "HOOKS" del archivo. Con esto agregamos la configuración a la imagen de inicio para tener la configuración desde el arranque. Tiene que quedar así la sección HOOKS del archivo
HOOKS="base udev autodetect pata scsi sata filesystems consolefont keymap"
Guardamos, salimos y compilamos la imagen de inicio de vuelta:
mkinitcpio -p linux
20) Configuramos la localización
nano /etc/locale.gen
descomentar los dos ES-AR (utf e iso8859-1) y luego ejecutar
locale-gen
localectl set-locale LANG="es_AR.ISO-8859-1"
Esto además nos provee la ventaja de que queda configurado para X11 también.

21) Establecer la zona horaria
timedatectl set-timezone America/Argentina/Buenos_Aires
22) Establecer el reloj de la computadora con NTP (recordar configurar la interfaz primero con dhcpcd eth0)
pacman -Sy ntp libedit
nano /etc/ntp.conf
y colocamos los servidores de Argentina en mi caso
server 0.ar.pool.ntp.org iburst
server 2.south-america.pool.ntp.org iburst
server 3.south-america.pool.ntp.org iburst 
Luego guardamos y salimos. Habilitamos el arranque por defecto
systemctl enable ntpd
Ahora comprobamos su funcionamiento (puede tardar hasta media hora en sincronizar, a mi me tardó 3 minutos)
systemctl start ntpd
ntpq -np
Tenemos que ver uno de los servidores con un asterisco. Eso significa que la hora ya está sincronizada con la de hora de la red.


23) Agregamos repositorios: yo el único que quiero agregar a los que vienen por defecto es "multilib", así que hago:
nano /etc/pacman.conf
y lo descomento, y luego, actualizamos las bases de datos y los paquetes del sistema entero con
pacman -Syu
24) Creamos un usuario, en este caso el mio se llama faktorqm
adduser faktorqm
Ese comando les va a solicitar varios datos, yo deje a todos los que vienen por defecto. En la lista de grupos, desde la implementación de systemd ya no es necesario agregarlo a los grupos, así que esa parte la omitimos.

25) Instalamos reflector. Reflector es un programa que sirve para mantener actualizada la lista de los servidores más rápidos según el propio ranking de la página de ARCH.
pacman -Sy reflector
y finalmente, cada vez que se quieran determinar mejores mirrors:
mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
(con esto hacemos una copia de seguridad de la lista de mirrors que estábamos usando por si algo sale mal)
reflector --sort rate -l 10 -f 5 --save /etc/pacman.d/mirrorlist
Para hacer la vida mas fácil, le ponemos un alias para que lo haga automáticamente y no tener que andar acordándonos de tan tediosos comandos
nano /home/faktorqm/.bashrc
y ahí­ se agrega una lí­nea como la que sigue:
alias actualiza_lista_repo="reflector --sort rate -l 10 -f 5 --save /etc/pacman.d/mirrorlist && pacman -Syu"
NOTA: Vos le podes poner el nombre que quieras, yo le puse actualiza_lista_repo.

26) Instalamos yaourt. La comunidad de ARCH mantiene y actualiza muchísimos paquetes que "no están soportados oficialmente" pero la realidad es que funcionan y muy bien. Estos paquetes se encuentran en lo que se conoce como AUR (Arch User Repository o Repositorio de usuarios de ARCH) y yaourt se encarga de compilarlos e instalarlos como paquete. Más info en https://aur.archlinux.org/

Editamos la configuración del pacman para poder agregar el paquete de yaourt.
nano /etc/pacman.conf
y agregamos
[archlinuxfr]
Server = http://repo.archlinux.fr/x86_64
y luego hacemos
pacman -Sy yaourt
y ya está. La sintaxis para instalar/desinstalar es igual o casi igual que para pacman.

27) Instalamos un servidor de SSH sin seguridad
pacman -Sy openssh
lo configuramos en /etc/ssh/sshd_config
y luego habilitamos el servicio
systemctl enable sshd.service
y ahora lo activamos con
systemctl start sshd.service
Recordar abrir el puerto en el firewall:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Para hacerlo permanente deben agregarlo en algún administrador de perfiles de firewall que tengan o sino en /home/usuario/.bashrc

28) Instalamos algunos paquetes (aplicaciones) más que nos van a ser muy útiles a la hora de configurar nuestro sistema
pacman -Sy jre7-openjdk samba pkgfile bash-completion sudo dosfstools ntfs-3g cups cups-pdf wget net-tools
El jre7 es el Java runtime environment (entorno de ejecución de Java).
El samba es para compartir archivos en una red con clientes Windows.
Si lo instalan, acuérdense de agregarlo al inicio del sistema con
systemctl enable smbd.service
El pkgfile es un programa que te permite buscar en que paquete está un determinado ejecutable, es sumamente útil para instalar paquetes que nos faltan. Se usa así:
- para actualizar la base de datos: pkgfile --update
- para buscar: pkgfile -s nombre_del_archivo
El paquete bash-completion sirve para autocompletar comandos en bash presionando la tecla TAB.
Para poder usar sudo tengo que agregar a mi usuario al grupo wheel
gpasswd -a faktorqm wheel
visudo
y descomento la linea que dice %wheel ALL=(ALL) ALL y grabo presionando ":wq" (sin comillas). Lamentablemente hay que reiniciar para que funcione, asi que esperamos hasta el último paso.
El paquete dosfstools es para poder formtear pendrives en FAT32.
Si queres automontar las particiones de Windows con ntfs-3g (de lo contrario solo root las puede montar)
mkdir -p /media/windows
nano /etc/fstab
y luego debe quedar así la línea que le agregamos al fstab:

/dev/sdb1 /media/windows ntfs-3g gid=users,fmask=113,dmask=002 0 0

Los parámetros gid=users,fmask=113,dmask=002 esto es para que los que están en el grupo de usuarios puedan escribir tranquilos en la partición.
Cups es para imprimir y cups-pdf es para tener una impresora PDF.
El wget es para bajar archivos desde la consola.
El paquete net-tools es el que provee comandos tipo ifconfig.


Imagen tomada de aquí.

Por ahora, esto es hasta donde quería llegar. Tener un ARCH 64 bits sin interfaz gráfica y con SSH disponible. Espero les haya servido. Saludos!!!

No hay comentarios:

Publicar un comentario