David Bohm

Hay dos frases que definen mi manera de pensar:
Realmente no hemos prestado mucha atención al pensamiento como un proceso; hemos participado en pensamientos, pero sólo hemos prestado atención al contenido, no al proceso.
La capacidad de percibir o pensar de manera diferente es más importante que el conocimiento adquirido.
Ambas son de David Bohm.
Mostrando entradas con la etiqueta Arch. Mostrar todas las entradas
Mostrando entradas con la etiqueta Arch. Mostrar todas las entradas

sábado, 7 de mayo de 2022

Instalar Visual Studio Code en Arch Linux

Los pasos son sencillos:

Debemos tener instalado git. Vamos a usar los repositorios AUR (Arch User Repository), así que comenzamos clonando el repositorio:

   $ mkdir /home/usuario/git

   $ cd /home/usuario/git

   $ git clone https://aur.archlinux.org/visual-studio-code-bin.git

Entramos al directorio y hacemos el make:

   $ cd visual-studio-code-bin.

   $ makepkg -si.

Instalamos con yay o paru:

   $ yay -S visual-studio-code-bin

 Listo!

SaluDOS

sábado, 24 de octubre de 2020

Clonar un disco duro con un simple comando

Supongamos que estamos haciendo una asistencia a un equipo informático y necesitamos clonar un disco duro mecánico para sustituirlo por un SSD, pero que se mantenga el sistema operativo y todos los datos existentes, evitamos el formateado, instalación de sistema operátivo, programas añadidos, etcétera.

En mi caso cuento con una dock para poder conectar por USB un par de discos duros. Se trata de un disco duro de 1 TB con una instalación de Windows 10, lo conectamos en el primer slot y en el segundo conectaremos el disco duro SSD que tiene que ser de igual o mayor tamaño que el anterior.

Al conectarlos, podemos lanzar el comando para localizarlos:

   # fdisk -l

Veremos que se nos han agregado los dos discos duros y la salida será algo así:

Disk /dev/sdb: 931,53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: GZX202          
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: D4CB46D6-BF41-4EE8-8E56-42D29AA7CB39

Device          Start        End    Sectors   Size Type
/dev/sdb1        2048     534527     532480   260M EFI System
/dev/sdb2      534528     567295      32768    16M Microsoft reserved
/dev/sdb3      567296 1917003775 1916436480 913,8G Microsoft basic data
/dev/sdb4  1917003776 1919010815    2007040   980M Windows recovery environment
/dev/sdb5  1919010816 1953511423   34500608  16,5G Microsoft basic data


Disk /dev/sdc: 931,53 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: GZX202          
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes

Vemos que el disco duro que tiene la instalación de Windows se localiza en /dev/sdb y el disco duro SSD nuevo sin contenido está en /dev/sdc

Para lanzar el clonado tendremos que especificar el origen (if) y el destino (of), así que el comando sería:

   # dd if=/dev/sdb of=/dev/sdc

Esperamos el tiempo que le cueste realizar la clonación y voilá.

SaluDOS

sábado, 9 de mayo de 2020

Montando un directorio compartido por NFS

Ultimamente un NAS comercial permite crear un directorio compartido de una forma sencilla. Al agregar una conexión NFS solo tienes que introducir la IP del equipo desde donde quieres conectarte y los permisos que le concedes. Obviamente no es lo mas seguro pero veamoslo por el lado sencillo, solo los comandos a ejecutar para conectar desde un linux a ese directorio.

Supongamos un entorno de laboratorio con los siguientes elementos:

   - NAS, tiene una ip: 192.168.100.252
   - Equipo, tiene una ip: 192.168.100.20, además hemos hecho una reserva en el DHCP para que siempre tenga esa dirección, otra opción es configurar en manual la red del equipo.
   - Directorio compartido: Creamos un directorio llamado Drive, le agregamos conexión NFS para que se pueda conectar la IP del equipo y establecemos permisos de escritura.
   - Al compartir, el NAS nos informará de la ruta que tiene el directorio compartido, supongamos que es: /volume1/Drive

Para conectarnos por NFS, necesitaremos instalar:

En Arch: Documentación oficial aquí.
   # pacman -S nfs-tools

En ElementaryOS:
   # apt install nfs-common
En CentOS:

   # yum install nfs-tools

Una vez que tenemos las utilidades NFS, podemos crear el directorio donde montaremos esa conexión remota:

   # mkdir /mnt/Drive

Tenemos dos opciones, empecemos por la primera, montar a mano el directorio, se puede especificar algún parametro mas pero ya no suele ser necesario:

   # mount 192.168.100.252:/volume1/Drive /mnt/Drive

Si queremos desmontar:

   # umount /mnt/Drive

Lo normal es que tengamos la unidad permanentemente mapeada y simplifiquemos el montaje/desmontaje si nos hiciese falta ejecutarlo, para ello tenemos que editar el fichero fstab y agregar una linea:

   # vim /etc/fstab

   192.168.100.252:/volume1/Drive /mnt/Drive nfs defaults 0 0

Recarga fstab, o bien reiniciando o mejor ejecutando:

   # mount -a

Tras este comando, se ha leido fstab y el punto de montaje se ha efectuado, podremos dirigirnos a /mnt/Drive y operar en el NAS sin necesidad de montarlo manualmente.

Ahora, si hiciese falta, podríamos montar el directorio así:

   # mount /mnt/Drive

O así:

   # mount 192.168.100.252:/volume1/Drive

Por ejemplo podríamos simplificar este último comando si añadimos un nombre en nuestro equipo para la IP, para ello editamos el fichero hosts y añadimos una línea:

   # vim /etc/hosts

   192.168.100.252      NAS01

Con esto, ya podemos hacer referencia al nombre y no a la IP, en todo lo que hemos ejecutado o configurado hasta ahora. Podriamos personalizar el nombre a nuestro antojo, independientemente del nombre que tenga realmente el dispositivo NAS.

En fstab especificariamos:

   NAS01:/volume1/Drive /mnt/Drive nfs defaults 0 0

Recargariamos fstab:

   # mount -a

Seguiriamos pudiendo montar directamente así:

   # mount /mnt/Drive

O así:

   # mount NAS01:/volume1/Drive

SaluDOS

lunes, 4 de mayo de 2020

osquery, la navaja suiza del sysadmin

La aplicación osquery es una de esas herramientas open source que cuando eres administrador de sistemas y la descubres, realmente te quedas sin palabras.

Digamos que es una herramienta que va a estar vigilando tu equipo, o los equipos de toda la red que administras o los servidores que tienes que sufrir. El escalado es muy potente, hasta llegar a miles y miles de activos en tu infraestructura.

Se puede instalar en tu propio equipo o en un servidor para controlar que es lo que está pasando en él, independientemente de la plataforma que tengas, está soportado para Windows, Mac OS y Linux. En su página web oficial hay gran cantidad de información, y la documentación es bastante extensa y la puedes consultar aquí.

Si nos centramos en una máquina linux, está soportado sobre bastantes tipos de distribuciones, por ejemplo para instalar en...

Arch y familia:
   # pacman -S osquery

ElementaryOS y familia debian:
   # apt-get install osquery

CentOS y familia Red Hat:
   # yum install osquery

Si lo queremos instalar en un equipo o servidor Windows, podemos ver el proceso aquí y también en la web de chocolatey aquí.

Vale, y que vigila, pues me atrevería a decir de forma atrevida que practicamente todo. Digamos que transforma tu sistema operativo en una base de datos en donde las tablas SQL representan conceptos abstractos como procesos en ejecución, módulos de kernel cargados, plugins de navegador, conexiones de red abiertas, eventos de hardware, etcétera.

Se ejecuta en modo demonio/servicio y se encarga de ir agregando los resultados de las consultas que realiza el programa sobre la máquina como registros de un motor SQLite.

Y ¿como consultamos los parámetros de nuestra maquina en este recolector de información?, pues con simples comandos SQL a través de su consola.

Una vez instalado podríamos arrancar el demonio y activarlo para futuros reinicios:

   # systemctl start osqueryd
   # systemctl enable osqueryd

Para lanzar la consola, ejecutariamos:

   # osqueryi

Y entramos en un shell propio, un CLI, sobre el que podemos lanzar las consultas de forma interactiva. Además es totalmente agnostico de plataforma, por lo que las consultas son genéricas y creo que es ahí donde reside su potencia cuando administras infraestructuras mixtas, tiene una buena adaptabilidad a los diferentes sistemas operativos.

Pongamos algunos ejemplos de comandos y esas consultas para entender como podríamos aprovecharnos de este software, comencemos sacando la ayuda:

   osquery> .help

Si queremos ver las tablas generadas:

   osquery> .tables

Si queremos podemos utilizar pragma table_info, nativo de SQLite, para conocer la información de una tabla concreta con los campos que contiene para poder construir sentencias SQL apropiadas, por ejemplo:

   osquery> pragma table_info('system_info');

Hay que tener en cuenta que dependiendo de la plataforma, habrá bastantes tablas comunes pero se generarán otras tablas especificas para el sistema operativo que está corriendo.

Ejemplos sencillos, genéricos y que se describen por si solos podrian ser:

   osquery> select * from uptime;
   osquery> select * from system_info;
   osquery> select * from os_version;
   osquery> select * from time;
   osquery> select * from crontab;
   osquery> select * from processes;
   osquery> select * from users;
   osquery> select * from kernel_modules;
   osquery> select * from etc_hosts;
   osquery> select * from interface_addresses;
   osquery> select * from routes;
   osquery> select * from process_open_files;
   osquery> select * from syslog_events;

Y ahora veamos ejemplos mas elaborados, algunos extraidos de esta web, para comprender la potencia de este punto único de encuentro para muchas preguntas que nos podemos hacer sobre un equipo, servidor o infraestructura completa.

Para saber cual es el hostname del equipo:

   osquery> select hostname from system_info;

Si por ejemplo queremos obtener información del procesador del sistema, podríamos lanzar algo así:

   osquery> select cpu_type, cpu_brand from system_info;

Si queremos saber como está el almacenamiento local en el punto de montaje raiz:

   osquery> select path, type, round((blocks_available * blocks_size *10e-10),2) as gigs_free from mounts where path='/';

Si queremos conocer los puertos que están a la escucha:

   osquery> select * from listening_ports;

Si queremos encontrar los procesos que están corriendo sobre el puerto 80:

   osquery> select pid from listening ports where port = 80;

Al tratarse de meras consultas SQL, podríamos llegar a generar joins de varias tablas por lo que la información se vuelve mas completa, por ejemplo al hilo de los dos comandos anteriores podemos unir procesos y puertos que están escuchando:

    osquery> select p.pid, p.name, p.state,p.uid, lp.port from processes p join listening_ports lp on p.pid = lp.pid and lp.port=80;
Y si nos vamos a un ejemplo mas trabajado, podríamos por ejemplo querer saber cuales es el top 10 de los procesos que están consumiendo mas CPU:

    osquery> select pid, uid, name, round(((user_time + system_time) / (cpu_time.tsb - cpu_time.itsb)) * 100, 2) as percentage from processes, (select (sum(user) + sum(nice) + sum(system) + sum(idle) * 1.0) as tsb, sum(coalesce(idle, 0)) + sum(coalesce(iowait, 0)) as itsb from cpu_time ) as cpu_time order by user_time+system_time desc limit 10;
Y podriamos hacer lo mismo con el top 10 de los procesos que ocupan mas memoria:

    osquery> select pid, name, round((total_size * '10e-7'), 2) as used from processes order by total_size desc limit 10;

Este ejemplo también es muy interesante, saber quien está logueado en nuestro sistema:

   osquery> select * from loggued_in_users;

Si queremos conocer cuales han sido los últimos inicios de sesión, no solo los actuales:

   osquery> select * from last;

Si queremos salir de la consola:

   osquery> .exit

Y por último, me parece interesante saber donde se encuentran los ficheros mas relevantes de osquery, tanto para distribuciones de la familia de centOS como de debian, estas serían las rutas por defecto:

   - Configuración: /etc/osquery/osquery.conf
   - Logs: /var/log/osquery
   - Binarios: /usr/bin
   - Packs: /usr/share/osquery/packs

Si te estás preguntando que son los packs, digamos que son conjuntos de consultas a modo de reglas para buscar información interesante o mas concreta.

En el caso de Windows todo debería de ir a la ruta: C:\Program Files\osquery

   - Configuración: C:\Program Files\osquery\osquery.conf
   - Logs: C:\Program Files\osquery\log
   - Binarios: C:\Program Files\osquery
   - Packs: C:\Program Files\osquery\packs

Una herramienta que si vemos su potencial instalado y ejecutado en local, imagínate si la despliegas en red y centralizas la información obtenida... Brutal!!!

SaluDOS

BlackArch, todas sus herramientas de seguridad al alcance de la mano

BlackArch es una distribución específica para temas de seguridad, hacking, pentesting, forense, etcétera. Se puede utilizar para investigar y montar laboratorios y realmente es una alternativa bastante buena a Kali Linux si eres mas de filosofía Arch.

Se puede descargar la imagen .iso desde su página web oficial aquí. Lo normal suele ser generar una máquina virtual o instalarlo en un pendrive para lanzarlo en modo liveCD. Una vez que lo estás ejecutando, siempre puedes instalarlo siguiendo estos dos simples pasos:

Primero instalamos el paquete con los scripts de instalación:

   # pacman -S blackarch-install-scripts
 
Una vez instalado este paquete, podrás seguir las instrucciones tras ejecutar:

   # blackarch-install
Antes de efectuar la instalación de Arch es interesante echar un vistazo a la web sobre blackarch-install aquí. 


En este mismo apartado de descargas de su página web, te explican como puedes llegar a instalarte las herramientas en tu propio equipo, si tienes una distribución basada en Arch linux. Veamos estos sencillos pasos, ya que es muy interesante si te dedicas a la seguridad informática, la descarga puede ser total, por categorías o por herramienta y esto da mucho juego.

Si quieres consultar las herramientas que ofrece, puedes consultarlo en el apartado Tools de su web oficial aquí.

Para empezar vamos a descargar el script strap.sh:


   # curl -O https://blackarch.org/strap.sh

Comprueba siempre el SHA1 para verificar que es el orginal y nada te ha inyectado otro script, la salida de este comando tendrá que coincidir con el SHA1 que nos muestran en la web:

   # sha1sum strap.sh

   Actualmente el valor es: 9c15f5d3d6f3f8ad63a6927ba78ed54f1a52176


Establecemos que se pueda ejecutar el script:

   # chmod +x strap.sh

Y lo ejecutamos:

   # ./strap.sh

En estos momentos ya tendremos configurados los repositorios de BlackArch, como habremos visto en mitad de la salida del script:

   [+] you can change the default mirror under /etc/pacman.d/blackarch-mirrorlist

Este dato es importante si tenemos que llegar a ajustar algo de los repositorios en algún momento. A partir de aqui ya podremos instalar las aplicaciones de BlackArch, veamos algunos ejemplos:

Si lo que queremos es obtener un listado de todas las herramientas disponibles podriamos ejecutar:

   # pacman -Sgg | grep blackarch | cut -d' ' -f2 | sort -u

Si las contamos concatenando con el comando wc veremos que hay, en estos momentos, 2563 herramientas. Ahí queda eso.

   # pacman -Sgg | grep blackarch | cut -d' ' -f2 | sort -u | wc -l


Si buscamos un programa concreto, por ejemplo bettercap, podríamos hacer:

   # pacman -Sgg | grep blackarch | cut -d' ' -f2 | sort -u | grep bettercap

Si buscamos el programa directamente, veremos que nos lo ofrecen los repositorios Community de Arch y también los de BlackArch:

   # pacman -Ss bettercap

Para instalar la herramienta que ofrecen los repositorios de BlackArch tendriamos que ejecutar especificando el repositorio:

   # pacman -S blackarch/bettercap

Si lo que queremos es instalar todas las herramientas, algo que creo que es una locura por la cantidad de ellas:

   # pacman -S blackarch

Podemos consultar las categorias existentes, normalmente cuando vamos a investigar o a hacer un pentesting es razonable buscar una categoría concreta:

   # pacman -Sg | grep blackarch

Y podriamos instalar una categoria concreta así:


   # pacman -S blackarch-<category>

Por ejemplo, para temas de IDS, podríamos instalar la categoría correspondiente:

   # pacman -S blackarch-ids

Y si antes quisieramos ver que contiene, podriamos consultar ese grupo concreto:

   # pacman -Sg blackarch-ids

Veriamos que actualmente contiene:

   blackarch-ids sagan
   blackarch-ids snort
   blackarch-ids suricata
   blackarch-ids suricata-verify

Algunas categorías no tienen mucha cosa, pero te invito a que pruebes con esta, veras que la lista de herramientas es extensa:

   # pacman -Sg blackarch-wireless

Como indican en la documentación oficial, a veces es necesario sobreescribir algunos paquetes o dependencias, por ello si obtenemos "failed to commit transaction" deberemos usar --needed y --overwrite como en el siguiente ejemplo:

    # sudo pacman -Syyu --needed blackarch --overwrite='*'

Si quieres profundizar en blackarch además de su página web oficial, te recomiendo su repositorio oficial en github aquí.

SaluDOS

viernes, 24 de abril de 2020

Como tener la posibilidad de instalar paquetes snap en Linux Arch

Hace unos 3 o 4 años, los paquetes snap se empezaron a convertir en una forma "universal" de instalar paquetes, fuese la distribución que fuese y es verdad que poco a poco lo están consiguiendo. Es muy útil tener esta opción en Arch, así que veamos como agregar snap para realizar instalaciones de este tipo de paquetes.

Lo haremos a través de los paquetes AUR (Arch Users Repository), algo que ya configuramos en el último paso que dimos al terminar de instalar Arch en nuestro equipo en esta entrada.

El proceso de compliación manual es el método de instalación soportado por Arch, así que lo primero que hacemos es clonar el repositorio git de snapd, compilar e instalar:


   # git clone https://aur.archlinux.org/snapd.git
   # cd snapd
   # makepkg -si

Ahora tendremos que habilitar el conector:

   # systemctl enable --now snapd.socket

Para habilitar el típico soporte de snap, tendremos que crear un enlace simbólico:


   # ln -s /var/lib/snapd/snap /snap

Por último o cerramos sesión y volvemos a iniciarla, o lo mas sencillo es reiniciar:


   # reboot

A partir de aqui ya podemos utilizar snap para buscar e instalar un paquete, veamos un ejemplo, buscamos el paquete:

   # snap search telegram

E instalamos:

   # snap install telegram-desktop

SaluDOS

miércoles, 22 de abril de 2020

Que programas instalar en Linux para tener un equipo totalmente funcional (I)

Veamos la lista de programas que instalaríamos para llegar a tener un Linux Arch con el que podamos realizar todas las tareas cotidianas que necesitemos.

Lo clasificaremos por tipo de programas:

- Configuración y administración

   + vim

   + wget

   + lxterminal o tilix

   + htop

   + gufw

   + remmina 

   + Eddy (Elementary)

- Multimedia y gráficos

   + vlc

   + audacity

   + gimp

   + kdenlive

   + obs-studio

- Internet, mensajería y ofimática

   + firefox

   + chromium

   + thunderbird

   + telegram-desktop

   + libreoffice

- Programación

   + python

   + code (VSCode)

   + pycharm 

   + git

- Servidor

   + cups

   + LAMP:
      - apache
      - mariadb
      - php

   + virtualbox
      - tor-browser
      - filezilla
      - rtorrent

   + docker
      - portainer


- Seguridad

   + keepass

   + veracrypt

   + crashplan

   + nmap

   + wireshark

- Juegos

   + gnuchess

   + steam

- Compatibilidad con Windows

   + wine

   + playonlinux

Este último grupo ya casi no lo uso pero es interesante tenerlos en la lista. Creo que no se me olvida ninguno importante. :-)

SaluDOS

martes, 21 de abril de 2020

Pacman es un juego y el gestor de paquetes de Linux Arch

El gestor de paquetes de Arch se llama pacman, efectivamente como el videojuego, parece potente y sencillo de manejar, algo que se agradece si no tienes mucha experiencia y tienes que instalar o actualizar desde la consola.

En este caso vamos a resumir algunos comandos útiles, se puede consultar la documentación oficial aquí. Vamos a poner de ejemplo el grupo de paquetes xorg:

Para buscar paquetes en los respositorios:

   # pacman -Ss xorg

Si queremos información de un paquete:

   # pacman -Si xorg

Si queremos información de un grupo de paquetes, por ejemplo xorg:

   # pacman -Sg xorg

Para sincronizar los repositorios:

   # pacman -Sy

Para instalar un paquete:

   # pacman -S xorg

Al igual que otros gestores de paquetes, para instalar varios paquetes:

   # pacman -S org-server org-server-devel ...

Y si queremos combinar estas dos acciones, en un único comando para sincronizar repositorios y después instalar un paquete:

   # pacman -Sy xorg

Para actualizar el sistema:

   # pacman -Syu

En caso de que sepamos que un paquete está ya instalado, podremos buscarlo con este comando:

   # pacman -Qs xorg

Si lo que queremos es información detallada de un paquete que ya tengamos instalado:

   # pacman -Qi xorg

Y por último en cuanto a la eliminación, para eliminar un paquete sin sus dependencias:

   # pacman -R xorg

Si queremos eliminar un paquete y las dependencias no utilizadas:

   # pacman -Rs xorg

Si tenemos un archivo en una ruta y nos gustaría saber a que paquete pertenece ese archivo:


   # pacman -Qo <rutadelarchivo>

Para localizar los paquetes huérfanos:


   # pacman -Qet

Una cosa que me sorpendió de pacman y que es importante tener en cuenta, es que guarda una caché de las últimas versiones anteriores conforme actualiza paquetes, y NO SE BORRAN. Para eliminar la caché de todos los paquetes no instalados podemos utilizar pacman:

   # pacman -Sc
Pero para trabajar con esta cache tenemos el comando paccache. Para eliminar todos los paquetes anteriores excepto las 3 últimas versiones, que es lo predeterminado:

   # paccache -r

Para establecer el número de versiones anteriores que deseamos guardar, por ejemplo 2:

   # paccache -rk2

Para tratar con los paquetes desinstalados usamos el modificador k, para eliminar todos esos paquetes:

   # paccache -ruk0

Bueno, creo que hasta aquí es mas que suficiente para una primera sencilla inmersión.

SaluDOS

sábado, 18 de abril de 2020

¿Tienes un nuevo portátil, quieres instalar Linux Arch y tienes problemas con grub?

Si tienes un portatil, nuevo y quieres instalar Linux Arch, seguramente te enfrentarás a varios problemas añadidos en el proceso. Un problema común al instalar grub es un mensaje odioso que nos dice: /boot/efi doesn't look like an EFI partition

Tendremos que cambiar el proceso de instalación un poco, así que voy a tratar de resumirlo por fases, según esta entrada en la que explico la instalación inicial.

Es probable que si tiene hardware mas actualizado el disco no se llame /dev/sda, tendrá un nombre del estilo /dev/nvme0n1 o algo similar, serguramente tendremos que cambiar los nombres especificados en la entrada, pongamos un ejemplo:

   /dev/sda   será   /dev/nvme0n1
   /dev/sda1   será   /dev/nvme0n1p1
   /dev/sda2   será   /dev/nvme0n1p2
   /dev/sda3   será   /dev/nvme0n1p3

En el Paso 3 de particionado, antes de crear las particiones, tendremos que especificar que la tabla de particiones la queremos en modo dos, para ello dentro de fdisk pulsamos la letra o. Si pulsamos m veremos que en la ayuda nos dice Create a new label, o create a new empty DOS partition table:

   # fdisk /dev/sda
   > o

Confirmaremos que queremos sobreescribir la tabla de partición existente. Es probable que tengamos que reiniciar para que la tabla se escriba en el disco duro y podamos continuar con los pasos.

Vamos a crear las mismas particiones pero para la partición sda1 la vamos a formatear de otra forma. Ejecutaremos:

   # mkfs.fat -F32 /dev/sda1

En el Paso 4 de instalación y configuración, vamos a montar esta partición de otra forma. Una vez que hemos montado la partición /dev/sda3 en el punto de montaje /mnt ejecutaremos:

   # mkdir -p /mnt/boot/efi
   # mount /dev/sda1 /mnt/boo/efi 


Seguiremos con la instalación y cuando lleguemos a la instalación de grub, cambiaremos un poco los pasos a dar. En mi caso concreto añado intel-ucode pero esto puede variar:

   # pacman -S efibootmgr
   # pacman -S intel-ucode
   # pacman -S grub
   # grub-install --bootloader-id=Arch_Linux --efi-directory=/boot/efi --recheck --target=x86_64-efi
   # grub-mkconfig -o /boot/grub/grub.cfg

Y terminamos la instalación y configuración.

SaluDOS

Linux Arch, seguimos configurando hasta el deseado entorno gráfico

Tras la instalación que realizamos en esta entrada vamos a seguir dando pasos hasta encontrar una configuración que nos encaje. Una vez que tenemos Arch Linux funcionando podríamos seguir las recomendaciones generales oficiales aqui. Veamos los pasos más básicos que suelo dar yo...

RED

Una cosa que no hicimos del todo en la entrada de instalación, porque hay que ir aprendiendo que Arch no es una distribución cualquiera, es que hay que configurar la red, no es algo que pase de forma mágica. Como siempre podríamos consultar la documentación oficial aqui pero vamos a ver mi propia fórmula.

Comprobamos el controlador de red:
   # lspci -k

Deberemos encontrar algo llamado Ethernet Controller y comprobar que está en uso. Seguramente hasta aqui ha ido todo bien.

Imaginemos que necesitamos instalar un paquete como net-tools, para por ejemplo poder hacer un ifconfig y ver la configuración del adaptador de red. Pero no tenemos red, por lo que no podemos hacerlo. Utilizaremos este caso de uso por si se nos ha olvidado algo importante y queremos hacer un apaño, se que no es imprescindible en esta configuración pero lo usaremos a modo de ejemplo.

Para ello volveremos a reiniciar el equipo con el CD de Arch y veremos como agregar estos paquetes siguiendo parte de los pasos que hicimos al realizar la instalación:
   # loadkeys es
   # fdisk -l
   # mount /dev/sda3  /mnt
   # arch-chroot /mnt

   # pacman -S net-tools
   # exit
   # reboot

Ahora configuraremos la red, así que primero miramos como se llama el adaptador:
   # ip link

En mi caso el adaptador de red se llama enp0s3, así que crearemos el archivo de configuración para ese adaptador:
   # vim /etc/systemd/network/wired.network

Y su contenido será el nombre del adaptador y la configuración de IP dinámica:
   [Match]
   Name=enp0s1
   [Network]
   DHCP=ipv4

Es muy probable que tengas otro adaptador de red, esta vez wifi, en mi caso se llama wlp0s20f3, así que repetimos los pasos:

   # vim /etc/systemd/network/wifi.network

Y su contenido será el nombre del adaptador y la configuración de IP dinámica:
   [Match]
   Name=wlp0s20f3
   [Network]
   DHCP=ipv4

Configuramos los DNS:

   # vim /etc/resolv.conf

Y su contenido, por ejemplo:
   nameserver 1.1.1.1
   nameserver 1.0.0.1

Iniciamos el servicio y lo activamos para que se active en el arranque:
   # systemctl start systemd-networkd
   # systemctl enable systemd-networkd

Comprobamos la conectividad haciendo un ping:
   # ping google.es

Si no tenemos conectividad podemos realizar un reinicio:
   # reboot

NUEVO USUARIO

Creo que lo mas importante, antes de empezar a trastear con el sistema, es crear un usuario que nos permita trabajar con la máquina y dejar de usar root.
Creamos el usuario con su propio directorio en home:

   # useradd -m usuario

Y configuramos su contraseña:

   # passwd usuario

Ahora bien, como Arch está absolutamente limpio tenemos que instalar sudo, si, exactamente tal y como has leido, sudo no está disponible :-) y queremos utilizarlo cada vez que vayamos a lanzar un comando con privilegios elevados.

   # pacman -S sudo

Pero para que el nuevo usuario pueda lanzar sudo, tenemos que agregarlo como sudoer. Para ello vamos a ver el contenido del archivo sudoers y decidimos:
   # cat /etc/sudoers

A partir de ## User privilege specification. Veremos la única línea que no está comentada: root ALL=(ALL) ALL y después se defnien varios grupos: wheel y sudo. Vamos a descomentar la primera linea de wheel:
   %wheel ALL=(ALL) ALL

Este cambio habilita a los usuarios que pertenezcan al grupo wheel para que puedan ejecutar comandos con sudo como si fuesen administradores. Solo queda agregar al nuevo usuario a ese grupo:
   # usermod -a -G wheel usuario


Creo que es muy recomendable tener un usuario normal y corriente para el uso cotidiano y/o para hacer pruebas, con los dos primeros comandos de antes lo creamos:
   # useradd -m usuarionormal
   # passwd usuarionormal

ENTORNO GRÁFICO

Ya sabeis que todo lo referente al entorno gráfico podeis consultarlo en la documentación oficial aqui.

Tenemos un montón de alternativas para elegir a nivel de entorno gráfico, pero primero tendremos que instalar el servidor de pantalla. Iremos al tradicional xorg, si lo queremos hacerlo sencillo instalamos todo, incluso el código fuente con el grupo xorg:
   # pacman -S xorg

Si quieres ver que contiene este grupo antes de instalarlo, observarás que no son pocas cosas las que contiene, podrías lanzar este comando:
   # pacman -Sg xorg

Si queremos afinar un poco mas, podriamos de momento instalar:
   # pacman -S xorg-server xorg-xinit xorg-server-utils

Antes de nada, y es algo que se suele pasar por alto, tendremos que ver que gráfica tenemos para instalar los drivers adecuados. Vamos a volver a lanzar el mismo comando de antes y buscamos la línea que empieze por VGA:
   # lspci -k

Salvo que sea una máquina virtual, obtendremos un indicio de la gráfica, pondrá referencia al fabricante, como intel, nvidia o ATI por ejemplo. Si nos vamos a los drivers de código abierto, podemos encontrarlos todos con el comando:
   # pacman -Ss xf86-video

O ya que nos basamos en xorg, podríamos hacer la búsqueda así:
   # pacman -Ss xorg-drivers

Veremos que aparecen vesa, voodoo, intel, ati, los de código abierto de nvidia llamados nouveau, etcétera. Elegimos el mas apropiado para nuestro hardware y lo instalamos, por ejemplo para ATI:
   #  pacman -S xf86-video-ati

Veamos otro ejemplo, si tenemos una nvidia, podremos optar por los drivers propietarios y sus utilidades:
   # pacman -S nvidia nvidia-utils

O podriamos optar por los de código abierto:
   # pacman -S xf86-video-nouveau

Y ahora, al fin, veamos ejemplos de como instalaríamos los entornos de escritorio mas típicos, porque realmente es muy personal la elección. Veamos algunos ejemplos, su instalación y activación. Hay que tener en cuenta si tiene o no soporte oficial, esto se puede ver aqui.  En el nombre del entorno os dejo el link a la documentación oficial.

GNOME: Instalamos los dos grupos y el administrador de pantalla.
   # pacman -S gnome gnome-extra
   # pacman -S gdm
   # systemctl enable gdm
   # reboot

KDE: Instalamos el grupo plasma, el conjunto de aplicaciones y el administrador de pantalla.
   # pacman -S plasma kde-applications
   # pacman -S sddm
   # systemctl enable sddm
   # reboot

XFCE: Instalamos el grupo xfce4, el grupo de plugins con utilidades y el administrador de pantalla.
   # pacman -S xfce4 xfce4-goodies
   # pacman -S lxdm
   # systemctl enable lxdm
   # reboot

BUDGIE:Instalamos el paquete budgie-desktop, el grupo gnome y el administrador de pantalla.
   # pacman -S budgie-desktop gnome
   # pacman -S gdm
   # systemctl enable gdm
   # reboot

Obviamente podemos instalar MATE, CINNAMON, LXDE e incluso PANTHEON.

Por último, para que nos sea mas sencillo de manejar la instalación de paquetes a través del entorno gráfico, podemos instalar el gestor de aplicaciones llamado pamac, tendremos que instalarlo sin ser usuario root, veamos como:

   $ pacman -S --needed base-devel git wget yajl
   $ cd /tmp
   $ git clone https://aur.archlinux.org/package-query.git
   $ cd package-query
   $ makepkg -si && cd /tmp/ $ git clone https://aur.archlinux.org/yaourt.git
   $ cd yaourt
   $ makepkg -si
   $ yaourt -S pamac-aur

A disfrutarlo, pero recuerda que todavía quedará mucho por hacer...

SaluDOS

domingo, 12 de abril de 2020

Linux Arch, instalación básica

Creo que cuando ya le has pillado el truco a cualquier distribución linux, es conveniente moverte y salir de tu zona de confort. Cuando ya sabes usar las distribuciones típicas como las que parten de red hat o debian, te has enfrentado a la consola y has ganado la batalla, prueba arch linux. No lo dudes y lanzate al vacio.
Todavia recuerdo esa sensación, el tener una consola delante y no tener una instalación asistida, como hace años, eso sí, en la recta final está un entorno muy estable y para los amantes del entorno gráfico, en la meta encontrareis una distribución que merece la pena conocer.

Veamos los pasos y algunos detalles importantes para ser capaces de instalar esta distribución. Estos pasos son los que sigo yo, pero recuerda que puedes seguir la documentación oficial aqui, ya no lo recuerdo pero creo que no la sigo al pie de la letra pero poco variará.

PASO 1: ARRANQUE

Me salto la parte de descargar la imagen .iso, y crear por ejemplo la máquina virtual o generar el pendrive autoarrancable, supongo que si se va a instalar Arch ya se domina algo así.
Para la creación de este manual he cogido la última imagen existente ahora mismo, la versión 5.5.13

Una vez arrancado el equipo a través de la imagen ISO, aparece el menú que te permite seleccionar varias opciones como arrancar el sistema operativo existente en el caso de que ya haya uno en el disco duro,  hacer un test de memoria RAM u obtener información del hardware. Elegiremos la primera opción: Boot Arch Linux
Una vez arrancado Arch tenemos una consola con acceso de root. Empieza la fiesta.

PASO 2: CONFIGURACIÓN BÁSICA

Lo primero es configurar la distribución del teclado, en mi caso:
   # loadkeys es
Siempre compruebo con la tecla ñ, el guión - o el interrogante ?
Es muy recomendable comprobar la fecha y la hora para evitar cosas raras, así que lanzamos el comando:
   # date

Si tenemos que cambiar la fecha y/o la hora podemos primero comprobar si tenemos conexión a internet:
   #  ping google.es

Si tenemos conexión a internet configuramos la zona y activamos ntp:
   # timedatectl set-timezone Europe/Madrid
   Si no sabes exactamente que zona, puedes listar todas y por ejemplo hacer un grep de la parte que conozcas. De todas formas es mas facil utilizar google :-)
   # timedatectl list-timezones | grep Europe
   # timedatectl set-ntp true

Si no tenemos conexión a internet o simplemente no queremos dar tantas vueltas, miramos el reloj y configuramos de forma manual, por ejemplo con el comando:
   # date --set "2020-04-04 17:21"

PASO 3: PARTICIONADO

Vamos a mostrar los discos y particiones existentes:
   # fdisk -l

Lo normal si el equipo es nuevo o la máquina virtual es de reciente creación, encontraremos por ejemplo:
   Disk /dev/sda --> El disco duro local sobre el que queremos instalar.
   Disk /dev/loop0 --> El disco CD con la imagen ISO desde done estamos instalando.

Si tenemos instalado otro sistema operativo aparecerán mas particiones, pero eso sí hay que tener mucho mucho cuidado con lo que haces.

Comprobamos bien los discos y/o particiones para saber donde instalar. Yo elegiré /dev/sda

La elección de las particiones es un poco personal, yo suelo diferenciar por ejemplo /var de la raiz y a veces también una partición /tmp o /home. Depende un poco del rol de la máquina, si es un puesto de usuario, un servidor, etcétera.

Lo vamos a hacer lo mas sencillo posible para empezar, vamos a crear tres particiones, que son las mínimas imprescindibles:

/ --> Partición raiz, en ella irá todo el sistema operativo, nuestra home, programas y demás contenido de la distribución. Le pondremos el tamaño que nos sobre una vez configuradas las otras dos particiones.

/swap --> Partición de intercambio, aqui cada maestrillo tiene su librillo, y es verdad que tiende a desaparecer en las nuevas distribuciones de otro tipo por las características del los nuevos equipos. Habitualmente se pone la mitad del tamaño de la memoria RAM, yo normalmente la configuraba con el mismo tamaño de la RAM. Actualmente los equipos físicamente tienen tanta memoria RAM que con 1 GB o 2 GB de tamaño es mas que suficiente, incluso 512 MB vale por si llegasemos a ocupar toda la RAM y necesitase el sistema utilizar el disco duro.

/boot --> Partición de arranque, en ella se instalará el gestor de arranque grub. Se suele recomendar diferenciarla, con un tamaño de 512 MB también mas que suficiente, la documentación de Arch recomienda 260 MB

Para crear las particiones en el disco duro sda ejecutaremos:
   # fdisk /dev/sda

Para crear una nueva partición pulsaremos la tecla: n
Para decirle que es primaria pulsaremos la tecla: p
Al mostrarnos el primer sector pulsaremos la tecla: Enter
Para indicarle el último sector, es decir el tamaño, introduciremos: +512M

Esta será la partición de arranque.

Para crear una nueva partición pulsaremos la tecla: n
Para decirle que es primaria pulsaremos la tecla: p
Al mostrarnos el primer sector pulsaremos la tecla: Enter
Para decirle el último sector, es decir el tamaño, introduciremos: +1024M
(se puede poner tambien +1G)

Esta será la partición de intercambio.

Para crear la partición raiz seguimos los mismos pasos, pero para decirle el tamaño pulsaremos la tecla: Enter, así seleccionamos el resto del tamaño.

Antes de salir de fdisk hay que escribir los cambios realizados así que pulsaremos la tecla: w
Comprobamos la tabla de particiones:
   # fdisk -l

Veremos que se han creado:
   /dev/sda1
   /dev/sda2
   /dev/sda3

Creamos el sistema de archivos en las particiones: ext4
   # mkfs.ext4 /dev/sda1
   # mkfs.ext4 /dev/sda3

Activamos swap en la partición de 2G:
   # mkswap /dev/sda2
   # swapon /dev/sda2

Comprobamos con free que la partición swap está activa:
   # free

La instalación la realizaremos sobre la partición /dev/sda2 en el siguiente paso.

PASO 4: INSTALACIÓN Y CONFIGURACIÓN
Como estamos ejecutando desde un liveCD, vamos a montar la partición raiz para poder trabajar sobre ella:
   # mount /dev/sda3 /mnt

La partición de arranque, la mapeamos en un directorio que previamente habremos creado en la raiz:
   # mkdir /mnt/boot
   # mount /dev/sda1 /mnt/boot

Instalamos justo lo imprescindible para que se pueda ejecutar el sistema operativo, los paquetes base, el kernel de linux y un firmware genérico:
   # pacstrap /mnt base linux linux-firmware

Piensa que mas adelante podrás personalizar e instalar nuevos paquetes para dejar todo como quieras. De momento con esto Arch debería funcionar.

Crearemos un archivo fstab
   # genfstab -U /mnt >> /mnt/etc/fstab

Cambiamos la raiz al nuevo sistema instalado:
   # arch-chroot /mnt

Configuramos la zona horaria del nuevo sistema, recuerda que depende de donde vivas tendrás que adaptar la región y ciudad, primero mostramos la información de zonas y luego configuramos:
   # ls /usr/share/zoneinfo
   En mi caso es /Europe/Madrid:
   # ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/localtime

Configuramos el reloj:
   # hwclock --systohc --utc

Configuramos la configuración local y el idioma del sistema. En mi caso:
   # locale-gen
   # echo LANG=es_ES.UTF-8 > /etc/locale.conf

Configuramos la distribución de teclado:
   # echo KEYMAP=es > /etc/vconsole.conf

Configuramos el nombre del equipo, por ejemplo ARCH:
   # echo ArchLinux > /etc/hostname

Instalamos un editor de texto, la tradición me obliga a que sea vim:
   # pacman -S vim

Configuramos el fichero hosts:
   # vim /etc/hosts
   Introducimos el siguiente contenido:
   127.0.0.1   localhost
   ::1              localhost
   127.0.0.1   ArchLinux.local ArchLinux

Cambiamos la contraseña de root:
   # passwd

Instalamos el gestor de arranque con pacman:
   # pacman -S grub
   # grub-install /dev/sda
   # grub-mkconfig -o /boot/grub/grub.cfg

Por si acaso actualizamos el sistema:
   # pacman -Syu

Salimos del sistema de archivos que acabamos de instalar con exit y desmontamos la unidad:
   # exit
   # umount -R /mnt

Reiniciamos:
   # reboot

Y ya deberíamos de poder entrar en Arch con el usuario root y la contraseña que hemos introducido al cambiarla. Eso sí, consola pura y dura, sin entorno gráfico, eso para la próxima entrega.

SaluDOS