Linux + kernel 3.19 + NVidia + LightDM = blank screen

Introducción

NVidia_logoEste problema empezó a suceder tan pronto como instalé Ubuntu 15.10 y sucedió también cuando se actualizó el kernel del Ubuntu 14.04 LTS.  Por esto concluyo por ahora que el problema se encuentra relacionado con el kernel (3.19.0-47) que estoy utilizando actualmente y los controladores de NVidia, tanto los propietarios como los de código abierto.

El sistema operativo inicia aparentemente bien pero al cargar la pantalla de autenticación de usuario de LightDM esta aparece negra a pesar de que se escucha el sonido que se reproduce al llegar a este punto y es aún posible ingresar el nombre de usuario y contraseña e iniciar sesión sin que aparezca nada en la pantalla.

Solución

Después de probar varias opciones la solución aparente a este problema consiste en agregar los parámetros acpi_osi=Linux rcutree.rcu_idle_gp_delay=1 a la variable GRUB_CMDLINE_LINUX_DEFAULT del Grub de la siguiente manera.

$ sudo vi /etc/default/grub

...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=Linux rcutree.rcu_idle_gp_delay=1"
...

$ sudo update-grub

Para consultar el valor actual de dicha variable en la sesión actual es posible ejecutar el siguiente comando.

$ cat /sys/module/rcutree/parameters/rcu_idle_gp_delay

Según la documentación de los parámetros del kernel, este valor representa el intervalo de activación para las CPU desocupadas que tienen llamados RCU.

Problemas reconociendo el touchpad de un Asus X455L en Linux Ubuntu 15.04

Aclaración de versiones

Este procedimiento sólo es necesario con versiones del Kernel inferiores a la 4.2 ya que a partir de esta versión (utilizada por Wily y Trusty de Ubuntu), los touchpads Focaltech se encuentran soportados de manera nativa.

Introducción

Una vez instalado Linux Ubuntu 15.04 en el portátil Asus X455L se evidencia que el touchpad no se encuentra funcionando correctamente.  Los gestos como el scroll vertical y horizontal no funcionan y el área de los botones también es sensible al movimiento haciendo muy difícil hacer clic sobre una ubicación precisa.

Al parecer este touchpad de FocalTech requiere de unos controladores específicos que aún no se encuentran incluidos en el kernel convencional.

$ xinput list

⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                  id=4    [slave  pointer  (2)]
⎜   ↳ PS/2 FocalTech FocalTech Touchpad in mouse emulation mode    id=13    [slave  pointer  (2)]
⎣ Virtual core keyboard                       id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard                 id=5    [slave  keyboard (3)]
    ↳ Power Button                                id=6    [slave  keyboard (3)]
    ↳ Video Bus                                   id=7    [slave  keyboard (3)]
    ↳ Video Bus                                   id=8    [slave  keyboard (3)]
    ↳ Sleep Button                                id=9    [slave  keyboard (3)]
    ↳ USB2.0 VGA UVC WebCam                       id=10    [slave  keyboard (3)]
    ↳ Asus WMI hotkeys                            id=11    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard                id=12    [slave  keyboard (3)]

La solución a este problema consiste en instalar estos controladores que han sido preparados por miembros de la comunidad (no directamente Asus).

Solución

Agregar el repositorio e instalar el paquete requerido.

$ sudo add-apt-repository ppa:hanipouspilot/focaltech-dkms

$ sudo apt-get update

$ sudo apt-get install focaltech-dkms

Reiniciar psmouse de la siguiente manera o reiniciar el sistema operativo completo.

$ sudo modprobe -r psmouse

$ sudo modprobe psmouse

Verificación

Una vez instalado correctamente el módulo con los controladores y reiniciado el sistema se obtiene este nuevo resultado con xinput.

$ xinput list

⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                  id=4    [slave  pointer  (2)]
⎜   ↳ PS/2 FocalTech FocalTech Touchpad           id=13    [slave  pointer  (2)]
⎣ Virtual core keyboard                       id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard                 id=5    [slave  keyboard (3)]
    ↳ Power Button                                id=6    [slave  keyboard (3)]
    ↳ Video Bus                                   id=7    [slave  keyboard (3)]
    ↳ Video Bus                                   id=8    [slave  keyboard (3)]
    ↳ Sleep Button                                id=9    [slave  keyboard (3)]
    ↳ USB2.0 VGA UVC WebCam                       id=10    [slave  keyboard (3)]
    ↳ Asus WMI hotkeys                            id=11    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard                id=12    [slave  keyboard (3)]

Recursos

  1. Repositorio de Ubuntu para el paquete focaltech-dkms.
    https://launchpad.net/~hanipouspilot/+archive/ubuntu/focaltech-dkms
  2. Repositorio de GitHub para el paquete psmouse-focaltech-dkms.
    https://github.com/markmandel/psmouse-focaltech-dkms

Problemas de conexión al servidor VNC de GNOME

Introducción

En las versiones recientes de Vino, el servidor VNC del proyecto GNOME que se incluye en otras distribuciones como Ubuntu, he encontrado problemas de conexión con los clientes, especialmente con el cliente de RealVNC que utilizo.

Cuando el cliente intenta conectarse con el servidor, la conexión falla y el usuario recibe un mensaje de “No supported authentication methods!” o “No matching security types“.

Causa

Esto aparentemente se debe a que Vino por defecto intenta cifrar el tráfico de datos con TLS y los clientes no lo soportan.

Solución

La solución consiste en desactivar el cifrado de los datos transmitidos durante la sesión de VNC.

Para hacer esto se debe ejecutar el siguiente comando en el servidor.

$ gsettings set org.gnome.Vino require-encryption false

Probablemente sea necesario reiniciar el servicio de Vino.

$ pgrep -l vino-server 

$ pkill -x vino-server

$ /usr/lib/vino/vino-server -t &

Instalar Apache Ripple en Ubuntu 14.10

Introducción

A continuación se detallarán los pasos necesarios para instalar el emulador Apache Ripple (verificado con la versión 0.9.24) en Ubuntu 14.10 utilizando el gestor de paquete de NPM.

Requisitos

Instalación

Ubicarse en el directorio de instalación del software de desarrollo.  Por convención utilizo el directorio ~/apps, sin embargo puede utilizar el que se desee.

$ cd ~/apps

Instalar el paquete utilizando NPM.

$ npm install ripple-emulator

Agregar la siguiente ruta al PATH realizando la siguiente modificación en /etc/profile, ~/.bashrc o ~/.bash_profile.

PATH=$PATH:~/apps/node_modules/.bin/

Si la instalación de Phonegap se realizó siguiendo los pasos expuestos anteriormente entonces no necesitará repetir este paso.

Ejecución

Ubicarse en el directorio www/ del proyecto Phonegap.

$ cd ~/workplace/proyecto/www

Ejecutar el emulador.

$ ripple emulate

También es posible ejecutar el emulador directamente especificando la ruta del proyecto en su ejecución.

$ ripple emulate --path ~/workplace/proyecto/www

Una vez ejecutado se abrirá automáticamente Chrome con el URL del emulador.

Recursos

Instalación de Phonegap 3.x en Ubuntu 14.10

Introducción

A continuación se describe la instalación paso a paso de Phonegap 3.x en Ubuntu 12.10 desde línea de comando.  Esta instalación no incluye ningún SDK específico ya que en esta primera etapa la idea no es construir paquetes instalables (como el APK de Android) sino  desarrollar mientras se prueba en un emulador como el Ripple de Apache o la aplicación de desarrollo de Phonegap.

Instalación del software

Instalar NodeJS y su administrador de paquetes

$ sudo aptitude install nodejs nodejs-legacy npm

Crear el directorio de apps si este no existe.  Por orden se recomienda instalar el software de desarrollo bajo la carpeta ~/apps sin embargo se puede utilizar la que se desee.

$ mkdir ~/apps

$ cd ~/apps

Instalar el paquete de Phonegap.

$ npm install phonegap

Instalar el paquete de Ant, necesario para construir y ejecutar las aplicaciones desarrolladas con Phonegap.

$ npm install ant

Agregar las siguientes rutas a la variable PATH ya sea en /etc/profile, ~/.bashrc o ~/.bash_profile.

$ vi ~/.bashrc

PATH=$PATH:/home/jimezam/apps/node_modules/ant/ant/bin:/home/jimezam/apps/node_modules/.bin

Creación de un nuevo proyecto Phonegap

Ubicarse en el directorio de trabajo donde se creará el proyecto.

$ cd ~/workplace

Crear el proyecto de Phonegap a partir de una plantilla vacía utilizando la herramienta phonegap create.  Esta herramienta recibe como minimo dos parámetros: el nombre del directorio del proyecto y el paquete de la aplicación (Android).

$ phonegap create EjemploApp mi.paquete.ejemploapp

Instalación de Laravel 5 en Ubuntu

Instalación de Composer

$ curl -sS https://getcomposer.org/installer | php

$ sudo mv composer.phar /usr/local/bin/composer

Instalación de Laravel

$ composer global require "laravel/installer=~1.1"

Actualizar el PATH para incluir la herramienta de laravel.

$ vi ~/.bashrc

    PATH=$PATH:~/.composer/vendor/bin/

Creación de un nuevo proyecto

$ laravel new nuevo-proyecto

Verificar la versión de Laravel instalada.

$ cd nuevo-proyecto

$ php artisan -V

Ejecución del servidor web embebido para desarollo

$ php artisan serve

Acceder al proyecto desde un navegador web y el URL http://localhost:8000.

Para utilizar esta funcionalidad de artisan debe tenerse instalado mcrypt.  En caso de no contarse con esta librería seguir los pasos a continuación.

$ sudo aptitude install php5-mcrypt

$ sudo php5enmod mcrypt

Recursos

Actualizando Ubuntu

Acerca de la política de actualización

La política de actualizaciones del sistema operativo determina que tipos de actualizaciones disponibles serán tenidas en cuenta para ser sugeridas al usuario y ser finalmente instaladas en el equipo.

Las políticas disponibles corresponden a las siguientes.

  1. Tener en cuenta las versiones nuevas y estables (normal).
  2. Tener en cuenta sólo actualizaciones LTS (lts).
  3. Nunca tener en cuenta actualizaciones (never).

Para modificar la política de actualización vigente se debe editar el archivo /etc/update-manager/release-upgrades y ajustar el valor de la variable Prompt.

Este procedimiento también se puede realizar desde la interfaz gráfica de usuario ejecutando la aplicación Software & Updates y bajo el tab de Updates, modificar el valor de la opción Notify me of a new Ubuntu version.

Server Edition

$ sudo aptitude install update-manager-core

$ sudo do-release-upgrade

Desktop Edition

Utilizar la aplicación Update Manager o Software Updater desde la interfaz gráfica de usuario.

Ejecute el Update Manager (System > Administration > Update Manager)  o Software Updater desde Unity.

$ sudo /usr/bin/update-manager

Presione el botón Upgrade el cual se activará únicamente si se detecta una actualización disponible.

Enlaces

Instalación de NX 3.5 en Ubuntu 12.10 utilizando SSH y autenticación basada en contraseñas

Introducción

NX es un producto de NoMachine que permite acceder al escritorio de un servidor remoto.  A diferencia de software similar como VNC, NX ofrece por defecto el cifrado del tráfico a través de conexiones SSH y de SSH con túnel para el protocolo X, NX ofrece un mayor desempeño al optimizar la transmisión de datos.

NoMachine provee una versión gratuita para servidores Linux que se encuentra limitada a dos conexiones concurrentes.

En el pasado realicé la instalación de FreeNX, un fork del proyecto NX original el cual parece que ya no recibe actualizaciones.  En esta ocasión se va a realizar la instalación de NX 3.5 encontrándose también que versiones preliminares de la 4 pueden descargarse para experimentación.

Recomendaciones

En caso de actualizarse de una versión mayor es mejor desinstalar por completo los paquetes antiguos antes de instalar los nuevos.  Inclusive remover (o renombrar) el directorio del software.

$ sudo rm -rf /usr/NX

También debe tenerse en cuenta que la versión 3.5 de NX no soporta los entornos de escritorio que incluyan los efectos de escritorio compuesto provistos por Compiz, por este motivo se tendrán serios problemas al intentar acceder a escritorio remotos utilizando Unity o GNOME3.  En este caso se recomienda instalar otros manejadores de escritorio como XFCE o GNOME Fallback.

El transporte de la información se realiza a través de SSH así que el servicio (OpenSSH o similar) debe estar previamente instalado y funcionando.

Instalación en el cliente

Descargar del siguiente enlace el paquete cliente (NX Client Products) de la plataforma y arquitectura que corresponda.

http://www.nomachine.com/download.php

En este caso se realiza la instalación de la versión 3.5.0 para Ubuntu de 32 bits.

$ sudo dpkg -i nxclient_3.5.0-7_i386.deb

Instalación del servidor

Descargar del siguiente enlace los paquetes correspondientes a la plataforma y arquitectura del servidor.  Del lado del servidor es necesario instalar los paquetes de cliente, nodo y servidor.

http://www.nomachine.com/select-package-server.php?id=1&ids=2

En este caso se realiza la instalación de la versión 3.5.0 para Ubuntu Server de 64 bits.

$ sudo dpkg -i nxclient_3.5.0-7_amd64.deb
$ sudo dpkg -i nxnode_3.5.0-9_amd64.deb
$ sudo dpkg -i nxserver_3.5.0-11_amd64.deb

En algunas ocasiones la instalación del paquete servidor falla siendo requerido ejecutar la siguiente instrucción antes de volver a correr el comando de instalación mencionado anteriomente.

$ sudo /usr/NX/scripts/setup/nxserver --install

Autorizar a un usuario para realizar conexiones

Para autorizar a un usuario del sistema a realizar conexiones a su escritorio remoto se debe ejecutar el siguiente comando.

$ sudo /usr/NX/bin/nxserver --useradd USERNAME

Para mas información acerca de la gestión de los usuarios consultar la sección #5 (NX Users Administration on the Server Host) del NX Server Administrator’s Guide.

Realizar la conexión desde el cliente

Desde el equipo cliente ejecute la aplicación nxclient.

$ /usr/NX/bin/nxclient

Desde ella especifique la información básica para la conexión, incluyendo como mínimo la siguiente información.

  1. Nombre para la sesión
  2. Dirección o nombre del servidor
  3. Puerto del servicio SSH
  4. Nombre de usuario para realizar la conexión
  5. Contraseña del usuario especificado

Enlaces

  1. Getting Started with NX.
    http://www.nomachine.com/documents/getting-started.php
  2. NX Free Edition (for Linux & Solaris)
    http://www.nomachine.com/select-package-server.php?id=1&ids=2
  3. Documentación de instalación y configuración.
    1. Cliente
      http://www.nomachine.com/documents/client/install.php
      http://www.nomachine.com/documents/configuration/client-guide.php
    2. Nodo
      http://www.nomachine.com/documents/node/install.php
    3. Servidor
      http://www.nomachine.com/documents/server/install.php
      http://www.nomachine.com/documents/admin-guide.php
  4. Instalación de NoMachineNX en Ubuntu
    https://help.ubuntu.com/community/NomachineNX
  5. Why can’t I run the Unity or the Gnome 3 desktop environments with NX?
    http://www.nomachine.com/ar/view.php?ar_id=AR0500591

Actualizar a LibreOffice 4 desde Ubuntu 12.10 (o posteriores)

Introducción

La actualización de los paquetes de LibreOffice suele tomar un tiempo adicional desde que son oficialmente liberados hasta que se encuentran disponibles en los repositorios de Ubuntu para ser actualizados.  Si se desea realizar esta actualización rápidamente y utilizando el sistema de paquetes de Ubuntu es necesario agregar el repositorio oficial de LibreOffice al sistema como se muestra a continuación.

Método #1: para una versión específica (recomendado)

Existen dos formas básicas en las que es posible instalar una versión recién publicada de LibreOffice.  El primero de los métodos corresponde con agregar el repositorio exacto de la versión específica que se desea instalar, en este caso, la 4.x.  Esto se hace de la siguiente manera.

$ sudo add-apt-repository ppa:libreoffice/libreoffice-4-0
$ sudo apt-get update
$ sudo apt-get dist-upgrade

Método #2: para la versión mas reciente

Agregando el repositorio general de LibreOffice es posible mantener el sistema actualizado a la última versión disponible.  Debe tenerse en cuenta que es posible que se actualice el software a versiones no necesariamente estables y se actualicen también paquetes relacionados con LibreOffice.  Para hacer esto se deben realizar los pasos mostrados a continuación.

$ sudo add-apt-repository ppa:libreoffice/ppa
$ sudo apt-get update
$ sudo apt-get dist-upgrade

Montar una partición cifrada en Ubuntu

Introducción

Las versiones recientes de los sistemas operativos como Ubuntu permiten que se cifren las particiones (usualmente la que contiene a /home) para evitar así que terceros tengan acceso a la información contenida en estas si se obtiene el acceso físico a las mismas.

Esta mejora en la seguridad algunas veces se convierte en problema cuando por razones válidas es necesario acceder a esta partición desde otro sistema diferente del original.  Tal es el caso cuando se desactiva o pierde la contraseña del usuario administrador.

En ese caso es necesario iniciar el sistema con un livecd de Ubuntu (o montarlo físicamente en otro equipo), montar la partición que contenga al sistema de archivos raíz y realizar las modificaciones necesarias en los archivos de configuración para garantizar el futuro acceso a la cuenta de usuario en cuestión.  Estos pasos se ven modificados cuando la partición a montarse se encuentra cifrada.

Montar la partición cifrada

Identificar cual es la partición que se desea montar.

$ sudo fdisk -l

   Device Boot      Start         End      Blocks   Id  System
   /dev/sda1              63       96389       48163+  de  Dell Utility
   /dev/sda2   *       98304   163938303    81920000    7  HPFS/NTFS/exFAT
   /dev/sda3       163938304   167843839     1952768   82  Linux swap / Solaris
   /dev/sda4       167845886   234440703    33297409    5  Extended
   /dev/sda5       167845888   189327359    10740736   83  Linux
   /dev/sda6       189329408   234440703    22555648   83  Linux

En este ejemplo se determina que la partición que se desea montar temporalmente es /dev/sda5 que contiene al sistema de archivos raíz.

Instalar los paquetes requeridos si estos no se encuentran aún en el sistema.

$ sudo apt-get install lvm2 cryptsetup

Agregar el módulo del kernel necesario para acceder a los dispositivos de bloque cifrados.

$ sudo modprobe dm-crypt

Configurar al módulo de cifrado de Linux para que reconozca a la partición que se va a montar.

$ sudo cryptsetup luksOpen /dev/sda5 crypt1

En este punto el sistema solicita al usuario la contraseña secreta (passphrase) que se utilizó para el cifrado de la partición.

Identificar los grupos de volúmenes cifrados disponibles.  El nombre obtenido aquí debe tenerse en cuenta para un paso posterior.  En el caso de la partición cifrada por defecto se encontró que el nombre del grupo era ubuntu.

$ sudo vgscan --mknodes

Crear un directorio que servirá como punto de montaje para la partición cifrada.

$ mkdir /montaje

Montar la partición cifrada en el punto de montaje recién creado.

$ sudo mount /dev/ubuntu/root /montaje

A partir de este momento el sistema de archivos cifrado puede accederse normalmente bajo el punto de montaje establecido.  Por ejemplo para acceder gráficamente a sus archivos es necesario utilizar las herramientas del sistema.

$ sudo nautilus /montaje

Desbloquear un usuario

Una vez se pueda acceder al sistema de archivos raíz de la máquina afectada es posible realizar tareas de gestión de los usuarios como desbloquear cuentas o cambiar sus contraseñas.

Primero es necesario tomar temporalmente a la partición montada como partición raíz del sistema para que sean tenidos en cuenta sus usuarios durante las tareas de administración y no los del livecd, para hacer esto es necesario ejecutar el siguiente comando.

$ sudo chroot /montaje

Desbloquear las cuentas de usuario requeridas.

$ sudo passwd -u usuario

O simplemente modificar sus contraseñas.

$ sudo passwd usuario

Una vez terminadas las modificaciones que se iban a realizar sobre la partición cifrada se debe reiniciar el sistema normalmente.