05.12.07

Come scoprire dove sta un problema su Linux (introduzione)

Pubblicato su Guide, Linux, Tips&Tricks tagged , , a 0:31 di mastro

Questa guida vuole essere un introduzione per i nuovi utenti Linux che incontrano un problema, in genere con qualche periferica, e non sanno dove andare a cercare informazioni che possano aiutare a capire dov’è il problema..

Ancor prima di effettuare una ricerca su internet il problema può essere quello di capire cosa cercare.

Questa guida non ha la pretesa di essere completa, il sottoscritto non ha la presunzione di conoscere qualsiasi metodologia per scovare un problema su Linux :) nonostante questo se scoprirò qualcosa di nuovo, o perché mi verrà segnalato, o perché mi ci imbatterò più o meno per caso la aggiungerò alla lista.

Talvolta la risoluzione di un problema dipende semplicemente dal saper dove cercare nel proprio sistema.

Inoltre si possono imparare moltissime cose imparando a leggere i log e cercando informazioni sui significati di quel che si legge.. (sempre se si ha la voglia di farlo…)

I Log

in qualsiasi installazione Linux viene installato un “logger” del sistema: un log è un file sul disco dove vengono riposti messaggi che indicano cosa ha fatto il sistema, in genere sono informazioni, se c’è qualche problema però è molto probabile nel log ci siano informazioni utili per la risoluzione del sistema.

Comprendere un log non è cosa facile per i nuovi utenti, ma sapere quali possono essere utile ad un utente esperto può essere una buona base di partenza! Senza capire il contenuto possiamo copiare quel file e inviarlo via e-mail a chi è disposto ad aiutarci così da fornirgli informazioni utili!

Il consiglio è comunque quello di provare a leggerlo da soli.. è anche possibile che l’errore salti all’occhio e in genere si finisce con l’imparare qualcosa di utile sul sistema, facendo un piccolo passo per diventare un utente “pro”.

Quasi tutti i servizi mantengono un log che è possibile consultare, cercherò qui di stilare una lista dei più importanti.

molti log li trovate nella cartella /var/log/ alcuni possono essere letti solo da utente root, altri potete leggerli anche da utenti “normali”

Comandi utili

quasi tutto si può fare da modalità grafica.. quasi.. alcune cose vengono meglio fatte da un terminale..

ecco qualche comando utile ( per gli utenti che si vogliono cimentare ):

  • tasto TAB: completamento automatico di comandi, nomi di file e quant’altro, quando siete nel terminale provate a iniziare a scrivere un comando e premere TAB una o 2 volte, vi uscirà una lista dei comandi che cominciano con quelle lettere :) lo stesso vale mentre scrivete nomi di file
  • combinazione tasti CTRL+C: per interrompere qualunque comando dalla console e riottenere il “prompt”
  • man <nome-comando> # apre il manuale del comando spiegandone il funzionamento, per i comandi più comuni il manuale è in italiano, per altri potrebbe essere disponibile solo in inglese, i comandi per muoversi all’interno sono come quelli del comando “less” spiegato qui sotto (es. man tail vi apre il manuale del comando “tail”)
  • less <nomefile> # permette leggere un file, per navigare il file si possono usare le frecce su / giù o pag-su / pag-giù per scorrere più rapidamente, premendo “/” e scrivendo si può cercare un termine, con il tasto “q” si esce.. ( es. less /var/log/syslog ) per ulteriori informazioni usare “man”
  • zless <nomefile> # stessa cosa del comando less, ma permette di leggere file compressi con gzip (estensione .gz)
  • dmesg # lo vedremo dopo
  • tail <nomefile> # questo comando mostra la “coda” del file, ovvero le ultime righe.. in realtà questo comando è molto utile se si lancia così: tail -f <nomefile> che vuol dire apri la coda del file e non lo chiudere, scrivimi tutto ciò che viene inserito nel file man mano che viene inserito.. è più facile provarlo che spiegarlo.. farò un esempio dopo ( per uscire premere CTRL+C)
  • cp <nomefileorigine> <nomefilecopiato> # questo serve a copiare un file, nel caso non riusciste a farlo per via grafica, per qualunque motivo, se non vi dice nulla è andato tutto bene
  • chown nomeutente:nomeutente <nomefile> # questo serve a cambiare il proprietario del file, sostituire “nomeutente” con il nome del vostro utente.. (es. chown daniele:daniele /home/daniele/copia-del-file-di-sistema ), anche questo vi serve se per caso non avete la possibilità di farlo in modalità grafica
  • grep <stringa-di-ricerca> <nomefile> # questo comando serve per “filtrare” un file mostrando solo alcune righe, ad esempio: grep error /var/log/syslog vi restituisce solo le righe di /var/log/syslog che contengono la parola “error”, consiglio però questa variante: grep -i error /var/log/syslog il comando questa volta dice di non considerare minuscole e maiuscole, così troverete anche le righe che contengono “Error” e “ERROR”.
  • comando-qualunque > nomefile 2>&1 # crea un file che si chiama “nomefile” e mette all’interno tutto quello che avrebbe scritto in console :) ad esempio se avete un errore lanciando un programma potete utilizzare questo metodo per copiare tutti gli errori su un file da consultare con calma in un secondo momento

Ulteriore utilità: per scrivere da console nomi di file con caratteri strani o “spazi” usare la barra “\”

esempio:

questo file ha degli spazi

diventa

questo\ file\ ha\ degli\ spazi

il tasto TAB farà da solo questo lavoro :) ma se avete due file che iniziano con “questo<spazio>” potrebbe esservi utile

Log di sistema

È ovviamente il primo posto in cui guardare quando si hanno problemi con qualche periferica ( anche se in genere io preferisco usare prima dmesg, trattato al prossimo punto, perché meno incasinato e più immediato ) :) o quando il sistema si comporta in modo “strano”. Nei rari casi poi in cui potreste sperimentare un crash del sistema è probabile che troverete qui qualche informazione in merito.. in genere sono dovuti a qualche hardware che si è rotto.. il log può aiutarvi a capire quale sia quest’hardware (talvolta)

il posto dove trovare questi log varia in base al programma installato sul vostro sistema, in genere però troverete il log del sistema in questa posizione:

/var/log/syslog

per ragioni di sicurezza tale file è leggibile solo con i privilegi di root, apritelo come più vi aggrada quindi, con l’accortezza di farlo da root (ad esempio con sudo gedit /var/log/syslog o per via grafica cliccando con il destro sulla cartella /var e scegliendo “apri come amministratore”)

il sistema mantiene anche i log passati.. di molto tempo fa

/var/log/syslog <– qui troveremo il log della sessione corrente (cioè quella che stiamo usando in questo momento) e alcune di quelle precedenti

/var/log/syslog.0 <– qui troveremo quelle un po’ più datate

/var/log/syslog.1.gz <– qui troveremo quelle ancora più vecchie, compresse con gzip, sono quindi archivi.. per leggerle è necessario scompattarle

/var/log/syslog.2.gz <– ancora più vecchi..

… e così via …

Se la grafica non dovesse funzionarvi, per qualunque ragione è possibile consultare questi log con il comando less /var/log/syslog ( o zless /var/log/syslog.1.gz per quelli compressi) da root e da terminale/console, oppure potete usare “nano” o “vim“, due editor da console :) che consiglio di imparare (almeno uno dei 2), può sempre servire (io adoro “vim” per esempio, e lo uso spesso al posto di gedit)…

May 11 13:46:17 localhost kernel: klogd 1.4.1#20, log source = /proc/kmsg started.
May 11 13:46:17 localhost kernel: Linux version 2.6.18-k8-crypt (2.6.18-k8-crypt-10.00.Custom) (root@mastro) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Sat Jan 13 12:11:04 CET 2007

all’interno del log troveremo qualcosa di simile, come vedete ogni riga ha una data ed un orario, il che può aiutarvi in diverse occasioni.. queste sono le prime righe che troverete dopo un avvio del vostro sistema (o qualcosa di simile)

se proprio non ci capite nulla.. semplicemente copiate il file (da root copiatelo da qualche parte e cambiate il proprietario in modo da poterlo usare liberamente, NON cambiate il proprietario direttamente sul file originale!) e mandatelo a qualcuno che sappia cavarne fuori qualcosa spiegandogli con vostre parole il problema :D

dmesg

altro log di sistema, qui dentro trovate spesso informazioni più utili che in /var/log/syslog (secondo me)

potete consultare i file

/var/log/dmesg

/var/log/dmesg.0

/var/log/dmesg.1.gz

oppure potete usare il comando “dmesg” per avere lo stesso risultato (usando il comando non è necessario essere root) (CONSIGLIATO)

qui dentro ad esempio ci sono informazioni “in tempo reale” su cosa collegate al vostro computer..

ad esempio.. avete collegato una chiavetta usb o uno scanner, o un altra periferica e non sapete se è stata rilevata o se ha avuto qualche problema?

lanciate dmesg e guardate le ultime righe..

può essere utile il comando:

dmesg | tail

che dice: tutto ciò che “esce” da dmesg dallo al comando “tail”, in poche parole vi fa vedere l’ultima parte di dmesg (quel simbolo “|” si chiama “pipe” per chi volesse cercare qualche info in proposito)

a questo punto inserite la periferica e rilanciate dmesg.. vedrete comparire diverse scritte, se qualcosa è andato storto in quelle poche righe ci sarà sicuramente qualcosa di utile per capire cos’è andato storto.. può essere utile passarle ad un amico esperto (come al solito) o inserirle in un motore di ricerca e vedere cosa salta fuori :)

NOTA: questo è vero solo per periferiche come l’USB, periferiche che usano la porta parallela (es. vecchi scanner e stampanti) non vengono rilevate in automatico ma solo quando “cercati”

prendo la mia chiavetta usb e la attacco..

qui qualcosa è andato storto

usb 2-2: new full speed USB device using ohci_hcd and address 4
usb 2-2: device descriptor read/64, error -110
usb 2-2: device descriptor read/64, error -110
usb 2-2: new full speed USB device using ohci_hcd and address 5
usb 2-2: device descriptor read/64, error -110
usb 2-2: device descriptor read/64, error -110
usb 2-2: new full speed USB device using ohci_hcd and address 6
usb 2-2: device not accepting address 6, error -110
usb 2-2: new full speed USB device using ohci_hcd and address 7
usb 2-2: device not accepting address 7, error -110

e infatti il mio sistema non fa nulla… in questo caso mi è bastato staccarla e riattaccarla, a volte capita (anche in windows)

rilancio dmesg, ecco cosa è accaduto (in questo caso tutto ha esito positivo), tanto per darvi un idea

usb 3-4: new high speed USB device using ehci_hcd and address 5
usb 3-4: configuration #1 chosen from 1 choice
Initializing USB Mass Storage driver…
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 5
usb-storage: waiting for device to settle before scanning
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
Vendor: USB 2.0 Model: Flash Disk Rev: 0.00
Type: Direct-Access ANSI SCSI revision: 02
usb-storage: device scan complete
SCSI device sda: 512000 512-byte hdwr sectors (262 MB)
sda: Write Protect is off
sda: Mode Sense: 00 00 00 00
sda: assuming drive cache: write through
SCSI device sda: 512000 512-byte hdwr sectors (262 MB)
sda: Write Protect is off
sda: Mode Sense: 00 00 00 00
sda: assuming drive cache: write through
sda: sda1
sd 0:0:0:0: Attached scsi removable disk sda

in questo caso mi si è aperta la cartella con i dati della mia chiavetta

come vedete posso vedere che il mio sistema è riuscito a rilevare la chiavetta, la dimensione e varie altre caratteristiche, se siete curiosi potete cercare cosa sono su un motore di sicurezza.. imparerete così un sacco di cose :D altrimenti potete vivere comunque abbastanza bene senza saperlo..

IMPORTANTE: dmesg può essere impostato su diversi livelli di dettaglio ognuno con il suo significato

il comando per modificare il livello di dettaglio è: “dmesg -n7″ che va dato da utente root! Il numero 7 è il livello di dettaglio che vogliamo… Ogni livello definisce la “criticità” minima che vogliamo conoscere, il livello 1 è quello minimo, il livello 8 quello con più dettagli! Ma eccovi i significati di ogni livello

  • 1: KERN_EMERG, errori che rendono il sistema inutilizzabile
  • 2: KERN_ALERT, errori per cui va fatto qualcosa immediatamente
  • 3: KERN_CRIT, errori critici
  • 4: KERN_ERR, condizioni di errore
  • 5: KERN_WARNING, avvertimenti
  • 6: KERN_NOTICE, notifiche di qualcosa di significativo ma normale
  • 7: KERN_INFO, informazioni
  • 8: KERN_DEBUG, informazioni di debug del kernel

Io consiglio di impostare un livello 6 o 7!

Se poi voleste avventurarvi in quel che succede nei minimi dettagli potete provare un level 8!

Una volta cambiato il livello il sistema dovrebbe iniziare a registrare le condizioni successive che lo caratterizzano (in altre parole se lanciate dmesg quindi cambiate livello e lo rilanciate non vedrete cambiamenti immediati)

Log delle installazioni (sistemi Debian, come Ubuntu)

le altre distro avranno sicuramente i propri log.. :) basta sapere che esistono e come si chiama il sistema per pacchettizzare (Debian = apt, Gentoo = emerge, RedHat = yum ecc..)

in /var/log/dpkg.log potete trovare tutto il log di dpkg (programma usato da apt per installare e disinstallare software), qui potete vedere tutti i programmi che avete installato, quando (data e ora), quelli rimossi ecc…

se dopo un aggiornamento è spuntato qualche problema qui potete vedere quali pacchetti sono stati aggiornati/installati, il che può aiutare voi ( o qualcuno per voi ) a trovare il colpevole e quindi a risolvere temporaneamente il problema ( ad esempio reinstallando la versione precedente che non aveva i problemi )

Log del server grafico X

pensavate che X non lasciasse un log? :D

X è quello che viene chiamato “server grafico”, ovvero quel programma (servizio) che crea l’ambiente grafico, gestisce la scheda video, le periferiche di interfaccia uomo-macchina (tastiera, mouse, tavoletta grafica ecc…), i font (caratteri) ecc.. ecc..

se l’interfaccia grafica non vi parte o avete problemi con il driver i vostri amici più grandi sono “dmesg” e il log di X

ecco dove si trova:

/var/log/Xorg.0.log

qui trovate l’ultimo log

nelle prime righe troviamo una legenda

Markers: (–) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.

come da qui si evince.. cercando “(EE)” troveremo gli errori, cercando “(WW)” gli avvertimenti..

una lettura completa comunque se il problema non è immediatamente identificato non farà male :)

qui potremmo in genere trovare informazioni utili per capire perché non abbiamo accellerazione 3D, o perché il mouse non funziona, o perché il server grafico non è riuscito a partire in generale

file utili:

/etc/X11/xorg.conf

file da cui il server X (Xorg) prende tutte le configurazioni per partire, prima di fare modifiche è sempre consigliato farsi una copia di backup

comandi utili:

riavviare il server grafico.. ( serve essere root)

per chi ha gnome ( es. ubuntu ) e quindi, in genere, usa gdm per gestire i login
/etc/init.d/gdm restart

per chi ha KDE ( es. kubuntu) e quindi, in genere, usa kdm per gestire i login

/etc/init.d/kdm restart

oppure da utente normale il comando: startx

inoltre se X parte ma non riuscite ad accedere a Gnome o KDE ( o altro desktop manager ) nella cartella dell’utente il file .xsession-errors (nascosto) può dare qualche informazione utile ulteriore..

Informazioni sul sistema

Questo comando

uname -a

che nel mio sistema dà questo risultato:

Linux mastro 2.6.18-k8-crypt #1 SMP Sat Jan 13 12:11:04 CET 2007 i686 GNU/Linux

indica il nome del sistema, la versione del kernel ( e qualche info su come è compilato) nonché la data a cui è stato compilato, fornitelo sempre e comunque quando chiedete

altro comando utile:

lspci

fornisce la lista delle periferiche connesse al bus PCI (quasi tutte) con il loro nome rilevato..

quando fornite i nomi di una periferica che da problemi è utile usare questo comando per fornirne il nome dato da Linux, o comunque usare tale nome per cercare informazioni su internet

per avere più informazioni su una periferica potete prendere il primo numero

00:06.1 Modem: nVidia Corporation nForce3 Audio (rev a2)

questo è il mio winmodem

quindi dare il comando lspci -v e cercare la parte con quel numero (questo comando dato da root da più informazioni, quindi datelo da root)

00:06.1 Modem: nVidia Corporation nForce3 Audio (rev a2) (prog-if 00 [Generic])
Subsystem: ASUSTeK Computer Inc. Unknown device 1856
Flags: 66MHz, fast devsel, IRQ 185
I/O ports at e800 [disabled] [size=256]
I/O ports at ec00 [disabled] [size=128]
Memory at febff000 (32-bit, non-prefetchable) [disabled] [size=4K]
Capabilities: [44] Power Management version 2

ancora più utile il comando lspci -nv che sostituisce il nome ( Modem: nVidia Corporation nForce3 Audio ) con il codice marca/modello come vedete lo possiamo identificare tramite il codice 00:06.1, il codice in grassetto ci dice il “vendor” (produttore) e il codice del modello, questo codice è quasi univoco e mi ha permesso ad esempio di trovare quale fosse il driver giusto per il mio winmodem

00:06.1 0703: 10de:00d9 (rev a2) (prog-if 00 [Generic])
Subsystem: 1043:1856
Flags: 66MHz, fast devsel, IRQ 185
I/O ports at e800 [disabled] [size=256]
I/O ports at ec00 [disabled] [size=128]
Memory at febff000 (32-bit, non-prefetchable) [disabled] [size=4K]
Capabilities: [44] Power Management version 2

un comando simile a lspci ma per l’usb è il seguente:

lsusb

anche questo disponibile nella versione lsusb -v

talvolta i nomi “commerciali” (che trovate sulla scatola) delle periferiche non aiutano a capire di cosa si tratti, questi comandi possono aiutare di più chi sta cercando di aiutarvi

e ancora…

lsmod

fornisce la lista dei moduli ( o driver ) caricati in memoria

con modprobe <nomemodulo> (da root) possiamo caricare un modulo in memoria

con modprobe -r <nomemodulo> (da root) possiamo rimuoverlo (se questo non è utilizzato da qualcosa)

con modinfo <nomemodulo> abbiamo informazioni sul modulo :)

i moduli si trovano tutti in /lib/modules/2.<versione-del-kernel>/

Se non vi lascia smontare la chiavetta o estrarre un CD/DVD

In genere questo accade perché c’è qualche programma che sta utilizzando la risorsa. (device is busy)

ecco i comandi utili per capire che cosa blocca la nostra risorsa!

fuser -mav /dev/cdrom

che darà come risultato qualcosa tipo:

               USER      PID       ACCESS    COMMAND

/dev/cdrom:    daniele   4938      f....     cat

               daniele   5376      ..c..     bash

in pratica otterrete una lista di cosa sta occupato la risorsa che vi interessa

in questo caso ho riprodotto manualmente una situazione poco probabile solo a scopo di esempio.. il programma che blocca la risorsa /dev/cdrom (cioè il cdrom) è “cat”, il PID (Process ID: ogni processo che gira sul vostro sistema ha un PID che lo identifica e che potete usare per diverse cose se sapete come). Vi viene in oltre segnalato qual’è l’utente che ha lanciato quel comando (daniele) e il tipo di accesso alla risorsa

  • f = file aperto
  • c = directory corrente (un terminale si trova in quella directory)
  • e = eseguibile in esecuzione (c’è un programma dentro a quella risorsa che sta “girando”)
  • r = root directory (la risorsa contiene la directory di root.. non vi capiterà praticamente mai)
  • m = un file è mappato in memoria o c’è una libreria condivisa

NOTA: il comando fuser -mav /media/cdrom non avrebbe dato lo stesso effetto.

/media/cdrom è la posizione dove il cdrom viene “montato”. La risorsa è /dev/cdrom. In questo esempio il comando “cat” non sarebbe stato rilevato con il secondo comando!

quindi che fare?

se avete capito dal comando qual’è il programma aperto e sapete come chiuderlo, magari salvando il lavoro, potete procedere e quindi smontare/ejectare il dispositivo come al solito.altrimenti potete “uccidere” i processi che bloccano la risorsa.

Nel caso di CD/DVD talvolta è sufficiente dare il comando

eject /dev/cdrom

o eject /dev/dvd

ma non sempre funziona… Proseguite la lettura

una versione leggermente modificata del comando precedente dovrebbe fare al caso vostro:

fuser -mavk /dev/cdrom

che richiede la lista di processi che occupano la risorsa e richiede di “ucciderli” (Killarli) tutti.

Questo comando può però uccidere solo i processi generati dal vostro utente (nel mio caso “daniele”). Se il processo appartiene a “root” (amministratore di sistema) o ad un altro utente dovete dare questo comando dagli altri utenti.. o più semplicemente darlo da root :)

in questo caso quindi

sudo fuser -mavk /dev/cdrom

o se sudo non è impostato nel vostro sistema date il comando “su“, quindi inserite la password di root e date il comando fuser -mavk /dev/cdrom

Se anche questo non dovesse funzionare o volete “uccidere” solo alcuni processi piuttosto che chiedere loro di terminare normalmente anziché ucciderli potete seguire un altra strada:

il comando kill fa al caso nostro:

kill -15 5376

riprendendo l’esempio sopra questo comando chiede di terminare normalmente (-15) il processo con il PID 5376. Nell’esempio sopra si trattava del terminale (bash).

Se non ne vuol sapere di chiudersi potete ucciderlo con quest’altro comando:

kill -9 5376

Unica differenza il parametro -9 che significa: uccidi il processo.

Come prima questi comandi devono essere dati dall’utente proprietario del processo oppure da root (che può uccidere o terminare qualunque processo di qualunque utente)

Esempi di risorse

/dev/cdrom è la risorsa “cdrom”, ma le chiavette e i DVD?

  • /dev/cdrom
  • /dev/dvd
  • /dev/sda
  • /dev/sdb
  • /dev/sdc
  • ecc..

sono alcuni esempi: le chiavette sono in genere /dev/sda. Se /dev/sda è già un disco o un altra chiavetta sarà /dev/sdb quindi /dev/sdc e così via

come lo scoprite?

dal comando dmesg che ho spiegato prima per esempio

scsi1 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 7
usb-storage: waiting for device to settle before scanning
Vendor: USB 2.0 Model: Flash Disk Rev: 0.00
Type: Direct-Access ANSI SCSI revision: 02
SCSI device sdb: 512000 512-byte hdwr sectors (262 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 00 00 00
sdb: assuming drive cache: write through
SCSI device sdb: 512000 512-byte hdwr sectors (262 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 00 00 00
sdb: assuming drive cache: write through
sdb: sdb1
sd 1:0:0:0: Attached scsi removable disk sdb
usb-storage: device scan complete

In questo esempio vi mostro che è successo collegando la mia chiavetta… le aree in grassetto mostrano dove viene assegnato un “device” (dispositivo). Cioè /dev/sdb è un file che rappresenta la mia chiavetta! Si potrebbe dire che per Linux /dev/sdb È la mia chiavetta!

Poco più sotto viene rilevata una partizione nel mio device e viene numerata /dev/sdb1

Nel mio caso la chiavetta ha una sola partizione, se la vostra (o il vostro disco esterno) ne ha più di una verranno numerate in ordine crescente sda1, sda2, ecc…

un altro modo per scoprirlo?

Se la vostra chiavetta è stata montata (potete accedere ai file e scriverci sopra) scrivete nel terminale

mount

semplicemente

/dev/sdb1 on /media/NOMECHIAVETTA type vfat (rw,nosuid,nodev,shortname=lower,uid=1000)

nella lista avrò anche questo…
vedete il nome della risorsa e dov’è stata montata, quindi il tipo di filesystem (vfat) e le opzioni di montaggio… Se siete curiosi man mount risponderà alle vostre domande.

Sicuramente ci sono altri modo per scoprire quali sono i nomi dei device assegnati da Linux, io ve ne ho dati 2 :)

Processore al 100% e non sapete che cosa lo provoca?

Ci sono programmi appositi su ogni Desktop Manager per gestire questa cosa (corrispondenti al programma che su Windows si ottiene premendo la combinazione di tasti CTRL+ALT+CANC). Su Linux non c’è una combinazione del genere: esistono diversi programmi, grafici e non, per fare la stessa cosa :). Su gnome c’è gnome-system-monitor per esempio.

Io però qui vi mostro come fare da terminale per 2 motivi:

  • Il terminale è sempre comunque disponibile, anche se l’ambiente X non dovesse funzionare
  • Questi comandi sono presenti in TUTTE le distribuzioni Linux perché parte di GNU (ricordate? È GNU/Linux non “solo” Linux)

allora

comando ps

o meglio

ps ax

ci da una lista dei processi in esecuzione sul nostro pc.. lista piuttosto lunga in genere :D (se volete vedere anche le dipendenze tra processi… cioè se il processo X ha lanciato il processo Y aggiungete “l”, di Livorno, ai parametri)

L’ordine in cui la lista dovrebbe essere presentata è quello di esecuzione, alla fine troverete gli ultimi comandi eseguiti :)

Questo comando (aprite un terminale ed eseguitelo) ci presenta diverse informazioni

PID   TTY     STAT   TIME   COMMAND

5010  ?       SNs    1:45   /usr/sbin/cupsd

8242  ?       S      0:00   /bin/sh /usr/bin/icedove

8246  ?       S      0:00   /bin/sh /usr/lib/icedove/run-mozilla.sh /usr/lib/iced

8251  ?       Sl     0:53   /usr/lib/icedove/icedove-bin

4470  pts/1   Ss+    0:00   bash

5376  pts/2   Ss     0:00   bash

6699  pts/2   R+     0:00   ps ax

L’esempio sopra mostra la “coda” del comando, cioè le ultime righe sul mio sistema in questo momento

Le informazioni che ci interessano sono il PID (che identifica ogni processo), il comando e volendo lo “stato”. Time se non sbaglio è il tempo effettivo di occupazione del processore dall’accensione del PC.

Gli stati di un processo sono

  • R = Runnable (il processo può essere messo in esecuzione/è in esecuzione)
  • S = Sleeping (dormiente)
  • D = sta “dormendo” ma non può essere interrotto
  • T = sTopped ( è stato fermato ma esiste ancora)
  • Z = Zombie (Lo stato Zombie avviene quando un processo termina, “muore”, ma resta nella lista processi perché chi lo ha lanciato possa vedere che ha terminato. Se il chiamante non verifica e fa sparire tale processo questo rimane nello stato di zombie finché non viene terminato il processo che lo aveva lanciato)
  • W = se non sta occupando in alcun modo la memoria di sistema
  • N = processo ad alta priorità (Nice è il programma per gestire le priorità dei processi)

un altro comando è “top”

top

provate a lanciarlo.. questo programma resta aperto e vi mostra i processi attivi in continuo aggiornamento: in alto ci saranno quelli che occupano più processore a scendere verso chi ne occupa meno. Con il tasto “M” possiamo far comparire/scomparire le informazioni sull’utilizzo della memoria del sistema. Tasto Q per uscire.

Per ulteriori informazioni su questi due comandi rimando come al solito ai loro manuali (man ps e man top). Questo vale in realtà per qualunque comando :) anche man man volendo (il manuale del manuale)

ora che ce ne facciamo di queste informazioni?

come spiegato nella sezione precedente possiamo ad esempio terminare i programmi o ucciderli dal loro PID con i comandi kill -15 PID e kill -9 PID (rimando alla sezione precedente per i dettagli, oppure un bel man kill anche qui)

NOTA: non potete uccidere (kill) i processi zombie perché sono già “morti” :D macabro? naaa.. son solo processi non sentitevi in colpa! :P

Identificato il processo che ci sta consumando il processore o la ram possiamo ucciderlo in questo modo!

Problemi di rete?

Ci sono diverse cose da sapere:

il comando ping può essere usato per verificare se un computer della rete “risponde” o meno:

ping 192.168.1.1

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=1.58 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=1.20 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=255 time=1.20 ms

prova a mandare un messaggio al computer con l’indirizzo 192.168.1.1 per vedere se risponde, nell’esempio qui sopra il computer ha ovviamente risposto (tempo di risposta 1.58 millisecondi al primo messaggio). Per interrompere il ping potete premere la combinazione di tasti Control+C.

oppure potete provare a “pingare” un server su internet  (ping www.google.com)

il comando, dato da root, ifconfig può darvi le informazioni su tutte le interfacce di rete nel vostro sistema  (eventualmente ifconfig -a per vedere anche quelle spente)

lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:353 errors:0 dropped:0 overruns:0 frame:0
TX packets:353 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:91475 (89.3 KiB)  TX bytes:91475 (89.3 KiB)

è l’interfaccia di rete chiamata “loopback” esiste su tutti i computer, è un interfaccia virtuale (fittizzia).. il vostro indirizzo di rete fittizzio è 127.0.0.1

eth1      Link encap:Ethernet  HWaddr 00:12:34:ab:cd:xz
inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
inet6 addr: fe80::1234:abcd:feac:39cb/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:190496 errors:0 dropped:0 overruns:0 frame:0
TX packets:189107 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:139792725 (133.3 MiB)  TX bytes:82725746 (78.8 MiB)
Interrupt:17 Base address:0×6000

ci sono parecchie informazioni qui sulla vostra scheda di rete.. intanto Linux la chiama “eth1″, ha il mac address “00:12:34:ab:cd:xz” e l’indirizzo ip è “192.168.1.2″ il resto per ora potete ignorarlo..

 wlan0     Link encap:Ethernet  HWaddr 00:ab:cd:12:34:xz
UP BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

questa invece è la scheda wireless, anche qui potete leggere il mac address… ma non c’è altro di interessante sulla scheda wireless

con il comando ifconfig potete provare a forzare l’accensione della scheda (ifconfig eth1 up, per accendere la scheda che si chiama eth1) o spegnerla (ifconfig eth1 down), potete impostare manualmente un indirizzo ip associato alla scheda (ifconfig eth1 192.168.1.10)

Per le schede wireless ci sono altri 2 comandi utili: iwconfig e iwlist. Il primo è una sorta di “ifconfig” specializzato per schede wireless:

iwconfig

wlan0     IEEE 802.11g  ESSID:”nome_della_rete_a_cui_siete_collegati”
Mode:Managed  Frequency:2.412 GHz  Access Point: Not-Associated
Retry min limit:7   RTS thr:off   Fragment thr=2346 B
Encryption key:off
Link Quality:0  Signal level:0  Noise level:0
Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
Tx excessive retries:0  Invalid misc:0   Missed beacon:0

potete leggere il nome della rete a cui siete collegati, se siete associati a qualche access point o meno, se è attiva la criptografia per la connessione in atto, la qualità del collegamento, livello del segnale ecc…

potete usare lo stesso comando per associare la scheda wireless ad un particolare essid (iwconfig wlan0 essid NOME_DELLA_RETE) e anche se non è forse il metodo più semplice potete impostare usando iwconfig molti altri parametri della scheda.. vi rimando al manuale (man iwconfig)

iwlist invece serve per mettere la vostra scheda in ricerca di reti wireless nella zona (iwlist wlan0 scan),vi darà informazioni quali nomi (essid) delle reti trovate, potenza del segnale ecc…

le impostazioni delle interfacce di rete sono mantenute in un file /etc/network/interfaces

auto lo
iface lo inet loopback

imposta l’interfaccia virtuale di loopback, non preoccupatevene

allow-hotplug eth1
iface eth1 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1

questa è una tipica impostazione statica per la scheda di rete… la prima istruzione dice di permettere di “staccare/riattaccare il cavo di rete”. Come vedete tra le impostazioni c’è anche l’indirizzo ip del gateway

auto eth1

questo invece direbbe di rilevare automaticamente le impostazioni di rete, quindi può andare bene per sfruttare il dhcp del vostro router di casa per esempio. Attenzione perché quest’impostazione talvolta resetta le impostazioni manuali decise da voi.. quindi sembra funzionare tutto e invece dopo un po’ smette di funzionare.. quella simpatica opzione è entrata in azione reimpostandovi l’ip e i DNS (vedi sotto per info su questi ultimi)

Queste istruzioni vengono utilizzate all’avvio del computer ma potete richiamarle manualmente se occorre con i comandi ifdown e ifup.

ifdown eth1 spegne la scheda di rete “eth1″ mentre ifup eth1 la riaccende impostandola com’è indicato nel file appena visto.

ci sono un altro po’ di cose da conoscere sulle reti.. ma è necessario avere qualche conoscenza di reti per comprenderle a fondo! Comunque le vediamo perché sono essenziali per una connessione di rete completa…

la prima è la tabella di routing: definisce in sostanza le regole per smistare i pacchetti di rete

il comando route -n vi stampa la routing table

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth1

a parte l’impaginazione approssimativa… vediamo di capire questa routing table:

gli indirizzi del tipo 192.168.1.x vengono mandati attraverso l’interfaccia eth1 (la scheda di rete), il “gateway” è “0.0.0.0″ in sostanza non è definito alcun gateway..

gli indirizzi del tipo 169.254.x.x vengono anch’essi mandati alla scheda di rete e non è definito alcun gateway..

infine tutti gli altri indirizzi (0.0.0.0) vengono mandati alla scheda di rete e in particolare all’indirizzo 192.168.1.1 che è il nostro gateway, di solito questo è l’indirizzo del router!

NOTA BENE: se esistono 2 gateway solo il primo verrà considerato perché la tabella è consultata dal kernel partendo dall’alto e fermandosi appena trova una regola che soddisfa il pacchetto.

si può modificare e manipolare questa tabella con il comando route, leggetevi il manuale (man route) o cercate informazioni su internet se vi serve  cambiarla manualmente

infine i DNS: molti non sanno neppure cosa sono eppure senza questo servizio (Domain Name Server) mettendo “www.google.com” o qualunque altro indirizzo nella barra di navigazione non capiterebbe proprio nulla! Il compito dei DNS è proprio quello di tradurre il “nome” di un dominio (es. www.google.com) con un indirizzo ip (es. 64.233.183.104) che viene utilizzato per collegarsi effettivamente con “www.google.com”.

Se i DNS non sono impostati correttamente sarete connessi alla rete ma non potrete navigarla usando i nomi. In questo caso alcuni programmi potrebbero funzionare (es. skype perché non usa i nomi ma direttamente gli indirizzi ip) mentre altri no…

ad esempio:

ping www.google.com

ping: unknown host www.google.com

significa che non è stato possibile “risolvere” il nome “www.google.com” con un indirizzo ip: il che può essere perché non siete connessi a internet oppure perché, anche se siete connessi a internet, i DNS non sono impostati correttamente.

il file con le impostazioni sui DNS è /etc/resolv.conf

nameserver 192.168.1.1
nameserver 208.67.222.222
nameserver 208.67.220.220

in questo caso sono impostati 3 indirizzi DNS, il primo è l’indirizzo che io (penso) essere il mio router, gli altri 2 sono quelli del servizio di DNS gratuito di opendns  ma in genere i DNS vengono forniti dal vostro provider in modo automatico, e se il vostro non è un router farlocco dovrebbe “passarveli” se utilizzate il DHCP, se invece usate un impostazione ad IP statico dovete impostarli voi… I server dns in questo file vengono interrogati uno dopo l’altro finché non se ne trova uno che risponde…

appena salvate le modifiche a questo file saranno immediatamente attive e quindi potete riprovare il ping:

ping www.google.com
PING www.l.google.com (66.249.91.147) 56(84) bytes of data.
64 bytes from ik-in-f147.google.com (66.249.91.147): icmp_seq=1 ttl=241 time=64.7 ms
64 bytes from ik-in-f147.google.com (66.249.91.147): icmp_seq=2 ttl=241 time=103 ms
64 bytes from ik-in-f147.google.com (66.249.91.147): icmp_seq=3 ttl=241 time=66.7 ms

come vedete stavolta l’indirizzo è stato risolto: “PING www.l.google.com (66.249.91.147) 56(84) bytes of data.” E se voi mettete quell’indirizzo nella barra del browser al posto di “www.google.com” vi ritroverete sul sito di google :)

Ecco la “base” dei comandi per debuggare la vostra configurazione di rete…

in genere si procede facendo un ping a un qualche server web che si sa rispondere ai ping (come google) o all’indirizzo della macchina che si vuole raggiungere, poi se non funziona si prova a pingare il router (se ce n’è uno) o un altra macchina che si sà essere in rete.. quindi si comincia a guardare le varie impostazioni e chiedersi se sono corrette…

Quasi tutto questo si può fare con tool grafici ma è utile sapere cosa accade sotto, specialmente quando i tool grafici non ci permettono di capire cosa non va…

Altre cose utili

potete trovare la configurazione del kernel che state usando in /proc/config.gz (non sempre)

oppure nel file /boot/config-<versione-del-kernel>

se lanciate un programma ma non parte

talvolta capita che lanciando un programma non capiti nulla..

apriamo un terminale e lanciamolo da lì.. ( in genere basta scrivere il nome del programma, aiutatevi con il tasto TAB )

con buona probabilità tra i messaggi che vedremo ci sono anche gli errori che gli hanno impedito di partire

come già detto se mi dovesse venire in mente altro, o avete suggerimenti sarà lieto di rendere più completa la lista ( segnalatemi anche eventuali errori ortografici, sono solito modificare le frasi diverse volte nel tentativo di renderle più leggibili, così talvolta ci restano in mezzo dei pezzi)

66 Commenti »

  1. Masand detto,

    13 Maggio, 2007 a 2:42

    Gran bel lavoro… Lo trovo utile anche per chi non è alle prime armi…

    Un saluto a tutti…
    masand

  2. mastro detto,

    13 Maggio, 2007 a 2:47

    Direi che dipende da cosa intendi per “chi non è alle prime armi” :D
    forse io con il mio portatile mi sono scontrato con queste cose praticamente subito :) in effetti fosse filato tutto liscio non avrei imparato un bel niente :P

  3. Masand detto,

    13 Maggio, 2007 a 13:34

    Ciao,
    con “chi non è alle prime armi” intendo quegli utenti che usano produttivamente l’ambiente GNU/Linux in un contesto desktop, ma che magari si trovano “spaesati” con qualche errore del quale non riescono o non sanno trovarne la causa.

    Un po’ (se mi posso permettere il paragone) come un buon utente Windows che non ha mai messo mano al registro…

    Un saluto a tutti e buona domenica…
    masand

  4. Francesco detto,

    14 Maggio, 2007 a 12:12

    ottima guida

  5. phoenix detto,

    14 Maggio, 2007 a 13:33

    utilissima!!!
    da tenere sempre sotto mano ;-)

  6. mastro detto,

    14 Maggio, 2007 a 13:52

    @phoenix
    dopo un po’ viene automatico :)
    hai un problema con qualche servizio? cerca il log in /var/log/
    hai collegato una periferica e non funziona? dmesg :)

    si dice sempre che Linux è difficile, la realtà è che quando qualcosa non va ci sono messaggi molto più comprensibili e che ti indirizzano al problema, su windows in genere ti becchi un codice esadecimale criptico con il consiglio di contattare l’amministratore di sistema (che in genere sei tu stesso)

  7. squid detto,

    17 Maggio, 2007 a 15:54

    [spam warning] Ciao mastro sono che non centra niente con l’articolo che hai scritto :) ti vorrei avviasare che su xsquid.wordpress.com c’e’ un altro easter egg di google :D! PS: Ci aggiungiamo a vicenda nel blogroll? ciao squid [/spam warning]

  8. mastro detto,

    17 Maggio, 2007 a 23:21

    @squid
    che fai spammi? ti fai pubblicità? :D
    darò un occhiata al tuo blog.. e deciderò se inserirti o meno nel blog roll :) tu puoi decidere di tua iniziativa
    sono contrario agli “scambi di blogroll”, se vuoi puoi inserirmi, lo stesso vale per me. Comunque per stavolta passi ma i commenti pubblicitari come il tuo non mi vanno a genio

  9. squid detto,

    18 Maggio, 2007 a 18:56

    vabbe era cosi per dire. non volevo spammare cmq fai quello che vuoi. In ogni caso non mi sembra di aver fatto niente di male. Ma stiamo scherzano? non ti ho mica offeso la mamma! Daro’ un occhiata al tuo blog?! chi sei un editore della repubblica? Lasciamo fare va.

  10. mastro detto,

    18 Maggio, 2007 a 19:17

    @squid
    tu commenti ad un articolo che parla di log su Linux, e scrivi di guardare sul tuo blog perché hai messo un nuovo easter egg di google
    come dovrei chiamarlo questo se non spam?

    sono forse obbligato a effettuare uno “scambio” di blog roll?

    non mi sono offeso.. mi fa ridere il tuo atteggiamento.. e ti ho informato che non mi piacciono i commenti pubblicitari se non sono pertinenti con l’articolo

    se tu avessi scritto un articolo che aggiunge qualcosa a questo argomento sarebbe cosa diversa, ti pare?

    chiuso l’argomento

  11. squid detto,

    18 Maggio, 2007 a 20:32

    xfetto, bona!!!

  12. Bollito misto (con mostarda)¹ « Appunti di Ubuntu detto,

    28 Giugno, 2007 a 12:17

    [...] Giovedì, Giugno 28th, 2007 in Look & Feel, Feisty Fawn, BeeSeek, HowTo, GNU/Linux, Ubuntu, Blog, Dell 1) Una utile guida con spunti per risolvere autonomamente i propri problemi con Linux: http://natonelbronx.wordpress.com/2007/05/12/introduzione-a-come-scoprire-dove-stanno-i-problemi-con... [...]

  13. ockap detto,

    14 Luglio, 2007 a 13:55

    Ciao, vorrei accedere alla rete con il mio cellulare AMOI MD-1 9109 della “TRE”… unico problema: Nonostante sia collegato alla porta USB, non risulta nelle periferiche quando digito lsusb da terminale!! e al comando dmesg, appare che la periferica non riesce a registrarsi… come risolvo?

  14. ockap detto,

    14 Luglio, 2007 a 14:04

    Ciao, vorrei usare il mio cellulare UMTS AMOI MD-1 9109 della “TRE”, per connettermi alla rete… unico problema: Nonostante sia collegato alla porta USB, non risulta nelle periferiche quando digito lsusb da terminale!! e al comando dmesg, appare che la periferica non riesce a registrarsi…
    Qualcuno ha un’idea per risolvere il problema?

  15. mastro detto,

    14 Luglio, 2007 a 15:49

    perché hai scritto 2 volte?
    questo non è un forum ockap
    e comunque se vuoi che qualcuno ti aiuti dovresti per lo meno copiare per intero la parte interessata di dmesg

  16. ockap detto,

    14 Luglio, 2007 a 18:22

    uno sbaglio… sono solo un essere umano!

  17. ockap detto,

    14 Luglio, 2007 a 18:38

    ecco cosa dice dmesg:

    usb 6-2: new full speed USB device using ohci_hcd and address 2
    usb 6-2: configuration #1 chosen from 1 choice
    usb 6-2: USB disconnect, address 2
    usb 6-2: new full speed USB device using ohci_hcd and address 3
    usb 6-2: device descriptor read/64, error -62
    usb 6-2: device descriptor read/64, error -62
    usb 6-2: new full speed USB device using ohci_hcd and address 4
    usb 6-2: device descriptor read/64, error -62
    usb 6-2: device descriptor read/64, error -62
    usb 6-2: new full speed USB device using ohci_hcd and address 5
    usb 6-2: device not accepting address 5, error -62
    usb 6-2: new full speed USB device using ohci_hcd and address 6
    usb 6-2: device not accepting address 6, error -62

  18. mastro detto,

    14 Luglio, 2007 a 19:55

    @ockap
    questo errore mi capita a volte per un bug del mio controller USB… in genere spegnendo, staccando corrente a tutto per 20 secondi e riaccendendo si sistema.. (si lo so è strano)

    dubito sia questo il caso…

    però se non lo hai fatto tentar non nuoce..

    altrimenti non so aiutarti molto… ti posso solo dire che (ma lo avevi già capito) sembra che la tua periferica non gradisca il modo in cui Linux tenta di “montarla”
    facendo una rapida ricerca con google direi che quel device con la parola “linux” non salta fuori da nessuna parte…
    dubito quindi funzionerà con esso…

    le chiavette usb ti funzionano?

  19. ockap detto,

    14 Luglio, 2007 a 21:23

    Si le chiavette usb le vede, e le monta tranquillamente.
    Credo che alla fine sia un problema del cellulare… o del kernel di Ubuntu!
    Grazie dei suggerimenti :)

  20. ockap detto,

    5 Settembre, 2007 a 15:54

    in una domenica di ordinaria follia ho trovato la soluzione! Good

    Tutte le varie guide consultate dicono la stessa cosa:

    forzare il sistema affinché carichi il modulo usbserial per il cellulare con il comando:

    sudo modprobe usbserial vendor=0×1004 product=0×6000

    ma come fai a forzare il caricamento di un modulo per una periferica che non viene riconosciuta?

    se digiti lsusb l’output, sarà:

    Bus 001 Device 001: ID 0000:0000
    Bus 002 Device 001: ID 0000:0000
    Bus 003 Device 001: ID 0000:0000

    adesso che ci ripenso però è semplice… ci provi lo stesso! Shocked

    Unico problema, il recupero dei dati del cellulare, che io ho fatto in due modi:

    1. con una vecchia distro di UBUNTU, ho provato la 5.10…
    il cellulare viene riconosciuto e digitando lsusb compare:

    Bus 001 Device 001: ID 1614:0404 #Ecco il mio cellulare
    Bus 002 Device 001: ID 0000:0000
    Bus 003 Device 001: ID 0000:0000

    2. sotto windows, basta guardare le proprietà del telefono dalla gestione periferiche!

    estrapolati i dati, appare semplice “ADESSO” seguire le varie guide… Smiley

    un ultimo suggerimento, è meglio digitare il comando

    sudo modprobe usbserial vendor=0×1614 product=0×404

    Prima di collegare il cellulare! Questo per avvertire UBUNTU che a breve riceverà la visita di una “nuova periferica”

  21. mastro detto,

    5 Settembre, 2007 a 16:14

    @ockap
    sono felice che hai trovato una soluzione
    con la tua spiegazione ho capito meglio come funziona la gestione dell’usb su Linux :)
    e suppongo lo abbia capito anche tu :D

    felice per te! :D

  22. carcass detto,

    17 Ottobre, 2007 a 13:30

    Ciao :)

    il tuo blog è veramente bello vorrei sapere 2 cose: col mio kernel .22 mi da il problema da te descritto quando inserisco la pendrive, ma non è un problema di outomount o mount manuale ma proprio non le vede neanche col comando lsusb.

    solo te tolgo i moduli ehci con modprobe -r ehci me la monta in automatico ma non come USB 2.0 ma 1.1.

    come risolvo?? puoi darmi una mano??

    Grazie.

    PS: posso aggiungere il tuo feed al people.debianclan ????

  23. mastro detto,

    17 Ottobre, 2007 a 13:53

    @carcass
    grazie! :) certo, puoi aggiungere il mio feed dove vuoi :)
    ma veniamo al tuo problema:
    non ho mai sentito di una cosa del genere…
    io farei così:

    rimuovi il modulo (come hai già fatto) e ricaricalo con modprobe ehci

    quindi guarda che cosa dice dmesg (magari dà già qualche errore al caricamento del modulo stesso)
    quando inserisci la chiavetta dmesg resta muto? (con ehci inserito)
    penso che per il tuo problema comunque la cosa più indicata sia andare su un canale IRC come #debian-it su irc.freenode.org (se hai debian) e chiedere aiuto lì.. (con il botta risposta si fa prima)
    io vedrò di aiutarti per quanto posso :)

    ps:
    prendendo spunto da un problema precedente
    senza il modulo ehci hai detto che ti rileva la chiavetta (anche se va lenta) con lsusb dovresti riuscire a scoprire il codice del vendor e del modello del prodotto

    quindi puoi usare il comando proposto nel commento precedente al tuo (modprobe usbserial vendor=bla bla bla) con il modulo ehci presente e vedere se così funziona

  24. carcass detto,

    17 Ottobre, 2007 a 16:23

    ho fatto come dici: quando il modulo non è caricato dmesg da questo output

    usb-storage: device scan complete
    scsi 5:0:0:0: Direct-Access USB 2.0 Flash Disk 0.00 PQ: 0 ANSI: 2
    sd 5:0:0:0: [sda] 1024000 512-byte hardware sectors (524 MB)
    sd 5:0:0:0: [sda] Write Protect is off
    sd 5:0:0:0: [sda] Mode Sense: 00 00 00 00
    sd 5:0:0:0: [sda] Assuming drive cache: write through
    sd 5:0:0:0: [sda] 1024000 512-byte hardware sectors (524 MB)
    sd 5:0:0:0: [sda] Write Protect is off
    sd 5:0:0:0: [sda] Mode Sense: 00 00 00 00
    sd 5:0:0:0: [sda] Assuming drive cache: write through
    sda: sda1
    sd 5:0:0:0: [sda] Attached SCSI removable disk
    sd 5:0:0:0: Attached scsi generic sg2 type 0

    quando il modulo NON è caricato nel kernel (ovvero la pendrive è 1.1) il risultato è sempre lo stesso :(

    debian:/home/carcass# modprobe usbserial vendor=0×0457 product=0×0150
    debian:/home/carcass# lsusb
    Bus 003 Device 002: ID 03f0:8904 Hewlett-Packard
    Bus 003 Device 001: ID 0000:0000
    Bus 002 Device 001: ID 0000:0000
    Bus 001 Device 009: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
    Bus 001 Device 001: ID 0000:0000
    debian:/home/carcass#

    ovviamente vendor e product li ho presi quando è 1.1, e poi ricaricandolo nel kernel ho dato i comandi sopra postati :muro:

  25. mastro detto,

    17 Ottobre, 2007 a 16:43

    @carcass
    non mi è molto chiara la prima parte:
    quel messaggio di dmesg lo ottieni sia con che senza modulo?
    se è così viene rilevata correttamente sia in un caso che nell’altro (sicuro che non fosse già lì dal montaggio riuscito??)

    hai provato a montarla manualmente?

    mount /dev/sda1 /media/prova
    (ovvio che la cartella prova dev’essere già stata creata)

    se dai ls -l /dev/sda
    con chiavetta inserita ? (ovviamente con modulo presente)

  26. carcass detto,

    17 Ottobre, 2007 a 18:31

    l’output di dmesg lo ottengo SENZA modulo nel kernel, dunque le USB sono 1.1

    ricaricando il modulo l’output da consol è il secondo che vedi

    Il sistema non le vede proprio non posso essere montate.

    debian:/home/carcass# ls -l /dev/sda
    ls: /dev/sda: No such file or directory
    debian:/home/carcass# ls -l /dev/sda1
    ls: /dev/sda1: No such file or directory
    debian:/home/carcass#

    Grazie di Tutto ;)

  27. mastro detto,

    17 Ottobre, 2007 a 19:43

    @carcass
    ah ho adesso ho capito cosa intendevi
    dmesg non è cambiato.. quindi non è successo nulla :)

    e come dimostra il comando ls non viene neppure creato il dispositivo

    è una brutta gatta da pelare…

    per capirci qualcosa mi servirebbe che tu postassi su diversi pastebin un po’ di roba

    1) avvia il computer
    2) inserisci la chiavetta incriminata (aspetta un attimo e constata che non capita nulla come sempre)
    3) rimuovi la chiavetta
    4) modprobe -r ehci…
    5) metti la chiavetta
    6) (senza toglierla/smontarla) ricarica il modulo modprobe ehci
    7) smonta la chiavetta (se già non è successo qualcosa) toglila e rimettila 8) produci questi file e usa per ognuno pastebin
    da root:

    lspci -vvv > lspci.log
    cat /var/log/messages > messages.log

    da utente standard (o da root, come preferisci)
    lsmod > lsmod.log
    dmesg > dmesg.log

    tutti questi file possono esserti utili se decidi di chiedere in #debian-it come ti ho consigliato prima
    non escludo che si tratti di
    1) hardware “strano”
    2) hardware in via di rottura

    sai se ti è sempre successo?
    va con windows? (se è hardware in via di rottura anche windows monterà a 1.1)
    ti capita con tutte le periferiche usb2 o solo con quella?

    faccio del mio meglio per aiutarti ma mi sembra un problema tosto non so se risolveremo facilmente…

  28. carcass detto,

    17 Ottobre, 2007 a 23:47

    :) grazie

    1) ho postato sul canale di debian ma non c’era nessun “guru” che mi potesse aiutare in quel momento (e anche dopo visto che tutt’ora sono sul canale irc)

    2) su windows sembra andare tutto ok a palla

    3) non te l’ho detto perche dimenticato, ma ho usato l’ultima knoppix 5.1.1 (2.6.19) e la penna non solo viene montata normalmente su TUTTE le 4 porte frontali del mio stacker ma ho passato dei file creando una cartella di circa 500mb e non solo la penna veniva montata ma il transfer rate era di 8.2mb al sec (ovvero 2.0) con ben due penne provate…………

    a sto punto faro quello che mi hai detto ma il punto 3 mi fa non sperare tantissimo……

    comunque, grazie ;)

  29. carcass detto,

    18 Ottobre, 2007 a 0:57

    lspci -vvv > lspci.log

    http://rafb.net/p/srImKS15.html

    cat /var/log/messages > messages.log

    http://rafb.net/p/xFqzp962.html

    lsmod > lsmod.log

    http://rafb.net/p/g2S5c615.html

    dmesg > dmesg.log

    http://rafb.net/p/23VFqb56.html

    Inoltre ti posso postare che credo sia utile lsmod con la penna montata regolarmente e funzionante a 2.0 con knoppix per le differenze nella parte che credo sia piu importante

    http://rafb.net/p/ZMjqm712.html

    e quello lsmod su debian con la chiavetta a 1.1 (e dunque la vede)

    http://rafb.net/p/rePIPP90.html

    e quando è a 2.0 e dunque NON la vede

    http://rafb.net/p/HncwBL91.html

    spero tu ne possa ricavare qualcosa di utile ma gia ad occhi confrontando lsmod su knoppix e su debian molti moduli differiscono, quelli su knoppix sono molto piu completi riferiti all’ehci etc……

    Per adesso buona notte ;)

  30. carcass detto,

    18 Ottobre, 2007 a 1:03

    non mi fa postare con i link inseriti di nopaste perche???

    comunque tutto quello che mi hai chiesto (con link relativi) lo ho salvato sul un .txt dammi una mail che te lo mando li.

    grazie ;)

  31. mastro detto,

    18 Ottobre, 2007 a 1:32

    @carcass
    perché se un commento ha troppi link viene messo tra lo spam
    recuperato ora

    come promesso… ho guardato

    l’unico interessante è l’output di dmesg

    dove vedo una serie di questi errori

    scsi 4:0:0:0: rejecting I/O to dead device
    FAT: Directory bread(block 512) failed

    che suppongo corrispondano al primo tentativo di inserimento della chiavetta

    quindi

    ACPI: PCI Interrupt 0000:00:02.2[C] -> Link [APCL] -> GSI 20 (level, high) -> IRQ 18

    non so decifrare bene che tipo di significato abbia questo.. ma so che è un segnale inviato all’IRQ 18, che corrisponde all’IRQ di gestione del tuo controller USB EHCI

    immagino che quando scarichi il modulo venga in qualche modo “spento” lasciando solo i controller OHCI (per periferiche a bassa velocità)

    subito dopo
    PCI: Setting latency timer of device 0000:00:02.2 to 64

    cambia un altro settaggio sempre sul controller USB EHCI (00.02.2)

    che il controller EHCI ha quell’indirizzo ed è associato all’IRQ 18 lo vedi da lspci -vvv

    ora…
    segue un po’ di altra roba

    quindi vedo di nuovo qualcosa di “interessante”

    usb 3-4: reset high speed USB device using ehci_hcd and address 4
    usb 3-4: device descriptor read/64, error -71
    usb 3-4: device descriptor read/64, error -71

    questo è un errore abbastanza tipico
    che nella mia esperienza rispecchia un errore “hardware” o della chiavetta o del controller
    nel mio pc capita occasionalmente perché ho un bug nel bios che talvolta non inizializza correttamente il controller usb

    ad ogni modo manca qualche messaggio in dmesg che mi sarei aspettato… e questo mi ha fatto venire in mente una cosa importante (sto per modificare la guida)

    da root dai questo comando: dmesg -n7 (guarda la guida per capire che significa)
    quindi ripeti la mia procedura

    mi servirebbe che tu indicassi in mezzo al testo di dmesg le tue varie operazioni

    queste son quelle che mi servono:

    *finito avvio*
    *inserisco la chiavetta* (e subito dopo la inserisci)
    *scarico il modulo* (e subito dopo lo scarichi)
    *tolgo la chiavetta*
    *rimetto la chiavetta*

    ecc…
    insomma in modo da far capire cosa avviene quando effettui le varie operazioni

    per farlo basta che lanci dmesg prima di ogni operazione e guardi dov’è arrivato

    poi dovrai aggiungere nel file di testo :D hehehe ti sto facendo faticare?
    cmq son sempre più convinto si tratti di un problema hardware o di qualche “stranezza” del tuo controller usb ancora sconosciuta agli sviluppatori

  32. carcass detto,

    19 Ottobre, 2007 a 0:16

    grazie :)

    domani ci smanetto un po che stasera ho un mal di testa allucinante e riporto ;)

  33. carcass detto,

    19 Ottobre, 2007 a 8:55

    avvio sistema

    http://rafb.net/p/FmXHIF62.html

    inserimento penna normalmente

    http://rafb.net/p/255U8E19.html

    eliminazione modulo ehci 2.0

    http://rafb.net/p/F8lMcG85.html

    (appena il modulo viene eliminato la lucetta della penna si accende)

    reload del modulo per USB 2.0

    http://rafb.net/p/ZconY292.html

    spero ti sia utile ;)

  34. mastro detto,

    19 Ottobre, 2007 a 14:08

    @carcass
    ok adesso si che ci siamo :)
    nel senso che vedo tutte le informazioni che mi aspettavo di vedere

    però non ho buone notizie
    quell’errore
    device descriptor read/64, error -71

    accade perché c’è troppo rumore nel segnale

    quindi i casi sono 2
    1) cavi interni della porta usb di scarsissima qualità -> molto rumore
    2) usb controller che funziona in modo non standard

    visto che su windows ti funziona escluderei la prima

    a 1.1 è più lento e il rumore disturba quindi meno il segnale

    per prima cosa prova l’ultimo kernel uscito.. potrebbero aver già risolto il bug!

    quindi se anche con l’ultimo kernel hai lo stesso problema fai un bug report
    io non ho mai fatto nessun bug report del kernel e non so esattamente cosa ti richiederanno

    se troverai un altra soluzione mi farà piacere conoscerla

    ps: per chi legge i commenti: questo non è un forum o un supporto tecnico. Considero questo un “utile” esempio di come fare debugging di un problema…

  35. Carcass detto,

    20 Ottobre, 2007 a 12:09

    non so perche quando ho il firewall attivato (arno-firewall - ootimo a dire la verità - o altro non mi fa il dmesg in maniera ottimale, ho dovuto momentaneamente disabilitarlo ma questo non è un problema anzi se srve a ricavare le info meglio :) )

    veniamo a noi: visto che il campo si è ristretto al punto 2 ti dico che questo problema fino al kernel .15 o .16 non lo avevo ma dal .18 in poi SI.

    adesso su ho il .22 da sid e lo fa uguale, ma ho ricompilato il .23 abilitando tutte le feature sotto la voce ehci ma ancora non lo ho installato per mancanza di tempo.

    Io credo che non cambi la situazione perche il .22 è cmunque molto aggiornato e la distro è tenuta (per quanto sia le mie conoscenze che non sono da guru ma neanche proprio da niubbio) molto decentemente.

    adesso vediamo come si fa per questo debugging e tra qualche giorno ti faccio sapere senza problemi.

    garzie di tutto sei stato preziosissimo ;)

    PS: i cavi non credo perche 1 fungono su windows e 2 prima fungevano e siono della abit-nf7 duqnue non proprio un hardware di scarsa qualita :)

  36. mastro detto,

    20 Ottobre, 2007 a 12:58

    @carcass
    si anche io ti avevo detto che difficilmente erano problemi di qualità dei cavi e simili…

    se il problema si è fatto vedere dal kernel .18 allora è quasi sicuramente qualche modifica del kernel

    dai un occhiata qui:
    http://kernelnewbies.org/Linux26Changes

    guarda i cambiamenti nel .17 e nel .18 se c’è qualcosa che possa averti interessato… e a questo punto se l’ultimo kernel non dovesse funzionare direi che un bug report ci sta tutto (specifica che funzionava dal .16 e non hai provato il .17 ma dal .18 non funzionava più
    faciliterai il debugging per gli sviluppatori e capiranno più in fretta il problema

  37. Carcass detto,

    20 Ottobre, 2007 a 13:52

    ;)

    la prova del nove a confutazione delle nostre ipotesi (più tue che mie a dire invero :D ) sono il fatto che con una live di knoppix col 2.6.19 fungono alla grande come qualche post dietro specificato con un transfer rate da quasi 9mb al secondo..

    ok ti faccio sapere ;) stay tuned :)

  38. carcass detto,

    24 Ottobre, 2007 a 9:44

    @Mastro :D

    ho compilato il kernel .23 con queste features

    EHCI HCD (USB 2.0) support
    [*] Full speed ISO transactions (EXPERIMENTAL)
    [*] Root Hub Transaction Translators (EXPERIMENTAL)
    [*] Improved Transaction Translator scheduling (EXPERIMENTAL)

    ho abilitato la terza (ma non sono sicuro che sia per quello, ma di sicuro male non fa :) ) e le USB sono tornate piu veloci di prima.

    con una Verbatim sono arrivato a toccare sul transfer di un divx (prova) quasi 15MB.

    Grazie ancora di tutto ho imparato molto dai tuoi consigli su come capire esattamente dove sta un problema, spero sia utile ad altri.

    Peccato per un eventuale debugging del kernel ma quello è difficilotto da fare a quanto ho letto, meglio che siano tornate a fungere. ;)

    PS: per aggiungerti al people del debianclan che nome devo mettere accanto al tuo feed ????

  39. mastro detto,

    24 Ottobre, 2007 a 17:08

    @Carcass
    puoi usare: “L’importante è avere un titolo - natonebronx”
    o se hai poco spazio solo “Natonebronx” :) poi vedi tu.. non sono fiscale!

    ah.. però avevo ragione a dire che era un problema di kernel :D
    solo che non era un bug.. ma la mancanza di un/più modulo/i :P
    felice di essere stato d’aiuto.. ma alla fine hai risolto da solo…

    avevi compilato un kernel a mano o il problema era con quello incluso nella distribuzione?

  40. carcass detto,

    25 Ottobre, 2007 a 10:19

    http://www.debianclan.org/index.php?option=com_wrapper&Itemid=64

    puoi vedere il risultato qui ;)

    i kernel con problemi erano tutti da apt……….. adesso va molto meglio il pc dato che di default ad esempio il kernel supporta fino a 1gb di ram, devi abilitare il supporto superiore………….insomma ogni tanto compilare fa bene :D

    ciao.

    PS: sono sempre nei paraggi visto che il tuo è un bel blog davvero - NON banale ;)

  41. mastro detto,

    25 Ottobre, 2007 a 13:02

    @Carcass
    beh grazie :)
    alla prossima

  42. Dago detto,

    28 Novembre, 2007 a 10:56

    salve avrei un problema con la distribuzione linux UseiT della prologue purtroppo ci devo lavorare per forza con sta distribuzione solo che a quanto pare nn ho ancora trovato nessuno che mi sappia aiutare praticamente il sistema nn vede assolutamente la chiavetta usb, premetto che 1 i sorgenti sono bloccati nel senso che nn essendo UseiT una versione open source nn posso entrare a modificare il kernel e 2 devo ancora provare alcuni degli utilissimi consigli di questa guida per verificare se effettivamente il sistema nn rileva nemmeno la presenza del collegamento con una periferica oppure la rileva ma ha altri tipi di problemi grazie in anticipo!

  43. mastro detto,

    28 Novembre, 2007 a 14:03

    @Dago
    non ho mai sentito quella distribuzione, ma se è una distribuzione Linux DEVI avere accesso al kernel per poterlo modificare a tuo piacimento
    questo è sancito dalla GPL. il kernel è per forza GPL

    riguardo la chiave usb, prova i comandi
    dmesg

    prima e dopo aver inserito la chiavetta

    prova a montarla a mano con il comando
    mkdir /tmp/prova
    mount /dev/sda1 /tmp/prova

    quest’ultimo comando da root
    ciao

  44. Federico detto,

    15 Maggio, 2008 a 18:37

    Io ho un problema con le porte usb… Ho dato il comando dmesg e l’output è lo stesso tuo, solo che staccando e riattaccando la pennetta non cambia niente. Che devo fare?

  45. Federico detto,

    15 Maggio, 2008 a 19:01

    Scusa se nn l’ho scrito prima, l’errore che mi da è USB 5-1 DEVICE DESCRIPTOR READ/64, ERROR -110

  46. mastro detto,

    16 Maggio, 2008 a 1:32

    @Federico
    quell’errore, secondo la mia esperienza, può voler dire diverse cose:

    -) chiavetta rotta
    -) host usb non funzionante (per qualunque ragione: hardware non standard, stupido, di scarsa qualità ecc… ;)
    -) cavo interno (usb) farlocco
    -) sfiga (in genere in questo caso attaccare e staccare la chiavetta risolve il problema)

  47. Federico detto,

    16 Maggio, 2008 a 15:10

    Ciao!
    Inanzitutto grazie per la risposta…
    La prima non è possibile perchè ho provato con varie pennette che funzionano su altri pc, il secondo e il terzo potrebbero essere e del qarto ne duito. Cosa potrei fare per risolvere nel 2° e 3°caso?
    Grazie!!

  48. mastro detto,

    16 Maggio, 2008 a 15:42

    @Federico
    non molto: cambiare host usb/cavi usb interni (se ci sono)
    se sullo stesso sistema la stessa chiavetta funziona in altri sistemi operativi il tutto è da imputarsi al driver..
    o per meglio dire: al tuo hardware non standard…
    hai cercato su google?

  49. Federico detto,

    16 Maggio, 2008 a 16:09

    Ho cercato l’errore, ma oltre a questo (con il quale non ho trovato niente di utile) non saprei che cercare… Grazie ancora!!

  50. mastro detto,

    17 Maggio, 2008 a 2:38

    @Federico
    ti posso dir questo (ho cercato) l’errore 110 significa: timeout
    ovvero è passato troppo tempo (secondo le specifiche usb 2.0) e la periferica non ha risposto

    questo può essere dovuto a:
    *) hardware fallato (chiavetta/controller usb/cavo)
    *) controller usb delle balle / di scarsa qualità: ad esempio può essere che se gli attacchi troppe cose non regga il carico e vada in timeout, oppure altri motivi
    *) chiavetta idiota/fatta male che non risponde nei tempi richiesti e a cui hanno fatto un qualche work around per windows
    *) cavo ad minchiam

    per esempio la mia chiavetta è farlocca e proprio per questa ragione a volte va in timeout.. però io staccando e riattancando risolvo

    talvolta in questi casi utilizzando usb 1 (molto + lento) funziona.. ma non è una vera soluzione
    per far ciò si può disabilitare l’usb2 scaricando il modulo che si occupa di gestirlo dal kernel:

    sudo modprobe -r ehci-hcd # nota questo disabilita l’usb2 fino al prossimo riavvio

    hai altre periferiche usb collegate? :)
    in bocca al lupo spero di averti dato materiale per indagare

  51. Federico detto,

    21 Maggio, 2008 a 16:21

    Allora… Io mi connetto con la pennetta usb, quindi non posso scaricare pacchetti.
    Ho collegato anche la stampante e questa me la riconosce e sono riuscito a stampare. il problema è che fino ad un certo punto funzionava, poi ha deciso che non deve più funzionare (nn so in base a quale principio… ;) Comunque grazie per l’aiuto!!

  52. Federico detto,

    21 Maggio, 2008 a 18:34

    Ho provato il comando sudo modprobe -r ehci-hcd ma non è cambiato niente…
    Non so più che fare…

  53. mastro detto,

    21 Maggio, 2008 a 18:56

    @Federico
    in mancanza di altre informazioni posso solo concludere che hai un hardware molto sfigato

    e farti qualche domanda:

    altre chiavette/periferiche USB funzionano?
    la stessa chiavetta ti ha mai dato problemi su altri sistemi?
    la stessa chiavetta funziona sul pc di qualche amico con Linux?
    usando una distribuzione Live (da live CD) la chiavetta viene montata?
    hai provato solo su ubuntu? :)

  54. Federico detto,

    21 Maggio, 2008 a 19:53

    Allora, ho fatto un po’ di prove ed ho scoperto che se inserisco solamente una pennetta alla volta, questa viene letta. Ora sto provando ad installare i driver della pennetta wifi con ndiswrapper per vedere se funziona.

  55. mastro detto,

    21 Maggio, 2008 a 20:15

    @Federico
    ti confermo: hardware scadente
    in questo caso si tratta dell’host usb
    su windows funziona perché hanno modificato il driver per aspettare più a lungo, probabilmente… uscendo dalle specifiche dell’USB 2.0

  56. naerd detto,

    21 Maggio, 2008 a 20:21

    ciao,lai provata ad attaccare direttamente dietro al pc,alle porte usb dietro??!!

  57. naerd detto,

    21 Maggio, 2008 a 20:23

    fede ci sei?
    tanto provare nn costa nulla

  58. Federico detto,

    22 Maggio, 2008 a 20:08

    Si. scusa ma mi ero disconnesso. Ho provato e funziona, ma solo uno alla volta, se attacco 2 periferiche non me le legge più…

  59. naerd detto,

    23 Maggio, 2008 a 13:52

    x fede. potrebbe essere un problema di alimentazione,ke pc tieni??

  60. Federico detto,

    23 Maggio, 2008 a 18:01

    In che senso che pc tieni? Vuoi sapere la scheda madre?

  61. naerd detto,

    23 Maggio, 2008 a 19:53

    tutte le caratteristiche

  62. Federico detto,

    24 Maggio, 2008 a 14:53

    scheda madre:ASROCK 4COREDUAL-SATA2, processore Intel core 2 duo da 2.20 ghz, Scheda video :NVIDIA GE FORCE MX4000(un po’ vecchiotta…). se ti serve qualcos’altro dimmelo (Hard disk maxtor da 114 gb)

  63. naerd detto,

    25 Maggio, 2008 a 17:28

    alimentatote e quante porte usb emette dietro avanti e all’interno!?

  64. naerd detto,

    25 Maggio, 2008 a 17:33

    cmq tu prima dove la collocavi la pen? vicino le usb davanti o avevi un adattatore o una multipresa usb? cmq avvolte in entrambe i casi o un problema di alimentazione,certe volte sn 1.0 e nn 2.0 a me capito la stessa cosa,addirittura mi stavo cambiando la web cam,poi lo messa dietro ed e tutto ok.

  65. Federico detto,

    27 Maggio, 2008 a 15:59

    l’alimentatore è un colorsit da 450w, Ho 4 porte usb dietro e due davanti. La stampante e la pennetta wifi le attcco dietro, le memorie di massa davanti…

  66. naerd detto,

    28 Maggio, 2008 a 15:40

    il mio parere nn camba,ma inceramente nn credo di poterti gliutare piu di tanto,fammi sapere cm va a finire,ciao

Lascia un Commento