viernes, noviembre 03, 2006

Detectar problemas de hardware con GNU/Linux

Desde ayer en la mañana me di la tarea de empezar a buscar si mi hardware tiene algún tipo de problema, las razones que me llevaron a esto es por que al momento de compilar con emerge me saltaban errores con paquetes que sin motivo aparente a veces compilaban e instalaban y otras no, estos errores terminan con un aviso diciendo que posiblemente se debía ha problemas de hardware o del Sistema Operativo. En fín, me puse a investigar y aqui les traigo como un resumen de lo que he hecho (a lo largo de mi aprendizaje con GNU/Linux), al último pongo las referencías correspondientes..


Problemas de Discos:

Generalmente este errores llevan consigo respuetas lentas por parte del sistema, generalmente al mover grandes cantidades de archivos ó en sistemas con algún tipo de escritorio gráfico (desktop) como puede ser KDE o GNOME..

Lo primero a verifícar es que los discos correspondiente tengan activado el DMA (Acceso Directo a Memoria), para ello existe una herramienta bastante útil llamada hdparm (dejo a un lado la forma de instalación), para mirar si esta deshabilitado el soporte a DMA y algunas otras cuestiones hacemos:

UnderHouse linux # hdparm /dev/hda

/dev/hda:
multcount = 16 (on)
IO_support = 1 (32-bit)
unmaskirq = 0 (off)
using_dma = 1 (on)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 256 (on)
geometry = 16383/255/63, sectors = 156368016, start = 0


Como vemos, yo tengo soporte DMA en la línea "using_dma = 1 (on)" en caso de obtener un "using_dma = 0 (off)" podemos activarlo con un simple:

UnderHouse linux # hdparm -d1 /dev/hda

/dev/hda:
setting using_dma to 1 (on)
using_dma = 1 (on)


Otra cuestión importante a verificar es que nuestro disco no tenga sectores dañados o corruptos, para ello usaremos fsck y sus variantes fsck.sistema_de_archivos, por ejemplo fsck.ext3. Yo alguna vez correji errores que no me permitian inicar el sistema y en su caso usé:

UnderHouse linux # fdisk -l

Disco /dev/hda: 80.0 GB, 80060424192 bytes
255 cabezas, 63 sectores/pista, 9733 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes

Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/hda1 1 5542 44516083+ 83 Linux
/dev/hda2 8969 9733 6144862+ 83 Linux
/dev/hda3 5543 8968 27519345 f W95 Ext'd (LBA)
/dev/hda5 5543 5611 554211 82 Linux swap / Solaris
/dev/hda6 5612 8968 26965071 83 Linux

Las entradas de la tabla de particiones no están en el orden del disco

Disco /dev/hdb: 30.6 GB, 30616363008 bytes
255 cabezas, 63 sectores/pista, 3722 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes

Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/hdb1 * 819 3722 23326380 83 Linux
/dev/hdb2 1 818 6570553+ 83 Linux


fsck.ext3 -a /dev/hda6


Problemas de CPU:

Para detectar problemas de CPU (unidad central de proceso) es necesario darle un tarea que gaste al 100% el CPU para poder estar seguros que su rendimiento es el correcto, en este caso buscando en la documentación de de gentoo me encontre con un script que he modificado un poco, quedando asi:

#!/bin/bash

ver=`uname -r | cut -d '.' -f 2`

while [ "foo" = "foo" ]
do

# Paso adicional para los kernels ver. 2.4
if [ $ver -eq '4' ]
then
make dep
fi

make clean
make -j2 bzImage
if [ $? -ne 0 ]
then
echo -e "Error, asegurece de tener las fuentes del kernel o de estar en e
l directorio:\n/usr/src/linux"
exit 1
fi
done


Basta con darle permisos de ejecución y ejecutarlo:

chmod u+x testCpu.sh
./testCpu.sh


Como verán, solo se trata de un simple ciclo de la compilación del kernel, proceso que es más que suficiente para cargar el cpu repeditamente =D, este script lo deje desde mañana aproximadamente unas 5 hrs, que recompilo el kernel unas 60 veces xD y sin ningún problema..

Screenshots:





Para quienes les interese hay un programa en la referencias para armar en ensamblador con el cuál podemos hacer un poco más agresivo la carga del CPU y sacar nuestras propias conclusiones con algún tipo de programa que monitoree el uso del CPU, la temperatura, etc..

Problemas de Memoria:

Memoria de Intercambio (Swap):

Para la swap no hay otra más que reparticionar por si hay algún problema al respecto, en este caso:

swapoff /dev/hda5 # particion correspondite a la swap
mkswap /dev/hda5
swapon /dev/hda5


Si quieres asegurarse que la swap ha sido desactivada y activada puede usar después de cada paso el uso de: df -ha

Memorian RAM:

Para ello utilizares el uso de Memtest86 o Memtest86+ ( http://www.memtest86.com/ ), este programa lo he utilizado ayer en la noche antes de acostarme y me ha detectado algunos erroes de Bits Perdidos, en total unos 304 xD, en gentoo basta con instalarlo y configurar el gestor de inicio (en mi caso GRUB) y ejecutarlo desde el menu al momento de reiniciar la pc.

#Para Memtest86+
- For grub:
> title=Memtest86Plus
> root (hd0,5)
> kernel /boot/memtest86plus/memtest.bin
- For lilo:
> image = /boot/memtest86plus/memtest.bin
> label = Memtest86Plus


#Para Memtest86
- For grub:
> title=Memtest86
> root (hd0,5)
> kernel /boot/memtest86/memtest.bin
- For lilo:
> image = /boot/memtest86/memtest.bin
> label = Memtest86


Un screenshot sacado de google xD:


Asi que lo más seguro es que sea problemas con la memoria RAM y falta ver si es la de 512 MB o la de 256MB..

Espero que sea de utilidad lo poco que he escrito, saludos!!

Referencias:
http://www.gentoo.org/doc/es/articles/hardware-stability-p1.xml#badmem
http://www.google.com.mx/linux

3 comentarios:

dna dijo...

sonsoooooooooooooo
:O
dos posts en dias consecutivos
impresionas mi ser *.*
bueno tu tuto sonso =)
aunque muy lit aun =x
bue
tas en el msn xD
.-. t a
:P****

hardvin cadavid dijo...

soullost quisiera saber como hiciste para modificar tu plantilla de blog .D

si me puedes ayudar con ello escribe a mi mail porfa

XD

por cierto

ya consulte lo de la funcion mail
XD

Anónimo dijo...

esta muy cool el fondo de tu escritorio, esta como voluptuoso xD