Como plantear adecuadamente un problema

Iniciado por Festor, 1 Enero 2010, 19:20 PM

0 Miembros y 1 Visitante están viendo este tema.

Festor


El principal problema que se suele ver en los nuevos usuario de Linux es que, cuando tienen un problema, no aportan información... y si la aportan normalmente no suele ser suficiente o no la que se necesita para intentar ayudarles...

Por ejemplo: decir que "uso Linux y no me funciona la tarjeta gráfica/wifi/sonido..." es lo mismo que no decir nada y ¿por qué es lo mismo? pues porque existen muchas distribuciones Linux y existen muchas marcas y modelos de tarjetas gráficas, wireless, de sonido....

Probablemente se deba a desconocimiento por parte del usuario de que información deben proporcionar o puede que sea simple vaguedad... de todas formas voy a intentar indicaros cuales son los datos básicos que debéis dar si queréis recibir respuestas que puedan solucionaros vuestros problemas.

En este post vamos a usar comandos y no interfaces gráficas entre otras cosas porque los comandos son mucho más directos, rápidos y además más sencillos de explicar que andar con aplicaciones visuales.

Por si acaso y si para alguno le es difícil manejar la linea de comandos (=terminal), se puede volcar la información que proporciona un comando usando el operador >

Por ejemplo:

Código (bash) [Seleccionar]
lspci -vk > datos.txt

escribe toda la información que proporciona la salida del comando lspci en un fichero que se llamará datos.txt (naturalmente puedes usar el nombre que quieras para el fichero). Y un fichero de texto puede que sea más manejable que copiar texto directamente de una terminal...  ;)

De todas formas quien no le guste andar escribiendo comandos o tenga mala memoria decir que existen herramientas visuales como...

HardInfo


o SysInfo...



...que pueden resultaros más amenas y se pueden encontrar en los repositorios de casi cualquier distribución actual.


Antes que nada...

Antes que nada e independientemente que tu problema sea de hardware o software es fundamental que menciones el nombre de la distribución Linux así como su correspondiente versión.

¿Por qué? Pues porque si sabemos la distribución que usas casi tenemos la total seguridad de que usas una versión determinada del kernel así como de otro software como GNOME, KDE, el servidor gráfico....

Además de que cada distribución Linux tiene sus particularidades que pueden jugar a favor o en contra en lo que respecta a solucionar un problema.

Pues bien... ¿como saber que versión estamos usando de nuestra distribución Linux? Bueno... si no sabes ni eso es que realmente tienes un pequeño gran problema...  :-\ de todas formas y como hoy en día todo es posible...

En la mayoría de las distribuciones debería bastar con ver el contenido del fichero /etc/issue, por ejemplo en OpenSUSE 11.2 su contenido es:

Citarusuariodeprueba@linux-vert:~> cat /etc/issue
Welcome to openSUSE 11.2 "Emerald" - Kernel \r (\l).

También hay otros caminos como por ejemplo la salida del comando lsb_release -a, pero dicha herramienta no viene por defecto en todas las distribuciones linux...

Dicho esto... seguimos!!




-> lspci

Básico, vamos... lo mínimo que debes aportar si tienes problemas de hardware en Linux es la salida del comando lspci ya que de esta forma sabremos exactamente como Linux reconoce todo los componentes de hardware de tu computadora... que puede que no siempre sea como tu crees.

Nota: no confundas las cosas, el hecho de que lspci reconozca tu hardware no implica que Linux lo soporte pero al menos sabemos de que hardware hablamos.

Sin embargo hay una forma mejor de usar el lspci y es con el parámetro -k el cual nos devuelve el controlador que tu sistema carga para usar, o intentar usar, cada hardware que aparece en la salida del lspci así como todos los controladores disponibles para cada hardware.

Y esto suele ser muy útil sobretodo porque, aunque son pocos los casos, hay veces que un mismo hardware puede funcionar con dos controladores diferentes y es de gran ayuda saber que controlador se está usando.




-> lsusb

Si lspci listaba el hardware "interno" de tu computadora, lsusb se encarga del externo y concretamente en lo que se refiere a dispositivos que se conectan por medio de usb... véase webcams, impresoras, ratones, teclados, wifis usb, memorias usb...

La pena es que con lsusb no hay manera de saber, o al menos yo no la conozco, que controlador se carga para cada hardware...




-> lshw

lshw se podría decir que es el hermano mayor de lspci ya que aporta mucha más información y mucho más completa... lo que puede derivar en salidas demasiado grandes para que puedan resultar útiles... de todas formas creo que es importante mencionarlo.

Aun así siempre se puede simplificar un poco (bastante) la información que proporciona con el parámetro -short y reducir la posible información sensible con el parámetro -sanitize

Sin embargo, al igual que el lsb_release, puede no estar presente en algunas distribuciones linux...

Y para los amantes de las interfaces gráficas podéis probar con la aplicación lshw-gtk que permite trabajar con lshw desde un entorno más amigable. Si os interesa teneis más información en este hilo.




-> fdisk

Si tienes problemas con las particiones del disco duro o cualquier problema que tenga relacion con ellas (gestores de arranque GRUB o LILO) deberías proporcionar la salida del comando fdisk con el parámetro -l.

Código (bash) [Seleccionar]
fdisk -l

Este comando te informa del orden y de los nombres de las particiones de tu disco duro así como los sistemas de archivos que usan cada una de ellas.

Además, decir que es posible que este comando requiera de privilegios de root para poder mostrar información.

Es decir, es posible debes utilizar el comando sudo (en Ubuntu y similares) o entrar como root con su antes de escribir fdisk -l.




-> dmesg

Acrónimo de diagnostic message (en español, "mensajes de diagnóstico") nos permite visualizar el buffer del núcleo del sistema, es decir, lo que está ocurriendo en segundo plano. Es muy útil para revisar si hay algún problema durante el inicio del sistema o durante el funcionamiento de este.

El principal problema es que su salida suele ser muuuy extensa lo que puede dificultar su lectura y visualización, sin embargo si se redirige su salida al comando tail podemos ver un pequeño extracto (unas diez lineas) de todo lo que nos puede decir dmesg.

En resumen, puedes proporcionar la salida completa del comando dmesg o si lo prefieres puedes proporcionar un extracto usando tail.

Además se puede controlar el número de lineas que aparecerá en ese extracto, por ejemplo:

Código (bash) [Seleccionar]
dmesg | tail -20

Imprime en pantalla las últimas 20 lineas de la información que proporciona dmesg.




-> syslog (/var/log/messages)

Acrónimo de system log (en español, "registro del sistema") nos permite visualizar  mensajes generados por servicios en el sistema, es decir, lo que los servicios notifican. Es muy útil para revisar si hay algún problema durante el funcionamiento del sistema.

El principal problema es que es un archivo extenso, lo que puede dificultar su lectura y visualización, sin embargo si se redirige su salida al comando tail podemos ver un pequeño extracto (unas veinte lineas) de todo lo que nos puede decir dmesg.

En resumen, puedes proporcionar la salida completa del comando cat /var/log/messages o si lo prefieres puedes proporcionar un extracto usando tail.

Además se puede controlar el número de lineas que aparecerá en ese extracto, por ejemplo:

Código (bash) [Seleccionar]
cat /var/log/messages | tail -20

Imprime en pantalla las últimas 20 lineas de la información que proporciona el log de syslog




-> uname

uname tiene diversos parámetros que filtran la información proporcionada. Por defecto si sólo escribes uname, este devolverá el sistema operativo en uso, es decir, Linux y si usas el parámetro -a se procederá a mostrar toda la información que sabe.

De todas formas lo que nos interesa es el parámetro -r

Código (bash) [Seleccionar]
uname -r

Te informa de la versión del kernel o núcleo del sistema Linux que usas, esto es muy útil en casi todos los aspecto pero en especial en el tema de controladores o drivers.

Al ser Linux un núcleo monolítico la mayoría de los controladores de hardware vienen con el núcleo y por tanto es fundamental saber la versión del kernel en uso para conocer, en lo referente a controladores, cuales tiene y cuales no.

...

Por último decir que estos no son todos los comandos que existen y que pueden ser útiles para resolver un problema en Linux, sin embargo son los más comunes.

Si al menos el 1% de la gente que, después de leer este post, proporcione como mínimo la salida del comando lspci cuando tengan un problema... ya me doy por satisfecho...  :xD

De todas formas recuerda que cuanta más información proporciones más posibilidades tendrás de recibir una respuesta más rápida y de mejor calidad, además, cualquiera tontería o curiosidad que crees que no tiene importancia puede que sea muy útil para resolver tu problema.

ah! Se me olvidaba, para cualquiera duda, sugerencia o aporte respecto a lo escrito en este post...
...por favor contactar conmigo vía mensaje personal (MP).  ;D