miércoles, 26 de abril de 2017

Instalando ARCH GNU/Linux en un VMWare Workstation

Hola, en este post vamos a ver como instalar en una máquina virtual (cuyo servidor es VMWare Workstation PRO 12) un ARCH Linux 64 bits y todas sus optimizaciones.
Para crear una VM nueva, yo seleccioné Other Linux 64bits, 10Gb de espacio, 4gb de ram y 2 procesadores de 2 cores cada uno.




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) Conexión a internet: Como estamos en una máquina virtual y le pusimos una NIC con NAT, ya deberíamos tener nuestra placa configurada. Sólo hacemos un ping para comprobar que esté todo bien.
ping -c 4 www.google.com 
deberíamos ser capaces de pinguear a google sin más.

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

10) Genero el fstab
genfstab -p /mnt >> /mnt/etc/fstab 
11) 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
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. En mi caso esto no sucedió asi que hice
ping -c 4 8.8.8.8 
Y en este caso tuve respuesta. Esto quiere decir que necesitamos configurar los servidores DNS en el sistema. Para eso hacemos
nano /etc/resolv.conf 
y luego agregamos una linea que diga
nameserver 8.8.8.8 
Guardamos con CTRL + O y luego salimos con CTRL + X. Ahora volvemos a probar con el nombre y deberiamos pinguear sin problemas.

12) Establecer una password de root
passwd 
13) Creamos un usuario, en este caso el mio se llama faktorqm
useradd -m -Gwheel,root -s /bin/bash faktorqm 
Establecemos la contraseña utilizando
passwd faktorqm 
14) 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]
SigLevel = Never
Server = http://repo.archlinux.fr/x86_64  
y ademas decomentamos el repositorio "multilib" (Esto es unicamente porque yo lo voy a usar mas tarde) y luego hacemos
pacman -Sy yaourt 
y ya está. La sintaxis para instalar/desinstalar es igual o casi igual que para pacman.

15) Vamos a instalar 2 módulos necesarios para el kernel para maximizar la performance de la maquina virtual. Para eso es necesario abrir una terminal como el usuario que acabamos de crear
su faktorqm 
Instalamos los paquetes:
yaourt -S wd719x-firmware aic94xx-firmware 
Salimos:
exit 

16) Luego hacemos
mkinitcpio -p linux
para armar la imagen de inicio.

17) Configuro GRUB2
grub-install --no-floppy /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg 

18) Para que al reiniciar tengamos la configuración de la red, tenemos que configurarlo de esta manera. Para saber como se llama mi placa ethernet hago
ip link
y en mi caso la placa se llama "ens33". Entonces hago
cp /etc/netctl/examples/ethernet-dhcp /etc/netctl/mi_perfil
nano /etc/netctl/mi_perfil
en description pongo "mi perfil eth con dhcp" y en interface pongo ens33. Guardo y luego:
netctl enable mi_perfil
netctl start mi_perfil

19) Salir del chroot
exit 
20) reiniciamos!
reboot

21) 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.


22) Volvemos a configurar el teclado en español
loadkeys la-latin1 
23) 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)

24) 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 
25) 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.

26) Establecer la zona horaria
timedatectl set-timezone America/Argentina/Buenos_Aires 
27) Establecer el reloj de la computadora con NTP
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 1.arch.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.


Y luego hacemos:
timedatectl set-ntp true 

28) 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 luego hacemos:
iptables-save 
29) Instalamos algunos paquetes (aplicaciones) más que nos van a ser muy útiles a la hora de configurar nuestro sistema
pacman -Sy pkgfile bash-completion sudo dosfstools ntfs-3g screen
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 (ya lo habia hecho cuando lo cree) y luego hacemos
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 formatear en FAT32.
Si queres montar las particiones de Windows con ntfs-3g. Debido a que solo root puede montar particiones ntfs, deben correr este comando para habilitar a todos los usuarios
chmod u+s /bin/ntfs-3g 
El programa screen nos permite continuar (y luego retomar) sesiones ssh una vez desconectados.

30) Ahora vamos a instalar las utilidades de la máquina virtual.

pacman -Sy open-vm-tools
cat /proc/version > /etc/arch-release
systemctl enable vmtoolsd.service
systemctl start vmtoolsd.service
systemctl enable vmware-vmblock-fuse.service
systemctl start vmware-vmblock-fuse.service 
 

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!!!

 Nota 1: Si durante el inicio les aparece la leyenda "piix4_smbus 0000:00:007.3: Host SMBus controller not enabled!" debemos hacer lo siguiente:

nano /etc/modprobe.d/blacklist.conf 
y luego escribir una linea "blacklist i2c-piix4". Guardar y salir.

Nota 2: Si tienen procesadores intel i7, y durante el inicio tienen mensajes del tipo "cpufreq_online: failed to initialize policy" lo que debemos hacer es deshabilitar el driver por defecto que viene en el kernel. Para eso hacemos:

nano /etc/default/grub 
Y buscamos la linea que dice "GRUB_CMDLINE_LINUX_DEFAULT" y agregamos "intel_pstate=disable", guardamos y cerramos. Luego hacemos
grub-mkconfig -o /boot/grub/grub.cfg 
para actualizar la configuracion del grub y listo.

3 comentarios: