martes, 1 de agosto de 2017

Debian Stretch, instalar driver Nvidia


nvidia ofrece drivers de calidad aceptable para sus tarjetas gráficas, pero también existen alternativas libres logradas a base de ingeniería inversa y mucho esfuerzo por parte de la comunidad GNU.

El driver libre se llama nouveau posee capacidad de aceleración 2D y 3D. En el caso de las 3D el driver cuenta aceleración 3D suficiente para los efectos de escritorio y de aplicaciones 3D, como juegos o programas de modelado, aunque no llega todavía al nivel del driver oficial de nvidia.
En el caso de necesitar aceleración 3D con el driver nvidia, y mientras 'nouveau' no lleve al nivel del driver oficial, la única opción es usar los drivers privativos. Para esto Debian puede facilitarnos la tarea o podemos acudir al instalador oficial de nVidia.

Driver libre "nouveau"

Es el driver para tarjetas Nvidia desarrollado por la comunidad de software libre, cuyo objetivo es proveer un driver libre de calidad para este tipo de tarjetas ya que cuenta con aceleración 2D y 3D, es el driver que se instala por defecto en Debian Wheezy.
 

====================================================================

NOTA IMPORTANTE: Actualmente, Nouveau está disponible a partir de Debian Squeeze siendo el driver que se instala por defecto siempre que no se indique lo contrario. La parte relacionada con el DRM está incluída en el kernel desde la versión (en formato debian) 2.6.32-4. La parte de las X (entorno gráfico) se reduce a paquete xserver-xorg-video-nouveau. 


====================================================================


 Para instalarlo hay que tener en cuenta lo siguiente:


- La aceleración 2D tiene una madurez suficiente para trabajar en el día a día.
- El uso de KMS es obligado, forma parte del driver y es necesario. Es además el principal punto conflictivo para aquellos que quieren usar el driver de nvidia privativo. Es necesario, en aquellos casos, desactivar el KMS (metiendo por ejemplo el módulo nouveau en el blacklist de modprobe).
- El driver tal y como lo proporciona el paquete de Debian posee capacidad de aceleración 3D









 

Instalación desde los repositorios Debian Stretch

En la actual estable, llamada Debian stretch con kernel Linux 4.9 es muy fácil instalar los driver de nvidia ya que están disponibles todos los paquetes necesarios en los repositorios.

NOTA: Este manual esta creado sobre Debian testing (Buster), aunque es perfectamente valido para Debian Stretch 9

NO es necesario compilar con module-assistant (se requieren las secciones contrib y non-free en el programa synaptic), osea, es necesario que el fichero source.list incluya una linea semejante a esta:

deb http://ftp.es.debian.org/debian/ stretch main contrib non-free

Ya no es necesario desinstalar (como se tenia que hacer en Debian wheezy) el driver libre nouveau: xserver-xorg-video-nouveau, simplemente con añadir dicho driver nouveau a la lista negra, es suficiente. Lo mejor de todo que el propio driver de nvidia se encargar de hacer el trabajo por nosotros durante la instalación del propio driver nvidia. Es decir el solo crear un archivo llamado: nvidia-blacklists-nouveau.conf y deshabilita el driver libre nouveau para que no entre en conflicto con el driver de nvidia.

Capturas de pantalla de como nvidia a añadido durante la instalación el driver nouveau en las listas negra, mas concretamente en el archivo: nvidia-blacklists-nouveau.conf  que se encuentra en /etc/modprobe.d


y observamos como driver nouveau, ya esta incluido en las blacklist.



Instalar nvidia-detect

Ahora tenemos que instalar los paquetes necesarios y todas sus dependencias, el primer paquete que vamos a instalar es el paquete: nvidia-detect para que al ejecutarlo nos informe de cual de todos las versiones de los driver propietarios incluido en el repositorio oficial de Debian en las ramas: contrib y non-free, es el mas conveniente para nuestra tarjeta gráfica nvidia.


Ejecutamos en una consola de comandos: nvidia-detect para que nos informe cual es el driver correcto que tenemos que usar.

  
Nos informa, que nuestra tarjeta gráfica es: NVIDIA Corporation GT218 [GeForce 210] y que el driver para dicha tarjeta es: nvidia-legacy-340xx-driver 



Ahora instalamos los paquetes necesarios.

Como siempre hacemos en este blog, y con la ayuda del programa synaptic instalamos los paquetes necesarios.
En nuestro caso con solo seleccionar dos paquetes: linux-headers-amd64 y nvidia-legacy-340xx-driver el solo selecciona TODOS los demás paquetes necesarios para la instalación

Pero vamos a poner los cuatro paquetes mas necesarios y porque seleccionamos dichos paquetes:

- linux-header-amd64    (instala las cabeceras del kernel-linux para poder compilar el driver nivia)
- nvidia-legacy-340xx-driver    (es el que corresponde para la tarjeta gráfica en este manual)
- nvidia-legacy-340xx-kernel-dkms    (este lo usamos para que al añadir un nuevo kernel, se auto compile el driver para dicho kernel)
- xserver-xorg-video-nvidia-legacy-340xx    (este cargar el driver de nvidia)

nvidia-legacy-340xx-driver


nvidia-legacy-340xx-driver   y   nvidia-legacy-340xx-kernel-dkms

xserver-xorg-video-nvidia-legacy-340xx


Observamos como al marca el paquete: nvidia-legacy-340xx-driver, nos marcas todas sus dependencias para su correcta instalación, tal como muestran las siguientes capturas de pantalla.



Pulsamos en Marcar, para poder seleccionar todos los paquetes necesarios. Y ahora pulsamos en Aplicar para que empieze la instalación.

Pulsamos en Aplicar para empezar a instalar
Ahora ya esta instalado el driver de nvidia.





En el siguiente paso de la instalación, nos informa, que el driver libre nouveau esta cargado, y que generará conflictos con el driver privado de nvidia. Para resolver este problema nos aconseja reiniciar el PC  una vez se haya terminado de instalar el driver privado de nvidia.




Vemos como continua con la instalación.





Ya ha finalizado la instalación
Ahora reiniciamos el PC para ver se que ha instalado correctamente, y que carga dicho driver sin problemas.
 

==============================================================


nvidia-settings

Además nvidia puede ser configurada desde el entorno gráfico, con el programa nvidia-settings, que es una interfaz gráfica escrita en gtk, esta interfaz podemos usarla para configurar varios monitores en la misma tarjeta, el color, el brillo, etc. sin tener que memorizar algunos comando.

NOTA: Las imagenes se ven de color marroncito, pues en el momento de escribir este manual tengo personalizado los colores del sistema, por defecto las imagenes se deben de mostrar en color gris












Enlace externo a la wiki de Debian, en el cual se explica como instalar Las tarjetas graficas en Debian:

https://wiki.debian.org/NvidiaGraphicsDrivers










.

Abrir enlaces de thunderbird con firefox o chromium

Abrir enlaces de thunderbird con Firefox, google chrome u otro navegador
Por defecto thunderbird, al ser un producto de mozilla, abre los enlaces de los correos con firefox.
Personalmente firefox me gusta mucho, pero en la ultima actualización, le dio por abrir los enlaces con chromium. y claro quiero que los vuelva a abrir con firefox.

Para hacer esto abrimos thunderbird y vamos a Editar > Preferencias.




Una vez ahí, en la ventana que se abre, nos dirigimos a: Avanzado > General.


 Y ahora pulsamos en Editor de configuración.


Nos aparece esta ventana, en la cual pulsamos en ¡Acepto el riesgo!



y escribiremos en Buscar: network.protocol-handler.warn-external 



En la imagen vemos las tres últimas entradas con valor false, y lo vamos a cambiar por true





Las tres últimas entradas (ftp, http y https) debemos darle doble click para ponerlas a true.



Cerramos la ventana y la próxima vez que abramos un enlace desde thunderbird nos preguntará con qué programa queremos abrir los enlaces.
Si queremos que lo recuerde marcamos la casilla correspondiente.

Para Firefox o chromium-browser debemos elegir la siguienete ruta:


Fierfox:  /usr/bin/firefox
chromium:  /usr/bin/chromium-browser














.

sábado, 22 de julio de 2017

Problema con: apt y trusted.gpg

Resulta que actualice de Debian Jessie a Debian Stretch y añadí una un programa no incluidos en los repositorios oficiales de Debian (Skype for linux). A partir de aquí empecé a tener problemas con apt.

Busque en internet y no encontré la solución a la primera, pero como uno es muy constante después de mucho probar, e investigar encontré la solución.

El problema esta muy bien documentado en el web oficial de debian, en el  enlace de abajo, que copio el contenido integro.
https://debian-handbook.info/browse/es-ES/stable/sect.package-authentication.html

Comprobación de la autenticidad de un paquete

La seguridad es muy importante para los administradores de Falcot Corp. Por consiguiente, necesitan asegurar que sólo instalen paquetes con garantía de que provienen de Debian sin modificaciones en el camino. Un «cracker» podría intentar agregar código malicioso en un paquete que de otra forma sería legítimo. Si se instala tal paquete, éste podría hacer cualquier cosa para la que dicho «cracker» lo diseño, inclusive revelar contraseñas o información confidencial por ejemplo. Para evitar este riesgo, Debian provee un sello contra modificaciones para garantizar — al momento de instalación — que el paquete realmente proviene de su encargado oficial y no fue modificado por un tercero.
El sello funciona con una firma y una cadena de «hashes» criptográficos. El archivo Release, provisto por las réplicas Debian, es el firmado. Contiene una lista de los archivos Packages (incluyendo sus formas comprimidas, Packages.gz y Packages.xz, así como las versiones incrementales), junto con sus «hashes» MD5, SHA1 y SHA256 lo que asegura que los archivos no fueron modificados. Estos archivos Packages contienen una lista de los paquetes Debian disponibles en la réplica junto con sus hashes lo que asegura, a su vez, que el contenido de los paquetes mismos tampoco fue modificado. 
Las llaves confiables son administradas con el programa apt-key que se encuentra en el paquete apt. Este programa mantiene un conjunto de llaves públicas GnuPG que son utilizadas para verificar las firmas disponibles en los archivos Release.gpg disponibles en las réplicas. Puede utilizarse para agregar nuevas llaves de forma manual (cuando se necesitan réplicas no oficiales). Generalmente sin embargo, sólo necesitará las llaves oficiales de Debian. Estas llaves se mantienen actualizadas de forma automática por el paquete debian-archive-keyring (que crea los conjuntos de llaves correspondientes en /etc/apt/trusted.gpg.d). Sin embargo, la primera instalación de este paquete requiere cierto cuidado: aún si el paquete está firmado como cualquier otro, no se puede verificar dicha firma. Los administradores cautelosos deberían, por lo tanto, verificar las huellas de las llaves importadas antes de confiar en ellas para instalar nuevos paquetes: 

# apt-key fingerprint
/etc/apt/trusted.gpg.d/debian-archive-jessie-automatic.gpg
----------------------------------------------------------
pub   4096R/2B90D010 2014-11-21 [expires: 2022-11-19]
      Key fingerprint = 126C 0D24 BD8A 2942 CC7D  F8AC 7638 D044 2B90 D010
uid                  Debian Archive Automatic Signing Key (8/jessie) 

/etc/apt/trusted.gpg.d/debian-archive-jessie-security-automatic.gpg
-------------------------------------------------------------------
pub   4096R/C857C906 2014-11-21 [expires: 2022-11-19]
      Key fingerprint = D211 6914 1CEC D440 F2EB  8DDA 9D6D 8F6B C857 C906
uid                  Debian Security Archive Automatic Signing Key (8/jessie) 

/etc/apt/trusted.gpg.d/debian-archive-jessie-stable.gpg
-------------------------------------------------------
pub   4096R/518E17E1 2013-08-17 [expires: 2021-08-15]
      Key fingerprint = 75DD C3C4 A499 F1A1 8CB5  F3C8 CBF8 D6FD 518E 17E1
uid                  Jessie Stable Release Key 

/etc/apt/trusted.gpg.d/debian-archive-squeeze-automatic.gpg
-----------------------------------------------------------
pub   4096R/473041FA 2010-08-27 [expires: 2018-03-05]
      Key fingerprint = 9FED 2BCB DCD2 9CDF 7626  78CB AED4 B06F 4730 41FA
uid                  Debian Archive Automatic Signing Key (6.0/squeeze) 

/etc/apt/trusted.gpg.d/debian-archive-squeeze-stable.gpg
--------------------------------------------------------
pub   4096R/B98321F9 2010-08-07 [expires: 2017-08-05]
      Key fingerprint = 0E4E DE2C 7F3E 1FC0 D033  800E 6448 1591 B983 21F9
uid                  Squeeze Stable Release Key 

/etc/apt/trusted.gpg.d/debian-archive-wheezy-automatic.gpg
----------------------------------------------------------
pub   4096R/46925553 2012-04-27 [expires: 2020-04-25]
      Key fingerprint = A1BD 8E9D 78F7 FE5C 3E65  D8AF 8B48 AD62 4692 5553
uid                  Debian Archive Automatic Signing Key (7.0/wheezy) 

/etc/apt/trusted.gpg.d/debian-archive-wheezy-stable.gpg
-------------------------------------------------------
pub   4096R/65FFB764 2012-05-08 [expires: 2019-05-07]
      Key fingerprint = ED6D 6527 1AAC F0FF 15D1  2303 6FB2 A1C2 65FF B764
uid                  Wheezy Stable Release Key 


Una vez que las llaves apropiadas se encuentran en el conjunto, APT revisará las firmas antes de cualquier operación riesgosa para que las interfaces muestren una advertencia cuando estén instalando un paquete sobre el que no se puede verificar autenticidad.



Los problemas que causó Skype por no tener la llave publica fue el siguiente

Los errores que me devolvía APT era los siguientes:

W: http://security.debian.org/…/dists/stretch/updates/InRelease: The key(s) in the keyring /etc/apt/trusted.gpg are ignored as the file is not readable by user '_apt' executing apt-key.

W: http://ftp.de.debian.org/debian/dists/stretch/InRelease: The key(s) in the keyring /etc/apt/trusted.gpg are ignored as the file is not readable by user '_apt' executing apt-key.

W: GPG error: https://repo.skype.com/deb stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 1F3045A5DF7587C3
 

W: The repository 'https://repo.skype.com/deb stable InRelease' is not signed. 


Las causas eran las siguientes:
Perdía las llaves publicas de Debian stretch, modificaba el fichero /etc/apt/trusted.gpg
y le asignaba los permisos 600, es decir: rw- --- ---
Cuando lo correcto es tener dicho archivo con los permisos 644, es decir: rw- r-- r--

======================================================================

Solución a los errores:

Fue tan fácil como:
1- Borrar el archivo /etc/apt/trusted.gpg usando el comando rm como administrador: rm /etc/apt/trusted.gpg

2- Seguir los pasos de uno de los dos puntos siguientes. Yo realice la OPCION 1, el punto 2.1. por ser el mas rápido.

3- Reinstalar el paquete: debian-archive-keyring


======================================================================

OPCION 1

2.1- Instalar la llave publica directamente de un servidor de ubuntu, ya que Skype for linux, esta creado para los siguientes distribuciones, y la llave publica es la misma para todas las distribuciones:

- Ubuntu 14.04+ de 64 bits
- Debian 8+ de 64 bits
- openSUSE 13.3+ de 64 bits
- Fedora Linux 24+ de 64 bits 

Entonces con el siguiente comando instale la llave publica de Skype for linux.

apt-key adv --keyserver keyserver.ubuntu.com --recv 1F3045A5DF7587C3 



====================================================================== 


OPCION 2

2.2- Descargamos la llave publica de Skype for linux desde el repositorio oficial de Skype.
Enlace oficial : https://repo.skype.com/
y hacer todo lo que indica en dicho repositorio.
Copio y pego todo el contenido de dicho enlace, pero a nosotros los usuario de Debian solo nos interesa el apartado APT:

APT

# make sure you have 'apt-transport-https' installed
dpkg -s apt-transport-https > /dev/null || bash -c "sudo apt-get update; sudo apt-get install apt-transport-https -y"
curl https://repo.skype.com/data/SKYPE-GPG-KEY | sudo apt-key add -
echo "deb [arch=amd64] https://repo.skype.com/deb stable main" | sudo tee /etc/apt/sources.list.d/skype-stable.list
sudo apt-get update
sudo apt-get install skypeforlinux -y

Yum

sudo yum-config-manager --add-repo=https://repo.skype.com/data/skype-stable.repo
sudo yum install skypeforlinux -y

DNF

sudo dnf config-manager --add-repo https://repo.skype.com/data/skype-stable.repo
sudo dnf install skypeforlinux -y

Zypper

sudo zypper ar -f https://repo.skype.com/rpm/stable skypeforlinux
sudo zypper update
sudo zypper install skypeforlinux









.

Compartir impresoras y administración remota

NOTA: Actualizo esta entrada al día de 22 de julio de 2017, ya que la anterior entrada era del 15 de marzo de 2008. Enlace aquí

En la imagen inferior vemos una impresora local, es decir una impresora conectada directamente a  un ordenador de nuestra casa (de nuestra red local).


esquema



Imprimir en una impresora local compartida

Introducción.
Imprimir en una impresora local compartida no es mas que imprimir un archivo o documento en la impresora que esta conectada en otro ordenador de nuestra red local domestica.


En el esquema de abajo observamos que la Impresora esta conectada al ordenador de sobremesa PC1, el sobremesa PC3 y los portátiles PC2 y PC4, están conectados en la misma red local a través del router.

esquema



Para que se pueda imprimir desde otro ordenador de la red local, los ordenadores han de estar conectados en red, y el ordenador que tiene conectada la impresora tiene que estar encendido actuando de servidor de impresión.


Primer requisito.
La impresora ha de estar correctamente instalada y configurada en un ordenador que hará de servidor de impresión. En el esquema anterior este ordenador es PC1.


(En este enlace explico como se instala la impresora)

Configurar el resto de ordenadores para poder imprimir

Para poder imprimir desde el resto de ordenadores, (en el esquema anterior PC2, PC3 y PC4) hemos de configurar la impresora en todos y cada uno de los ordenadores de nuestra red local. Esto teníamos que hacerlo antiguamente, ya no es necesario.

Actualmente a partir de, (no recuerdo que versión de cups) ya no es necesario que nosotros configuremos la impresora en cada PC de nuestra red local, ya que el propio servidor CUPS se encargara de replicar las impresoras conectadas en este servidor de impresión al resto de pc de nuestra red local.



Instalación del servidor de impresión

Para empezar comenzamos con la instalación del servidor de impresión, como siempre con synaptic, e instalamos los siguientes paquetes:

apt-get install cups
apt-get install cups-bsd
apt-get install cups-client
apt-get install cups-common
apt-get install cups-core-drivers
apt-get install cups-server-common





Configurar el servidor de impresión
 
Ahora vamos a configurar el servidor de impresión cups para poder compartir todas las impresoras que tengamos conectadas a nuestro ordenador.

Primero en un navegador web, en nuestro caso estamos usadon Firefox, ponemos la siguiente ruta: localhost:631 
Nos aparecerá la web del servidor de impresión cups.



Nos vamos a la pestaña Administración, y vamos a configurar el servidor cups para poder compartir las impresoras conectadas en dicho pc



Lo primero que vamos a hacer es editar el archivo /etc/cups/cupsd.conf pero esta vez lo vamos a hacer desde el propio navegador web pulsando en: Editar archivo de configuración



NOTA: este archivo solo puede ser editado por root o por un usuario con permisos de administrador. Solo haremos tres modificaciones


1- Lo primero que vamos a modificar es el apartado # Only listen for connections from the local machine. (# Sólo escuchar las conexiones desde la máquina local.)

Vemos como solo esta configurado para que se conecten únicamente desde el servidor al puerto 631 (Listen localhost:631)




Y modificamos Listen localhost:631 por Listen *:631 para que se pueda acceder desde cualquier ordenador de nuestra red local. 
O bien podemos indicamos el o los ordenadores que permitimos se puedan conectar al servidor cups, mediante su dirección IP: Listen 192.168.2.106:631



2- Ahora un poco mas abajo, nos situamos en: # Restrict access to the server... (# Restringir el acceso al servidor ...) y le indicamos, el o los usuarios que puedes acceder al servidor cups


Para permitir que todos los usuario puedan acceder al servidor añadimos la siguiente línea: Allow from  all (Permitir a todos los usuarios)
Entre las etiquetas <Location> y </Location> 

O para permitir que uno o varios ordenadores pueda acceder al servidor, le añadimos la dirección IP de los ordenador, en este ejemplo solo autorizamos a un usuario añadiendo la siguiente línea: Allow from  192.168.2.106 (Permitir solo a los usuarios del ordenador con IP 192.168.2.106) entre las etiquetas y <Location> y </Location>



3- Ahora vamos a configurar que los usuarios puedan administrar las impresoras (instalar, configurar, borrar, etc...) para ello nos dirigimos un poco mas abajo a la etiqueta # Restrict access to the admin pages..  (# Restringir el acceso a las páginas de administración ..) 




Y entre las etiquetas <Location> y </Location> añadimos la siguiente linea: Allow from all (Permitir a todos los usuarios)

O para permitir que uno o varios usuario puedan acceder al servidor, le añadimos el o los nombres de los usuarios autorizados. Allow from  diego (Permitir solo al usuario diego) entre las etiquetas <Location /admin> y </Location>



Una vez realizados los cambios pulsamos en: guardamos cambios y logicamente como este fichero solo lo puede modificar root o un usuario administrador, nos pide que pongamos el nombre de root y la contraseña de este usuario.




y el guardará la configuración y reiniciará el servidor cups.


Nos devuelve a la página de administración y ya vemos como hemos compartido las impresoras y como podemos administrarlas desde cualquier ordenador.






Desde otro PC de nuestra red Local

Dejamos encendido el ordenador que acabamos de configurar. Y ahora nos vamos a otro pc de nuestra red local que tenga instalado Debian GNU/Linux, veremos como nos aparece la o las impresoras ya configuradas y listas para usar, sin haber realizado ninguna configuración. Tan solo tenemos que ir a las preferencias del sistema, apartado impresora y poner como predeterminada la impresora remota que nos aparece.





 Videotutorial




Nota: Los vídeotutoriales son totalmente ajenos a este blog, son enlaces correspondientes a youtube, screencast, vimeo, etc...






.