jueves, 29 de marzo de 2018

como solucionar 

"[drm:intel_pipe_update_end [i915]] *ERROR* Atomic update failure on pipe A (start=17739 end=17740) time 151 us, min 763, max 767, scanline start 756, end 770"

Este cambio puede verse afectado por un parámetro que puede pasarse al controlador durante el tiempo de arranque. Puede hacer esto en la línea de comandos de GRUB (gestor de arranque) o crear un archivo para el controlador.  
Creo que el segundo método es más fácil de implementar.
En /etc/modprobe.d/, debe crear un archivo de i915.conf, si aún no existe. Luego, dentro de este archivo, debe agregar la siguiente línea:

options i915 enable_psr=0 


domingo, 18 de marzo de 2018

Actualizar firefox en debian 9

bueno esto es muy sencillo lo primero que tenemos que hacer es ir su pagina y descargar el  tar.bz2 una vez descargado el archivo en mi caso es la version 59 de firefox.
Lo siguiente es abrir la terminal y saber cual es la ruta del antiguo firefox para lo cual usamos el comando whereis

 
una vez que tengamos la ruta como se muestra en la imagen anterior tenemos que acceder a la carpeta y borrar todo 

cd /usr/lib/firefox-esr
sudo rm -R *

una vez que dejamo limpio el directorio seguimos y vamos a nuestra carpeta donde esta descargado nuestro firefox en mi caso es la carpeta de descargas 
y escribimos lo siguiente 
sudo tar xvf firefox-59.0.1.tar.bz2 -C /usr/lib/firefox-esr

y bueno con eso tenemos ahora solo nos queda arreglar una pequeña cosa con el acceso de escritorio para eso vamos a la siguiente dirección 

sudo nano /usr/share/applications/firefox-esr.desktop

 en la linea de 
Exec=/usr/lib/firefox-esr/firefox-esr %u

lo dejamos de la siguiente manera 
Exec=/usr/lib/firefox-esr/firefox %u 
 y ahora listo solo nos queda disfrutar de firefox actualizado


 


La mejor opcion de reproductor para debian 9

lplayer

cuya pagina oficial es la siguiente atareao después de que publicaran lplayer un reproductor minimalista quise probar para ver como estaba y si cumplía mis expectativas déjenme decir que es muy buen reproductor por su puesta aquí esta el código para poder darle un ojo.
después de probar algo que había estado buscando me agrado mucho a un hay algunas cosas que hacen falta pulir y otras que falta por desarrollar  bueno seguiremos los clásicos pasos para instalar desde repositorio.

sudo add-apt-repository ppa:atareao/lplayer
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6A9653F936FD5529
sudo apt install lplayer


Y listo  con eso tendremos instalado el reproductor mas fácil no se puede
ahora solo hace falta una extensión para poder administrar el reproductor cuando este en segundo plano Media player Indicator.
 
 
Incluso pude notar el consumo de RAM del reproductor y me pareció muy ligero
Espero que esto les sirva :)




 

sábado, 27 de enero de 2018

Limpiador de cache y trash de debian/ubuntu

El siguiente script permite limpiar el ordenador



#!/bin/bash
if [ "$(whoami)" != "root" ]
then
  echo "¡Tienes que ejecutar este script como superusuario!"
  exit 1
fi

# Obtener información de memoria
liberarmemoria_antes=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && liberarmemoria_antes=$(echo "$liberarmemoria_antes/1024.0" | bc)
memoriacache_antes=$(cat /proc/meminfo | grep "^Cached" | tr -s ' ' | cut -d ' ' -f2) && memoriacache_antes=$(echo "$memoriacache_antes/1024.0" | bc)

# Output Information
echo -e "Esta secuencia de comandos borrará la memoria en caché y liberará su ram.\n\nPor el momento tienes $memoriacache_antes MiB cached y $liberarmemoria_antes MiB de memoria liberada."
free -m -h
echo "limpiando";
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get clean
echo "Borrando temporales";
rm -vfr /tmp/*
echo "Limpiando la cache";
sudo sync ; echo 3 > /proc/sys/vm/drop_caches
sudo swapoff -a && sudo swapon -a
echo "Limpiando papelera de reciclaje ";
sudo rm -rf ~/.local/share/Trash/*
#  
if [ "$?" != "0" ]
then
  echo "Algo salió mal, es imposible sincronizar el sistema de archivos."
  exit 1
fi

# Borrar el búfer del sistema de archivos usando "sincronización" y Borrar cachés
sync && echo 3 > /proc/sys/vm/drop_caches

freemem_after=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_after=$(echo "$freemem_after/1024.0" | bc)

# Output Summary
echo -e "This freed $(echo "$freemem_after - $liberarmemoria_antes" | bc) MiB,  entonces ahora tienes $freemem_after MiB de meoria libre RAM."
free -m -h
exit 0
primero tendremos que darle permisos al script de la siguiente manera:

chmod +x limpiar.sh

ahora lo ejecutamos de la siguiente manera

sudo ./limpiar.sh

nos quedaría de la siguiente manera
listo!!

miércoles, 30 de marzo de 2016

Thread en lenguaje C sobre entorno linux - Creación de un hilo

Thread Creation - Creación de un hilo
Cada hilo en un proceso se identifica mediante un ID de hilo. Cuando se hace referencia a los ID de hebra en los programas de C o C ++, se utiliza el tipo pthread_t.

Tras su creación, cada hilo realiza una función.Este es sólo una función ordinaria y contiene el código que el hilo debe ejecutar. Cuando la función devuelve, el hilo termina. En GNU / Linux, las funciones de hilos toman un único parámetro, de tipo void*, y tienen un tipo de retorno void *.


El parámetro es el argumento de hilo:
GNU / Linux pasa el valor a lo largo del hilo sin mirarlo.Su programa puede utilizar este parámetro para pasar los datos a un nuevo hilo. Del mismo modo, el programa puede utilizar el valor de retorno de pasar los datos a partir de un tema existente de vuelta a su creador.

La función pthread_create crea un nuevo hilo.Y usted le proporciona lo siguiente:
  1. Un puntero a una variable pthread_t, en el que el ID del hilo del nuevo hilo es almacenado. 
  2. Un puntero a un objeto de atributo hilo.Este objeto controla los detalles de cómo el hilo interactúa con el resto del programa. Si pasa NULL como el atributo de hilo, un hilo se creará con los atributos de hilo por defecto.Esto se discutiría mas adelante. 
  3. Un puntero a la función del hilo. Este es un puntero de función ordinaria, de este tipo:    void* (*) (void*)
  4. Un valor del argumento de hilo de tipo void *. Este pasa simplemente como argumento a la función del hilo cuando el hilo comienza a ejecutar.
Una llamada a pthread_create retorna inmediatamente, y el hilo original continúa ejecutando las instrucciones después de la llamada. Mientras tanto, el nuevo hilo comienza a ejecutar la función del hilo. Y los horarios de los dos hilos de Linux trabajan de forma asíncrona, y su programa no deben confiar en el orden relativo en el que las instrucciones se ejecutan en los dos hilos.
El siguiente programa crea un hilo que imprime x de forma continua en el error estándar. Después de llamar a pthread_create, el hilo principal o imprime de forma continua en el error estándar.

 Ejemplo:
#include <pthread.h>
#include <stdio.h>
/* Imprime x como salida de error. El parámetro no se utiliza. No retorna. */
void* print_xs (void* unused)
{
while (1)
fputc ('x', stderr);
return NULL;
}
/* El inicio del programa */
int main ()
{
pthread_t thread_id;
/* Crea un nuevo Hilo. El nuevo hilo se ejecutará la función print_xs. */
pthread_create (&thread_id, NULL, &print_xs, NULL);
/* Imprimir de forma continua 'o' como salida estándar de errores. */
while (1)
fputc ('o', stderr);
return 0;
}
compilar y enlazar este programa mediante el siguiente codigo:
gcc nombre.c -o nombre -lpthread

intente ejecutarlo para que pasa. Observe el patron impredecible de las x's y las o's como linux alterna horarios de los hilos. 

En circunstancias normales, un hilo sale de una de dos maneras. Una forma, como se ilustra anteriormente, es mediante la devolución de la función del hilo. 
El valor de retorno de la función del hilo se toma como el valor de retorno del hilo. Alternativamente, un hilo puede salir de forma explícita llamando pthread_exit.
Esta función puede ser llamado desde dentro de la función del hilo o de alguna otra función de llamada directa o indirectamente por la función de hilo.El argumento para pthread_exit es el valor de retorno hilo.

Thread en lenguaje C sobre entorno linux - introduccion

PTHREAD
HILOS, por ejemplo los procesos, son un mecanismo para permitir que un programa pueda hacer más de una cosa a la vez. Al igual que con los procesos, subprocesos parecen funcionar simultáneamente;El kernel de Linux es el que planifica de forma asíncrona, interrumpiendo cada hilo de vez en cuando para dar a otros la oportunidad de ejecutarse.

Conceptualmente, existe un hilo dentro de un proceso. Los hilos son una unidad de grano más fino de la ejecución de procesos. Cuando se invoca un programa, Linux crea un nuevo proceso y en ese proceso crea un solo hilo, que ejecuta el programa de forma secuencial. Ese hilo puede crear hilos adicionales; todos los hilos se ejecutan en el mismo programa y en el mismo proceso, pero cada hilo puede ser la ejecución de una parte diferente del programa en cualquier tiempo dado.
Se a visto cómo un programa puede bifurcar un proceso hijo. El proceso hijo que inicialmente ejecuta el programa de su padre, con la memoria virtual de su padre, los descriptores de archivo, etc.
"En copiado". El proceso hijo puede modificar su memoria, cierre de los descriptores de fichero, y similares sin afectar a su padre, y viceversa. Cuando un programa crea otro hilo, nada se copia. La creación y el hilo creado comparten el mismo espacio de memoria, los descriptores de archivos y otros recursos del sistema que el original.
Si cambiamos de un hilo, el valor de una variable, por ejemplo, el otro hilo posteriormente verá el valor modificado. Del mismo modo, si un hilo cierra un descriptor de archivo, otros hilos no pueden leer o escribir en el descriptor de archivo. Debido a un proceso y todos sus hilos pueden ser ejecutando sólo un programa a la vez, si cualquier hilo dentro de un proceso de llama uno de las funciones exec , todos los otros hilos se terminaron (el nuevo programa puede, por supuesto, crear una nuevo hilo). 
GNU / Linux implementa la API de hilos POSIX estándar (conocido como pthreads). Todas funciones de hilo y tipos de datos se declaran en el archivo de cabecera <pthread.h> .Las funciones del pthread no están incluidos en la biblioteca estándar C. En su lugar, están en libpthread, lo que debería agregar -lpthread a la línea de comandos cuando se vincula a su programa. 

martes, 29 de marzo de 2016

Ingeniería inversa para Los principiantes - CAPITULO 1

CAPITULO 1
A short introduction to the CPU - Una breve introducción a la CPU


La CPU es el dispositivo que ejecuta el código máquina de un programa consta de.
Un breve glosario:
 
Instrucción : Un comando CPU primitiva. Los ejemplos más simples son: mover datos entre los registros, que trabajan con memoria, las operaciones aritméticas primitivos. Como regla general, cada CPU tiene su propia arquitectura del conjunto de instrucciones (ISA).
 
Código máquina : El código que la CPU procesa directamente. Cada instrucción es generalmente codificada por varios bytes.
 
El lenguaje ensamblador: código mnemónico y algunas extensiones como macros que tiene la intención de hacer la vida de un programador más fácil.
 
registro de la CPU: Cada CPU tiene un conjunto fijo de registros de propósito general (GPR). ≈ 8 en x86, x86-64 en ≈ 16, ≈ 16 en ARM. La forma más fácil de entender un registro es pensar en ella como una variable temporal sin tipo. Imagínese si estuviera trabajando con un alto nivel PL 1 y sólo podía utilizar ocho variables de 32 bits (o 64 bits).Sin embargo, mucho se puede hacer usando sólo estos!
 
Uno podría preguntarse por qué es necesario que haya una diferencia entre el código máquina y una PL. La respuesta radica en el hecho de que los seres humanos y las CPU no son una como- es mucho más fácil para los seres humanos para utilizar un PL de alto nivel como C / C ++, Java, Python, etc., pero es más fácil para una CPU de usar un nivel mucho más bajo de abstracción.
Tal vez lo haría sea posible inventar una CPU que puede ejecutar código PL alto nivel, pero sería muchas veces más complejo que el CPU que sabemos de hoy. En una manera similar, es muy incómodo para los seres humanos que escriben en lenguaje ensamblador, debido a que es por lo bajo nivel y difícil de escribir en sin hacer un gran número de molestos errores.
El programa que convierte el código PL alto nivel en el conjunto es llamado un compilador.
 
1.1 A couple of words about different ISAs - Un par de palabras sobre diferentes ISAs
 
La ISA x86 siempre ha sido uno de los códigos de operación de longitud variable, por lo que cuando la era del 64 bits  vino, las extensiones x64 no afectaron la ISA de manera muy significativa. De hecho, la ISA x86 todavía contiene una gran cantidad de instrucciones que apareció por primera vez en la CPU de 16 bits 8086, sin embargo, todavía se encuentran en la CPU de hoy. 
 
ARM es una CPU RISC 2-diseñado con una longitud constante del código de operación ten en cuenta, que tenía algunas ventajas en el pasado. En el principio, todas las instrucciones ARM eran codificada en 4 bytes. Esto ahora se conoce como "modo ARM". 
 
Entonces pensaron que no era tan frugal como se había pensado inicialmente. De hecho, la mayor parte se usa instrucciones de la CPU en aplicaciones del mundo real se pueden codificar con menos información.
Por lo tanto, añaden otra ISA, llamado pulgar, donde cada instrucción se codifica en sólo 2 bytes. Esto ahora se conoce como "modo de pulgar". Sin embargo, no todas las instrucciones ARM pueden ser codificados en sólo 2 bytes, por lo que el conjunto de instrucciones del pulgar es algo limitada.
Vale la pena señalar que el código compilado para el modo de ARM y modo de pulgar puede coexistir, por supuesto, dentro de un mismo programa.
 
Los creadores de ARM Pulgar pensado podría ser ampliada, dando lugar a Pulgar-2 o "Thumb-2", que aparecido en ARMv7.Thumb-2 sigue utilizando las instrucciones de 2 bytes, pero tiene algunos de las nuevas instrucciones que tienen el tamaño de 4 bytes.Hay una idea errónea de que Thumb-2 es una mezcla de ARM y el pulgar. Esto es incorrecto. Más bien, Thumb-2 se extendió a apoyar plenamente todas las características del procesador por lo que podría competir con ARMmodo de un objetivo que se alcanzó con claridad, ya que la mayoría de las aplicaciones para el iPod / i-phone / iPad han sido compilados para el conjunto de instrucciones Thumb-2 (la verdad, debido en gran parte al hecho de que Xcode hace esto por defecto).Más tarde, el ARM de 64 bits salió.Esta NIA tiene códigos de operación de 4 bytes, y carecía de la necesidad de cualquier modo Thumb adicional.Sin embargo, los requisitos de 64 bits afectaron a la ISA, lo que resulta en nosotros ahora tiene tres juegos de instrucciones ARM: 
el modo de armado, de modo de Thumb(incluyendo Thumb-2) y ARM64.Estas ISA se cruzan parcialmente, pero se puede decir que son diferentes las NIA, en vez que las variaciones de la misma.Por lo tanto, nos gustaría probar para añadir fragmentos de código en los tres ISA ARM en este libro.
 
Hay muchas otras NIA RISC con una longitud de códigos de operación de 32 bits fijos, tales como MIPS, PowerPC y Alpha AXP.