Chuletillas (y XXXXII) – Eliminar paquetes huérfanos y dependencias no utilizadas en Archlinux y derivadas

chuleta Hace ya años que sólo uso Archlinux o derivadas en mis equipos de escritorio, ya sean estos portátiles o equipos de sobremesa. Empecé con la propia Archlinux para luego pasar a Chakra y, por último, a Manjaro que es actualmente mi favorita.
El siguiente comando nos permite eliminar todos los paquetes huérfanos y dependencias no utilizadas de forma equivalente a como haríamos en una Debian o derivada con apt-get autoremove:

pacman -Rcns $(pacman -Qdtq)

La segunda parte del comando (pacman -Qdtq) es la que realiza el listado de dependencias inútiles mientras que la primera (pacman -Rcns) las recibe y elimina después de mostrárnos la lista en pantalla y pedirnos confirmación.

NOTA: Por aquí dejé hace algún tiempo una chuleta con los primeros pasos a dar con pacman y ccr que sigue siendo válida. ccr es el gestor de paquetes realizados por la comunidad de usuarios (no oficiales, por tanto) de Chakra. En Archlinux y Manjaro se usa yaourt en lugar de ccr pero el funcionamiento de ambas es bastante similar.

Chuletillas (y XXXXI) – Instalar Vmware Player en Manjaro (u otro derivado de ArchLinux)

chuletaHace unos meses contamos por aquí la forma de instalar Virtualbox en Manjaro, Archlinux o cualquier otra distribución derivada de esta. Hoy contaremos lo mismo para Vmware Player, su competencia mas directa.

Antes de empezar, lo primero que te sueles plantear cuando vas a trabajar con virtualización de Vmware es si necesitas usar la versión Worstation o te vale con el Player Plus. Hace unos años la versión Player ni siquiera permitía crear máquinas virtuales y había que recurrir para ello a servicios web (como el que ofrecían en easyvmx.com, ya desaparecido) o a crear los ficheros vmx a mano mediante un editor de texto (lo cual era en realidad bastante fácil si disponías de una plantilla base para hacerlo). Ahora la versión Player Plus ya permite crear máquinas virtuales sin ningún tipo de problemas y, aunque las diferencias con la versión workstation siguen siendo bien grandes, en la mayoría de las situaciones podemos pasar sin ellas. Y ya sabes que Player Plus es gratuita para uso doméstico, no comercial y actividades académicas mientras que la versión workstation sólo dispone de una evaluación gratuita que expira a los 30 días.

Vamos ahora ya a la instalación. Las dependencias previas que deberías de tener instaladas son fuse, gtkmm y linux-headers. Opcionalmente también podrías querer instalar el paquete open-vm-tools.

sudo pacman -S fuse gtkmm linux-headers open-vm-tools

El paso siguiente sería descargar el paquete de instalación desde esta página (correspondiente a la versión 6, la última disponible en el momento de escribir esto) adecuado para la arquitectura que estés usando (32 o 64 bits). Una vez descargado ejecutamos el instalador:

sudo sh VMware-Player-6.0.3-1895310.x86_64.bundle

Al principio de la instalación se nos preguntará en algún momento el directorio donde se guardan los scripts mediante los que se inician y detienen los servicios del sistema (system service scripts directory). Las distribuciones basadas en Archlinux usan systemd y por tanto el directorio /etc/init.d no existe, pero si lo creas antes de arrancar la instalación del vmware player esta advertencia no te aparecerá.

system service scripts directory error durante la instalación de vmware player en una derivada de Archlinux

Si olvidaste hacerlo basta con que escribas este path en la ventana que aparece y listo. Aún así nos aparecerá una nueva advertencia acerca de esto al finalizar la instalación (“No rc*.d style init script directories were given to the installer”). La ignoramos y listos.

La configuración final es bastante complicada. Afortunadamente la comunidad de usuarios de Archlinux ha preparado un paquete que la realiza de forma automática. Para instalarlo y ejecutarlo basta con esto:

yaourt -S vmware-patch

Recuerda que cada vez que actualices el kernel tendrás que volver a ejecutar este parche pero ya no hace falta que vuelvas a descargarlo:

sudo vmware-patch

Si prefieres hacer esta configuración a mano basta con que sigas las detalladas instrucciones que aparecen en la wiki de ArchLinux.

NOTA: Para desinstalar vmware player plus es necesario conservar el instalador (o volver a descargarlo) y ejecutar lo siguiente:

sudo sh VMware-Player-6.0.3-1895310.x86_64.bundle --uninstall-product vmware-player

Chuletillas (y XXXIX) – Instalar VirtualBox en Manjaro (u otro derivado de ArchLinux)

chuleta Los derivados de ArchLinux (Manjaro, Chakra, etc.) suelen ser bastante más fáciles de manejar que la distribución matriz, pero aún así no es nada anormal que la instalación de ciertos paquetes sea ligeramente más dificultosa de lo que estamos acostumbrados en un Linux de escritorio y que requieran de nosotros alguna que otra intervención manual más allá de un simple pacman -S. Virtualbox es uno de estos casos y, aunque todas las posibles situaciones están perfectamente explicadas en esta página de la wiki de ArchLinux, vamos a dejar aquí una chuleta que debería de funcionar en la gran mayoría de los casos.

  • Los paquetes a instalar son virtualbox, dkms, virtualbox-host-dkms, virtualbox-guest-iso, net-tools y linux-headers.
    sudo pacman -S virtualbox virtualbox-host-dkms virtualbox-guest-iso linux-headers dkms net-tools
  • Puede que el procedimiento de instalación compile los módulos necesarios o puede que no. Si no lo hace se nos mostrará un error advirtiéndonos de ello la primera vez que tratemos de ejecutar cualquier máquina virtual. El procedimiento manual para compilar los módulos consiste en ejecutar lo siguiente:
    sudo dkms install vboxhost/4.3.10

    Donde tendremos que sustituir 4.3.10 por la versión de virtualbox que hayamos instalado. Cada vez que nuestra versión del kernel y/o de virtualbox cambien tendremos que repetir el comando anterior. Una alternativa a esto es habilitar como servicio en el arranque el daemon de dkms:

    sudo systemctl enable dkms
  • Puede que se haya configurado la carga de los módulos correspondientes de forma automática durante el arranque. Si es así, debería de haberse creado un archivo dentro del directorio /etc/modules-load.d (en mi caso se llama linux310-virtualbox-host-modules.conf) con el siguiente contenido:
    vboxdrv
    vboxnetadp
    vboxnetflt
    vboxpci

    Si no se ha creado podemos hacerlo nosotros mismos. También podemos borrar ese archivo (o no crearlo) y cargar manualmente los módulos cuando lo necesitemos mediante el comando modprobe:

    sudo modprobe vboxdrv vboxnetadp vboxnetflt vboxpci
  • Deberías de añadir los usuarios que van a usar virtualbox al grupo vboxusers. El siguiente comando añadiría al usuario josemaria a este grupo:
    sudo gpasswd -a josemaria vboxusers
  • No olvides que para habilitar ciertas funcionalidades extras deberás de instalar adicionalmente el Extension Pack que puedes descargar desde aquí y que es gratuito para evaluación y/o uso personal.

Analizando el arranque de tu Linux con bootchart

herramientas ¿Qué es lo que hace tu Linux durante el arranque?¿Hay alguna forma de ver exactamente que se ejecuta, cuales son los procesos dependientes que genera y cuanto tiempo se invierte en cada uno de ellos de forma que podamos, si es necesario, saber donde tenemos que tocar para conseguir un arranque más rápido?

Bootchart es una herramienta que obtiene y procesa fácilmente esta información y genera como resultado un gráfico fácilmente interpretable. Como muestra, aquí tenéis la gráfica resultado en un servidor VPS con Debian 7 (ya sabes, pulsa sobre la gráfica para verla con mejor resolución):

Gráfica de bootchart 0.9 en un servidor VPS con Debian 7

La instalación básica en una Debian estable requiere dos paquetes (y sus dependencias): bootchart y pybootchartgui. El primero es el que recopila los datos y el segundo el que genera el gráfico a partir de ellos. bootchard se instalará por defecto en el directorio /sbin y su archivo de configuración se llama bootchard.conf y se encuentra en el directorio /etc. pybootchartgui se encuentra en el directorio /usr/bin/. Aunque tenemos muchas opciones interesantes para explorar, vamos a limitarnos a ver el funcionamiento tal y como queda recién instalado y sin tocar nada.

Una vez instalados ambos, tenemos que hacer que el kernel de nuestro Linux ejecute el proceso que realiza la recogida de datos lo antes posible y esto lo hacemos introduciendo dicha llamada directamente en GRUB. Si estamos en un equipo desde el que tenemos acceso directo a teclado y monitor lo más fácil es introducir a mano la opción necesaria en el momento del arranque. Para ello, una vez que nos aparece el menú de GRUB pulsamos la letra “e” (de editar) e introducimos la opción init=/sbin/bootchartd. De esta forma el proceso sólo se llamará en este arranque puesto que la opción no queda salvada:

Editando la entrada de Grub para invocar a bootchar

Si no tenemos acceso al teclado de la máquina en el momento del arranque (en un Hosting VPS, por ejemplo) el método pasa por introducir esta opción en los archivos de configuración de GRUB. El método es diferente según que usemos GRUB o GRUB2. En GRUB basta con editar el archivo /boot/grub/menu.lst, buscar el bloque correspondiente al kernel con el que qeremos realizar el arranque e introducir la misma opción que hemos visto antes. Por ejemplo, así:

title           Debian GNU/Linux, kernel 3.2.0-4-amd64
root            (hd0,0)
kernel          /boot/vmlinuz-3.2.0-4-amd64 root=/dev/vda1 ro quiet no-kvmclock init=/sbin/bootchartd
initrd          /boot/initrd.img-3.2.0-4-amd64

En GRUB2 tenemos que editar el fichero /etc/default/grub, buscar la línea etiquetada como GRUB_CMDLINE_LINUX_DEFAULT e incluir al final de lo que allí aparezca la opción de carga de bootchartd. Así, por ejemplo:

GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/disk/by-uuid/35a07870-ac1a-489f-a19b-629
6dca46903 init=/sbin/bootchartd"

En este segundo caso, una vez editado el fichero tendremos que ejecutar el programa update-grub para que los cambios tomen efecto.

Un cuarto método, disponible si estamos usando un equipo de escritorio con un gestor de ventanas instalado, es usar uno de los muchos programas existentes para configurar grub de forma gráfica. Por ejemplo, grub-customizer:

Configurando el arranque de bootchartd con grub-customizer

Sea cual sea el método que hayamos usado, en el próximo arranque se ejecutará bootchartd, pero no olvides que, salvo en el primer caso, cuando ya no quieras usarlo tendrás que deshacer los cambios efectuados.

Bien. Tras reiniciar la máquina se invocará al proceso llamado bootchartd que recogerá la información necesaria y la guardará en un archivo llamado bootchart.tgz en el directorio /var/log. Para crear el gráfico basta con invocar a pybootchartgui:

Generando el gráfico de bootchart con pybootchartgui

Nota que se toma por defecto la ubicación y nombre del archivo original y que, por tratarse este de un nombre genérico, cada vez que reiniciemos y/o generemos un nuevo gráfico machararemos los datos del anterior a menos que los renombremos manualmente o le echemos un vistazo a la forma de modificarlos mediante los parámetros en línea y/o opciones de configuración adecuadas. Y listo. A continuación tenéis otro ejemplo correspondiente a un servidor más modesto que el anterior montado sobre VirtualBox:

Gráfica de bootchart 0.9 en una máquina de virtualbox con Debian 7

En la paquetería de Manjaro Linux (e, imagino, que ocurre igual con Arch) se usa otro programa similar también llamado bootchart pero que, en realidad, integra en un sólo servicio la recolección de datos y la generación del gráfico final. El gráfico resultante presenta, además, algunos aspectos diferenciadores. Podéis ver una muestra en la siguiente imagen que corresponde con el arranque de un PC de escritorio:

Gráfica de bootchart 1,2 en un PC de escritorio con Manjaro Linux

Para usarlo basta instalar el paquete llamado bootchart. El programa que tendremos que invocar se llamará igualmente bootchartd pero en este caso reside en el directorio /usr/bin. Podemos usar cualquiera de los métodos anteriormente vistos para invocarlo pero el parámetro a incluir en las opciones de carga del kernel será init=/usr/bin/bootchard. El archivo de configuración también es sensiblemente diferente y está en el directorio /etc/systemd. Cuando reiniciamos la máquina, el archivo que bootchart genera es ya directamente un gráfico en formato svg. El directorio destino del mismo es, igualmente, /var/log pero en este caso el nombre incluye una marca de tiempo (por ejemplo bootchart-20130916-0800.svg) de forma que si realizamos sucesivos reinicios tendremos disponible una colección de gráficos para su posterior estudio sin necesidad de ninguna intervención manual.

Existe aún, al menos, otro tercer sistema similar a estos denominado bootchart2 y que, por el momento, no he tenido ocasión de probar. Ahí queda el enlace por si alguien se anima…

NOTA: Desde hace ya unos meses estoy usando Manjaro Linux (con Openbox como window manager) como distribución de escritorio, tanto en mi ordenador de sobremesa como en mi portatil. Manjaro es una distribución rolling release, muy, muy ligera basada en Arch Linux que me está gustanado bastante, así que previsiblemente hablaremos bastante de ellas en lo sucesivo.