Archivo de la Categoría “GNU/Linux”

Todo las cosas que se me van ocuriendo hacer con 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 »

Hacía tiempo que quería tener la funcionalidad de conexión segura SSL en el protocolo HTTP (HTTPS) en mi servidor, sobre todo para poder utilizarlo cuando accedo al área de administración en redes poco seguras. De este modo me aseguro que la comunicación entre mi servidor y mi navegador va cifrada, además de reducir la posibilidad de un ataque man-in-the-middle.

Desde hace tiempo que lo puse a funcionar en Cherokee Web Server, y no puedo dejar de escribir qué hice para hacerlo funcionar, así además de no olvidarlo yo, puede servirle a alguien también.

Los pasos básicamente son instalar apropiadamente los certificados raíz de CAcert.org en el servidor (concatenados en un fichero único), generar una petición de firma de certificado, generar la firma de CAcert.org usando la petición anterior y por último instalar la clave privada y la firma en el servidor.

  1. Generamos nuestra petición de firma de certificado (certificate signing request), ejecutamos en una consola el comando:
    # openssl req -nodes -new -keyout private.key -out server.csr
  2. Iniciamos sesión en cacert.org.
  3. A la derecha, en el menú, pulsamos en Dominios y luego en agregar.Agregar domiinio Ponemos nuestro dominio, en mi caso juanluperez.com.
  4. Después pulsamos en Certificados de Servidor, y en nuevo.Agregar certificado de servidor Copiamos el contenido de server.csr y lo pegamos en la caja donde nos pide el certificate signing request.
  5. Nos devolverá un texto que comienza con algo como ----BEGIN CERTIFICATE----. Copiamos el texto tal cual está en un fichero texto plano y lo nombramos certificate.pem. ¡Ojo! La última línea debe ser ----END CERTIFICATE----, no nos servirá una última línea vacía. Lo aviso para los usuarios del editor nano, que siempre añade esta línea al final.
  6. Descargamos el certificado raíz root.crt y el certificado intermedio class3.crt.
  7. # cat root.crt class3.crt > chained.crt
    Concatenamos los dos certificados en un único fichero, tal y como lo necesitará cherokee más adelante.
  8. Activamos SSL, vamos en el panel de configuración de Cherokee haciendo uso de cherokee-admin, un interfaz web de administración muy sencillo, en General y en pestaña Network vamos a la opción SSL/TLS backend y escogemos OpenSSL/libssl. A continuación vamos a la pestaña Ports to listen, añadimos el puerto 443 y activamos la casilla TLS/SSL.
  9. Pulsamos en la sección vServers, a la izquierda seleccionamos el servidor virtual sobre el que queremos aplicar el certificado. Luego pulsamos a la derecha en la pestaña Security, donde vamos a añadir todos los ficheros de certificado que se necesitan.
  10. En Certificate añadimos la ruta a certificate.pem.
  11. En Certificate key añadimos la ruta a private.key.
  12. En Client certs. request tenemos tres opciones, skip para no pedir certificado de cliente, accept en el caso de que acepte certificado en el caso de que se le envíe o require, que exigirá un certificado de cliente válido para permitir el paso. En mi caso me basta con skip, ya que no estoy interesado en autenticación, solo en el cifrado.
  13. En CA List añadimos la ruta a chained.crt.

Los certificados que generamos en CACert duran 6 meses, por lo que cuando caduque nuestro certificado tenemos que volver a cargar uno renovado, pero esto es muy sencillo. Vamos a CACert, iniciamos sesión, pusamos en “ver” en la sección “Certificados de servidor”, luego seleccionamos el certificado que está apunto de caducar (o ya caducado) y le damos a renovar. Luego nos mostrará el certificado, lo copiamos en un fichero certificate.pem y lo volvemos a cargar en Cherokee.

Si no vemos listado el certificado que queremos renovar, debemos pulsar en “ver todos los certificados”.

Fuente | Wiki CaCert.org
Fuente | mail-archive.com

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 2 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 »

En una entrada anterior explicaba como instalar SparkleShare desde un Overlay de Gentoo. En este caso vamos a instalar la última versión (0.4.0) de SparkleShare desde su repositorio oficial Git. Hay que tener en cuenta que tomamos como referencia la entrada anterior, por lo que se tiene en cuenta que hemos llevado a cabo los pasos anteriores y tenemos resueltas las dependencias de SparkleShare.

  1. # emerge -C sparkleshare -q
    Desinstalamos la versión antigua de sparkleshare.
  2. $ mkdir ~/src/
    Creamos un directorio donde contener las fuentes si no existiera.
  3. $ cd ~/src/
    Nos movemos al direcotorio creado.
  4. $ git clone https://github.com/hbons/SparkleShare.git
    Descargamos las fuentes de SparkleShare.
  5. $ cd SparkleShare/
    Entramos en el directorio de las fuentes.
  6. $ ./autogen.sh --prefix=/usr/local
    Generamos el Makefile.
  7. $ make
    Construimos…
  8. $ su -c "make install"
    Y por último instalamos en /usr/local/.

Si ejecutamos desde consola sparkleshare start veremos como se inicia nuestro cliente…

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 »

Descargamos el kernel y la imagen de inicio de la instalación por red. Y los movemos a una carpeta llamada netboot.

Creamos una imagen de disco que será usada por Qemu: qemu-img create -f qcow hda.img 20G, el tamaño puede variar dependiendo de la necesidad de espacio que podamos tener.

Iniciamos la instalación de Debian: qemu-system-arm -M versatilepb -kernel netboot/vmlinuz-2.6.32-5-versatile -initrd netboot/initrd.gz -hda hda.img -append "root=/dev/ram"

Imagen del inicio de del arranque de la instalación por red de Debian

Imagen del inicio del arranque de la instalación por red de Debian

Esperamos a que inicie el programa de instalación y seguimos las indicaciones en pantalla, en principio es una instalación normal como en un ordenador normal.

Instalación de Debian - Selección de idioma

Instalación de Debian - Selección de idioma

Instalación de Debian - Instalación del sistema base

Instalación de Debian - Instalación del sistema base

Para los fines que le daré a este sistema, no necesito por ejemplo un entorno de escritorio, pero sí que necesitaré un servidor ssh.

Instalación de Debian - Selección de programas

Instalación de Debian - Selección de programas

No debemos preocuparnos por no instalar un cargador de arranque, ya que le pasaremos los parámetros de arranque a Qemu.

Instalación de Debian - Cargador de arranque

Instalación de Debian - Cargador de arranque

Y por fin terminamos la instalación, debemos tener en cuenta que el sistema de instalación reinicia el sistema, por lo que volvería a iniciar el sistema de instalación. Así que lo mejor sería dejar que reinicie, y una vez que lo haya hecho, cerramos Qemu.

Instalación de Debian - Reiniciar sistema

Instalación de Debian - Reiniciar sistema

Descargamos el kernel y la imagen de inicio que usaremos para iniciar el sistema instalado. Y para terminar solo queda probar nuestra nueva instalación con el comando que usaremos para arrancar nuestro sistema Debian: qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.img-2.6.32-5-versatile -hda hda.img -append "root=/dev/sda1"

Sistema Debian instalado

Sistema Debian instalado

Fuente | aurel32.net

 

Comments 17 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 »