Archivo

Archivo para la categoría ‘Sistemas Operativos’

Sistema linux congelado con error IDENTIFY PACKET DEVICE

lunes, 18 de septiembre de 2017 Sin comentarios

Montas un equipo y cuando tratas de arrancar Linux, ya sea desde el disco duro como desde un pendrive nos aparece el siguiente mensaje de error:

[ 33.375619] ata8.00: exception Emask 0x52 SAct 0x0 SErr 0xffffffff action 0xe frozen
[ 33.375642] ata8: SError: { RecovData RecovComm UnrecovData Persist Proto HostInt PHYRdyChg PHYInt CommWake 10B8B Dispar BadCRC Handshk LinkSeq TrStaTrns UnrecFIS DevExch }
[ 33.375682] ata8.00: failed command: IDENTIFY PACKET DEVICE
[ 33.375698] ata8.00: cmd a1/00:01:00:00:00/00:00:00:00:00/00 tag 0 pio 512 in
[ 33.375698] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x56 (ATA bus error)
[ 33.375736] ata8.00: status: { DRDY }

Acabas desconectando todos los discos duros y hasta los periféricos pero no hay forma, el sistema parece quedarse congelado en dicho error. Para más pesar, tratas de arrancar Windows y éste lo hace como si nada.

El problema parece radicar en ciertos comandos ATAPI que son mandados al lector de DVD (justo aquel que creías que no iba a interferir en nada) y que la controladora SATA no soporta. La única solución viable en mi caso fue la de cambiar el lector de controladora SATA.

Categories: GNU/Linux Tags: ,

Redimensión de pantalla de la máquina invitada en KVM

lunes, 21 de agosto de 2017 Sin comentarios

Las características que provee SPICE a KVM resultan de los más prácticas, pero no funcionan del todo si en la máquina invitada no instalamos su parte del software y tampoco hay que olvidar la necesidad de configurar la máquina para indicarle que haga uso de él.

A fin de cuentas es lo primero que echamos de menos aquellos que venimos de las Guest Additions de VirtualBox o las VMware Tools.

Categories: Virtualización Tags: ,

Redirección de puertos USB en KVM

lunes, 21 de agosto de 2017 Sin comentarios

Ante la necesidad de querer redireccionar un dispotivo USB a nuestra máquina KVM nos podemos encontrar con un error similar al siguiente:

spice-client-error-quark: Could not redirect Nombre Del Dispositivo [0da4:0116] at 3-5: Error setting USB device node ACL: ‘Error setting facl: Operation not permitted’ (0)

Fácilmente lo podremos corregir utilizando el siguiente comando:

sudo chmod u+s /usr/bin/spice-client-glib-usb-acl-helper

Si además no queremos que nos pregunte por la contraseña de administrador cada vez que queramos realizar la redirreción del puerto USB, tendremos que modificar el fichero “/usr/share/polkit-1/actions/org.spice-space.lowlevelusbaccess.policy”, donde cambiaremos lo siguiente:

<allow_any>auth_admin</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin</allow_active>

Por esto:

<allow_any>yes</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>

Categories: GNU/Linux, Virtualización Tags: ,

Múltiples cuentas en Telegram

viernes, 21 de abril de 2017 Sin comentarios

Cutegram es un cliente de escritorio para Telegram que soporta chats secretos y el uso de múltiples cuentas del servicio de forma simultánea. Pero las dos veces que he intentado utilizarlo me ha desencantado su interfaz, pues el cliente oficial me parece mucho más limpio y agradable a la vista.

Para conseguir que este último, Telegram Desktop, puedas utilizar diferentes instancias con diferentes cuentas hay que hacer algunos pequeños arreglos.

Por norma general Telegram Desktop genera una carpeta donde guarda los datos de funcionamiento de la aplicación por defecto para el usuario en “~/.TelegramDesktop”. Nosotros crearemos otra carpeta para una nueva instancia y posiblemente otro número de teléfono e iniciaremos la aplicación indicándoselo:

mkdir ~/.TelegramDesktop2

Telegram -many -workdir ~/.TelegramDesktop2

KVM con problemas de conexión a la red

lunes, 3 de abril de 2017 Sin comentarios

Si cuando vamos a utilizar KVM, nos salta el siguiente mensaje de error:

Error starting domain: Requested operation is not valid: network ‘default’ is not active

Primeramente deberemos comprobar el estado de las conexiones:

virsh net-list –all

Dicho comando nos mostrará algo similar a esto:

Nombre               Estado     Inicio automático Persistente
———————————————————-
default              inactivo   no            si

Efectivamente el estado inactivo es el que debemos cambiar para resolver el problema. Para ello sólo tendremos que ejecutar lo siguiente:

virsh net-start default

Para más información podéis consultar el artículo original de donde saqué la solución.

Categories: Virtualización Tags: ,

Moonlight en una Raspberry Pi 2 modelo B

miércoles, 25 de mayo de 2016 Sin comentarios

Debido a problemas legales, Limelight tuvo que cambiar el nombre por el de Moonlight, una aplicación que permite hacer streaming de juegos de un ordenador a otro dispositivo (un Android o una Raspberry Pi entre otros) aprovechando la tecnología de Nvidia. Hace algún tiempo explicaba cómo instalar y configurar la aplicación en una Raspberry Pi de primera generación y el asunto no ha cambiado mucho.

Editamos el fichero de repositorios añandiendo al fichero “/etc/apt/sources.list” la siguiente nueva línea :

deb http://archive.itimmer.nl/raspbian/moonlight jessie main

Actualizamos el sistema e instalamos la aplicación:

apt-get update

apt-get upgrade

apt-get install moonlight-embedded

Emparejaremos nuestra Raspberry con nuestro ordenador (suponiendo que tenga la IP 192.168.1.5):

moonlight pair 192.168.1.5

El comando anterior nos dará un código que tendremos que poner en el ordenador a través de un diálogo de GeForce Experience.

Una vez emparejados, sólo tendremos que detener Kodi (si es que lo tenemos en marcha) y lanzar Moonlight que, automáticamente, activará el Big Picture de Steam:

sudo systemctl stop mediacenter

moonlight stream -1080 -60fps 192.168.1.5

Para detener el streaming y volver a arrancar Kodi podemos utilizar los siguientes comandos:

moonlight quit

sudo systemctl start mediacenter

Si además tenemos un mando de PS2 conectado por USB (el de la Xbox 360 funciona sin tener que tocar nada) a través de un adaptador, deberemos realizar un mapeado del mismo. En primer lugar tendremos que identificar dónde está nuestro mando y si ha sido reconocido correctamente. Para tal fin podremos utilizar evtest:

sudo apt-get install evtest
sudo evtest

Una vez localizada la ruta, realizaremos el mapeado del mismo y lo almacenaremos en un fichero (en mi caso el mando estaba en /dev/input/event5 y el fichero quería que fuese ps2-1.map). Nos irá pidiendo que pulsemos los botones adecuados del mando y lo único a tener en cuenta es que pide un botón más de los que tenemos disponibles debido a que usa el esquema de Xbox 360.

moonlight map -input /dev/input/event5 ps2-1.map

Así que, finalmente, ejecutaremos lo siguiente:

moonlight stream -1080 -60fps -mapping /home/osmc/ps2-1.map 192.168.1.5

Adjunto el contenido de mi fichero .map por si a alguien le resulta de utilidad:

abs_x = 0
abs_y = 0
abs_z = -1
reverse_x = false
reverse_y = true
abs_rx = 5
abs_ry = 2
abs_rz = -1
reverse_rx = false
reverse_ry = true
abs_deadzone = -31824
abs_dpad_x = 16
abs_dpad_y = 17
reverse_dpad_x = false
reverse_dpad_y = false
btn_north = 288
btn_east = 289
btn_south = 290
btn_west = 291
btn_select = 296
btn_start = 297
btn_mode = 296
btn_thumbl = 298
btn_thumbr = 299
btn_tl = 294
btn_tr = 295
btn_tl2 = 292
btn_tr2 = 293
btn_dpad_up = -1
btn_dpad_down = -1
btn_dpad_left = -1
btn_dpad_right = -1

Sobre los resultados obtenidos, cabe destacar que entre el nuevo software y la mejora de la potencia de la Raspberry Pi (de la 1 a la 2 hay un abismo), el resultado a través de cable de red es sobresaliente. Probado con Left4Dead 2 y Grid 2 sin ningún tipo de retardo apreciable en cuanto a la imagen/sonido y el control.

Wifi que no sale de modo ahorro de energía

lunes, 14 de marzo de 2016 Sin comentarios

Un portátil con un adaptador wifi con el chip RTL8723BE que al cabo del rato parece dejar de funcionar, dejando de poder enviar y recibir datos. Parece ser que es debido a que entra en modo de ahorro de energía y no es capaz de recuperarse cuando se le pide de nuevo que entre en funcionamiento.

La solución en este caso, que llevo probando desde hace unos meses gracias a un post en un foro, es lanzar la siguiente orden en un terminal:

echo “options rtl8723be fwlps=N ips=N” | sudo tee /etc/modprobe.d/rtl8723be.conf

Y después reiniciar el módulo:

sudo modprobe -rv rtl8723be
sudo modprobe -v rtl8723be

Con esto ya debería funcionar correctamente sin desconectarse.

Categories: GNU/Linux Tags: ,

Ambilight en la Raspberry Pi 2

jueves, 7 de enero de 2016 Sin comentarios

Recientemente he migrado a la Raspberry Pi 2 y he tenido que realizar algunos cambios en cuanto al cableado del ambilight casero que tenía montado utilizando Hyperion.

En la siguiente imagen se puede observar la disposiciones de pines de la antigua Raspberry Pi, donde lo que nos interesaba era el pin GPIO 10 (MOSI), GPIO11 (CLK) y alguno de los GND (ground).

raspberrypirev2pinout

En cambio, se puede apreciar que la posición de dichos pines ha sigo ligeramente alterada en el modelo RaspPi2, donde necesitaremos hacer uso de los pines 9 (GND), 19 (MOSI) y 23 (CLK):

RP2_PinoutAclarar también que necesitaremos activar el SPI en nuestro OSMC como ya describí en una entrada anterior.

NAS ZyXel 325-V2

lunes, 14 de diciembre de 2015 Sin comentarios

El NAS ZyXel 325-V2 se diferencia de la primera versión en un cambio estético de la carcasa de plástico y en una mejora del ventilador posterior que parece hacer menor ruido. A parte de eso dispondremos de un sistema de almacenamiento en red con dos bahías para discos duros SATA de 3’5″ y 2’5″ con soporte para RAID 0, 1 y JBOD, tarjeta de red Gigabit, dos USB 2.0 traseros y uno 3.0 frontal frontal con un consumo eléctrico que varía de entre 15W con dos discos duros en marcha a 7W cuando pasa a modo en reposo.

El panel de administración puede parece bastante simple y no tan completo como los NAS de Synologic, pero la diferencia de precio también es bastante notable. Gracias a la comunidad estas diferencias intentan cubrirses con paquetes de software de terceros.

Como vamos a hacer del NAS un servicio de red fijo, lo que nos va a interesar es darle una IP fija a través de la configuración del servidor de DNS. Para eso se necesita averiguar su dirección MAC de forma fácil con el siguiente comando (sabiendo previamente la IP que se le ha sido asignado previamente o el nombre del equipo):

ping 192.168.1.55 -c 1

arp -a

A través de Samba accederemos a “smb://IP-NAS/admin/zy-pkgs/” y crearemos un fichero “web_prefix” que contendrá la siguiente URL:

http://downloads.zyxel.nas-central.org/Users/Mijzelf/zypkg-repo/

Desde el panel web de administración del NAS iremos a la sección “Firmware/Packages” y, después de actualizar el Firmware si existe alguna versión posterior, le daremos al botón de “Acceder listado desde Internet”. Aparecerá un único paquete llamado “MetaRepository” que tendremos que seleccionar e instalar. Tras esto ya podremos instalar FFP (desde el cual podremos instalar repositorios con uwsiteloader), RandomTools, NFS y pyLoad por ejemplo.

Para instalar nuestro software de descargas favorito (MlDonkey), entraremos por SSH al NAS y ejecutaremos lo siguiente:

su

uwsiteloader.sh (seguimos los pasos del asistente)

slacker -U

slacker -i mldonkey

exit

Debido a que queremos tener todo lo relacionado con MlDonkey guardado en disco duro por temas de espacio, lo que haremos es un enlace simbólico de la siguiente forma y lanzaremos el proceso para que genere la estructura de carpetas:

mkdir /mnt/HD_a2/mldonkey

cd /mnt/HD_a2

chmod -R 777 mldonkey/

ln -s /mnt/HD_a2/mldonkey/ .mldonkey

mlnet

Cerraremos el proceso anterior con un simple CTRL+C y empezaremos a configurarlo:

vim .mldonkey/downloads.ini (y editamos las ip’s permitidas añadiendo 192.168.1.0/24)

mkdir /mnt/HD_a2/mldonkey/logs

Generaremos un fichero de configuración en “/mnt/HD_a2/mldonkey/mldonkey-server” con el siguiente contenido:

MLDONKEY_DIR=/mnt/HD_a2/mldonkey
MLDONKEY_USER=admin
MLDONKEY_GROUP=everyone
MLDONKEY_UMASK=0022
LAUNCH_AT_STARTUP=true

Crearemos el script que se encargará de gestionar el servicio “/mnt/HD_a2/mldonkey/mldonkey.sh” con el siguiente contenido:

 

#!/ffp/bin/sh
#
# Original file :
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
# Modified for Debian GNU/Linux
# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
# Version: @(#)skeleton 1.9.1 08-Apr-2002 miquels@cistron.nl
#
#
# This file has been rewritten by Sylvain Le Gall <gildor@debian.org>
# and Samuel Mimram <smimram@debian.org> for the mldonkey package.
#
### BEGIN INIT INFO
# Provides: mldonkey-server
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Should-Start: $local_fs
# Should-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Server for the mldonkey peer-to-peer downloader.
# Description: Server for the mldonkey peer-to-peer downloader.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=mlnet
EXEC=/usr/local/zy-pkgs/ffproot/ffp/bin/$NAME
DESC=”MLDonkey”
CONFIG=/mnt/HD_a2/mldonkey/mldonkey-server
PIDDIR=/var/run/mldonkey
PIDFILE=$PIDDIR/$NAME.pid
LOGFILE=/mnt/HD_a2/mldonkey/logs/mldonkey-server.log
SERVERLOG=/mnt/HD_a2/mldonkey/logs/mlnet.log

test -e $CONFIG || exit 0

set -e

Warn ()

{
echo “$*” >&2
}

Error ()
{
code=$1
shift

echo “.”
Warn “$DESC: $NAME [ERROR] $@”
exit $code
}

StartErrorCheck ()
{
if [ -f “$SERVERLOG” ] && tail -n 2 “$SERVERLOG” | grep -qi ‘aborting’ ; then
Warn “$DESC: $NAME [ERROR] server start error”
tail –verbose $SERVERLOG
exit 1
fi
}

. $CONFIG

# Look for the default locale
if [ -f “/etc/default/locale” ]; then
. /etc/default/locale
export LANG
fi

if [ -n “$MLDONKEY_UMASK” ]; then
umask $MLDONKEY_UMASK
fi
# /var/run might be on tempfs, see #354701.
if [ ! -d /var/run/mldonkey ]; then
mkdir -m 755 /var/run/mldonkey
fi
if [ ! -d /var/log/mldonkey ]; then
mkdir -m 755 /var/log/mldonkey
fi
if [ -n “$MLDONKEY_USER” ] && [ -n “$MLDONKEY_GROUP” ]; then
chown -R $MLDONKEY_USER:$MLDONKEY_GROUP /var/run/mldonkey
chown -R $MLDONKEY_USER:$MLDONKEY_GROUP /mnt/HD_a2/mldonkey/logs
fi

WRAPPER_OPTIONS=”–iosched idle”

# Set configuration value, from CONFIG
if [ -n “$MLDONKEY_USER” ] && [ -n “$MLDONKEY_GROUP” ]; then
WRAPPER_OPTIONS=”$WRAPPER_OPTIONS –chuid $MLDONKEY_USER:$MLDONKEY_GROUP”
fi

if [ -n “$MLDONKEY_DIR” ]; then
WRAPPER_OPTIONS=”$WRAPPER_OPTIONS –chdir $MLDONKEY_DIR”
fi

if [ -n “$MLDONKEY_GROUP” ]; then
WRAPPER_OPTIONS=”$WRAPPER_OPTIONS –group $MLDONKEY_GROUP”
fi

if [ -n “$MLDONKEY_UMASK” ]; then
WRAPPER_OPTIONS=”$WRAPPER_OPTIONS –umask $MLDONKEY_UMASK”
fi

if [ -n “$MLDONKEY_NICENESS” ]; then
WRAPPER_OPTIONS=”$WRAPPER_OPTIONS –nicelevel $MLDONKEY_NICENESS”
fi

case “$1” in
start|force-start)
echo -n “Starting $DESC: $NAME”

if [ “x$LAUNCH_AT_STARTUP” != “xtrue” ] && [ “x$1” = “xstart” ]; then
Error 0 “configuration file prevent $NAME to be started (use force-start).”
fi

if [ -z “$MLDONKEY_DIR” ] || [ ! -d “$MLDONKEY_DIR” ]; then
if [ -z “$MLDONKEY_DIR” ]; then
MLDONKEY_DIR=”(unset)”
fi
Error 1 “$MLDONKEY_DIR is not a valid directory.”
fi

if [ ! -f “$MLDONKEY_DIR/downloads.ini” ]; then
Error 1 “$MLDONKEY_DIR/downloads.ini is not a valid file.”
fi

#USER=`/usr/bin/stat –format=”%U” “$MLDONKEY_DIR/downloads.ini”`

USER=”admin”

WRAPPER_OPTIONS=”$WRAPPER_OPTIONS –user $USER”

start-stop-daemon –start $WRAPPER_OPTIONS \
–pidfile $PIDFILE –background –exec $EXEC \
— -log_file $SERVERLOG -pid $PIDDIR 2>&1

StartErrorCheck

echo “.”
;;

stop)
echo -n “Stopping $DESC: $NAME”
start-stop-daemon –stop –oknodo –pidfile $PIDFILE –retry 30
echo “.”
;;

force-reload|restart)
$0 stop
$0 start
;;

*)
Error 1 “Usage: $0 {start|stop|restart|force-reload|force-start}”
;;
esac

exit 0

Le daremos permiso de ejecución:

chmod u+x /mnt/HD_a2/mldonkey/mldonkey.sh

Y finalmente crearemos el script que se encargará de levantar el servicio al inicio en “/ffp/start/mldonkey-start.sh” con el siguiente contenido:

#!/ffp/bin/sh
# PROVIDE: mldonkey
# REQUIRE: LOGIN
/mnt/HD_a2/mldonkey/mldonkey.sh start

Le daremos permiso de ejecución:

chmod u+x /ffp/start/mldonkey-start.sh

Si deseamos que el NAS esté accesible por NFS, el camino rápido sería obtenido el identificador del usuario y del grupo correspondiente:

id -u admin

id -g admin

Editaremos el fichero “/etc/exports” con una línea similar a esta siendo 192.168.1.11 la IP que montará la unidad NFS  501 el id de usuario y grupo:

/mnt/HD_a2 192.168.1.11(rw,all_squash,anonuid=501,anongid=500)

Si intentamos colocar algo así como “192.168.1.0/24” no funcionará.

Reiniciaremos el servicio de NFS con el siguiente comando y ya lo tendremos listo en la red:

/usr/local/zy-pkgs/etc/init.d/NFS restart

En el equipo que queramos hacer uso de la unidad NFS (una Raspberry) tendremos que editar el fichero “/etc/fstab” añadiendo la siguiente línea:

192.168.1.10:/mnt/HD_a2    /mnt/nas nfs nouser,atime,auto,rw,dev,exec,suid 0   0

Prepararemos la carpeta donde estará del siguiente modo:

mkdir /mnt/nas

chown pi:users -R /mnt/nas

chmod 777 -R /mnt/nas

mount -a

 

 

 

 

Enlaces de interés:
http://forum.nas-central.org/viewtopic.php?f=249&t=15731&sid=b252ddb5624aca7cd22055ca774de8f7
http://zyxel.nas-central.org/wiki/3rd_party_zypkgs#MetaRepository
http://zyxel.nas-central.org/wiki/FFP_as_zypkg

OOM-Killer

sábado, 31 de octubre de 2015 Sin comentarios

En servidores con limitaciones importantes de memoria, muchas veces el sistema se queda sin memoria y el señor OOM Killer decide qué proceso tiene que matar para liberar recursos. Esto puede parecer lógico pero, en ocasiones, cuando sucede continuamente y de forma aleatoria supone un serio problema, sobretodo cuando mata el proceso de MySQL, Apache o PHP.

Es por ello que, cuando intentas indagar en la raíz del problema, te encuentras con que el kernel de Linux siempre reserva memoria para las aplicaciones que lo piden sin verificar si dispone de suficiente. Por tanto, las aplicaciones pueden llegar a pedir más memoria de la que realmente existe libre y por ello OOM Killer intentará hacer hueco.

Para cambiar este comportamiento hace falta modificar el fichero “/etc/sysctl.conf”, donde añadiremos estos dos parámetros:

vm.overcommit_memory = 2
vm.overcommit_ratio = 80

Con el primer parámetro forzaremos al kernel a no dar más de lo que existe y el segundo define el ratio con el que se calculará cuánto podrá dar a cada una de las aplicaciones.

Para más info podéis consultar la web del kernel de Linux.

Categories: GNU/Linux Tags: ,