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