[Gentoo] Evitar un paquete al compilar

En ocasiones desconocemos cosas muy sencillas que nos hubieran sido útiles en alguna ocasión. Esto es lo que me ocurrió a mí, al conocer un comando el cual en muchas ocasiones me hubiera facilitado mucho la labor en algunos problemas de compilación de algún paquete o actualización del sistema. Es el siguiente:

emerge --resume --skipfirst

Con este sencillo comando le estamos diciendo a portage que IGNORE el primer paquete que va a intentar emerger (el que nos dio el problema). Si estamos haciendo un upgrade de nuestro sistema gentoo y algún paquete nos esta dando problemas de compilación una y otra vez, podemos ignorarlo y continuar con el siguiente.

Para poder terminar con la actualización del sistema o la instalación del paquete y después solucionar el problema.

Lo dicho, algo tan sencillo que después de tantos años yo desconocía.

Share

Equipo con dos tarjetas gráficas en gentoo. Optimus Machine.

¿Que es un pc optimus machine?

Un PC Optimus Machine son aquellos equipos portatiles que tienen 2 tarjetas gráficas. Una de ellas de baja calidad de procesamiento y la otra bastante mayor. La que se encarga de procesar los gráficos es la tarjeta de mayores prestaciónes y una vez procesados, los envia a la tarjeta más pequeña para que los muestre por pantalla. La tarjeta superior no tiene conectada a ella una pantalla, simplemente se usa para el procesamiento gŕafico.

Dicho esto, os facilito los pasos necesarios para hacer funcionar una máquina optimus machine en Gentoo. Empezamos:

En el kernel, seleccionar la opción de modesetting para el modulo de intel:

——————————————————————————————————————

DeviceDrivers --->
Graphics Support --->
Direct Rendering Manager --->
Direct Rendering Manager (Xfree86 4.1.0 and higher DRI support) --->
<*> Intel 8xx/9xx/G3x/G4x/Hd Graphics
[*] Enable modesetting on intel by default

——————————————————————————————————————

Añadir el modulo del kernel ‘nouveau’ y ‘nvidia’ a la lista de blacklist para que systemd o openrc evite cargarlo al inicio:

# Para sytemd:
——————————————————————————————————————

echo "blacklist nouveau" >> /etc/modules-load.d/blacklist.conf
echo "blacklist nouveaufb" >> /etc/modules-load.d/blacklist.conf
echo "blacklist rivafb" >> /etc/modules-load.d/blacklist.conf
echo "blacklist nvidiafb" >> /etc/modules-load.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modules-load.d/blacklist.conf

——————————————————————————————————————

# Para Openrc:
——————————————————————————————————————

echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveaufb" >> /etc/modprobe.d/blacklist.conf
echo "blacklist rivafb" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidiafb" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf

——————————————————————————————————————

Habilitamos la versión testing para los paquetes que se encargan de los gráficos:

——————————————————————————————————————

echo "x11-apps/xrandr ~amd64" >> /etc/portage/package.keywords
echo "x11-base/xorg-server ~amd64" >> /etc/portage/package.keywords
echo "x11-proto/inputproto ~amd64" >> /etc/portage/package.keywords
echo "x11-drivers/nvidia-drivers ~amd64" >> /etc/portage/package.keywords
echo "x11-drivers/xf86-input-evdev ~amd64" >> /etc/portage/package.keywords
echo "x11-drivers/xf86-input-synaptics ~amd64" >> /etc/portage/package.keywords
echo "x11-drivers/xf86-video-modesetting ~amd64" >> /etc/portage/package.keywords

——————————————————————————————————————

Hacemos emerge de todos esos paquetes

——————————————————————————————————————

emerge x11-apps/xrandr && emerge -1 xf86-video-modesetting && emerge -1 $(qlist -IC x11-drivers)

——————————————————————————————————————

Colocar, el siguiente contenido en /etc/gdm/Init/Default:

xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

Seleccionamos con eselect opengl la opción de nvidia:


eselect opengl list:

——————————————————————————————————————
Available OpenGL implementations:
[1] nvidia
[2] xorg-x11 *
——————————————————————————————————————

eselect opengl set 1

Switching to nvidia OpenGL interface… done

En /etc/X11/xorg.conf insertamos todo esto:
——————————————————————————————————————

Section "ServerLayout"
Identifier "layout"
Screen 0 "nvidia"
Inactive "intel"
EndSection

Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID ""
EndSection

Section "Screen"
Identifier "nvidia"
Device "nvidia"
# Uncomment this line if your computer has no display devices connected to
# the NVIDIA GPU. Leave it commented if you have display devices
# connected to the NVIDIA GPU that you would like to use.

EndSection

Section "Device"
Identifier "intel"
Driver "modesetting"
BusID ""
EndSection

Section "Screen"
Identifier "intel"
Device "intel"
EndSection


——————————————————————————————————————

Sustituimos BUS_ID_INTEL_CARD por el ID de la tarjeta gráfica INTEL. Para averiguar el PCI ID podemos hacerlo con:


lspci | grep VGA

El comando en mi caso, devuelve:
——————————————————————————————————————
00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b)
——————————————————————————————————————

Quedaria:
———————-
Section “Device”
Identifier “intel”
Driver “modesetting”
BusID “PCI:0:2:0”
EndSection
———————-

Y para la tarjeta gráfica NVIDIA, podemos ver cual es el PCI ID, con:

lspci | grep NVIDIA

Devolveria:
——————————————————————————————————————
04:00.0 3D controller: NVIDIA Corporation GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (rev a1)
——————————————————————————————————————

Quedaria en el xorg.conf:
——————————————————————————————————————

Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:4:0:0"
EndSection

——————————————————————————————————————

Una vez realizado todo lo anterior, solamente quedaria instalar el software que realizará el proceso de intercambio de gráficos entre las 2 tarjetas, se llama ‘bumblebee’.

Lo instalamos con:


emerge bumblebee

Añadimos nuestro usuario al grupo bumblebee:


usermod -a -G bumblebee

Arrancamos el servicio ‘bumblebeed’ al inicio:

# Para SystemD
systemctl enable bumblebeed


# Para openRC
rc-update add bumblebeed default

Una vez realizados estos pasos, para ejecutar software y que bumblebeed ponga a trabajar las 2 tarjetas se hace con:

optirun aplicacion

Por ejemplo:

optirun glxgears

Llegados a este punto ya tendriamos nuestra máquina funcionando con las dos tarjetas gráficas.

Share

Cambiar fecha de creación y modificación un fichero

Mediante el comando touch de nuestro linux, podemos cambiar la fecha de creación y/o fecha de modificación de un fichero.

Es muy sencillo:


touch -t 201510021330.13 fichero

En este caso, el fichero nos quedaría con la fecha de modificación y creación:

El día 02 del mes 10 del año 2015 a las 13:30 horas y 13 segundos

Podemos ser más precisos, añadiendo algún que otro parametro:


-a: Modificamos solo la fecha del ultimo acceso al fichero
-m: Modificamos solo la fecha de modificación del fichero

Share

Renombrar interfaz de red en UDEV

Como sabeis desde hace algún tiempo udev ha cambiado la forma de nombrar a las interfaces de red.
Antes las mostraba como ‘eth0,eth1,eth2…’ para las tarjetas de red cableadas y ‘wlan0,wlan1,wlan2‘ para las tarjetas de red inalámbricas.

Ahora las nombra con ‘enp6s0,enp6s1…’ para las cableadas y ‘wlps0,wlps1..’ para las inalambricas. Esto en servidores que llevan años funcionando es un problema, ya que,despues de una actualización del sistema global podemos encontrarnos en la situación de que nuestros scripts propios no arrancan porque no encuentran los nombres de red que teniamos anteriormente.

Lo que vamos a hacer esta vez es asignarle nombres propios a cada interfaz, así, udev no tocará nada. ¡vamos allá!

Lo único que tenemos que hacer es, crear un fichero con nombre ’10-local.rules’ en el directorio ‘/etc/udev/rules.d’. La ruta completa seria /etc/udev/rules.d/10-local.rules .
Tendria el siguiente contenido:


SUBSYSTEM=="net", ATTR{address}=="DIRECCIÓN_MAC_TARJETA", NAME="lan0"
SUBSYSTEM=="net", ATTR{address}=="DIRECCIÓN_MAC_TARJETA", NAME="wifi0"

Solamente tendriamos que sustituir DIRECCIÓN_MAC_TARJETA por la dirección MAC de nuestra interfaz.

Hay que recordar que para averiguar la dirección mac de nuestra tarjeta basta con ejecutar un:


ifconfig interfaz | grep ether

Una vez creado el fichero con el contenido anterior y reiniciada la máquina, ya tendriamos la tarjeta de red cableada con el nombre ‘lan0’ y la inalámbrica con el nombre ‘wifi0’.

Espero que esta pequeña receta os sirva de ayuda.

Share

Tormenta broadcast NETGEAR ONO

Hola de nuevo a todo el mundo!

Despues de mucho tiempo offline volvemos a mostrarnos al mundo. Esta vez vengo a plasmar una experiencia personal con los famosos router netgear que entrega ONO.

Por cuestiones tecnicas del escenario que nos encontrábamos, el router de ONO debía estar configurado en modo NAT, es decir, en el mismo router, una ip publica y otra privada para nuestra LAN.

La máquina con Gentoo conectada a un puerto ethernet del router NETGEAR, seria algo así:


ROUTER ONO -----> 84.128.X.X. -- PUBLICA
192.168.1.1 -- PRIVADA


MAQUINA GENTOO -------> IP WAN 192.168.1.2
-------> IP LAN 192.168.10.1

Una vez realizado lo anterior. ¡Nos pusimos a probar nuestra instalación!
Todo funcionaba de maravilla hasta pasar 15 o 20 minutos. Poco a poco la velocidad a Internet caía, casi no podia abrir simples paginas web..

Con lo que, despues de horas y horas de pruebas y no encontrar una solución, puse a funcionar ‘tcpdump’ en la tarjeta de red donde estaba conectado el router NETGEAR.

Y esto fué lo que me encontré (lineas y lineas de lo que pego a continuación):


ARP Who has 192.168.1.2 Tell 192.168.1.1
ARP Who has 192.168.1.3 Tell 192.168.1.1
ARP Who has 192.168.1.4 Tell 192.168.1.1
ARP Who has 192.168.1.5 Tell 192.168.1.1
ARP Who has 192.168.1.6 Tell 192.168.1.1
ARP Who has 192.168.1.7 Tell 192.168.1.1
ARP Who has 192.168.1.8 Tell 192.168.1.1
ARP Who has 192.168.1.9 Tell 192.168.1.1
ARP Who has 192.168.1.10 Tell 192.168.1.1
ARP Who has 192.168.1.11 Tell 192.168.1.1
ARP Who has 192.168.1.12 Tell 192.168.1.1
ARP Who has 192.168.1.13 Tell 192.168.1.1
ARP Who has 192.168.1.14 Tell 192.168.1.1
ARP Who has 192.168.1.15 Tell 192.168.1.1
ARP Who has 192.168.1.16 Tell 192.168.1.1
ARP Who has 192.168.1.17 Tell 192.168.1.1
ARP Who has 192.168.1.18 Tell 192.168.1.1
ARP Who has 192.168.1.19 Tell 192.168.1.1
ARP Who has 192.168.1.20 Tell 192.168.1.1
ARP Who has 192.168.1.21 Tell 192.168.1.1
ARP Who has 192.168.1.22 Tell 192.168.1.1
.........

Esto, lo emitia el router de ONO cada 2 o 3 segundos. Estaba provocando una tormenta broadcast impresionante. Parecia que el router estaba intentando ponerse en contacto con equipos que no existian en la red, desde 192.168.1.2 hasta 192.168.1.254.

No conozco el porque de esto, supongo que será algun defecto del router.

¿LA SOLUCIÓN?

Bastaria con configurar el NETGEAR en modo bridge. O si necesitamos si o si una ip local, configurariamos el NETGEAR en modo bridge y lo conectariamos a un router, y este a la máquina Linux configurada para manejar el trafico.

INSISTO. En la instalación que estaba realizando era ESTRICTAMENTE NECESARIO trabajar con el router del proveedor en modo NAT. Si no hubiera sido así podria haber configurado en modo bridge el router y problema solucionado.

Espero que esta entrada le sirva a alguien de ayuda ya que yo estuve pegando cabezazos hasta que encontré el por que y una solución.

Share

[Gentoo & Gnome] Automontaje de dispositivos

Acabo de habilitar el automontaje de dispositivos con gnome en un equipo con gentoo, lo publico aqui a modo de apunte personal y por si alguien le sirve de ayuda, seguro que si :).

1:

echo “gnome-base/gvfs gdu” >> /etc/portage/package.use

2:

emerge gnome-disk-utility gnome-base/gvfs

3:

reboot

Ya tenemos el automontaje habilitado en nuestro GNOME.

Share

[Gentoo] Desinstalar GNOME o KDE con portage

Estos dias he estado terminando una instalación nueva de Gentoo Linux. Decidí probar gnome 3 como entorno de escritorio. El aspecto visual es mágnifico pero hay otras cosas como el rendimiento, y la organización del propio escritorio que aun no estan del todo bien, con lo cual, decidí desinstalar gnome y volver a instalarlo pero esta vez GNOME 2.

Lo pudé hacer con la ayuda de eix, una aplicación que sirve para hacer búsquedas dentro del árbol de portage.

Antes, la instalamos con:

emerge eix

Más tarde, debemos decirle que analice nuestro árbol de portage antes de poder utilizar eix:

eix-update

Ahora, con ayuda de eix listaremos todos los paquetes que pertenezcan a gnome-base:

eix -C gnome-base –only-names –installed

Podemos observar como responde perfectamente a nuestra petición. Nos muestra todos los paquetes instalados en nuestro sistema pertenecientes a la categoria gnome-base.

Esto es lo que vamos a hacer ahora, vamos a tomar como ayuda eix para eliminar todos los paquetes de gnome-base y gnome-extra con portage.

emerge -C `eix -C gnome-base –only-names –installed` && emerge -C `eix -C gnome-extra –only-names –installed` && revdep-rebuild

Podriamos hacer lo mismo para eliminar KDE.

emerge -C `eix -C kde-base –only-names –installed` && emerge -C `eix -C kde-misc –only-names –installed` && revdep-rebuild

Despues de eliminar dichos páquetes no estaria mal ejecutar revdep-rebuild, por eso, lo he añadido a las reglas anteriores.

Un saludo.

Fuentes: 1& 2

Share

[Gnome] Gnome con soporte MP3.

Hola.

Esta seria la continuación de la anterior entrada, con algunos percances que he tenido con un equipo gentoo, con la visualización de imagenes (jpeg) en gnome anteriormente, y ahora, vamos a solucionar tambien para la reproducción de ficheros de audio comprimidos con diversos formatos (OGG,MP3….).

1 .

echo “media-plugins/gst-plugins-meta X alsa dvd ffmpeg lame mad mpeg ogg theora v4l vorbis” >> /etc/portage/package.use

2 .

emerge media-plugins/gst-plugins-meta

3.

A escuchar música se ha dicho 😀

Como mencioné en mi anterior entrada, colocar las USE flags necesarias como globales nos ahorraran bastantes problemas en un futuro. Antes de instalar un sistema gentoo evalua que vas a hacer con este y comprueba la correcta insercción de las USES necesarias.

Saludos.

Share

[Gentoo & Gnome] Visualización de imagenes

Hola a todo el mundo.

De nuevo vengo a publicar una receta que seguro que alguien le será útil. Ayer tuvé que preparar un servidor de ficheros que se utilizaria tambien para las necesidades básicas de un usuario domestico.
Estas necesidades suelen ser.. navegar, escuchar música, algo de tratamiento/visualización de imágenes y algúna que otra grabación de cd-roms.

El trabajo estaba casi finalizado (gnome instalado y funcionando) y cumplia casi todos los objetivos citados arriba.. pero faltaba algo!! no visualizaba imagenes jpg guardadas localmente!!.

Me llevo algo de tiempo averiguar de donde provenia el problema hasta que recientemente lo pudé solucionar.

La solución es sencilla (como en todos los problemas de este tipo, suelen ser problemas que molestan bastante y las soluciones bastante fáciles de implementar).

El problema era la falta de la USE jpg en el fichero make.conf de este gentoo.

Lo que hice fué, añadir jpeg al fichero make.conf (quedaria asi):

USE=”cdr win32codecs X gtk gnome -qt3 -qt4 -kde java nsplugin hal dvd alsa cdr dvd mp3 dbus java libnotify system vorbis xvid jpeg imagemagick”

Una vez realizado este paso, debemos compilar de nuevo el paquete gtk+ con la nueva USE:

emerge –update –newuse x11-libs/gdk-pixbuf

Con esto, se ha compilado de nuevo el paquete gtk-pixbuf (librerias para cargar imagenes de GTK) con la nueva USE flag.

Una vez realizado estos 2 sencillos pasos ya podremos visualizar correctamente imagenes en nuestro entorno gnome.

Cuando realicen una instalación nueva de gentoo, presten especial atención a las USE flags globales (make.conf) y añadan las esenciales para no tener problemas en algunas de las tareas cotidianas de un sistema.

Saludos.

Share