Saltar a contenido

Ajustes

Una vez instalado Linux, y tras explorarlo un poco, vamos a configurarlo a nuestro gusto.

VMWare Tools

El sistema operativo Linux no es consciente de estar ejecutándose en una máquina virtual, por lo que algunas características proporcionadas por VMWare no funcionarán, por falta de respuesta de la máquina Linux.

Para solucionar esto, tenemos que instalar en esa máquina virtual Linux un programa llamado "VMWare Tools", que nos proporciona funciones tales como:

  • Carpetas compartidas entre el host y el guest
  • Copiar y pegar entre la máquina virtual y el escritorio del host
  • Sincronización del reloj de la máquina virtual con el reloj del escritorio del host o del cliente
  • Integración del ratón
  • Mejora del rendimiento

Muchas distribuciones Linux (incluyendo Ubunu) incorporan en sus repositorios de software un programa alternativo llamado Open-VM-Tools, que suele estar más adaptado a esa distribución en particular. Abrimos Synaptic, y buscamos el paquete Open-VM-Tools. Si ya viene instalado de serie, no hay que hacer nada. Si no es así, instalarlo desde Synaptic, o bien mediante el comando apt. Son dos paquetes:

$ sudo apt install open-vm-tools
$ sudo apt install open-vm-tools-desktop

Para que tenga efecto, habrá que reiniciar la máquina virtual.

Carpetas compartidas

Una vez comprobado que tenemos instalado VMWare Tools, podemos establecer determinadas carpetas a compartir entre ambas máquinas, la física y la virtual. Hay que que acudir a la configuración de la máquina virtual y seleccionar el apartado Compartir:

Podemos añadir o quitar carpetas de la lista pulsando los botones + o -. Podemos ponerlas como de solo lectura (para la máquina virtual) o bien, de lectura y escritura.

Para acceder desde la máquina Linux tenemos que asociar esa carpeta compartida a una carpeta en la estructura de directorios de Linux, lo que actuará como "punto de montaje". Véase más información en el siguiente artículo:

https://kb.vmware.com/s/article/60262

La versión Open-VM-Tools no monta automáticamente las carpetas compartidas, y tenemos que hacerlo a mano cada vez que iniciamos la máquina virtual Linux. Esto resulta más seguro, ya que limita la exposición de nuestra máquina host, pero puede ser un incordio. Para automatizar el montaje de una carpeta, vamos a modificar el archivo de configuración de puntos de montaje, /etc/fstab.

Puntos de montaje

Todos los discos conectados se asocian a una carpeta dentro de la estructura general de directorios. El archivo /etc/fstab contiene la lista de puntos de montaje. Cada entrada de la lista representa un disco. En la máquina virtual, las carpetas compartidas de la máquina Host se visualizan como discos externos, accediendo como haríamos con un DVD, por ejemplo.

¡Cuidado!

Modificar manualmente la configuración del sistema tiene sus riesgos. En este caso, si cambiamos los puntos de montaje de los discos, puede que a máquina virtual deje de funcionar por no ser capaz de acceder a ningún disco.

Puede ser una buena idea hacer previamente un snapshot de la máquina virtual, como se explicaba en un capítulo anterior.

Abrimos el terminal de comandos e iniciamos el editor de textos con privilegios de administrador activados. El comando es:

$ sudo gnome-text-editor /etc/fstab

Al editor de textos le estamos pasando como argumento el fichero a modificar. El texto del fichero es algo así como:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/nvme0n1p2 during curtin installation

/dev/disk/by-uuid/ef97ec66-b574-4c9f-ad26-7e6edbec7a9c / ext4 defaults 0 1

# /boot/efi was on /dev/nvme0n1p1 during curtin installation

/dev/disk/by-uuid/41F5-383E /boot/efi vfat defaults 0 1
/swap.img   none    swap    sw  0   0

Bien. Esto es un poco técnico. Cada línea de este archivo describe un punto de montaje, y las líneas que comienzan con # serán ignoradas. Se usan como documentación. Las líneas en blanco tampoco tienen efecto.

Añadimos la siguiente línea al final del texto del archivo:

vmhgfs-fuse    /mnt/compartidas    fuse    defaults,allow_other    0    0

Lo que estamos especificando con esta línea añadida es:

  • que tenemos un dispositivo llamado vmhgfs-fuse. Es el nombre que VMWare usa para referirse a las carpetas compartidas.
  • que lo queremos montar en el directorio /mnt/compartidas
  • que el tipo de disco es fuse, algo propio de VMWare
  • el resto de parámetros son opciones de montaje

Típicamente, el directorio /mnt se usa para montar dispositivos externos, aunque para DVDs y cosas así se utiliza /media.

Para que todo esto funcione, hay que reiniciar la máquina. El sistema resolverá estos puntos de montaje y, la primera vez, creará automáticamente una nueva carpeta /mnt/compartidas, donde tendremos acceso a las carpetas compartidas con la máquina física.

Es decir, si compartimos dos carpetas de la máquina física, carpeta1 y carpeta2, el acceso será mediante:

/mnt/compartidas/carpeta1
/mnt/compartidas/carpeta2

Nota importante

Compartir carpetas con la máquina física no está exento de riesgos. Los cambios que hagamos en una máquina se reflejarán en la otra, pero puede haber interferencias. Por ejemplo, la papelera de reciclaje de la máquina física no es accesible para la máquina virtual. Si intentamos eliminar un archivo de una carpeta compartida desde la máquina virtual, el borrado será definitivo. Este tipo de operaciones conviene hacerlas desde la máquina física.

En el explorador de archivos Nautilus podemos crear un enlace en la barra lateral para acceder cómodamente a las carpetas compartidas.

Montar y desmontar carpetas compartidas

Configurar el archivo /etc/fstab para que las carpetas compartidas se monten automáticamente en el directorio /mnt/compartidas puede no ser lo ideal, ya que deja esas carpetas de la máquina física expuestas a las acciones de la máquina virtual.

Alternativamente, podemos montar y desmontar manualmente las carpetas, solo cuando necesitemos tener acceso a ellas. Para montar todas las carpetas configuradas para ser compartidas, escribimos el comando:

$ sudo /usr/bin/vmhgfs-fuse .host:/  /mnt/compartidas   -o subtype=vmhgfs-fuse,allow_other

Siendo:

  • sudo indica ejecutar con permisos de administrador del sistema
  • /usr/bin/vmhgfs-fuse es el programa que gestiona las carpetas compartidas. Forma parte del paquete VM-Tools.
  • ./host:/ indica todas las carpetas compartidas
  • /mnt/compartidas es el directorio de la máquina virtual donde vamos a acceder al contenido
  • el resto son opciones de configuración

Si queremos montar solo una carpeta física, añadir su nombre a ./host:/

$ sudo /usr/bin/vmhgfs-fuse .host:/micarpeta  /mnt/compartidas/micarpeta   -o subtype=vmhgfs-fuse,allow_other

para desmontar las carpetas y cortar el acceso a ellas:

$ sudo umount /mnt/compartidas

Si no queremos estar tecleando comandos continuamente, podemos crear un script de comandos, y un lanzador en el escritorio (un icono) para ejecutarlo. Lo veremos más adelante, en el capítulo dedicado al escritorio.

Bloqueo de pantalla

En el caso de inactividad, la pantalla se bloquea y nos obliga a introducir la contraseña para desbloquearla. Tratándose de una máquina virtual, esta opción ya la tenemos en la física. Para desactivar los bloqueos, en la configuración del sistema, ir a la configuración de Ubuntu, apartado Privacidad y Seguridad > Retardo para apagar la pantalla = Nunca.

Gestión de usuarios

Podemos cambiar nuestra password, crear y eliminar usuarios, o cambiar la forma de inicio de sesión (automático o con contraseña). Para estas labores, ir a la configuración de Ubuntu, apartado Sistema > Usuarios.

Algunas de estas opciones estarán bloqueadas hasta que pulsemos en el botón [Desbloquear] e introduzcamos nuestra contraseña.

Cambios en el Terminal

Cada escritorio proporciona su propia emulación de Terminal. La de Ubuntu muestra una ventana en cuya barra superior se muestra un icono ☰ para desplegar un menú. La opción Preferencias permite configurar el funcionamiento del terminal.

Modificando el prompt de comandos

Personalmente, hay una cosa que no me gusta del Terminal de comandos: el prompt.

Si por ejemplo estamos en una carpeta /home/usuario/documentos/archivos_recientes/, el prompt será algo así como:

nombreusuario@nombremaquina:/home/usuario/documentos/archivos_recientes$

Esto recorta bastante espacio para el comando a introducir, y es una información que generalmente no resulta necesario tenerla presente continuamente. Generalmente se muestra en la barra de título de la ventana, y de todas formas, podemos averiguar la información mediante comandos. La carpeta actual se obtiene con el comando print working directory:

$ pwd

El nombre de usuario se puede obtener con el comando who am i (sin espacios):

$ whoami

Podemos averiguar información del sistema con el comando uname seguido del parámetro -a (all):

$ uname -a

La información mostrada incluye el sistema operativo y el nombre de la máquina.

Podemos ahorrar espacio si cambiamos el aspecto del prompt. A mi me gusta que solo refleje la carpeta actual, eliminando el nombre de usuario y la máquina.

En Ubuntu, la configuración del prompt se establece en el archivo ~/.bashrc. Recordemos que el directorio ~ es la carpeta raíz del usuario. El archivo .bashrc lleva un punto como prefijo, lo que en sistemas tipo Unix indica un fichero oculto.

Comenzamos por abrir el explorador de Archivos, nos situamos en la carpeta raíz del usuario y pulsamos en la opción de menú Mostrar archivos ocultos. Aparecerá un archivo .bashrc. Con ese archivo seleccionado, pulsamos con el botón secundario del ratón, y en el menú desplegable seleccionamos Copiar. Hacemos una copia del archivo en la misma carpeta.

Ahora tenemos dos archivos, .bashrc y .bashrc (copia). Este segundo nos servirá de respaldo si rompemos algo. En caso de apuro, borraremos el .bashrc y renombraremos .bashrc (copia) para que vuelva a llamase .bashrc.

Hacemos doble clic sobre .bashrc. Es un archivo de texto que se abrirá en el editor de textos:

Esto resulta bastante técnico, pero ¿quien dijo miedo? Comenzamos por localizar las líneas de texto que configuran el prompt:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

La que tiene efecto es la segunda línea, ya que el terminal admite coloreado:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Esta secuencia de parámetros indican al Terminal los datos a mostrar en el prompt y los códigos de color a aplicar.

Anteponemos un carácter # a esa línea, para anularla, y escribimos debajo como queremos que quede:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\w\[\033[00m\]\$ '

Con lo que el bloque queda así:

if [ "$color_prompt" = yes ]; then
#   PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

Guardamos los cambios, cerramos la ventana del Terminal (si la teníamos abierta) y volvemos abrirla. El prompt debería mostrarse con la nueva configuración:

~$

Explicación del prompt

Si tenemos curiosidad por analizar los cambios introducidos en el prompt, vamos a "destripar" la línea:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

PS1 es una variable del sistema. Lo que estamos haciendo es asignarle un valor:

PS1='especificaciones'

Los parámetros que nos interesan son:

  • \u muestra el usuario (user). Va seguido de un carácter @ a mostrar tal cual. Es decir, si el usuario es Luis, \u@ se sustituirá por Luis@

  • \h muestra el nombre de máquina (host). Va seguido de un código de color [\033[00m\] y los dos puntos : a mostrar

  • \w muestra el directorio de trabajo (working directory)
  • \$ muestra el carácter $ a mostrar. Va seguido de un espacio en blanco, que también se mostrará.

Las secuencias intermedias como \[\033[01;33m\] establecen los colores de cada elemento del prompt:

  • la que precede a \u es este caso es \[\033[00;31m\], que indica un color verde. Cambiando 00 por 01 se muestra en verde intenso.

  • la secuencia que precede a \w es \[\033[01;34m\], que especifica un color azul.

  • para recuperar el color por defecto se usa la secuencia \[\033[00m\]

Los códigos de color son:

  • \033[0;30m\] - Black
  • \033[0;31m\] - Red
  • \033[0;32m\] - Green
  • \033[0;33m\] - Brown
  • \033[0;34m\] - Blue
  • \033[0;35m\] - Purple
  • \033[0;36m\] - Cyan
  • \033[0;37m\] - Light gray

Véase que los códigos van de 30 a 37. Cambiando el 0 por un 1, tendremos colores más intensos:

  • \033[1;30m\] - Dark gray
  • \033[1;31m\] - Light red
  • \033[1;32m\] - Light green
  • \033[1;33m\] - Yellow
  • \033[1;34m\] - Light blue
  • \033[1;35m\] - Light purple
  • \033[1;36m\] - Light cyan
  • \033[1;37m\] - White

La primera parte del prompt solo tiene efecto en situaciones muy especiales, y la dejaremos tal cual:

${debian_chroot:+($debian_chroot)}

Suprimimos la visualización del nombre de usuario, que va precedida por los códigos de color y muestra un @ añadido:

\[\033[01;32m\]\u@

También suprimimos el nombre de la máquina:

\h\[\033[00m\]:

Dejamos la visualización del directorio de trabajo:

\[\033[01;34m\]\w

Y el restaurado de color por defecto y símbolo $:

\[\033[00m\]\$

Con lo que la cosa queda así:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\w\[\033[00m\]\$ '

VMware y el sonido

Uno de los motivos por los que prefiero VMWare sobre VirtualBox es por su mejor rendimiento. Pero últimamente el sonido no me va muy bien con ninguna de las dos opciones. Suena entrecortado.

El caso es que, buscando en Internet he encontrado debates varios sobre el tema y, supuestas soluciones que a mi no me funcionan. Pero descubrí una forma de resolver el problema. En resumen, parece que hay un software llamado PipeWire que gestiona el sonido en segundo plano, y que es el que da problemas. Nació en 2017 y ha ido sustituyendo a otro programa muy popular, PulseAudio.

Así que, hasta que se solucione el problema, lo que podemos hacer, usando el terminal de comandos, es sustituir PipeWire por PulseAudio:

  • Paso 1: Descargar PulseAudio con el comando:

    sudo apt install pulseaudio
    
  • Paso 2: Usar el comando systemctl, que sirve para gestionar los servicios del sistema, y desactivar pipewire a nivel de usuario. Son seis comandos a ejecutar:

    systemctl --user stop pipewire.socket
    systemctl --user stop pipewire.service
    systemctl --user disable pipewire.socket
    systemctl --user disable pipewire.service
    systemctl --user mask pipewire.socket
    systemctl --user mask pipewire
    
  • Paso 3: Con el mismo comando systemctl, activar pulseaudio como gestor de audio:

    systemctl --user unmask pulseaudio
    systemctl --user unmask pulseaudio.socket
    systemctl --user enable pulseaudio.service
    
  • Paso 4: Ahora que ya tenemos configurado pulseaudio como gestor, tenemos que ponerlo en marcha:

    systemctl --user start pulseaudio.service
    

    Esto tendremos que hacerlo cada vez que encendemos la máquina. Veremos a continuación como automatizar este paso.

  • Paso 5: Comprobar que pulseaudio está trabajando con el comando:

    pactl info
    
  • Paso 6: Probar el sonido con alguna aplicación, por ejemplo, entrando en Youtube con el navegador web Firefox.

Tenemos que ejecutar el paso 4 (comando start) cada vez que iniciemos la máquina virtual. Podemos establecer que ciertos comandos se ejecuten automáticamente al iniciar el sistema. Para ello, tenemos que editar el archivo .profile (fichero oculto) que hay en la carpeta principal del usuario. Abrimos el editor de textos con el comando:

gnome-text-editor ~/.profile

y al texto le añadimos la siguiente línea:

systemctl --user start pulseaudio.service