Archivo de la Categoría “Gentoo GNU/Linux”

Todo las cosas que se me van ocuriendo hacer con Gentoo GNU/Linux

Los usuarios de Gentoo hemos podido notar en muchas ocasiones una repentina reducción del rendimiento porque la compilación acapara la mayor parte del tiempo de cómputo del sistema cuando estamos instalando nuevo software. Esto se agrava aún más cuando compilamos paquetes muy grandes, el compilador o lenguaje usado puede necesitar más recursos para el proceso de compilación. Por ejemplo C++ necesita más recursos que C para compilar. Para evitar que cuando la máquina está siendo usada para otros menesteres que consideremos más importantes o urgentes, Portage nos ralentice los procesos de estas tareas, podemos hacer uso de las variables PORTAGE_NICENESS y PORTAGE_IONICE_COMMAND en el fichero /etc/portage/make.conf.

Para el make.conf de mi equipo de trabajo uso esta configuración:

  • PORTAGE_NICENES=10
    Con este conseguimos bajar la prioridad de Portage y de los procesos hijos que ejecute.
  • PORTAGE_NICE_COMMAND="ionice -n7 -p \${PID}"
    Con este otro, el fin es hacer que la copia de ficheros (io = entrada/salida) tenga la proridad más baja posible.

Para más información sobre estas variables recomiendo las páginas del manual de make.conf, nice e ionice.

$ man make.conf
$ man nice
$ man ionice

Si te ha resultado útil te agradecería que me ayudaras a mantener el blog, :-D

También acepto donaciones a través de Bitcoin en esta dirección: 1GPgF5twKZNmeqa3HHUNqZQ3VT3nsyKFPn

Comments No Hay Comentarios »

Para modificar el comportamiento del historial de BASH tan solo tenemos que hacer un export de la variable de entorno HISTCONTROL.
Podemos hacerlo de tres modos:

  1. Desde la consola con el comando $ export HISTCONTROL=ignoredups, por ejemplo.
  2. O si queremos que este cambio sea permanente para nuestro usuario, podemos ejecutar el siguiente comando:
    $ echo "HISTCONTROL=ignorespace" >> ~/.bashrc
  3. O bien, si además queremos que este cambio sea para todos los usuarios incluido el usuario root, tendríamos que establecer el valor de esta variable para todos los usuarios de este modo:
    # echo "HISTCONTROL=ignoreboth" > /etc/env.d/99histcontrol

Los valores válidos que puede tomar esta variable son:

  • ignorespace: si un comando comienza por espacio no se incluye en el historial.
  • ignoredups: no se añaden los comandos que ya se han usado previamente en esa sesión de consola.
  • ignoreboth: el igual a ignorespace e ignoredups juntos.
  • erasedups: antes de añadir un comando al historial, borra todas las ocurrencias coincidentes anteriores.

Si te ha resultado útil te agradecería que me ayudaras a mantener el blog, :-D

También acepto donaciones a través de Bitcoin en esta dirección: 1GPgF5twKZNmeqa3HHUNqZQ3VT3nsyKFPn

Comments No Hay Comentarios »

Hace tiempo compré un netbook chino de esos baratos, me costó 69€, bastante barato y la verdad que es divertido, venía con un Android algo tosco, ya que la adaptación que hicieron no era demasiado buena. Mirando por internet y foros conseguí ponerle una versión modificada que realmente mejora mucho la funcionalidad del aparato, ¡incluso puedo usar Skype!

Pero realmente compré el aparato porque me parecía muy interesante poder instalarle una distribución GNU/Linux personalizada para la máquina, pero para ello primero comenzaremos probando si es posible cargar un núcleo fiel a los parámetros que siguen los núcleos Linux. Que el núcleo Linux de Android, señores, no lo es, al menos hasta la versión 3.2 de Linux.

En Android: $ uname -m
armv5tejl

En el computador:
# crossdev -t armv5tel-softfloat-linux-gnueabi
# git clone git://git.code.sf.net/p/linuxwmt/code linuxwmt-code

$ make ARCH=arm menuconfig
$ make -j4 ARCH=arm uImage modules

Si no usas Gentoo puedes usar un toolchain descargado de aquí.

Fuentes:

 

Si te ha resultado útil te agradecería que me ayudaras a mantener el blog, :-D

También acepto donaciones a través de Bitcoin en esta dirección: 1GPgF5twKZNmeqa3HHUNqZQ3VT3nsyKFPn

Comments 38 Comentarios »

Después de tanto tiempo parece que por fin es posible usar el DNIe en Gentoo satisfactoriamente. Aquí detallo las instrucciones, que por supuesto son válidas para otros sistemas diferentes, salvo que habría que proceder de forma análoga con comandos distintos en la instalación de los paquetes propios del sistema de paquetería que uses.

  1. # emerge pcsc-tools pcsc-lite opensc
    Instalamos los paquetes necesarios.
  2. # rc-update add pcscd default
    Añadimos pcscd al arranque.
  3. # /etc/init.d/pcscd start
    Iniciamos el servicio pcscd
  4. # emerge jss
    Network Security Services para Java necesario para muchos sitios web
  5. $ mkdir dnie; cd dnie
  6. $ svn checkout https://svn.forge.morfeo-project.org/opendnie/opensc-opendnie/trunk
  7. $ cd trunk
  8. $./bootstrap
  9. $ ./configure --prefix=/usr/local
  10. $ make
  11. $ su -c "make install"
  12. Modificar el fichero de configuración /etc/opensc.conf:
    # card_driver dnie {
    # # Enable/Disable user consent on signing (default: enable)
    # user_consent_enabled = true;
    # # Program to be used for ask confirmation (default: pinentry)
    # user_consent_app = /usr/bin/pinentry;
    # }
    ...
    reader_driver pcsc {
    ...
    # Connect to reader in exclusive mode?
    # Default: false
    # connect_exclusive = true;
    ...
    # Enable pinpad if detected (PC/SC v2.0.2 Part 10)
    # Default: true
    enable_pinpad = false;
    ...
    }
    ...
    # PKCS #15
    framework pkcs15 {
    ....
    # Prefer pkcs15 emulation code before
    # the normal pkcs15 processing.
    # Some cards (like esteid and pteid) work in emu-only mode,
    # and do not depend on this option.
    #
    # Default: no
    try_emulation_first = yes;
    ....
    }
    ...
    # Parameters for the OpenSC PKCS11 module
    app opensc-pkcs11 {
    pkcs11 {
    # Should the module support hotplug of readers as per PKCS#11 v2.20?
    # This affects slot changes and PC/SC PnP, as v2.11 applications
    # are not allowed to change the length of the slot list.
    # Default: true
    plug_and_play = false;# Maximum Number of virtual slots
    ...
  13. $ dnie-tool -d -w
    Probamos que tenemos acceso al DNIe. Asegúrate de tener el lector conectado y el DNIe introducido en el lector.
    $ dnie-tool -d -w
    Waiting for a card to be inserted...
    DNIe Number: 99999999X
    SurName: PEREZ
    Name: JUAN LUIS
  14. Seguimos las instrucciones de esta web.
  15. Añadimos los certificados raíz como autoridad certificadora en Firefox. Que los podemos bajar de aquí.
  16. Añadimos el módulo para acceder al lactor en Firefox, en Editar->Preferencias->Avanzado->Cifrado->Dispositivos de seguridad->Cargar->Examinar… Y añadimos la ruta /usr/local/lib/pksc11/opensc-pkcs11.so.
  17. Comprobamos que funciona en una página de prueba de la FNMT.

Fuente | OpenDNIe Cenatic
Fuente | Un enfermo de los bits

Si te ha resultado útil te agradecería que me ayudaras a mantener el blog, :-D

También acepto donaciones a través de Bitcoin en esta dirección: 12Ktf11yD3FedJrRdoQFL5uvd8XFEgpQhB

Comments 1 Comentario »

Si queremos que nuestros overlays añadidos con layman se actualicen automáticamente cada vez que hacemos un eix-sync… Es muy sencillo:

# echo "*" >> /etc/eix-sync.conf

Si te ha resultado útil te agradecería que me ayudaras a mantener el blog, :-)

También acepto donaciones a través de Bitcoin en esta dirección: 12Ktf11yD3FedJrRdoQFL5uvd8XFEgpQhB

Comments No Hay Comentarios »

Hoy vamos a ver como instalar Sparkleshare en un servidor propio y su uso en una estación de trabajo. He leído hablar de él y también me parecía genial la idea de poder tener un algo similar a Dropbox pero en mi propio servidor. La idea es genial, en el servidor tenemos ssh como servicio y en los clientes instalamos Sparkleshare y Git.

En el lado del servidor solo es necesario tener en funcionamiento el servicio ssh, y al menos un usuario en el servidor que será el que tenga acceso a su carpeta compartida. En el lado del cliente será necesario tener instalado openssh para usarlo como cliente (que yo ya tenía instalado), git y sparkleshare.

 

1. Preparar el servidor:

  • # groupadd sparkleshare
  • # gpasswd -a usuario sparkleshare
  • # mkdir -p /home/sparkleshare/usuario
  • # chown root:sparkleshare /home/sparkleshare
  • # chown usuario:sparkleshare /home/sparkleshare/usuario
  • # chmod g+s /home/sparkleshare (con esto conseguimos que los ficheros y directorios creados por usuario pertenezcan al grupo sparkleshare)
  • # su usuario -c “git init –bare /home/sparkleshare/usuario/usuario.git”

 

2. Preparar la máquina cliente:

Instalamos Sparkleshare en la máquina de trabajo cliente, también con Gentoo:

  • # layman -a betagarden
    Añadimos el overlay betagarden a nuestro portage.
  • # layman -S
    Sincronizamos todos nuestros overlays de terceros.
  • # echo "app-backup/sparkleshare ~amd64" >> /etc/portage/package.keywords/sparkleshare
    Aceptamos sparkleshare para instalar como inestable.
  • # emerge -avq sparkleshare
    Lo instalamos.
  • $ sparkleshare start
    Y lo ejecutamos como usuario.

 

3. Configurar Sparklshare en la máquina cliente:

Ponemos nuestro nombre y la dirección de correo-e a la que queremos que Sparkleshare nos envíe notificaciones.

Imagen de configuración de Sparkleshare 01

¡Antes de continuar es importante este paso! En este momento Sparkleshare ha creado una pareja de claves pública y privada para su uso con ssh para la comunicación con el servidor. Tenemos que agregar la clave pública a nuestro usuario en nuestro servidor para permitir el acceso con las claves generadas por Sparkleshare.

$ ssh-copy-id -i .config/sparkleshare/sparkleshare.usuario@micorreo.com.key.pub usuario@miservidor
Ejecutamos esto como usuario en la máquina cliente para copiar la clave pública en el servidor.

En la siguiente ventana de configuración ponemos el servidor con el nombre de usuario, por ejemplo: usuario@miservidor. Y en nombre de la carpeta ponemos la ruta completa al repositorio git en este caso sería /home/sparkleshare/usuario/usuario.git.

Imagen de configuración de Sparkleshare 02

Bien, ahora sí podemos pulsar en “sincronizar”.

¡¡Y ahora a probarlo!!

 

5. Otras consideraciones para la configuración:

Debemos tener en cuenta que si nuestro puerto de acceso a ssh no es el puerto 22 por defecto, Sparkleshare no funcionará pues no tenemos en la interfaz ninguna forma de indicar el puerto de conexión. Sin embargo sí que hay una solución para ello. Haremos lo siguiente en el equipo cliente como usuario:
$ nano -w ~/.ssh/config
Creamos y editamos el fichero.

Host ejemplo.com
Port 1234

 

4. Opinión del estado actual del proyecto Sparkleshare:

Todavía es un proyecto joven al que le falta pulir muchas cosas y añadir muchas funciones más. Detecta bien los cambios de nombre de fichero, la adición de ficheros, la modificación de su contenido, la eliminación… Sin embargo el interfaz gráfico todavía deja bastante que desear. Se ve que se están centrando más en el comportamiento y funcionamiento de la sincronización.

Si te ha resultado útil y te gustaría compensarme invitándome a una cervecita o bien ayudánme con los gastos del blog:

 

Comments No Hay Comentarios »

Lo primero es instalar x11-drivers/radeon-ucode:

# emerge radeon-ucode

Recompilar el kernel activando las siguientes características:

Device Drivers --->
Graphics support --->
<*> /dev/agpgart (AGP Support) --->
<*> Modul für deinen Chipsatz wählen
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
<*> ATI Radeon
[*] Enable modesetting on radeon by default

Y también:

Device Drivers --->
Generic Driver Options --->
-*- Userspace firmware loading support
[*] Include in-kernel firmware blobs in kernel binary
(
radeon/R700_rlc.bin) External firmware blobs to build into the kernel binary
(
/lib/firmware) Firmware blobs root directory

Editmamos /etc/make.conf:
...
VIDEO_CARDS="ati"
...

Para bajar el perfil de rendimiento de la GPU y en consecuencia la necesidad de mayor refrigeración:

# echo profile > /sys/class/drm/card0/device/power_method
# echo "low" > /sys/class/drm/card0/device/power_profile

Comments 3 Comentarios »

  1. Añadimos las USE oss y pulseaudio a nuestro make.conf.
  2. Instalamos Wine:
    # emerge -avq wine
  3. Descargamos la versión de Windows de Spotify de aquí y lo instalamos:
    $ wine Spotify Installer.exe
  4. Ejecutamos winecfg, vamos a la pestaña audio y desmarcamos el soporte para sonido PulseAudio y Alsa, pero activamos OSS. Pulsamos aceptar.

    Imagen de winecfg

    Imagen de configuración de audio de Wine.

  5. Pulsamos con el botón derecho sobre el icono de Spotify que nos ha creado en el escritorio y añadimos al principio de la ruta de ejecución padsp.

    Lanzador Spotify

    Configuración del lanzador de Spotify

  6. ¡A disfrutar de la música!

Comments No Hay Comentarios »

Un ScreenCast es al vídeo lo que un SnapShot (pantallazo o captura de pantalla) a la fotografía. Hay algunos programas que realizan capturas de vídeo de lo que se muestra en nuestra pantalla, unos con mejores resultados que otros y también con mayor o menor dificultad de uso. Ejemplo de ello son Istanbul y RecordMyDesktop, dos soluciones que podrían funcionar muy bien. Sin embargo, no me permiten grabar sonido de un micrófono mientras graba la pantalla, para por ejemplo dar explicaciones mientras muestras algo. Cosa que puede ser bastante útil. Hace unos meses descubrí que ffmpeg es capaz de esto y me puse a hacer algunas pruebas para conseguir grabar vídeos con la característica de que se pudiera oír mi voz dando algunas explicaciones. En realidad no era para nada muy serio, pero en alguna ocasión me ha surgido la situación que querer explicar a alguien cómo hacer algo, y la verdad que tardaría un minuto en hacerlo con un vídeo así y no como sería con una explicación por escrito, que además si no me explico bien, quizás pueda llevar más a confusión. Veamos las opciones de ejecución por separado:

  • -i dispositivo se usa para indicar el dispositivo de entrada tanto para vídeo como para audio.
  • -f formato es para indicar el formato de entrada ya sea de vídeo o de audio.
  • -r n consigue que se haga la grabación n fotogramas por segundo.
  • -s tamaño es la forma que tiene ffmpeg de recibir el tamaño de captura de pantalla, puede ser indicado de varias formas, como 640x480 o bien su equivalente vga. Podemos ver una lista de nombres para los diferetesta tamaños aquí o bien poner un tamaño diferente de la forma valorxvalor.
  • -b se usa para estipular la tasa de bits por segundo que se van a usar en la salida ya sea de vídeo o sonido, ejemplo: -b 128k.
  • -sameq consigue que se haga la captura con la misma calidad que tenga la propia entrada. Haciendo que la tasa de bits por segundo de la salida sea la necesaria como para que no sea apreciable ninguna pérdida de calidad con respecto a la entrada. Si usas esta opción, no es neceseario usar -b.
  • -async n muy útil para conseguir una buena sincronización del sonido de entrada y la imagen. De este modo, si grabamos nuestra voz mientras grabamos el vídeo veremos como nuestras palabras van en sincronía con el vídeo.

Algunos ejemplos:

  • $ ffmpeg -f oss -i /dev/dsp salida.mpg
    Para capturar sonido con OSS.
  • $ ffmpeg -f alsa -i plughw:1,0 salida.mpg
    Para capturar sonido con ALSA.
  • $ ffmpeg -f -x11grab -i :0.0 -s 1280x1024 -r 25 salida.mpg
    Para capturar vídeo de la pantalla.
  • $ ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 -sameq Desktop/out.mpg
    Para capturar vídeo de la webcam.
  • $ ffmpeg -async 1 -f alsa -i plughw:1,0 -f x11grab -s 1440x900 -r 25 -i :0.0 -b 128k Desktop/out.mpg
    Capturar vídeo y sonido a la vez.

Vídeo de demostración haciendo una prueba:

Fuente: ffmpeg.org

Comments 2 Comentarios »

Tener un sistema de 64bits en ocasiones da algunos quebraderos de cabeza, más que nada porque hay Software que es distribuido para plataformas x86 en su versión 32bits. Esta práctica es muy normal en desarrollos de Software privativo. Antes Adobe no distribuía su famoso Flash para 64bits para GNU/Linux y otro ejemplo es Skype, que aún se niega a publicar una versión de 64bits de su famoso programa de vídeo-conferencias.

Si además unimos a esto que Skype tiene problemas con las cámaras basadas en el driver gspca, tenemos un cóctel bastante amargo.

Para hacer funcionar nuestra flamante cámara basada en el driver gspca_561 o cualquier otra cámara basada en los drivers gspca en el Skype de nuestro Gentoo GNU/Linux 64bits debemos seguir los pasos siguientes:

  1. # echo "media-libs/libv4l ~amd64" >> /etc/portage/package.keywords
    # emerge -av media-libs/libv4l

    Para instalar la versión 0.6.1 de libv4l que está enmascarada y es la que mejor funciona.
  2. # echo "net-im/skype ~amd64" >> /etc/portage/package.keywords
    # emerge -av net-im/skype

    Instalamos Skype.
  3. # nano -w /usr/bin/skype
    Modificamos el fichero para que cuando ejecutemos Skype cargue la biblioteca de compatibilidad con V4l1:

    #!/bin/sh
    cd “/opt/skype”
    if [ -n "/opt/skype" ] ; then
    if [ "${LD_LIBRARY_PATH+set}" = "set" ] ; then
    export LD_LIBRARY_PATH=”${LD_LIBRARY_PATH}:/opt/skype”
    else
    export LD_LIBRARY_PATH=”/opt/skype”
    fi
    fi
    export LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so
    exec ./skype “$@”

Si nos encontrásemos con la situación de que portage nos dice que Skype está enmascarado por el tipo de licencia, debemos decir a portage que acepte la licencia de Skype o bien que las acepte todas y así olvidarnos de eso. Basta con editar el fichero /etc/make.conf para añadir una de estas líneas:

  • ACCEPT_LICENSE="skype-eula"
    Para aceptar solo la licencia de Skype.
  • ACCEPT_LICENSE="*"
    Para aceptar cualquier licencia.

Con esto podemos usar normalmente Skype, y veremos como ya podemos disfrutar de nuevo nuestra Webcam.

Comments No Hay Comentarios »