Doctor Linux
Short Description
Linux Magazine...
Description
DOTTOR LINUX
FAI RIPARTIRE IL COMPUTER ORA!
DOTTOR
LINUX
Il sistema non si avvia? Inserisci il DVD con Rescatux che trovi all’interno e riparalo con la semplice procedura passo passo!
più di 150 problemi risolti LE DISTRO DA PRONTO SOCCORSO
Scegli la versione di Linux giusta per rimettere in sesto il computer
BASTA CON I PC LENTI!
Ripulisci il sistema e fallo correre più veloce che mai
RIMETTI IN PIEDI IL PORTATILE
Fai funzionare il tuo vecchio laptop come se fosse nuovo STAMPA SENZA PROBLEMI
Metti fine a tutti i guai di stampa e scansione installando i driver giusti per il tuo sistema
RECUPERA I TUOI FILE
Hai perso dei documenti? Nessun problema: così ritrovi tutti i tuoi file in un attimo!
SOLO STRUMENTI
FREE metti IL TURBO A INTERNET
Torna a navigare subito con i nostri consigli sulla configurazione di rete
È in EDICOLA Preserva la tua VITA DIGITALE con LINUX
e i nostri consigli! Digital CONDOM per il TUO computer!
! e n io z te o r p a z n e s e r a Non navig Acquista la tua copia su www.sprea.it/linuxsecurity min_linux security_207x285_new.indd 1
07/02/17 11:33
RISOLVI TUTTI I GUAI DEL TUO PC FAI RIPA RTIRE IL COMPUT
DOTTOR ER ORA!
DOTTOR LINUX
Linux è un ecosistema la cui stabilità è proverbiale ma nonostante questo, i computer sono dispositivi estremamente complessi e qualche problema può capitare a tutti. Dottor Linux ha proprio lo scopo di semplificare la vita a chi ha scelto il mondo Open Source e vuole risolvere i problemi video, di stampa, di gestione dei dischi e molto altro ancora. Grazie al DVD allegato in copertina vi aiutiamo anche a rimettere in piedi un PC con Windows che non parte più, e una volta che funziona potete finalmente mollarlo in favore di Linux grazie alla nostra guida passo-passo!
LINUX
più di 150
probl
emi LE DISTRO PRONTO S DA O C CO R S O Scegli la ve rs
Il sistema no n Inserisci il DV si avvia? D Rescatux ch con e trovi all’interno e riparalo con la semplice procedura pa sso passo!
risolti
per rimette ione di Linux giusta re in sesto il computer
BASTA CO I P C LE N T N I!
Ripulisci il si correre più stema e fallo veloce che mai
RIMETTI IN IL PORTA PIEDI TILE
SOLO STRUMENTI
Fai funzion laptop com are il tuo vecchio e se fosse nuovo STAMPA SE NZA PROB LE MI
Metti fin e e scansio a tutti i guai di sta ne mpa i driver giu installando sti per il tuo siste ma COP_001_LXP
_M2_riparailp
c 1
RECUPERA
FREE I TUOI FI
LE
Hai perso de problema: i documenti? Ne ssun file in un così ritrovi tutti i attimo! tuoi
METTI IL
TURBO A
INTERNET
Torna a na con i nostr vigare subito i configurazconsigli sulla ione di re te
SOMMARIO
07/02/2017
02 Problemi con Linux? Risolti!
42 Condividere file e cartelle
16 Ripara con Rescatux
46 Tracciare le performance
20 Errori di rete: strumenti di base
50 Come riparare il bootloader
24 Problemi di rete: CLI
52 Test di funzionalità facili
28 Le distro per il primo soccorso
58 Costruirsi un Chromebook
34 Basta errori all’avvio di Ubuntu
60 Fuggire da Windows
38 Stampanti e scanner al top
70 150 risposte ai tuoi dubbi
11:56
PASSA A LINUX!
1 1
+ Dottor Linux
Problemi con linux?
Risolti! In questo articolo abbiamo raccolto gli ostacoli più comuni a cui potete trovarvi di fronte. Per ognuno vi forniamo la soluzione, in modo da mantenere il sistema sempre in forma
N
onostante si possa avere più o meno esperienza, prima o poi tutti ci troviamo di fronte a qualche genere di problema. Uno degli aspetti più positivi delle comunità Open Source è però la volontà di fornirvi assistenza per qualsiasi genere di inconveniente. Infatti, siti, blog, wiki e documentazione abbondano in qualsiasi circostanza. Senza dubbio questo genere di approccio è di enorme importanza sia per i principianti sia per gli utenti più esperti. Poter contare su un aiuto costante, infatti, non ha prezzo. Detto questo, prevenire è sempre meglio che curare e quindi abbiamo ben pensato di fornirvi una guida ai problemi più comuni con le relative soluzioni. Per facilitarvi le cose e permettervi di avere un sistema sempre fluido e funzionante, abbiamo raccolto e condensato tutto il
nostro bagaglio di esperienze in queste 14 pagine. Troverete quindi una guida pratica per risolvere la maggior parte dei problemi senza dovervi perdere in Internet per cercare le soluzioni. Infatti, se spesso diamo per scontato il funzionamento di
andare storto. Seguendo lo schema di avvio, abbiamo quindi deciso di partire dai principali problemi che possono verificarsi in fase di accensione, passando ai malfunzionamenti dovuti all’hardware di base, per arrivare poi ai componenti più specifici, come le periferiche di rete o relativi al desktop. Ci auguriamo che alla fine di questo articolo, qualcuna delle nostre perle di saggezza vi sia stata d’aiuto per risolvere il vostro problema, lasciandovi così la libertà di usare un sistema stabile e funzionale. Data la lunghezza dell’articolo, per facilitarvi nella consultazione, abbiamo deciso di aggiungere un sommario proprio in questa pagina. In questo modo potrete passare direttamente alla sezione che vi interessa. Il nostro consiglio è comunque di leggere tutto l’articolo, in modo da farvi un’idea generale di cosa può capitare utilizzando Linux quotidianamente. Detto questo, non vi resta che sfogliare l’articolo pensato per voi.
“Considerando la complessità di Linux, è meglio saper sistemare i principali errori” Linux, è sempre importante ricordare che gli elementi che caratterizzano il sistema hanno un processo di esecuzione piuttosto complesso. Pensiamo alle sole attività che ci passano sotto gli occhi dal momento in cui accendiamo il PC. Viene caricato il bootloader, si attiva il kernel, i file e i documenti vengono avviati dal filesystem, si attiva l’interfaccia grafica, viene lanciata la connessione a Internet e via dicendo. Considerando tutto questo, è facile capire come in questa concatenazione di cause ed effetti qualcosa alla fine possa anche
Sommario Problemi di avvio..............4 Sistema...............................8 Networking...................... 12 GRUB, bootloader, dual booting, Master Boot Record (MBR), Rescatux.
Drive, memoria, HOME, log, clonazione delle unità.
Rete lenta, streaming, accesso remoto.
Hardware............................6 Software........................... 10 Desktop............................ 14 Driver, stampanti e CUP, crash, SSD, cancellazione sicura.
2
Gestore software, codice sorgente, DVD, sistema rallentato, perdita delle password.
Nessun desktop visualizzato, problemi di login, dispositivi bloccati, perdita di file.
3
+ Dottor Linux
I primi passi Problemi di avvio? Ecco le principali soluzioni Avvio in stallo
D R
Il computer non si avvia. Ogni volta che compare la schermata iniziale si blocca tutto. La prima cosa da fare è essere pazienti. Il processo di avvio può tentare di inizializzare un dispositivo hardware o in alternativa accedere alla rete qualora sia disponibile. In questo caso, vi troverete di fronte a un timeout di alcuni minuti, dopo i quali il sistema ripartirà regolarmente. In caso di problemi, comunque, vi verrà riproposto un messaggio di errore su cui potrete cominciare a lavorare per identificare il problema. Purtroppo, sotto questo aspetto, era molto meglio quando l’avvio di Linux veniva mostrato in chiaro, con tanto di stringhe di testo che scorrevano sul monitor fino a quando il processo non era concluso. In questo modo, in caso di malfunzionamenti, si aveva subito sott’occhio il problema. Adesso, invece, va di moda nascondere tutto dietro a una semplice schermata grafica. È possibile comunque disattivare la schermata iniziale direttamente dal menu di avvio. Quando accendete il PC, tenete premuto il tasto ESC e se trovate una funzione che richiama al recupero di sistema o alla sicurezza in generale, selezionatela. Al suo interno troverete sicuramente la voce per disattivare la schermata iniziale. In alternativa, date un’occhiata alle opzioni di avvio e premete E per modificarle. Cercate una riga che comincia con linux e poi opzioni come quiet, splash o theme. Eliminate queste voci e premete F10 per continuare l’avvio. Questo, ovviamente, non risolve il problema (a meno che il malfunzionamento non sia imputabile proprio alla schermata di lancio), ma vi permetterà di vedere cosa sta succedendo e trovare degli spunti per iniziare a indagare sull’origine dell’inconveniente. Volendo andare oltre, potete prendere in considerazione l’idea di una periferica hardware che impedisce l’avvio del sistema. In questo caso disattivate tutti i dispositivi non necessari, come stampanti, scanner o HUB USB.
Errori di boot
D
Quando lancio il boot, vedo comparire tutt questa serie di errori che non capisco: Pci Express Device Error. Severity NN. Uncorrected non Fatal. Pci Bus Error
Type:N Transaction Layer. Flow Control Protocol N:First. Receiver 1 Questo problema si verifica su un PC con una scheda madre appena acquistata e che funziona bene con Windows. Il fatto che l’hardware lavori con Windows ma dia problemi con Linux è un evento che può succedere spesso. Trattandosi di scheda madre, il primo passo da compiere è controllare la presenza di un eventuale aggiornamento del BIOS. Anche se si tratta di un modello nuovo, il fatto che sia stata ferma su uno scaffale per diverso tempo o abbia fatto un lungo viaggio dall’Estremo Oriente per arrivare dal negoziante, può rendere il BIOS sorpassato rispetto a quelli rilasciati negli ultimi periodi. Aggiornare questo componente, infatti, può risolvere davvero parecchi problemi, soprattutto inerenti l’avvio del sistema. Se anche così non cambia niente, mettendo mano ad alcuni parametri, potete provare a modificare il modo in cui il kernel si rivolge all’hardware. Nel menu di Grub, selezionate l’opzione per l’avvio regolare e premete E. Modificate la riga che inizia con kernel aggiungendo alcune o tutte le funzioni da riga di comando che vi elenchiamo, ognuna separata da uno spazio: noapic oppure noapictimer, acpi=off oppure ancora acpi=force irqpoll pci=nommconf pci=nomsi Notate la differenza tra la seconda e la terza serie di istruzioni. Tutto quello che acpi e apic hanno in comune sono solo le lettere. Premete F10 per lanciare le opzioni che avete appena aggiunto, quindi, una volta trovata la giusta combinazione con cui il kernel interagisce con l’hardware, rendete permanente la modifica aggiungendo le opzioni GRUB_CMDLINE_LINUX_DEFAULT e GRUB_CMDLINE_LINUX in /etc/default/grub. Adesso salvate il file e aggiornate Grub con uno dei seguenti comandi. Quello da usare dipende dalla vostra distro (se il primo non funziona, provate il secondo e poi il terzo). sudo update-grub2 sudo grub2-mkconfig -o /boot/grub2/grub.cfg sudo grub2-mkconfig -o /boot/grub/grub.cfg
R
Linux danneggiato in seguito a una nuova installazione di Windows
D
Ho installato Linux sul mio PC Windows e, una volta acceso, ho avuto la possibilità di scegliere quale dei due sistemi utilizzare. Recentemente, però, ho dovuto reinstallare Windows, con il risultato che adesso Linux è scomparso. Non voglio reinstallarlo, perché in questo modo peerderei tutti i file e le impostazioni che avevo salvato. C’è un modo per ripristinare la mia prima installazione di Linux? Linux usa il bootloader Grub per consentirvi di scegliere le varie impostazioni di avvio. Windows, però, sfrutta il proprio bootloader. Dovete sapere che quando parliamo di bootloader ci riferiamo a una piccola parte di codice embedded posta all’inizio del disco rigido, la quale viene lanciata durante il processo di caricamento del sistema
R
Disattivate la schermata di avvio della vostra distro. In questo modo potrete vedere cosa sta succedendo e, in caso di bisogno, capire l’origine dei problemi
4 4
Linux pro 146
Problemi con Linux? Risolti Rimuovere una distro danneggiata
D
Ho cancellato le partizioni Linux del mio PC. Il fatto è che adesso non posso avviare il sistema operativo. Tutto quello che ottengo quando ci provo è un messaggio di Grub che non riesce a trovare i file. In più si apre un prompt rescue>. Non riesco nemmeno ad avviare Windows. Nonostante il codice di avvio per Grub sia memorizzato nel Master Boot Record (MBR) all’inizio del disco fisso, si tratta pur sempre di uno spazio molto piccolo. Infatti, il codice iniziale di Grub carica i file e le informazioni di configurazione dalla directory grub o grub2 presenti nella partizione di boot di Linux. Se avete rimosso questa partizione, Grub smette di funzionare. Se volete installare un’altra distro nello spazio vuoto, è sufficiente avviare l’Installer e lasciare che Grub si riconfiguri rilevando automaticamente la presenza di Windows. Se invece volete utilizzare lo spazio lasciato vuoto per la copia di Windows o per la distro già presente, allora dovrete installare Grub per un altro sistema Linux o reinstallare il bootloader di Windows. Il modo più semplice per ripristinarlo è utilizzare l’opzione di ripristino sul CD live di Rescatux. Per ripristinare il bootloader di Windows, invece, è necessario utilizzare questi comandi a seconda della versione posseduta. Per XP: fixboot fixmbr Per Vista, 7 o 8, invece: bootrec /fixboot bootrec /fixmbr bootrec /rebuildbcd Quando il computer non ne vuole sapere di avviarsi, un CD live è una manna dal cielo. Per questo è opportuno averne sempre uno a portata di mano. Infatti, si tratta di un ambiente Linux che anziché installarsi si avvia direttamente da CD. Oltre a essere molto utile per essere utilizzato su computer portatili come distro di passaggio, è ideale per ripristinare il corretto funzionamento di un sistema che non ne vuole sapere di avviarsi. Ci sono alcuni CD di soccorso dedicati, come System Rescue CD, Rescatux e Grml, ma la maggior parte delle distribuzioni consente comunque di lanciare una propria copia in ambiente Live. Di solito serve per provare il sistema e vedere se fa al caso vostro, ma niente vi impedisce di utilizzarlo come risorsa per risolvere i problemi che vi si pongono di fronte.
R
Per apportare modifiche permanenti al vostro menu di Grub, modificate /etc/default/grub e lanciate i comandi grub2-mkconfig o update-grub
operativo. Reinstallando Windows, si è provveduto a sovrascrivere Grub con il bootloader del sistema Microsoft. Tuttavia non c’è bisogno di preoccuparsi, perché l’unica cosa a essere andata persa è il codice di Grub. Linux, infatti, è ancora al suo posto, con tutto ciò che contiene. Quello che dovete fare è solo ripristinare Grub. Alcune distro installano delle partizioni che hanno il compito di riscrivere il bootloader nel caso vada perso. In alternativa c’è una soluzione più generica che possiamo mettere in pratica con Rescatux. Scaricate il programma da http://www.supergrubdisk. org/rescatux e selezionate l’opzione Restore Grub. A questo punto, il software cercherà tutte le partizioni Linux e vi chiederà di scegliere quale di queste contiene il filesystem root, per poi permettervi di installare Grub sul rispettivo disco fisso (di solito si tratta di /dev/sda). Dobbiamo precisare che la schermata può bloccarsi per un periodo di tempo piuttosto lungo, ma anziché farsi prendere dal panico e riavviare, non dovete far altro che avere pazienza fino a quando Grub non viene reinstallato. Una volta fatto, il menu di avvio si ristabilisce e potrete accedere di nuovo alla vostra copia di Linux.
Dual-booting con più di una distro
D
So che posso gestire un dual boot tra Linux e Windows, ma posso fare lo stesso con due distribuzioni Linux? Se sì, come faccio a condividere i miei dati tra di loro? Inoltre, come devo partizionare il mio disco fisso? Sì, certamente. Ogni distro ha bisogno di una propria partizione di root, ma è comunque possibile condividere lo stesso swap con ciascuna di esse . È però sempre consigliabile avere una partizione separata per /home (se non si vogliono legare i propri dati a un’unica distro, in futuro si può sempre decidere di dismetterne l’uso). Invece, sconsigliamo l’utilizzo della stessa directory home per ogni distribuzione. Evitiamo così eventuali incompatibilità tra il diverso software utilizzato. Noi preferiamo usare il nostro nome seguito da quello della distro, tipo “mario-ubuntu” o “mario-debian” e così via. Da tenere poi in considerazione che fino a quando ogni utente ha lo stesso UID, ognuno di loro avrà permessi di scrittura e accesso e quindi sarà possibile creare simlink per le directory più importanti come musica, foto e quant’altro. In questo modo potrete condividere tutti i file tra le varie distribuzioni, mantenendo comunque la configurazione dei documenti separata. Per quanto riguarda il menu di avvio, scegliete una distro come principale e l’altra come secondaria, in modo da gestire correttamente le dovute priorità, selezionando poi la prima perché venga lanciata in prima battuta. Ogni volta che si installa una nuova distribuzione, evitate di reinstallare un nuovo bootloader, in quanto quello precedente compirà a meraviglia il proprio lavoro senza bisogno di ulteriori elementi. Una volta riavviato il PC, usate quindi il comando: sudo grub-mkconfig -o /boot/grub/grub.cfg Infine aggiornate il menu di boot.
R
Il CD live di Rescatux dispone del comando Restore Grub, che evita di dover ricorrere ai comandi della Shell per ottenere lo stesso obiettivo
Linux pro 146
5 5
+ Dottor Linux
Problemi hardware Risolviamo i problemi con le periferiche recalcitranti Trovare i driver hardware
D R
Dopo posso trovare i driver per il mio hardware? Il disco della scheda madre incluso nella confezione include solo quelli per Windows. La maggior parte dell’hardware non ha bisogno di alcun driver per funzionare con Linux. Il kernel, infatti, mette a disposizione il supporto per una quantità impressionante di periferiche. Di solito, infatti, Linux riesce a riconoscere i dispositivi nel momento stesso in cui li collegate, caricando poi i driver appropriati senza bisogno di alcun intervento da parte vostra. Alcune periferiche, inoltre, non hanno driver separati, perché spesso usano solo codice proprietario che non può essere incluso con il kernel. In questo caso, un CD live come Knoppix o System Rescue CD spesso riconosce il dispositivo (questi particolari programmi, infatti, tendono a includere il supporto per moltissime periferiche). Se l’hardware è un dispositivo interno che di solito compare in uscita da Ispci, basta usare l’opzione -k per sapere quale driver usa. Una volta scoperta questa informazione, sarà sufficiente cercare il pacchetto che fornisce quello specifico driver. Per farlo, usate o il gestore pacchetti o cercate direttamente nel Web. Se si tratta di un pacchetto standard, come nel caso di molte
periferiche wireless, tutto quello di cui avete bisogno per far funzionare la periferica è contenuto nel pacchetto stesso. Il processo di installazione è simile a quello compiuto con i dispositivi USB, tranne per il fatto che si utilizza il comando lsusb e non c’è alcun equivalente per -k. Se invece il kernel non supporta l’hardware o non riuscite a trovare alcunché dal gestore pacchetti, allora dovrete ricorrere al sito del produttore. Se trovate un pacchetto DEB o RPM adatto al vostro sistema, la soluzione è a portata di mano. In caso contrario, assicuratevi di scegliere il driver giusto per l’architettura utilizzata e seguire attentamente le istruzioni di installazione.
Crash casuali
D R
Il mio computer è affetto da una marcata instabilità e le cause non sembrano essere imputabili a nessun software. Di solito, questo genere di problemi è riconducibile all’hardware. Infatti, un modulo RAM difettoso può essere uno dei principali imputati. Se poi consideriamo il modo in cui Linux si serve della memoria di sistema, è probabile che questi malfunzionamenti si verifichino più con il Pinguino che con Windows. Scaricate un’applicazione come Memtest86+ da www.memtest.org e lanciate il controllo della memoria all’avvio del PC. Se vengono rilevati errori, avete trovato il problema. Un altro elemento che può causare crash casuali è il surriscaldamento del sistema. Provate a eseguire un programma per monitorizzare le prestazioni, oppure scaricate un’applet per la barra delle applicazioni che vi consente di vedere la temperatura della CPU e dei dischi fissi. Assicuratevi che tutte le prese d’aria del case siano libere e, se avete un po’ di dimestichezza con il cacciavite, date anche un’occhiata alla pasta termoconduttiva posta tra il dissipatore e la CPU. Per i computer desktop ci potrebbe essere anche una terza causa: l’alimentatore scadente. Le unità più economiche, infatti, tendono spesso a degradare le proprie prestazioni con il tempo, finendo per danneggiare gli altri componenti installati nel PC. Per questo genere di problema, l’unico test percorribile è provare a montare un altro alimentatore.
Problemi di stampa
D R Le distro hanno i propri programmi di configurazione per la gestione della stampante. CUPS, però, oltre a funzionare altrettanto bene, è anche universale
La mia distribuzione non ne vuole sapere di far funzionare la stampante. Come faccio a installare i driver? Il modo in cui si installano i driver, così come la loro disponibilità, dipende dal modello della stampante che avete. Il primo passo è collegarsi al sito http://linuxprinting.org e controllare il database presente. Se avrete l’accortezza di eseguire questa operazione prima ancora di acquistare una stampante, potrete risparmiarvi notevoli perdite di tempo. Basta inserire la marca e il modello e il motore di
Perché usare il terminale? Gran parte dei consigli che vi forniamo è sotto forma di comandi del terminale e il motivo per cui abbiamo scelto questa via è molto semplice. Infatti, molte distribuzioni hanno i propri comandi di configurazione che tuttavia variano da sistema a sistema. I comandi da terminale, invece,
6 6
Linux pro 146
rimangono inalterati e possono essere utilizzati in tutte le distro. Inoltre, un altro dei punti di forza nell’uso del terminale è che i comandi consigliati funzionano perfino se il desktop non si avvia. Alcune istruzioni devono essere eseguite come root e per farlo è sufficiente anteporre sudo
al comando. In questo articolo utilizzeremo principalmente sudo, che peraltro rappresenta l’unica opzione in molte distribuzioni attualmente in circolazione. Se invece avete pieno accesso come root tramite su, basta eseguire il comando senza sudo.
Problemi con Linux? Risolti ricerca interno al sito vi saprà dire se esiste il supporto e di quali driver c’è bisogno. CUPS, il sistema di stampa utilizzato da Linux, è dotato di parecchi driver; molto spesso, quindi, non dovrete installare alcunché, perché il riconoscimento della stampante avviene in automatico. Tuttavia ci sono ulteriori driver nel pacchetto Gutenprint (Linuxprinting. org vi dirà se ne avete bisogno). HP, per esempio, fornisce driver Open Source per le sue stampanti, pertanto, se avete un modello di questo produttore, basterà installare il pacchetto hplip. Altre aziende, invece, forniscono pacchetti binari Closed Source. Controllate se la vostra distro permette di scaricarli, altrimenti, come ultima risorsa, dovrete integrarli nel sistema seguendo le istruzioni presenti sul sito Web del produttore della stampante. Una volta che avete installato i driver corretti, è possibile impostare il dispositivo utilizzando lo strumento di amministrazione dedicato, oppure far uso dell’interfaccia Web di CUPS. Per utilizzarla, basta puntare il browser all’indirizzo http://localhost:631 e fare click sul menu Amministrazione, poi su Aggiungi stampante e seguire le istruzioni.
Opzioni per gli SSD
D
Vorrei sostituire il mio disco fisso con un SSD. Come faccio a impostare il tutto? Inoltre, c’è qualcosa a cui devo stare particolarmente attento? Sto pensando ai problemi causati scrivendo troppo spesso su una memoria flash. Che dire poi del TRIM? Per installare un disco SSD non c’è poi tanto da fare. I tipici strumenti di partizionamento vanno benissimo sia per unità allo stato solido sia per quelle meccaniche. Nonostante gli SSD siano molto più veloci di un modello tradizionale, vi consigliamo di aggiungere noatime per le opzioni di mount in /etc/fstab. A questo punto, ci sono poi un paio di opzioni per i vostri dati che vale la pena prendere in considerazione. Potete eseguire il backup della directory home e fare una nuova installazione su SSD, oppure niente vieta di copiarvi tutto al suo interno. Per farlo, vi consigliamo di eseguire il boot da un CD live. Montate ogni partizione a parte gli swap in entrambe le unità, quindi utilizzate rsync per copiare ogni cosa su tutte le partizioni: rsync -a /mnt/vecchia_partitione/ /mnt/nuova_partitione/ Avrete anche bisogno di reinstallare Grub come bootloader, utilizzando per esempio un programma come Rescatux solo con le nuove unità. TRIM, invece, è un comando che permette di fare pulizia nelle aree non più utilizzate dallo stoccaggio dati. Potete abilitarlo in due modi. Il metodo più semplice è aggiungere relatime e scartare le opzioni di mount in /etc/fstab. L’unico inconveniente, tuttavia, è che questo può rallentare l’unità durante le fasi di avvio del computer. Per questo molti preferiscono eseguire fstrim quando il computer è già avviato. Un task Cron che può eseguire fstrim --all una volta alla settimana dovrebbe essere sufficiente per qualsiasi
R
Usando GParted si può partizionare qualsiasi disco fisso, tanto SSD quanto quelli di tipo meccanico
evenienza. L’opzione --all abilita il TRIM per ogni filesystem che lo supporta, ignorando invece gli altri. Aggiungete poi l’opzione --verbose così che Cron invii una sintesi di ciò che ha fatto.
Eliminare i file definitivamente
D
Prima di smaltirlo, vorrei fare in modo che il mio disco rigido venga completamente cancellato. So che eliminare i soli file non è sufficiente, ma cosa dovrei fare per distruggere completamente ogni traccia dei miei dati? Dipende da cosa si intende per smaltimento dell’unità. Se la state gettando via, un grosso martello è perfetto per scongiurare qualsiasi recupero dei dati. Tuttavia esistono metodi ben più sofisticati per cancellare qualsiasi traccia d’uso di un disco fisso, molti dei quali lasciano l’unità in perfetto stato per poter poi essere riutilizzata. Come detto, cancellare semplicemente i dati non è sufficiente per evitare
Se volete cancellare in modo definitivo il contenuto di un disco fisso, allora Darik’s Boot and Nuke è la soluzione migliore
R
“I dischi SSD sono molto più veloci dei modelli tradizionali e per installarli non c’è molto da fare” che vengano recuperati. Infatti, in questo modo non si fa altro che rimuovere le loro voci dalla tabella della directory, mentre i file continuano a rimanere al loro posto. È quindi necessario sovrascrivere tutto svariate volte per essere davvero sicuri che qualsiasi cosa non sia più rintracciabile. Per compiere questa operazione con una sequenza di zeri, è sufficiente utilizzare: sudo dd if=/dev/zero of=/dev/sdb bs=4k Questa istruzione, ovviamente, non può essere utilizzata sull’unità di sistema. Se quindi è proprio questa che si vuole cancellare, dovrete lanciare il comando da un CD live. Se può darvi maggiore tranquillità, per sostituire gli zeri con alcuni dati casuali, basta usare /dev/ urandom al posto di /dev/zero. Siate poi consapevoli che il comando dd non chiede se siete sicuri di cosa state facendo e quindi non attua alcun doppio controllo prima dell’attivazione della procedura. Una volta che premete Invio, i dati sul disco vengono eliminati del tutto. Pertanto, quando lo usate, fate sempre massima attenzione. Se anche con i metodi che abbiamo elencato non riuscite a stare tranquilli, allora è bene prendere in considerazione la possibilità di eseguire sovrascritture multiple. In questo caso si può ricorrere a uno specifico programma chiamato Darik’s Boot and Nuke (DBAN) che potete trovare alla pagina http://www.dban.org. Si tratta di uno dei software più efficaci in circolazione per questo genere di attività e può essere paragonato a una martellata ben assestata. In pratica, è ideale anche per le persone più paranoiche. Linux pro 146
7 7
+ Dottor Linux
Problemi di sistema Risolviamo le più comuni difficoltà Drive pieni
D R
Lo spazio a disposizione del mio disco rigido sembra scomparire. Dov’è finito e come posso recuperarlo? Se si hanno più partizioni, il primo passo è capire come sono organizzate tramite il comando df: df -h Questo mostra lo spazio totale utilizzato e disponibile su ciascuna. Se avete una /home separata, è opportuno capire se è proprio questa a occupare la maggior parte della memoria. Le misure da adottare, in questo caso, sono sempre le stesse, anche se è necessario essere root per ripulirla a dovere. Per i file di sistema, le directory incriminate solitamente sono /tmp e /var. La prima è utilizzata per i file temporanei e spesso si satura di documenti vecchi e inutili soprattutto quando i processi lavorano senza poi far pulizia. /var/log, invece,
contiene i file log di sistema e si può riempire a dismisura quando un processo sta registrando parecchi errori. Date un’occhiata ai file di grandi dimensioni contenuti in queste cartelle e considerate se vale la pena eliminarli. Valutate anche la possibilità di installare logrotate che ha il compito di tenere i file di log sotto controllo. Per impostazione predefinita, questo programma avvia un nuovo file di registro settimanale e ogni sette giorni provvede a comprimere l’ultimo, mantenendo poi i log degli ultimi 28 giorni. Questo modo di procedere permette così di risparmiare una quantità di spazio impressionante. Nella vostra directory home, controllate la cartella download, il browser, la cache del mailer e anche la cartella .cache. Potete poi utilizzare du per appurare le dimensioni delle directory: du -sh * | sort -h in questo modo avrete un elenco preciso di tutti i file ordinati per grandezza. Se invece volete valutare le cartelle nascoste, usate: du -sh .[0-9a-z]* | sort -h Ci sono poi strumenti grafici per visualizzare l’utilizzo del disco (Filelight per KDE e Disk Usage Analyser per Gnome). BleachBit, invece, è utile per identificare i file non necessari come quelli presenti nella cache del browser.
Che fine ha fatto la memoria?
D R
Filelight, come Gnome Disk Usage Analyser, può darvi una rappresentazione grafica di come siete riusciti a riempire il disco fisso
Ho notato che dopo l’esecuzione di Linux per un po’ la memoria viene saturata. Come posso capire quale processo la sta usando in modo così massiccio? È perfettamente normale ed è il modo in cui Linux è progettato per funzionare. La memoria libera corrisponde a una porzione di RAM inutilizzata che entra in azione quando è necessario incrementare le prestazioni del PC. Infatti, il kernel di Linux alloca la memoria di cui i processi non si servono in modo da migliorare le attività. Potete vederlo in modo chiaro con il comando free -h. total used free shared buffers cached Mem: 15G 15G 128M 982M 396K 13G -/+ buffers/cache: 2.3G 13G In un computer dotato di 16 GB di memoria fisica, solo 128 MB vengono segnalati come liberi. Al di fuori di questa, 13 GB sono utilizzati come buffer. In questo modo, l’accesso al disco è notevolmente migliorato, in quanto i dati vengono messi nella cache in attesa del prossimo utilizzo in scrittura e lettura. Se poi la memoria è necessaria per qualcosa di più importante, verrà subito messa a disposizione. È importante ricordare che non è solo il filesystem
In cerca di guai Linux registra quasi tutto e, quando qualcosa va storto, i registri sono il primo posto dove guardare. Il registro di sistema è in /var/log e di solito lo trovate con il nome di messages o syslog secondo lo strumento utilizzato dalla distro. Se il programma foo si comporta male, provate a cercare messaggi con: grep foo /var/log/messages Inoltre, potete guardare i messaggi di log immediatamente in tempo reale con: tail -f /var/log/messages
8 8
Linux pro 146
Questo comando consente di visualizzare nel registro le nuove voci appena compaiono. Eseguendo l’istruzione in un terminale, potrete così avere subito sott’occhio qualsiasi cosa accada, compreso capire al volo l’origine dei problemi. Il buffer del kernel può essere letto con il comando dmesg, utile se si hanno difficoltà con l’hardware. Possiede perfino l’opzione follow: dmesg --follow utile quando si tratta di hardware connesso a caldo.
Per vedere come vengono rilevate le periferiche integrate e gestite in fase di avvio, invece, usate: dmesg | less dopo il boot. Premete poi / per cercare qualche informazione rilevante. Se la distro utilizza systemd, le voci di registro possono essere visualizzate con journalctl. Potete quindi procedere con journalctl --follow o cercare gli errori dall’ultimo avvio con: journalctl -b -p err
Problemi con Linux? Risolti ID illeggibili
D
Trovo l’uso di UUID in /etc/fstab fastidioso. Cosa c’è che non va nel vecchio sistema che prevedeva l’utilizzo dei device nodes come /dev/sda1? Posso tornare a usare quest’ultimo metodo? Il problema con i device nodes è che possono cambiare. Se si aggiunge o si rimuove un disco, comprese le unità flash USB, oppure si modifica l’ordine di avvio dal BIOS, sda può diventare sdb. UUID, dall’altra parte, sono (abbastanza) esclusivi; non importa se cambia l’ordine delle unità, quella stringa rimane sempre la stessa. Questo, però, è anche il problema: UUID vanno bene per i computer perché forniscono un’identificazione semplice e affidabile, ma non sono facilmente comprensibili da noi esseri umani. Un compromesso potrebbe essere etichettare il filesystem. Se la partizione di root è su /dev/sda1, è possibile eseguire: sudo e2label /dev/sda1 root A questo punto modificate le specifiche del dispositivo in /etc/fstab da “UUID=youllneverreadorrememberthis” a “LABEL=root”. A differenza di molte operazioni sul filesystem di root, questa può
R
Nei monitor di sistema, guardate i riquadri che escludono la memoria utilizzata dai buffer del filesystem
a rimanere in memoria. Per fare un esempio, prendete nota di quella libera. Adesso avviate e arrestate un programma pesante come Firefox e vedrete che la memoria non utilizzata diminuisce. Se riavviate il browser una seconda volta, noterete come la velocità di esecuzione sia maggiore. Questo perché il kernel mantiene i dati in memoria pronti per l’uso successivo. Lo stesso concetto vale anche per le librerie condivise.
Spostare la home
D R
Ho sentito dire che è meglio avere la directory /home in una partizione separata. Perché e come posso farlo? Ci sono una serie di motivi per spostare la directory /home in una partizione separata. Primo tra tutti la possibilità di mantenere i vostri dati e quelli di tutti gli altri utenti distaccati dal sistema operativo. In secondo luogo, un altro vantaggio, sta nella semplificazione dei processi di backup. Ciò significa che è possibile aggiornare o addirittura sostituire il vostro sistema operativo pur mantenendo tutte le impostazioni personali. Il modo più semplice per eseguire questa procedura è utilizzare Gparted e un disco fisso separato. Assicuratevi che l’unità sia formattata con un filesystem Linux, in modo da conservare tutte le informazioni salvate con i file, quindi utilizzate rsync per copiare i dati al suo interno. sudo mkdir /media/extdrive/home/ sudo rsync -a --delete /home/ /media/extdrive/ Questo comando presuppone che l’unità separata sia montata in /media/extdrive. Ci sono poi altri strumenti che potete utilizzare per la copia, ma rsync ha un vantaggio pratico: se il trasferimento dovesse interrompersi, potreste sempre riprenderlo dal punto in cui si è fermato. In pratica, potete continuare a usare il PC anche mentre eseguite questa operazione. A questo punto dovrete utilizzare un CD live per la fase successiva dove eliminerete il contenuto di /home, quindi sarà necessario utilizzare Gparted per ridimensionare la partizione di root a una grandezza ragionevole (20 GB dovrebbero essere sufficienti, ma considerate circa il 50% in più rispetto allo spazio attualmente usato). Adesso generate una nuova partizione subito dopo quella di root, quindi formattatela usando ext3. Caricate il file /etc/fstab dalla partizione di root in un editor e aggiungete una riga in più con: /dev/sdaN /home ext4 defaults,noatime 0 0 dove sdaN è la partizione appena creata. Infine copiate i dati dal disco esterno alla nuova /home, quindi riavviate. Potete eseguire ugualmente l’operazione senza un disco esterno, ma il tutto diventa più complesso e laborioso.
“Memoria libera è quel parametro che indica la RAM inutilizzata e utile a migliorare le prestazioni” essere compiuta senza problemi su un sistema in esecuzione. Una volta riavviato, avrà effetto. Infine un consiglio pratico: se dovesse capitarvi di dover spostare un’unità tra due computer, utilizzate sempre un’etichetta meno generica di “root”.
Copiare un disco fisso
D R
Come faccio a clonare un disco rigido completo? Sto usando Ubuntu, ma l’unità contiene anche Windows. Clonare un disco di sistema in esecuzione è assai pericoloso e il motivo è molto semplice: il sistema operativo potrebbe modificare i file nel momento in cui si sta tentando di clonare l’unità. Il modo più semplice e sicuro per eseguire questa operazione è utilizzare CloneZilla. Masterizzate la ISO su DVD e avviatela.
Se volete clonare un intero disco fisso oppure anche solo una semplice partizione, CloneZilla è la soluzione migliore
Linux pro 146
9 9
+ Dottor Linux
Problemi software I programmi si comportano in modo anomalo? Installare i software
D R
Sono nuovo del mondo Linux e non riesco a capire come installare le applicazioni. Su Windows vado sul sito Web del programma, scarico l’.exe e lo eseguo. In Linux non è così. Com’è facile intuire, su Linux l’installazione del software segue regole diverse. I programmi sono generalmente forniti come codice sorgente che viene poi inserito in determinati pacchetti dalle distro. In questo modo siete sempre sicuri che il software utilizzato è pienamente compatibile con l’ambiente in cui si esegue. Per i nuovi arrivati su Linux, uno dei migliori punti di partenza per installare nuovi programmi è il Software Manager. Questo funziona come un grande database in cui è possibile cercare e scaricare applicazioni di qualsiasi genere. Oltre a ciò, si prenderà cura di recuperare tutte le dipendenze necessarie ai programmi per funzionare a dovere e vi comunicherà quando sono disponibili nuovi aggiornamenti. Così facendo, non sarà necessario doversi recare sulle pagine ufficiali dei software per controllare la presenza di nuove versioni.
Usare il sorgente
D R
Voglio installare un programma, ma non c’è alcun pacchetto disponibile per la mia distro. Il sito Web, infatti, fornisce solo il codice sorgente. Come lo installo? Le modalità da attuare per installare un programma dal proprio codice sorgente variano a seconda del software. Il primo passo è decomprimere il file tarball o lo zip, quindi cercare un documento
Non serve setacciare il Web in cerca di programmi. Il primo luogo dove andare a vedere è il Gestore applicazioni della vostra distribuzione
chiamato Readme o Install. Al suo interno, di solito, viene spiegata la procedura da seguire per l’installazione. Nel 90% dei casi, viene utilizzato il sistema autotools, che consiste nell’utilizzare tre comandi per costruire e installare il software. Questi devono essere eseguiti all’interno della directory in questione che viene creata nel momento in cui si decomprime il tarball. Stiamo parlando di: ./configure make sudo make install Il primo comando verifica che il sistema abbia tutte le dipendenze richieste e imposta l’ambiente per lavorare con la vostra distro. Il secondo compila il codice sorgente nei programmi da eseguire sul proprio computer. Il terzo, infine, installa i suddetti software nelle posizioni corrette e gestisce qualsiasi configurazione finale. Avrete bisogno di un ambiente standard per eseguire questo genere di operazione. La maggior parte delle distro, a tal proposito, ha un pacchetto chiamato build-essentials che installa tutto il necessario per costruire e installare i programmi dai sorgenti. Infine una raccomandazione: non cancellate la directory di origine dopo l’installazione. Se si desidera rimuovere il software in un secondo momento, potrà tornare molto utile con il comando: sudo make uninstall
Nessun drive DVD
D R
Ho un’immagine ISO che posso masterizzare su un CD/ DVD, ma voglio usarla su un computer portatile senza lettore DVD. Posso servirmi di una chiave USB? Certo, non c’è nessuna controindicazione. L’approccio esatto, però, dipende dal tipo di immagine ISO. Alcune distribuzioni vengono rilasciate con ISO ibride che funzionano sia con i DVD sia con le chiavi USB. In questo modo, potrete copiarle su qualsiasi disco ottico oppure su una memoria flash tramite il comando dd: sudo dd if=distro.iso of=/dev/sdb bs=4k dove if è il file da copiare e of è la destinazione (bs=4k accelera il processo in modo piuttosto sensibile, anche se non è obbligatoria). Attenzione: dd fa esattamente quello che dice senza restituirvi alcuna doppia richiesta di sicurezza; è pertanto opportuno fare attenzione nell’aver indicato l’unità di destinazione corretta. A qualcuno sarà venuto in mente di domandarsi come si fa a capire quando si è di fronte a una ISO ibrida. Il sito Web della distro potrà fornirvi indicazioni in merito, ma potete provare anche con fdisk: sudo fdisk -l distro.iso Se la riga sotto Device include il nome dell’immagine ISO, allora si
Lanciare tutto dalla Shell Se un programma non riesce ad avviarsi dal desktop, oppure viene lanciato ma poi si blocca, provate a eseguirlo dal terminale. Nella maggior parte dei casi, seppure così facendo non si riesca sempre a farlo funzionare, avrete a disposizione una serie di istruzioni che vi permetteranno di informarvi sull’eventuale problema riscontrato. In questo modo riuscirete
10 10
Linux pro 146
a capire quantomeno dove iniziare a mettere le mani per risolverlo. Questo, ovviamente, presuppone che conosciate il nome del comando per eseguirlo da terminale. Nella maggior parte dei casi, comunque, altro non è che la versione minuscola del nome dell’applicazione. Pertanto, se volete lanciare Firefox, basterà usare:
dpkg -L firefox | grep bin/ In questo caso, la L maiuscola serve per cercare i file del pacchetto anziché i pacchetti installati. L’RPM equivalente, invece, è rpm -ql | grep bin/ La funzione grep mostra solo i fine installati in una delle directory *bin, anziché la lista completa dei pacchetti.
Problemi con Linux? Risolti tratta di un ibrido. Nel caso invece non lo sia, potete convertirla con isohybrid. Prima di farlo, però, potrebbe essere necessario installare il pacchetto syslinux: isohybrid distro.iso Adesso fdisk dovrebbe mostrarla come un ibrido e quindi si può usare dd per memorizzarla in una chiavetta USB.
Xkill chiuderà la prima finestra su cui si fa click, così come il processo di riferimento
Troppo lento
D R
Il mio computer è veramente troppo lento e non capisco cosa possa essere successo. La macchina, infatti, ha una configurazione hardware abbastanza potente. La causa più probabile di un problema del genere è da ricercarsi in un processo che monopolizza la maggior parte delle risorse disponibili. Il programma da utilizzare per capire di cosa si tratta è top. Eseguitelo dal terminale e vi mostrerà un riepilogo dell’utilizzo generale del sistema, più un elenco di programmi in ordine d’uso della CPU. La terza linea, invece, visualizza l’andamento complessivo del processore. In pratica, vi troverete di fronte a qualcosa di simile: %Cpu(s): 0.7 us, 0.2 sy, 0.0 ni, 99.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st Le prime tre cifre mostrano che gran parte della capacità posseduta dalla CPU viene utilizzata dall’utente, dal sistema e da altre attività. La quarta cifra, invece, mostra l’idle, vale a dire la quantità di tempo in cui il processore non viene utilizzato. Se il valore è vicino allo zero, avete capito perché il computer è lento. Consultate quindi l’elenco delle attività per vedere qual è quella che si sta mangiando la CPU. Se si dispone di un processore multi-core, premendo 1 cambiate la visualizzazione tra l’uso generale e quello dei singoli core. La dicitura wa (wait) è un dato altrettanto significativo e indica quanto tempo la CPU è in attesa di I/O. Questo valore può essere molto alto durante le operazioni intensive del disco. Se di solito è sopra la media, il problema che rallenta il PC è da ricercarsi nel disco. Si tratterà pertanto di errori di lettura o di un filesystem quasi pieno che è diventato molto frammentato. Guardate la riga della memoria. Se questa è piena e lo swap è in uso, allora si perderà terreno nel campo delle prestazioni. L’elenco delle attività è ordinato per utilizzo della CPU, ma premendo F è possibile far comparire una visualizzazione a campi. Spostate il cursore su quello che volete ordinare e premete S seguito da Q. Se la memoria è insufficiente, così potrete capire molto meglio quali sono i programmi responsabili di tanto uso.
Password persa
D
Ho recentemente reinstallato Linux e ho mantenuto la stessa password. Tuttavia non riesco a fare il login. C’è un modo per trovare o resettare la parola chiave?
Top offre una panoramica delle risorse di sistema utilizzate, nonché l’elenco dei programmi più pesanti
R
È impossibile reimpostare la password di avvio da un CD/DVD live, sia che si faccia uso di un disco di ripristino come Rescue System CD sia che si tratti del CD della vostra distro. Il primo passo è identificare la partizione in cui è installata la distribuzione (si tratta del filesystem di root, la directory home non è necessaria). Se si riesce a raggiungere il desktop grafico, potete sfogliare le unità disponibili valutandone le dimensioni fino a trovare quella che contiene directory come bin, etc e lib. Una volta che avete montato la partizione corretta, tipo /mnt/miaroot, potete usare chroot per il fix: sudo chroot /mnt/miaroot /bin/bash Questo comando cambia la directory di root con il percorso che gli si dà ed esegue il comando seguente. In questo modo si passa alla radice del sistema installato e si gestisce la shell Bash come root. Adesso che siete all’interno della vostra installazione, si può modificare la password con: passwd vostronomeutente A questo punto vi verrà chiesta la nuova chiave di accesso due volte. Premete Ctrl+D per uscire da chroot, riavviate dal disco fisso, quindi dovreste essere in grado di accedere nuovamente.
Chiusura forzata dei programmi
D
Sto eseguendo alcune applicazioni che però ogni tanto vanno in crash. Quando si verifica il problema, le finestre rimangono aperte. Come faccio a chiuderle e a riavviare il software correttamente? Se il programma ha un’interfaccia grafica, la risposta più semplice è usare la funzione xkill che di solito è installata per impostazione predefinita. Quando si esegue, il puntatore del mouse si trasforma in un teschio con le ossa incrociate e la finestra su cui si fa click viene chiusa forzatamente. Pertanto è opportuno fare attenzione a dove si punta. Ci sono anche delle alternative da linea di comando: kill, per esempio, esegue una chiusura partendo dall’ID del processo che si vuole terminare. Killall funziona in modo analogo, ma utilizza i nomi dei programmi anziché gli ID. Entrambi inviano un segnale TERM di default che chiude il programma in modo ordinario. Se non dovesse riuscire aggiungete -KILL agli argomenti, così da rinforzare l’istruzione killall -KILL nomeprogramma Se volete utilizzare kill, ci sono comunque vari modi per trovare l’ID del programma in questione. Se il processo utilizza parecchia CPU o molta RAM, si può decidere di eseguire la chiusura dal monitor di sistema premendo il pulsante K. In caso contrario, utilizzate pgrep: pgrep -fl nomeprogramma L’opzione -fl permette di vedere la riga di comando completa, in modo da essere sicuri che si stia chiudendo il processo giusto senza fare errori.
R
Linux pro 146
11 11
+ Dottor Linux
Rimanere connessi Ecco come ripristinare una connettività malfunzionante Navigazione lenta
D R
Wi-Fi Analyser su Android mostra i punti di accesso e i canali utilizzati. In questo modo potete impostare a dovere il vostro router
La mia connessione a Internet va davvero a rilento. È un problema della mia distro Linux, oppure devo modificare le impostazioni del mio router? Almeno nelle fasi iniziali, il nostro consiglio è stare lontani dal router per evitare di causare danni con impostazioni sbagliate. Il primo passo, invece, è verificare dati alla mano le reali prestazioni della linea. Potete farlo con http://speedtest.net, controllando poi gli eventuali servizi in background che assorbono maggiormente la banda a disposizione. Un buon programma per questo genere di controllo è nethogs, che potete installare direttamente dal vostro gestore pacchetti. sudo nethogs eth0 Questo programma ripropone una lista dei processi che usano la banda, ordinandoli per quantità utilizzata. Andando oltre, valutate per un attimo il tipo di connessione del router. Se state usando il wireless, vale la pena provare a sfruttare un cavo Ethernet. Oltre a non soffrire dei normali problemi di cui risente un collegamento senza fili, così facendo evitate eventuali interferenze dovute ad altri apparecchi che usano la stessa frequenza di trasmissione. Se volete continuare a servirvi del Wi-Fi, conviene dare un’occhiata ai canali utilizzati tramite questo comando: sudo iwlist wlan0 scan | grep -e Address: -e Channel: -e ESSID: iwlist crea parecchi output su ogni punto di accesso che scopre. Da qui la necessità di filtrarlo con grep. Inoltre è possibile utilizzare
un programma come Wi-Fi Analyser che funziona su Android. Grazie a esso avete una visualizzazione grafica del canale usato, utile a valutare la forza di tutti i punti di accesso, così da mappare quelli in cui il segnale proveniente dal router è più debole. Un’altra prova un po’ empirica è alzare la cornetta del telefono e saggiare la qualità della linea. Se sentite dei fruscii, significa che il segnale è disturbato e avete trovato il motivo per cui la connessione è lenta. A questo punto non resta che contattare il vostro operatore di telefonia per richiedere un intervento tecnico per migliorare la qualità.
Streaming video
D
Quando cerco di vedere alcuni film in streaming con i servizi che ho sottoscritto, mi viene riproposto il messaggio secondo cui il sistema non è supportato. Posso ingannarli facendogli pensare di usare Windows? In alternativa, ci sono altre soluzioni per ovviare al problema? La maggior parte dei servizi streaming a pagamento utilizzano Silverlight, una tecnologia proprietaria Microsoft utile alla visione dei video e all’applicazione dei DRM. Silverlight per Linux non esiste, tuttavia c’è una soluzione chiamata Pipelight, vale a dire un plug-in per il browser che a sua volta utilizza Wine per eseguire SIlverlight. è necessario che Wine sia perfettamente aggiornato tramite tutti i pacchetti disponibili per le vostre distribuzioni. Gli utenti che usano distro basate su Ubuntu possono aggiungere un PPA e installare tutto con i comandi: sudo add-apt-repository ppa:pipelight/stable sudo apt-get update sudo apt-get install pipelight-multi Questo aggiunge il PPA di Pipelight e installa il software. Le istruzioni per utilizzarlo con altre distro si trovano su http://bit.ly/PipelightInstall. Per configuarlo procedete con: sudo pipelight-plugin --create-mozilla-plugins pipelight-plugin --enable silverlight Questa istruzione scaricherà il software SIlverlight e configurerà i plug-in del browser. L’installazione di Pipelight, inoltre, non è sufficiente per guardare i video, in quanto l’accesso continuerà a essere negato a causa del rilevamento di Linux. Installate quindi una delle estensioni di controllo per lo user-agent, come user-agent-overrider o uacontrol su Firefox. Per Chrome esiste user-agent-switcher.for-chrome. Adesso utilizzate questi plug-in per impostare
R
La penultima spiaggia Quando il computer sembra totalmente bloccato e non c’è modo di capirne il motivo, l’ultima risorsa è staccare la spina con tutti i rischi annessi e connessi. Tuttavia, prima di farlo, c’è un altro sistema che potete sfruttare: fare uso delle chiavi Magic SysReq. Si tratta di speciali combinazioni di tasti che possono essere utilizzate per arrestare un sistema bloccato senza per forza togliere l’alimentazione. Il loro nome deriva dal fatto che usano la chiave SysReq assegnata al tasto Stamp. Anche se la vostra tastiera sembra del tutto bloccata, queste chiavi lavorano
12 12
Linux pro 146
ugualmente, poiché il kernel le percepisce senza alcuna interfaccia software che possa intralciare. Tenete premuto i tasti Alt e Stamp, quindi usate R – Resetta la tastiera. E – Chiude tutti i programmi ancora attivi utilizzando KILL. I – Interrompe il funzionamento di tutti i software utilizzando TERM. S – Sincronizza tutti i filesystem. U – Smonta i filesystem e li rimonta direttamente in sola lettura.
B – Riavvia il sistema. Per ricordare questi tasti ci sono vari trucchi mnemonici ma nessuno di questi aiuta veramente a tenerli a mente in modo facile. Il consiglio che possiamo darvi è quindi di scriverli in una rubrica e tenerli a portata di mano. Considerate poi che il tasto che utilizzerete più spesso è l’ultimo, vale a dire quello che permette di riavviare il sistema. In questo modo, riuscirete nell’intento di sbloccare il computer senza per forza doverlo sottoporre allo shock dello sbalzo di corrente.
Problemi con Linux? Risolti
Per utilizzare i servizi in streaming che sfruttano Silverlight è necessario installare Pipelight
lo User Agent di Firefox in modo che il sistema di streaming lo scambi per un browser in esecuzione su Windows. A questo punto, non resta che godervi i film.
Montare Android
D
Ho acquistato un tablet Android Nexus 7 e sono molto soddisfatto. Purtroppo, però, non riesco a montarlo come dispositivo USB. Quando collego il mio telefono al PC, per esempio, si apre una finestra sul dispositivo mobile in cui mi viene chiesto se voglio utilizzarlo come dispositivo di memorizzazione o procedere con il normale collegamento. Questo, però, con il tablet non avviene. Come mai? Il problema con le USB è che il filesystem è montato su un sistema operativo alla volta. Ciò significa che prima di poter montare il tablet sul computer come periferica di archiviazione di massa, il filesystem deve essere smontato dal dispositivo mobile. Ecco perché sul telefono si riceve il messaggio secondo cui le applicazioni che usano la scheda SD devono essere fermate. Sul Nexus 7 è ancora peggio, poiché non c’è alcun sistema di memorizzazione rimovibile e quindi non si può smontare un filesystem attualmente in uso sul sistema operativo. I dispositivi Android più recenti rimediano alla situazione tramite MTP (Media Transfer Protocol). A questo proposito ci sono alcune opzioni di montaggio per i dispositivi MTP sotto Linux, i quali vengono tutti implementati come filesystem FUSE. Noi, però, preferiamo utilizzare jmtpfs. Per montare il primo dispositivo trovato (è opportuno collegarne uno alla volta) scrivete jmtpfs seguito dal nome del punto di mount. Da notare che questa directory deve esistere ed essere scrivibile dall’utente seguendo il comando: jmtpfs ~/nexus Adesso sarà possibile accedere ai contenuti del dispositivo mentre lo si sta utilizzando. Quando avete finito, smontatelo con: fusermount -u ~/nexus
R
TightVNC o VNC (il primo ha prestazioni migliori sulle reti più lente). Una volta fatto, non resta che eseguire il server sul computer a cui ci si vuole collegare, impostare la password di accesso ed eseguire il client sull’altra macchina. Se invece volete stabilire una connessione remota per eseguire un solo programma, c’è una soluzione più veloce. Infatti si può utilizzare SSH sul computer remoto, installando il pacchetto ssh-server. A questo punto potete verificare il funzionamento della connessione dal computer locale con: ssh user@hostname Questo richiederà l’inserimento della vostra password, quindi si aprirà una sessione di shell sul computer remoto. Potete verificare di essere realmente connessi al PC in rete eseguendo l’istruzione uname-a. Adesso premete Ctrl+D per il logout e provate a eseguire un programma grafico come: ssh -Y user@hostname nomeprogramma Con questo comando si aprirà una finestra e, a seconda di come la distro imposta il proprio server SSH, si possono trovare più -X che -Y. Se non dovesse funzionare, controllate in /etc/ssh/sshd_config nel computer che esegue il server e assicuratevi che contenga X11Forwarding yes Per inciso, se si utilizza lo stesso nome utente su entrambi i computer, è possibile lasciarne fuori uno con: ssh -Y hostname nomeprogramma
Qual è il mio indirizzo?
D R
Ho una Raspberry Pi che ho inserito nella mia rete. Tuttavia non ne conosco l’indirizzo IP e quindi non posso utilizzare SSH. Come faccio? Se il dispositivo riceve l’indirizzo da un server DHCP, spesso è possibile configurare quest’ultimo affinché assegni un IP a un determinato host. Inserite la scheda SD del Pi nel computer, quindi modificate il file /etc/hostname per impostare l’host. Di seguito configurate il DHCP dal router, così che a quello specifico nome venga assegnato un preciso indirizzo IP. In alternativa potete usare Netdiscover (http://bit.ly/Netdiscover) ed eseguirlo con: sudo netdiscover -i eth0 -r 192.168.1.0/24 dove -i è l’interfaccia di rete e -r il range IP utilizzato. In questo modo avrete un elenco completo di tutti gli host. Purtroppo il Pi si presenta solo come Unknow vendor; quindi, se si dispone di un dispositivo Android, è importante installare Fing che tramite un’interfaccia grafica riesce comunque a riconoscere il Pi. Una volta avuto l’indirizzo, è possibile usare SSH lanciando ipconfig per ottenere il MAC address. Questo sarà poi utile per dire al vostro server DHCP quale indirizzo assegnare. Raspbian, infine, riporta l’IP da /etc/ rc.local nel momento stesso in cui viene lanciato.
Desktop remoti
D
Vorrei essere in grado di accedere al desktop del mio computer da un’altra postazione. In pratica, in modo simile a quanto avviene con la funzione Desktop Remoto di Windows. Come posso fare? A questo proposito si può agire in due modi. Se si vuole procedere a un accesso completo di un computer desktop, si può utilizzare VNC. Questo programma è spesso installato per impostazione predefinita. Se così non fosse, utilizziamo il pacchetto
R
MTP è il nuovo modo di collegarsi ai dispositivi Android. Siamo così in grado di continuare a usare il dispositivo mentre è montato sul desktop
Linux pro 146
13 13
+ Dottor Linux
Problemi desktop Facciamo in modo che tutto funzioni a dovere Che fine ha fatto il desktop?
D
Ho applicato alcuni aggiornamenti di sistema come notificatomi da Ubuntu. Dopo il riavvio, però, mi sono trovato di fronte a una schermata nera con un prompt di login e un cursore lampeggiante. In pratica, è sparito il desktop. Questo succede perché l’aggiornamento del sistema prevede l’installazione di un nuovo kernel che è diventato predefinito non appena si è riavviato il computer. Se si utilizza una scheda grafica con driver di terze parti, come Nvidia, è necessario reinstallare i driver prima di poter accedere di nuovo al desktop. Se sono stati installati i driver tramite il Software Center, questo avrebbe dovuto occuparsi della reinstallazione, ma se invece avete installato i componenti manualmente, allora dovrete pensarci voi stessi. Se si utilizza un driver Open Source, questo è incluso con il kernel. Con i driver binari, invece, il modulo è compilato e installato da un programma di terze parti. La buona notizia è che si può riavviare, selezionare il kernel precedente dal menu di avvio e riottenere così il tanto agognato accesso. In seguito si potrà installare nuovamente i driver in questione.
R
Errore utente
D R
Un determinato programma ha iniziato a funzionare in modo anomalo. L’ho reinstallato, ma non ho risolto alcunché. Come mai? Avete aggiornato recentemente il programma in questione o le librerie che utilizza? Date un’occhiata ai file di log del gestore pacchetti, in modo da vedere cosa è stato installato di recente (chi usa Ubuntu o le distro basate su Debian trova tutto in /var/log/apt/history.log). Se non si evidenzia alcun cambiamento, è probabile che si sia verificato un errore di configurazione. Reinstallare il pacchetto non influenza le impostazioni degli utenti memorizzate da qualche parte nella directory home. Ecco perché non si è riusciti a risolvere il problema. Il modo più semplice per verificarlo è creare un nuovo utente, accedere con quest’ultimo e provare lo stesso software il quale userà le opzioni predefinite. Se il problema scompare, allora si tratta di un semplice errore di configurazione. Il passo successivo è trovare dove il programma memorizza le sue impostazioni. KDE, per esempio, prevede che i programmi archivino tutto in ~/.kde4/share/config, ma molti altre applicazioni utilizzano .config, .local o scrivono loro stessi la propria configurazione nella directory home. Un modo semplice per trovare tutti i file modificati da un programma è utilizzare il comando find. Prima di tutto create un file con la marca temporale corretta:
Controllate i pacchetti in corso di aggiornamento. Se c’è un nuovo kernel, alcune periferiche potrebbero smettere di funzionare fino a che non si reinstallano i driver
touch ~/now eseguite il programma e modificatene la configurazione, quindi uscite. Adesso, utilizzando il comando che segue, sarà possibile trovare tutti i file modificati nella vostra directory home: find ~ -newer ~/now Una volta trovato il file di gestione o la directory incriminata, è necessario rinominarli ed eseguire l’applicazione per tornare a una configurazione standard. Ricordate poi che creare un nuovo utente e accedere con esso porta allo stesso risultato, ma con meno dispendio di energia e tempo.
Accesso negato
D
Sono sicuro che la password utilizzata per accedere a Ubuntu è corretta, ma il sistema non mi lascia entrare. Peraltro ho attivato la funzione di accesso automatico. Se poi provo a utilizzare la modalità provvisoria, la password viene riconosciuta senza problemi. Il problema non è da imputare alla password, altrimenti non si potrebbe accedere alla console di ripristino. C’è qualcos’altro che impedisce l’accesso al desktop ed è anche il motivo per cui il sistema chiede di immettere la chiave nonostante sia attivata la procedura di auto-autenticazione. Di solito, questo genere di problema, è causato da un errore di configurazione del desktop. Per esempio, è possibile che si sia modificato un file di sistema con i permessi root. Per tentare di risolvere il malfunzionamento, per prima cosa avviate un recovery, quindi accedete con l’utente interessato ed eseguite il comando che
R
Dove cercare aiuto Avete provato a risolvere il vostro problema, ma non siete riusciti nell’intento? In questo caso, il primo passo è iniziare a capire dove sta il malfunzionamento analizzando i vari messaggi di errore. Una volta fatto, usiamo la potenza di Internet per vederci chiaro, incollando il messaggio stesso in un motore di ricerca. Se qualcuno ha già affrontato il problema e lo ha risolto, lo troveremo. Invece, se siete alle prese con dei
14 14
Linux pro 146
malfunzionamenti imputabili alla vostra distro, provate a rivolgervi sul forum o sul sito Web dello sviluppatore. Più in generale, si può provare su http:// linuxquestions.org. Molti programmatori, inoltre, utilizzano IRC che permette di ottenere una risposta veloce a tutti i problemi. Qualsiasi consiglio riceviate, non è comunque da prendere come oro colato. Prendetevi sempre qualche momento per verificarlo
e appurare che, eseguendolo, non si facciano ancora più danni. Una fonte molto preziosa di consigli è Linux User Group (LUG). La maggior parte di queste comunità ha delle mailing list che vengono usate per comunicare, tuttavia non è raro imbattersi in un incontro dal vero. Se il problema è su un portatile, quindi, si potrebbe valutare l’idea di farlo vedere a qualche partecipante di un LUG durante una riunione.
Problemi con Linux? Risolti segue per ripristinare le proprietà di tutti i file nella directory home: sudo chown -R ${USER}: ~ Il comando chown viene utilizzato per modificare le proprietà dei file. L’opzione -R ordina al sistema di applicare le modifiche a tutti i file nel percorso indicato. La variabile d’ambiente ${USER} espande il nostro nome account (ecco perché è necessario eseguire il log-in con esso). I due punti che seguono (:) il nome utente ordinano a chown di cambiare anche le proprietà del gruppo cui appartiene lo user. Infine, la shell si espande (~) al percorso della directory home. Naturalmente, avrete bisogno di lanciare il tutto con sudo così da avere permessi di root. Se il problema persiste, controllate .xsession-errors nella directory home.
Dispositivo bloccato
D
Quando cerco di espellere un DVD o rimuovere un’unità USB, il sistema a volte si rifiuta di eseguire l’operazione, restituendomi un messaggio del tipo: “Operazione non riuscita. Dispositivo in uso”. Come faccio a risolvere il problema senza spegnere forzatamente il computer? In questo caso, qualche programma ha posto un blocco su un file o una directory del filesystem che si desidera smontare. Ecco perché il sistema operativo si rifiuta di eseguire questo genere di operazione. Il comando lsof elenca tutti i file aperti, tra cui le directory e i device nodes. Filtrando le informazioni attraverso grep, è possibile trovare il processo colpevole. Per esempio: # lsof | grep /media/cdrom bash 15243 nelz cwd DIR 11,0 6144 1856 /media/ cdrom Questo dimostra che Bash, in esecuzione sotto il nostro utente, ha bloccato CWD in quella directory. In altre parole c’è una shell aperta che visualizza la directory del CD. A questo punto basta usare il comando cd all’interno di quella specifica shell per tornare così alla directory home e quindi sbloccare lo smontaggio del CD. In pratica, tutto sta nel capire quale programma pone il blocco, per poi lavorarci su e fare in modo di rimuovere il problema. In alternativa, potete usare il comando fuser che restituisce semplicemente l’ID del processo che sta opponendo resistenza: # fuser /media/cdrom /media/cdrom: 15243c Vedrete quindi che è lo stesso PID fornito da lsof. Quest’ultimo può sembrare meno utile e in effetti lo è, poiché abbiamo solo bisogno di trovare la shell e cambiare directory. Tuttavia fuser
R
Creare un nuovo utente con impostazioni predefinite è il miglior modo per capire se un software ha problemi con lo specifico account che state utilizzando
ha un asso nella manica. Usando il comando: fuser -k /media/cdrom troveremo il PID e invieremo un segnale KILL per terminare immediatamente il programma rilasciando il blocco. In definitiva, si tratta di un’azione molto utile quando un software va in crash e lascia bloccato un particolare dispositivo. In questo modo, eviterete di scollegare la periferica forzatamente.
Se continuate a trovarvi nella schermata di login, potreste avere qualche problema nei permessi e nella proprietà dei file
Che fine ha fatto quel file?
D R
Non so se è la mia età, ma ho l’abitudine di salvare i file in un percorso e poi dimenticarmi dove sono. C’è qualche modo per aiutare la mia memoria? Oltre a qualcosa come il desktop semantico di KDE che indicizza tutti i file creati, ci sono un paio di opzioni generali utili da conoscere. La prima è find che individua i file in base a vari criteri. Per esempio, se vi ricordate l’ultima volta che si è salvato un documento, è possibile utilizzare -mtime per cercare la modifica attraverso la data di modifica: find ~ -type f -mtime 0 find ~/documenti -type f -mtime +7 -mtime -14 Il primo comando trova tutti i file presenti nella vostra directory home modificati nelle ultime 24 ore. Il secondo, invece, dà un’occhiata alla cartella documenti per i file modificati da più di una settimana ma da meno di due. Con -type f blocchiamo poi la ricerca nelle directory corrispondenti. È inoltre possibile trovare nomi di file da cercare in fogli di calcolo modificati durante l’ultima settimana: find ~ -mtime -7 -name ‘*.ods’ Se si tratta di un file di testo e se ne conosce il contenuto, è poi possibile utilizzare grep: grep -rI “testo da rilevare” ~ Questo comando, però, è molto più lento del precedente, perché deve leggere all’interno di ogni file. È quindi importante riuscire a restringere quanto più possibile i campi. L’opzione -r ricerca con un algoritmo ricorsivo, mentre -I ordina a grep di ignorare i file binari. Ci sono anche diversi comandi grafici che possono essere utilizzati nella maggior parte dei desktop, ma quello che non possono fare è combinare insieme l’uso di find e grep come grep -I “testo da rilevare” $(find ~ -type f -mtime 0) Questa istruzione lancia find per generare un elenco di file e poi li passa a grep per la ricerca. Linux pro 146
15 15
+ Dottor Linux
Ripara con Rescatux Ecco come porre rimedio ai problemi più comuni senza ricorrere alla shell in modo veloce ed efficace col DVD allegato Preparativi per l’operazione a cuore aperto
D
ovete sapere che i LiveCD di Linux sono un’invenzione fantastica: consentono di provare nuove distribuzioni senza toccare il contenuto del disco fisso, mostrarle agli amici un po’ scettici e, in caso di bisogno, anche porre rimedio a eventuali problemi del sistema installato nel PC. Esistono delle distro progettate proprio per la riparazione dei sistemi danneggiati, ma quasi tutte hanno uno svantaggio: richiedono che l’utente abbia una buona esperienza, spesso anche con la riga di comando, e molti di noi non hanno a che fare con sistemi rotti abbastanza spesso da essersi fatta tale esperienza. Quando il vostro PC sta di fronte a voi mostrando solo un accigliato messaggio da parte del bootloader, la priorità è ripristinare l’avvio il più in fretta possibile e non spendere ore e ore cercando la ricetta giusta per sistemare GRUB usando il povero browser presente in un LiveCD. Rescatux funziona sia con i sistemi a 32 bit, sia con quelli a 64. Usare la versione a 32 bit su una CPU a 64 bit va bene, non il contrario
16
Quello che serve è una distribuzione Live che sia pensata per riparare i problemi più comuni senza dover avere un grande bagaglio di conoscenze e senza perdere troppo tempo in ricerche in Rete. Se poi questa soluzione ci evita anche di dover digitare lunghi comandi nella shell, così da evitare di peggiorare la situazione per errore, non sarebbe male. Quello che ci serve è Rescatux (www.supergrubdisk.org/rescatux/). Questa distro si avvia come un qualunque LiveCD e ha un desktop leggero, basato su LXDE, ma la differenza la fa la finestra che si apre non appena appare la scrivania. Si chiama Rescapp ed è il punto nevralgico del sistema; da qui partono tutte le operazioni di ripristino. Nel seguito di questo articolo mostreremo i problemi più comuni e come porvi rimedio con Rescatux. Per problemi intendiamo guai di basso livello, non quelli legati al desktop o cose simili: una soluzione come Rescatux va impiegata solo quando qualcosa di grave impedisce l’uso del sistema. Molte operazioni di recovery richiedono l’avvio da un LiveCD, sia perché il normale boot può non funzionare, sia perché il filesystem root non deve essere montato per poterci operare. Di solito, in questi casi, è necessario ricorrere alla riga di comando, e questo vale anche per Rescatux, ma il tool Rescapp vi rende molto più semplice la vita in gran parte degli interventi. Quando premete uno dei pulsanti di Rescapp, esso non fa partire immediatamente un’azione. Prima viene mostrata una pagina di spiegazioni che vi illustra le varie opzioni disponibili; considerando la delicatezza delle operazioni che si devono svolgere in questi casi, conviene leggerla con cura. Purtroppo la lingua italiana non è supportata, ma in certe situazioni l’inglese è d’obbligo. Una volta letta la documentazione, premete il pulsante Run! per l’avvio presente in cima per eseguire le operazioni necessarie.
#1 Errori dell’hard disk durante il boot Il primo passo da fare quando appaiono errori legati al filesystem è eseguire fsck (che sta per filesystem check, non è l’espressione che esce dalle nostre bocche quando vediamo errori del disco…). Bisogna usare questo comando con il filesystem smontato, per questo è richiesto l’uso di un LiveCD. Premete il pulsante File System Check. Rescapp monta momentaneamente le partizioni allo scopo di determinare a quale distro appartengono. Potrebbe capitare che l’errore su disco impedisca di montare alcune partizioni (di solito la procedura d’avvio di Linux riesce a rimediare in automatico ai problemi più banali), quindi potreste vederne elencate alcune con la label Cannot mount. Inoltre solo le directory radice possono essere identificate, se avete una home separata, questa finirà tra quelle Not detected (o Cannot mount se danneggiata). Potrebbero esserci altre ragioni che impediscono il montaggio di una partizione: potrebbe essere quella di swap o una partizione estesa, quindi fate attenzione quando selezionate
Qualche altro aiutino Anche se Rescatux è in grado di coadiuvarvi nella risoluzione di molti problemi, spesso solo con un paio di click del mouse, qualche volta avrete bisogno di un aiuto ulteriore. Per cercare informazioni in Rete, potete usare la stessa Rescatux poiché include anche un browser Web; in questo modo potete effettuare le ricerche usando direttamente i messaggi di errore che vi mostra Rescatux stessa mentre cercate di ripristinare il sistema. Tutto ciò che fa questa distro viene registrato in una serie di file di log che potete vedere premendo il pulsante Show Log, ricordatevi, si tratta di un LiveCD, quindi potete vedere solo i log della sessione corrente. Se volete esaminare direttamente i file di log, essi sono memorizzati in rescapp/logs. Se esaminare questi file non vi è utile a risolvere un problema, potete sempre passarli a qualcuno più esperto; è per
questo motivo che trovate il pulsante Share log (condividi log). Dopo aver selezionato il file di log da condividere, Rescapp lo invierà a un servizio pastebin su un server Debian e vi fornirà il suo URL da comunicare. Per avere una risposta in tempo reale premete il pulsante Chat. Esso apre un client IRC sul canale #rescatux, dove potete incollare l’URL di prima e chiedere aiuto. Ovviamente non siete obbligati a rimanere sul canale della distro, potete anche spostarvi in uno a voi più noto, o in quello di una specifica distro. Il pulsante Share log on forum funziona in modo simile, e vi rimanda a Ubuntu Forum (o a Google). Prima di cercare aiuto online, usate il pulsante Boot Info Script: esso genera un file in logs che contiene informazioni sul vostro sistema e che potete condividere, così da fornire tutte le informazioni del caso a chi cerca di aiutarvi in remoto.
su cosa agire. Se avete dubbi, il log Boot Info Script (di cui parliamo più avanti) elenca le partizioni e il loro tipo.
#2 Password non riconosciuta Oltre ai problemi legati a GRUB, che portano al tristemente noto prompt grub>, il mancato riconoscimento della password è l’evento più spaventoso in cui uno può incappare usando un computer. Avete verificato di aver inserito la password che avete in mente, che il tasto Bloc Maiusc (o Caps Lock) non è premuto… ma il sistema non vi fa entrare. Probabilmente la vostra memoria vi sta ingannando oppure, in una nuova installazione, avete sbagliato a digitare la password. Per resettare una password dovete avviare il sistema con un LiveCD e pasticciare un po’ con chroot, non basta modificare semplicemente un file. In alternativa affidatevi a Rescapp. Premete il pulsante Change GNU/Linux Password e, dopo aver letto le spiegazioni, premete Run!, selezionate la distro (ce ne sono sempre almeno due, quella installata e la stessa Rescatux, che appare come Debian 7) e poi scegliete l’utente su cui agire. Inserite la nuova password e il gioco è fatto. Stavolta cercate di non dimenticarvi la parola d’ordine! Questo pulsante serve solo per modificare le password di Linux; se il vostro sistema è in dual-boot con Windows, trovate un’altra opzione che resetta la password del sistema a finestre.
Il pulsante Share Log manda un file di log su un servizio pastebin e vi fornisce il suo URL che potete condividere con chiunque abbia voglia di aiutarvi
Questo comando uccide i processi senza usare il normale init, riducendo quindi il numero di scritture su disco. Ora potete riavviare in Rescatux. Se avete partizionato un disco, potete usare testdisk per cercare i limiti della vecchia partizione e ripristinarli. Il processo di partizionamento scrive solo delle informazioni nella tabella delle partizioni, i dati presenti sull’hard disk non vengono toccati se non si fa una formattazione. Quindi, se riuscite a trovare i settori di inizio e fine della vecchia partizione e riscriverli nella tabella delle partizioni, tutto dovrebbe tornare come prima. Ecco come opera tesdisk. Dopo aver accettato l’opzione di creazione di un file di log, che può sempre tornare utile successivamente, scegliete il disco da esaminare. Il tipo di partizione dovrebbe essere Intel per le partizioni vecchio stile con MBR o EFI GPT per la nuova variante basata su GPT, le altre opzioni sono piuttosto specialistiche. I dischi rimuovibili usano occasionalmente l’opzione None, ma di solito hanno una singola partizione con la tabella delle partizioni su
#3 Ho cancellato il file sbagliato Il fatto che sbagliando, anche di poco, la digitazione di un comando, si possano fare danni enormi è sia sorprendente sia preoccupante. Per esempio, se volendo digitare rm -f *.txt si scrive invece rm -f * .txt Stessa cosa se, volendo formattare /dev/sdc si indica al suo posto sdb. Esiste un curioso tool, che dipende dal filesystem, per recuperare file cancellati per errore, extundelete, ma non è sempre efficace, soprattutto se si è fatto il danno a una partizione. La prima cosa da fare in queste situazioni è smetterei di scrivere sul disco – se il danno è alla partizione che contiene la radice del sistema dovreste spegnere il PC con sudo shutdown -n
Se un filesystem richiede qualche riparazione, indicatelo a Rescapp ed esso farà tutto il lavoro. La voce “Cannot mount” può indicare un danno a una partizione, ma anche l’area di swap o una partizione estesa
17
+ Dottor Linux MBR. Selezionate Analyse per leggere la tabella delle partizioni, e poi Deeper Scan per cercare le partizioni scomparse. Se trovate ciò che stavate cercando, l’opzione Write dovrebbe sistemare le cose. Una nota: anche se non è menzionato in tutti i menu, premendo Q di solito vi riporta al menu precedente. Testdisk è un tool che opera a basso livello, e i suoi effetti potrebbero non essere reversibili, quindi, quando possibile, prima di usarlo fate una copia del contenuto del disco usando il comando dd. Se avete cancellato dei file invece di una partizione, lo strumento che vi serve è PhotoRec. Questo software esamina il disco alla ricerca dei file cancellati e cerca di ricostruirli – vi servirà un altro disco su cui salvare quanto recuperato. PhotoRec può recuperare solo i dati contenuti nei file, tutti i metadati (come proprietario, permessi e perfino il nome del file) non gli sono accessibili. Quindi vi ritrovate con un gran numero di file il cui nome è un numero, anche se PhotoRec inserisce anche un’estensione che vi fa capire di che tipo di file si tratta. Se il file è una fotografia (PhotoRec è nato per recuperare i file dalle schede di memoria) o una canzone, dovreste trovare
Vi siete dimenticati la password? Rescapp vi consente di resettarla, sia in Linux (anche quella di root) sia in Windows, con un paio di click
che i tag EXIF o ID3 sono sani e salvi, il che semplifica l’identificazione di quanto recuperato. Altrimenti dovrete passare un po’ di tempo aprendo tutti i file per identificarli, ma è meglio così che non perdere tutto quanto.
#4 Windows ha problemi Ok, tutti noi abbiamo almeno un PC con anche Windows, o quanto meno un amico che ce l’ha. Rescapp ha anche un’opzione per riparare questi sistemi, dal reset della password al trasformare un utente in amministratore, e qualche altra cosa ancora. C’è anche un’opzione per ripristinare l’MBR di Windows. La sezione relativa al ripristino di GRUB è da usare solo se sul disco avete ancora almeno una distro Linux. Se volete rimuovere tutte le partizioni Linux, dovete rimuovere GRUB dal settore di boot e reinstallare il bootloader di Windows. Rescapp lo fa per voi se selezionate il pulsante Restore Windows MBR. Scegliete un disco, come indicato prima per GRUB, e il programma preparerà il disco in modo che usi il bootloader di Windows.
#5 È complicato Finora abbiamo esaminato le soluzioni a problemi piuttosto “standard”, che si possono risolvere con un paio di click. Se le cose sono più complicate, Rescatux contiene tutta una serie di strumenti che si trovano anche su altre distro per il ripristino, vi basta aprire il terminale e usarli. Ma anche Rescapp nasconde tool utili, in questo caso: basta guardare nella sezione Expert Tools. Qui trovate: Gparted - per (ri)partizionare il disco fisso; Testdisk - per trovare partizioni e filesystem sui dischi che hanno la tabella delle partizioni danneggiata; PhotoRec - per ripristinare file cancellati o comunque persi, di qualunque tipo essi siano; OS Uninstaller - per rimuovere le distro extra in un sistema multi-boot. Vale la pena notare che anche il pulsante Expert Tools mostra una pagina d’aiuto, ma è l’help generico di Rescatux, non la documentazione dei singoli strumenti presenti. Oltre a questi programmi specifici, trovate anche il pulsante Boot-Repair che apre una finestra contenente varie opzioni per modificare il processo di avvio. Queste opzioni comprendono un gran numero di operazioni, specialmente se abilitate le opzioni avanzate. Questo tool vi permette di fare il backup delle partizioni
Avviare un’ISO da GRUB I dischi per il ripristino del sistema, come Rescatux sono una cosa grandiosa, basta trovare ciò che serve all’occasione. Potete copiare l’immagine ISO della distro su una chiave USB con dd if=~/Scaricati/rescatux_cdrom_usb_hybrid_ i386_amd64-486_0.32b1.iso of=/dev/sdX bs=4k dove sdX è la vostra unità USB. È molto pratico, ma la legge di Murphy ci insegna che quando poi ci serve questa chiave, non la troviamo mai… Potete allora sfruttare un’altra possibilità: avviare Rescatux direttamente dall’hard disk. Per farlo vi serve un GRUB2 funzionante, quindi non è un’opzione sempre praticabile, ma se GRUB funziona, questa via è estremamente veloce e comoda. Scrivete l’ISO di Rescatux nella vostra directory /boot, poi aggiungete le righe seguenti
18
in fondo al file /etc/grub.d/40_custom (non modificate le righe esistenti): submenu “Rescatux 0.32” { set isofile=/Rescatux/rescatux_cdrom_usb_ hybrid_i386_amd64-486_0.32b1.iso loopback loop $isofile menuentry “Rescatux 0.32 - 64 bit” { linux (loop)/live/vmlinuz1 findiso=$isofile boot=live config quiet splash initrd (loop)/live/initrd1.img } menuentry “Rescatux 0.32 - 32 bit” { linux (loop)/live/vmlinuz2 findiso=$isofile boot=live config quiet splash initrd (loop)/live/initrd2.img
} } Ora digitate update-grub o grub-mkconfig sudo grub-mkconfig -o /boot/grub/grub.cfg oppure usate l’opzione Update Grub Menu in Rescapp, per aggiornare il menu di GRUB. A partire dal prossimo riavvio avrete a disposizione un’opzione per lanciare Rescatux. Se, cercando di fare il boot, vi appare il messaggio che non è stata trovata l’ISO, aggiungete la riga seguente sotto la riga submenu: set root=‘(hd0,1)’ dove hd0,1 si riferisce alla prima partizione del primo disco (per qualche motivo GRUB conta i dischi partendo da 0 e le partizioni da 1). Modificate i numeri in base alla vostra configurazione.
Rescatux e di scrivere un file di log su un device USB, un passo intelligente da fare prima di cambiare le cose. La maggior parte delle opzioni presenti vi fa modificare il funzionamento del bootloader. Potete reinstallarlo, stessa cosa già vista in precedenza, ma anche cambiargli posizione o modificare le sue opzioni. Quante volte avete cercato la soluzione a un problema d’avvio trovando istruzioni del tipo “aggiungi l’opzione xyz a GRUB”? Potreste farlo modificando i file di configurazione, ma la finestra di Boot-Repair ha un tab in cui potete inserire varie opzioni senza dover mettere mano a file di sistema critici con il conseguente rischio di fare qualche danno. La versione corrente di Rescatux è ancora in fase beta e può, di conseguenza, contenere alcuni bug. Noi qui abbiamo usato la versione 032b1 (e non quella stabile, più vecchia), e abbiamo riscontrato alcune opzioni non ben funzionanti – niente di grave comunque - ma probabilmente quando leggerete queste parole ci sarà già una versione più recente che avrà corretto questi bug. In tutti i casi Rescatux è una risorsa preziosa da tenere sempre a portata di mano.
Grazie ai tool presenti nella sezione Export Tools potete compiere un gran numero di operazioni su GRUB
Sistemare il GRUB
1
Ripristinare GRUB
Selezionate Restore Grub dalla finestra principale di Rescapp e leggete le informazioni per essere sicuri di come procedere. Rescapp compie la maggior parte del lavoro al vostro posto, ma comunque dovete essere voi a sapere quale distro e quale disco volete usare per GRUB. Premete Run! quando siete pronti.
3
Selezionare l’unita di GRUB
Ora scegliete il disco su cui volete installare GRUB, di solito si tratta di sda. Non deve essere per forza il disco che contiene la distribuzione che avete scelto, anche se di norma è così. Se avete avviato Rescatux da chiave USB, è possibile che essa venga vista come sda, mentre il disco fisso sia indicato con sdb.
2
Scegliere la distro
Rescapp esaminerà le partizioni del disco alla ricerca delle distro installate, cercate di riconoscerle dal nome, se possibile. Scegliete quella che volete usare come distribuzione “principale”: essa è quella che di sicuro non vorrete rimuovere, perché farlo vorrebbe dire dover ripetere l’intero processo.
4
Autoriparazione
Premete OK e Rescapp eseguirà i passi necessari, montando e smontando i filesystem in base alle necessità ed eseguendo grub-install con i corretti argomenti --boot-directory, --root-directory e device. Ora potete riavviare la macchina, facile, no?
19
+ Dottor Linux
Problemi di rete: strumenti di base Alla scoperta degli strumenti e delle tecniche che vi serviranno per cominciare a risolvere da soli i vostri problemi di rete di backup per qualsiasi cosa abbiate nella rete, anche se significa avere più dispositivi di rete e server del necessario. Le reti di computer falliscono per molte ragioni, e queste ultime possono essere suddivise in tre categorie principali: ragioni software, ragioni hardware e una combinazione delle due. I problemi che risultano derivare sia da hardware che da software sono i più difficili da risolvere. Tuttavia, i problemi più insidiosi sono quelli riguardanti DNS (Domain Name System). Un server DNS malfunzionante può provocare così tanti inusuali e incomprensibili problemi da togliere il fiato, specialmente quando il server DNS problematico ha un traffico elevato e fornisce informazioni a diversi altri server DNS. Per esempio, recentemente c’è stato un server DNS configurato male che ha riempito tutto lo spazio libero di un disco in una macchina Linux semplicemente generando gigabyte di file di log. Il secondo gruppo di problemi più insidioso riguarda il routing, dal momento che la maggior parte delle attività potrebbe sembrare ok, ma altre potrebbero non funzionare come aspettato.
Controllare i tempi
L
Tip Ntop è una sonda di rete che mostra l’uso della banda così come top fa per i processi Linux. Esiste anche ntoprg, la versione moderna dell’originale ntop. Entrambi sono molto comodi per controllare anomalie nel vostro traffico di rete.
20
inux ha moltissimi strumenti da riga di comando per il networking. Avete visto i più importanti per identificare e correggere problemi legati alla rete. Come principio generale, tuttavia, usate sempre gli strumenti che conoscete meglio, ammesso, naturalmente, che siano adatti per il problema che state cercando di risolvere. Solitamente la parte più difficile nel processo è capire dov’è esattamente il problema e, dopo essere risaliti alla radice, la sistemazione è semplice, il più delle volte. Non dimenticate mai di controllare i file di log cercando errori o warning potenzialmente legati al problema, indizi fondamentali per malfunzionamenti applicativi o hardware. Se necessario, aumentate il livello di log per avere informazioni più dettagliate. Una volta risolto il problema, non dimenticate di riportare il livello di log allo stato iniziale, dal momento che le dimensioni dei file di log possono aumentare considerevolmente. La pratica più utile è di documentare tutto: scrivete le porte e le impostazioni TCP/IP di tutti i vostri dispositivi di rete, anche delle vostre macchine Linux e delle stampanti, e fate un grafico delle connessioni, a mano o con strumenti come Graphviz (www.graphviz.org), e annotatele. Il secondo consiglio più importante è che se avete le risorse necessarie, è di impostare una strategia
Solitamente la prima cosa che fate è connettervi a una macchina remota. Questo vi aiuta ad accertare tre cose fondamentali: (a) se il problema sta in ogni dispositivo della rete, (b) se il problema è in un solo particolare dispositivo, e (c) se il problema è in una macchina remota: il problema non è sempre necessariamente nella vostra riva. Il modo più semplice per capire se due dispositivi di rete riescono a comunicare tra di loro è l’utility ping. Il problema con questo è, però, che ping usa richieste ICMP e oggidì la maggior parte dei router e firewall blocca tali richieste indirizzate verso un host specifico. Anche se una richiesta ping fallisce, quindi, non potete dire con certezza che la macchina remota sia irraggiungibile. Se scoprite un problema di connettività tra la vostra LAN e un host remoto, allora traceroute può aiutarvi a capirlo nel dettaglio. Il rovescio della medaglia è che anch’esso usa richieste ICMP: vedrete un carattere * nell’output, che significa che il router nel percorso non ritorna messaggi ICMP. Potete anche usare telnet per provare una connessione TCP. Il vantaggio principale dell’utilizzo di telnet per interagire manualmente con un server è che potete vedere i dati grezzi della connessione. Sfortunatamente, telnet può essere usato solo per connessioni TCP. Doveste voler provare una connessione UDP, dovrete scegliere un altro strumento come netcat (aka nc) o lsof. Il comando lsof -i UDP mostra tutte le connessioni UDP aperte. Analogamente, netcat –vv –u
Visualizzare dati di rete Tutti gli amministratori di sistema e di rete sanno quanto è importante avere una visione ad alto livello del traffico di rete, sia per scopi di controllo sia per sicurezza. Mano a mano che cresce il flusso dei dati nella rete, tenerlo sotto osservazione diventa sempre più difficile. Vi serve quindi un modo per avere una veloce panoramica
dei dati di rete. Usando i seguenti comandi potete generare un grafico in R: > timeRel plot (timeRel$frame.time_relative, main=“Disegno campo frame.time_relative”, col=’red’)
8.8.8.8 53 prova la connessione al server DNS 8.8.8.8 che usa UDP. Il comando nc -vnzu 127.0.0.1 1-65535 scansiona e mostra tutte le porte UDP della vostra macchina locale. Talvolta dovrete controllare gli effettivi pacchetti di rete (vedete sotto). Prima di analizzare il traffico di rete, dovreste catturarlo. I migliori strumenti da riga di comando per catturare il traffico di rete sono tcpdump e tshark. Entrambi vi permettono di applicare filtri durante la cattura così da ridurre la quantità di dati. Per esempio, tcpdump host 192.168.2.3 cattura il traffico da e verso l’IP 192.168.2.3, mentre tcpdump port 53 cattura solo il traffico DNS, il che risulta molto comodo se volete esaminare il comportamento di un dato dispositivo.
Strumenti per DNS DNS è il servizio che converte gli indirizzi IP in stringhe comprensibili a un umano. È così importante che quando non funziona correttamente non potete navigare in Internet o ricevere mail. I problemi relativi a DNS sono molto insidiosi e lenti da correggere, perché i dati DNS non vengono aggiornati frequentemente. Ci sono tre strumenti principali per recuperare informazioni DNS: host, nslookup e dig. Tutte e tre queste utility presentano più o meno le stesse informazioni quando usate con le opzioni da riga di comando appropriate. Host va bene per richieste facili, mentre dig è più adatto a richieste complesse, e nslookup offre la propria shell interattiva se usato senza argomenti da riga di comando. Tenete a mente che ogni risposta arrivata da un server DNS è considerata autoritativa dal momento che ha (bit) 0
4
10
16
PortA Sorgente
le informazioni complete sul file di zona disponibile per il dominio. I seguenti comandi presentano la stessa informazione dai server DNS del dominio linuxpro.it recuperandola dal DNS pubblico di Google 8.8.8.8: $ host -t ns linuxpro.it 8.8.8.8 $ dig @8.8.8.8 linuxpro.it ns $ nslookup -query=NS linuxpro.it 8.8.8.8 Per visualizzare meno informazioni, potete usare l’opzione +short. Se diversi server DNS mostrano informazioni diverse per lo stesso tipo di query, sapete che c’è qualcosa di sbagliato. Se una data macchina Linux non riesce a ottenere una risposta per una query DNS, non è configurata bene. Uno strumento Unix da riga di comando per leggere e scrivere dati su flussi di rete è netcat che usa i protocolli TCP e UDP. Potete farci molte cose, incluso creare un server Web, un server chat e scansionare porte. La maggior parte delle opzioni di netcat non richiedono privilegi di root per operare: dipende principalmente dal numero di porta che volete usare nella creazione di un server TCP/IP, perché i numeri di porta sotto al 1024 sono riservati e possono essere usati solo da root. Il comportamento standard di netcat è simile a una interazione di rete simulata usando il comando telnet, che significa due cose: la connessione non è cifrata e il protocollo standard è TCP. Il comando nc nome_o_indirizzo_macchina 25 fa interagire netcat con un server SMTP, posto che il server SMTP usi la porta di default. Il comando netcat -l 1234 fa sì che netcat ascolti connessioni TCP in entrata sulla porta 1234, agendo quindi come server. Entrambe le operazioni sono utili per controllare se due macchine possono interagire tra di loro.
31 (bit) 0
24
PortA Destinazione
> grid() Il grafico visualizza il valore frame.time_relative, che è lo scarto di tempo dal primo pacchetto. Questo vi dà un buon indice del vostro flusso di rete. Le statistiche possono tornare molto utili quando dovete gestire molti dati, ma potrebbe essere l’argomento di un articolo a sé.
4
8
16
Porta Lungh. Tipo di sorgente Header Servizio
Numero di Sequenza
Identificazione
Numero Acknowledgement
Time to live Protocollo
Hlen Riservato Codice Checksum
Window Puntatore Urgente
Opzioni
Padding
19
Tip WireShark è il miglior strumento per analizzare il traffico di rete, e può essere usato anche per catturare il traffico. Lo svantaggio principale è la necessità di una interfaccia grafica, quindi non può essere usato in remoto. È un modo molto utile, comunque, per gestire la complessità dei dati di rete. Se avete tempo per imparare un solo strumento, imparate a usare WireShark.
31
lunghezza Totale Flags
scarto Frammento
Header Checksum
indirizzo IP Sorgente Indirizzo IP Destinazione Opzioni
Padding
Dati
Dati
… Dati …
… Dati …
Formato pacchetto TCP
Formato pacchetto IP
Questo diagramma mostra il formato di un pacchetto TCP e IP: le informazioni contenute sono tantissime
21
+ Dottor Linux Tip Avere alcuni cavi di rete inutilizzati, un secondo router ADSL o uno switch a riposo può essere vitale per l’analisi dei problemi. Un laptop o un tablet con i giusti strumenti per l’analisi già pronti può aiutarvi quando le cose cominciano a impazzire. Infine, dovreste imparare a sistemare i problemi usando l’OS del vostro router, perché essendo a un livello più basso può darvi una prospettiva della situazione completamente diversa.
Solitamente, quando ciò è vero, potete escludere un guasto hardware e la configurazione base di rete dovrebbe essere a posto. Potete quindi passare al controllo del firewall o di altri processi, guardando il traffico di rete. L’utility lsof è usata per elencare i file aperti e dal momento che ogni dispositivo di rete è un file, piuò anche essere usata per visualizzare informazioni riguardanti la rete. Vi serviranno privilegi di root per lanciare lsof, visti i permessi dei dispositivi di rete. Usando il comando lsof –i4 visualizzerete le connessioni IPv4 mentre lsof –i6 mostrerà solo le IPv6. Il comando lsof -u www-data | grep -i ESTABL mostra tutte le connessioni stabilite di proprietà di www-data e può essere utile per capire cosa non va in un server Web malfunzionante. Il comando lsof -nP -iTCP -sTCP:LISTEN mostra quale programma sta ascoltando in una porta TCP e il proprietario del processo. Per stampare informazioni sul sottosistema di rete Linux potete usare netstat. È uno strumento che mostra informazioni sullo stato di rete senza richiedere privilegi di root. È uno strumento molto potente che lavora a livello socket, TCP, UDP, IP e Ethernet. Il principale svantaggio è che funziona solo sulla macchina locale mentre utility come nmap e tcpdump possono visualizzare informazioni di altre macchine. Il comando netstat -r mostra le informazioni di routing della macchina locale; una configurazione del routing sbagliata è causa comune di problemi, specialmente su macchine con più di un’interfaccia di rete. Talvolta potreste voler controllare non solo il traffico attuale ma anche quello passato. Il problema è trovare un modo per memorizzare il traffico passato. Il modo migliore è tramite un database, così da disporre di un linguaggio robusto con cui interrogare i dati senza troppa fatica. Il comando seguente leggerà il file data.
Usare nslookup, host e dig per individuare i server DNS del dominio linuxpro. it. L’utility che scegliete tra queste tre è solo questione di gusti personali
22
tcpdump che contiene traffico catturato usando tcpdump e estrarrà le informazioni desiderate in un formato leggibile da poter poi inserire in un database usando uno script: $ tshark -r data.tcpdump -T fields -e frame.number -e frame. time_relative -e ip.src -e ip.dst -e frame.protocols -e frame.len -E header=y -E quote=n -E occurrence=f frame.number frame.time_relative ip.src ip.dst frame.protocols frame.len 1 0.000000000 82.98.136.22 109.74.193.253 eth:ethertype:ip:udp:dns 108 Potete vedere i risultati delle tre query (sopra) eseguite in un database MySQL che contiene i dati di rete. La prima query mostra le connessioni per protocollo. Il parametro limit 3 viene usato per limitare le righe in output. La seconda query recupera i top10 indirizzi IP sorgente, mentre la terza stampa la lunghezza media di pacchetto per protocollo, assieme al numero totale di pacchetti. SQL è un linguaggio potente per recuperare preziose informazioni da dati storici di rete. Per esempio una query potrebbe rivelare che il problema riguardo la connessione instabile di alcuni client ai relativi server è dato da un traffico particolarmente elevato in particolari orari del giorno. Analogamente potreste capire quale server Web chiude le connessioni a causa del traffico elevato e aggiornarne la RAM o usare un disco rigido più veloce.
Nel mondo reale
Nmap Nmap è uno strumento Open Source, creato da Gordon Fyodor Lyon, che supporta lo scan di porte, l’individuazione di sistemi operativi e le relative versioni. Anche se gli utenti normali possono eseguire diversi scan di Nmap, alcune opzioni particolari richiedono privilegi di root. Nmap può aiutarvi a riconoscere il tipo di
Un database è un ottimo posto per memorizzare dati di rete. SQL può rendervi la vita più facile perché vi permette di cercare nei dati con l’utilizzo di query complesse
dispositivo di rete e i servizi che offre. Potete anche capire se potete comunicare con il dispositivo remoto. Se volete fare un ping a molteplici dispositivi in una sola volta, potete usare il comando nmap -sP 192.168.1.0/24. Il comando nmap -sU macchina farà anche uno scan UDP sulle porte della macchina con nome macchina.
Ecco due scenari reali che potreste incontrare e come applicare queste nozioni per risolvere i problemi. Il primo è: avete installato in una LAN un nuovo router ADSL per connetterla a internet. La LAN usa un hub e uno switch. Per prima cosa è stata provata una connessione Wi-Fi al router e funziona bene, permettendo ai dispositivi di accedere a Internet. Tuttavia, quando l’hub è connesso al router ADSL usando una delle porte del router, nessuno può accedere alla LAN o a internet, nemmeno le connessioni Wi-Fi esistenti! Per risolvere il problema potete usare questo processo: Sconnettete tutti i cavi Ethernet dal router e connettete un laptop al router usando Wi-Fi e DHCP. Usate traceroute e ping per controllare la Wi-Fi. Ammettiamo che sia tutto a posto, e che lo sia anche una richiesta all’interfaccia Web del route via wget.
LAN: strumenti di base Riguardo il routing Il routing è il processo di scegliere un percorso sul quale inviare i pacchetti, azione compiuta perlopiù da dispositivi di rete dedicati chiamati router. Tuttavia, anche un computer può agire da router e più complicata è la topologia di rete, più difficile è scegliere il percorso ottimale. Internet è la rete più grande di tutte. La tabella di routing è il posto dove vengono aggiunte le route; una route è più o meno una regola che corrisponde a un singolo indirizzo di rete e definisce l’indirizzo IP del router del prossimo salto. Se un dispositivo nel percorso selezionato fallisce, TCP/IP e i protocolli di routing cercheranno un altro percorso verso la destinazione. Se un indirizzo IP corrisponde a diverse route, un set di regole predefinite entra in gioco per risolvere l’ambiguità. Il routing statico
assume che l’amministratore di rete inserisca tutte le regole di routing richieste manualmente nella tabella di routing. Nel routing dinamico (o adattivo), le route necessarie vengono scoperte con protocolli particolari, chiamati protocolli di routing dinamico. Questi ultimi si scambiano pacchetti speciali, chiamati aggiornamenti di routing, che vengono aggiunti alla tabella di routing. La vostra distribuzione Linux può usare molteplici interfacce di rete ma solo una di queste avrà un valore di default gateway. Il modo più semplice per vedere le informazioni di routing nella vostra macchina Linux è usando netstat -nr. Il marchio più famoso per i router è sicuramente Cisco. Il sistema operativo di Cisco è chiamato Cisco IOS e qui vedete la tabella di routing di un router ADSL Cisco 877W.
Connettete una macchina a una delle porte switch del router usando un cavo Ethernet. Controllate che la macchina riceva la configurazione TCP/IP usando DHCP; in questo caso la macchina sta funzionando correttamente. Il problema sta quindi in una delle porte dell’hub. Sconnettete tutti i cavi dall’hub problematico e connettetelo al router. Quindi connettete i dispositivi Ethernet fino a che uno di questi viene connesso alla porta che causa i problemi: ecco la radice! L’ultimo passo è riavviare il router e rifare tutto il processo senza usare la porta incriminata dell’hub. Se tutto funziona avete risolto il problema! Il secondo scenario è più semplice: una macchina Linux viene
Questa è la tabella di routing di un server Linux e un router Cisco 877W. Dall’output potete vedere quanto è più complicato il dispositivo Cisco
impostata per ricevere i messaggi di log di un router Cisco e il router è impostato per inviare i messaggi di log alla macchina Linux, ma nella macchina Linux non si vede nulla. La macchina Linux usa il servizio rsyslog per ricevere i messaggi. Solitamente c’è un ritardo da quando rsyslog riceve i dati e questi vengono scritti nel file di log. Dal momento che rsyslog è un servizio che ascolta sulla porta 514, potete usare tcpdump 'udp port 514' per controllare se c’è traffico di rete per il servizio sulla macchina Linux. Una volta appurato che il traffico arriva, potete capire perché non viene scritto nei file di log. Allo stesso scopo potevate usare WireShark ma lanciarlo in una macchina remota non è sempre possibile, quindi non sottovalutate il potere degli strumenti a riga di comando!
Questo grafico visualizza con R i valori del campo frame.time_ relative
23
+ Dottor Linux
Problemi di rete: riga di comando Come gestire da campioni i blocchi della rete con le vostre armi più fidate: netstat, netcat e lsof presente in tutte le installazioni Unix. Il consiglio che segue si applica a tutte e tre le utility: le porte 0-1024 sono ad accesso imitato e possono essere usate solo dall’utente root, quindi è meglio evitare di usarle e sceglierne altre, posto che non siano già in uso da un processo diverso. Se avete privilegi di root potete usare le porte che volete. Tutti questi comandi si imparano meglio usandoli invece che leggendo istruzioni, quindi durante la lettura di questo articolo cominciate a sperimentare!
Usare netcat
S
ono tre gli strumenti da riga di comando legati al networking di cui parliamo in questo articolo: netstat, netcat e lsof. Netcat (nc) è un’utility Unix molto potente e utile che legge e scrive dati su connessioni di rete, attraverso TCP o UDP. La maggioranza delle opzioni a riga di comando non richiedono privilegi di root per funzionare, cosa molto comoda se non avete accesso amministrativo alla macchina. Potete installare facilmente netcat in un sistema Debian eseguendo $ apt-get install netcattraditional come root. C’è un’implementazione leggermente diversa che può essere installata con il pacchetto netcatopenbsd. Quest’ultima versione supporta IPv6, proxy e i socket Unix, mancanti nella versione tradizionale. Se non fate uso di tali caratteristiche non noterete differenze tra le due varianti. L’utility Isof è stata creata da Victor Abell per visualizzare elenchi di file aperti. Dal momento che in Unix ogni dispositivo è un file, lsof può gestire anche interfacce di rete e mostrare informazioni sulle connessioni di rete. Potete installare lsof in un sistema Debian con il comando $ apt-get install lsof. Netstat, al contrario, è uno strumento standard
24
La forma generale del comando netcat è $ netcat [opzioni] host porta. L’uso più frequente di netcat è per risolvere problemi su servizi remoti. La singola opzione più importante di netcat è -u, che permette a netcat di lavorare in modalità UDP, come server o come client. Ciò significa che netcat è in grado di controllare connessioni UDP, cosa molto importante perché telnet può lavorare solamente con connessioni TCP. Se -u non è presente, netcat userà TCP. Il comando $ netcat -vv -u 8.8.8.8 53 prova a controllare la funzionalità di un server DNS usando UDP. Analogamente potete lanciare un server UDP se combinate le opzioni –l e –u. La seconda opzione più importante è -v che rende l’output di netcat più verboso. Se volete ancora più output potete usare -vv al posto del solo -v. Il comando $ ncunWebServer 80 farà collegare netcat a un server Web. Per simulare il resto della parte client della connessione dovrete scrivere $ GET / HTTP/1.1 e premere il tasto Invio due o tre volte. La prossima versione fa tutte queste cose in una volta senza richiedere ulteriori azioni: $ echo -en “GET / HTTP/1.0\n\n\n” | netcat www.linuxpro. it 80 La prossima tecnica dev’essere usata con molta attenzione, dal momento che può compromettere la sicurezza di un sistema Linux, se usata impropriamente. Netcat vi dà la capacità di trasformare qualsiasi processo Linux in un server con l’aiuto del parametro –e. Un ottimo candidato come processo server è l’eseguibile /bin/bash. La parte server dovrebbe iniziare con $ nc -vv -l -p 5432 -e /bin/bash. Ora, un client remoto piò connettersi alla macchina con il comando $ nc -vv hostRemoto 5432. Dopo aver eseguito l’ultimo comando potete cominciare a lanciare comandi come se foste nella macchina remota. Il problema, comunque, è che la connessione non dispone di alcuna forma di crittografia. Lo screenshot nella pagina seguente
Quale strumento usare? Rispondere a questa domanda è un’impresa tutt’altro che semplice. Il miglior consiglio è quello di usare lo strumento che conoscete meglio, posto che sia in grado di risolvere il vostro problema. Il vantaggio principale di netstat è che la maggior parte delle sue opzioni da riga di comando non richiedono privilegi di root per essere usate. Quello che dovrebbe essere chiaro è il fatto che netcat
svolge un lavoro completamente diverso dagli altri due. È uno strumento che può aiutarvi a controllare le connessioni di rete tra due macchine, così come la qualità della connessione. D’altra parte, sia lsof che netstat mostrano informazioni riguardo porte aperte, connessioni stabilite, ecc. solo sulla macchina locale. Ogni strumento ha i propri vantaggi e svantaggi ed è vostro compito
mostra come sia possibile usare netcat per controllare la velocità di rete tra due macchine Linux: un altro uso intelligente dello strumento! Usando l’utility bc potete anche scoprire che la velocità di rete era di circa 22.980.367 byte per secondo, piuttosto buono per una rete locale. Come capirete, netcat è più appropriato per provare la corretta operatività di una rete e dei servizi che girano sui vari server. Il prossimo strumento, lsof, è più appropriato per controllare l’operatività della macchina locale.
Usare lsof I due svantaggi di lsof sono che vi servirà accesso da terminale alla macchina sulla quale volete lanciare lsof e che richiede privilegi di root per girare. La maggior parte del tempo non lancerete lsof senza parametri da riga di comando, poiché l’output prodotto sarebbe troppo difficile da leggere: $ lsof | wc 4931 44630 709518 Se scrivete semplicemente lsof come normale utente Linux, ci saranno diverse righe contenenti il messaggio Permission denied per avvisarvi che anche se c’è un processo visibile, che potete visualizzare anche con il comando ps, non avete i permessi richiesti per leggerlo completamente mysqld 31393 31407 mysql rtd unknown /proc/31393/ task/31407/root (readlink: Permission denied) L’opzione –i indica a lsof di visualizzare informazioni riguardo la rete. In questo modo, quando l’utente root lancia il comando lsof -i, otterrà tutti i file di rete Internet. L’output di lsof è una serie di colonne. La colonna COMMAND contiene i primi nove caratteri del nome del comando Unix associato al processo. La colonna PID mostra l’ID del processo, mentre la colonna USER mostra l’utente proprietario del processo. La colonna TID mostra il task ID e un TID vuoto indica un processo. La colonna FD sta per File Descriptor: i valori presenti possono essere cwd, txt, mem e mmap. La colonna TYPE mostra il tipo del file: regolare, directory, socket, ecc. La colonna DEVICE contiene i numeri di device separati da virgole. Il valore della colonna SIZE/OFF è la dimensione del file o il file offset in byte. Il valore della colonna NODE è lo Unix node number. Infine, la colonna NAME mostra il nome del punto di mount e del filesystem nel quale il file risiede, o l’indirizzo Internet. Gli stati possibili per una connessione TCP sono LISTEN, CLOSED, ESTABILISHED, SYN-SENT, SYN-RECEIVED, CLOSE-WAIT, LAST-ACK, FIN-WAIT-1, FIN-WAIT-2, CLOSING e TIME-WAIT. Per capire quale eseguibile ascolta in una specifica porta usando TCP, dovrete lanciare il comando
come amministratori di sistema o di rete trovare il modo più semplice e veloce per risolvere un problema usando qualsiasi strumento vogliate! In conclusione, usate quello che funziona meglio per voi; se non siete in grado di risolvere un problema con gli strumenti che conoscete è comunque un chiaro segnale che dovete impararne qualcuno di nuovo!
$ sudo lsof -nP -iTCP -sTCP:LISTEN. Lo screenshot a pagina seguente mostra l’output del comando precedente che mostra tutte le porte aperte. Come potete vedere anche dall’output, mostra sia le connessioni IPv4 che IPv6. Se volete mostrare solo le connessioni IPv4, dovreste aggiungere -i 4. Per mostrare i processi che ascoltano sulla porta 80, usando sia TCP che UDP, lanciate il comando lsof -i :80. Se nessun processo ascolta su una porta, il servizio al quale state cercando di accedere è probabilmente fermo e dovreste farlo ripartire. Il comando lsof -u mysql mostra tutti i file aperti di proprietà dell’utente mysql. Se voleste vedere tutti i file aperti non di proprietà di tale utente, vi basterà invertire il parametro così: lsof -u ^mysql. Questa particolare variante del comando lsof vi può aiutare a risolvere problemi di rete che hanno a che fare con i permessi dei file Linux. Potete trovare tutte le connessioni LISTEN di proprietà dell’utente mysql lanciando il seguente comando come root: # lsof -u mysql | grep -i LISTEN Questo comando vi può aiutare a capire se un determinato servizio accetta connessioni da Internet o solamente da localhost. Il seguente comando trova tutte le connessioni di rete che arrivano da o vanno verso www. linuxpro.it, che ha indirizzo IP 77.239.137.131: # lsof -i @77.239.137.131 L’utility lsof è quindi particolarmente utile per verificare che un processo sia in esecuzione e disponibile ad accettare nuove connessioni. Quindi potete usare netcat per provare a connettervi a tale porta aperta e provare uno scambio di dati. Netstat è uno strumento UNIX molto utile che lavora
Tip Nessun singolo strumento può risolvere ogni possibile problema. Dovreste quindi provare a imparare quanti più strumenti possibile. Gli strumenti a riga di comando hanno il vantaggio di lavorare su una connessione remota che talvolta può essere molto pratico. Un altro strumento molto potente è tshar (http://bit.ly/ tshark) che ha anche una versione grafica chiamata Wireshark (www. wireshark.org).
Questo screenshot mostra come potete usare netcat per calcolare rapidamente la velocità di rete tra due macchine
25
+ Dottor Linux a livello Socket, TCP, UDP, IP e Ethernet. Se usato con il parametro -s, netstat mostra le statistiche per ogni protocollo, molto comodo per capire se ci sono troppi errori nella vostra macchina.
Usare netstat Il comando $ netstat -l -A inet mostra tutte le connessioni Internet in ascolto, sia TCP che UDP, laddove $ netstat -l -tcp -A inet visualizza solamente le connessioni TCP. Se volete mostrare informazioni su un protocollo specifico, potete lanciare un comando simile a $ netstat -a | grep -i
http che visualizza informazioni riguardo il solo protocollo HTTP. Il comando $ netstat -a -t | grep -i LISTEN mostra tutte le porte in ascolto. Il comando –v indica a netstat di aumentare la verbosità dell’output. Il comando $ netstat -ltpe mostra il nome dell’utente proprietario di un processo. Dal momento che sfrutta -p, è suggeribile lanciarlo come root per mostrare tutti i processi. Lo screenshot a pagina seguente mostra l’output del comando $ netstat -nr. La flag U indica che la route è in uso. La flag G indica il gateway di default. La flag H indica che la route è verso un host e non verso una rete. Tenete a mente che il comando $ route -e produce lo stesso output di $ netstat -r. Notate che il secondo output è da una macchina Linux che gira sotto la versione Mac OS X di VirtualBox: non direste mai che è in una macchina virtuale! Per rivelare tali informazioni, vi servirebbe un’utility come traceroute. L’opzione –W fa sì che netstat mostri la URL completa per ogni connessione, dal momento che il comportamento di default è di troncare l’output per rimanere all’interno dello schermo. Quindi, l’output del comando $ netstat -tup -W mostrerà tutta la URL per ogni connessione. L’utility netstat è molto pratica per controllare connessioni attive nella vostra macchina locale. Il suo vantaggio è che netstat non richiede molte risorse per lavorare, il che è un bene quando avete un server sotto sforzo.
Tecniche avanzate
L’output del comando lsof mostra i processi in ascolto su tutte le porte TCP aperte, assieme all’utente proprietario di ogni processo
Le caratteristiche uniche di netcat vengono rivelate nell’eseguire azioni che non immaginate di poter fare con altre utility. Una di queste rare cose è il trasferimento di file, ovvero la possibilità di agire come un server FTP semplificato. Per trasferire un file localmente, per prima cosa dovete lanciare la parte server usando: $ cat fileDaTrasferire | nc -l 4567 Quindi potete ottenere il file usando: $ nc localhost 4567 > fileDaTrasferire L’unico svantaggio di questo approccio è che dovrete scegliere il file da trasferire in anticipo. Se voleste trasferire più di un file, dovreste lanciare processi netcat aggiuntivi. Questa tecnica vi può aiutare a capire se potete trasferire piccole quantità di dati da una macchina a un’altra. Analogamente potete usare netcat per trasferire intere directory da una macchina a un’altra. Se non volete creare file temporanei vi servirà l’aiuto della utility tar. Potete lanciare la parte server come $ tar -cvf - directory | nc -l 1234 e, alla stessa maniera, potete ottenere la directory nella macchina locale come segue:
Parliamo di IPv6... IPv6 è stato sviluppato dalla IETF (Internet Engineering Task Force) e il suo scopo è risolvere il problema imminente della fine degli indirizzi IPv4. IPv6 usa indirizzi a 128 bit laddove IP usava indirizzi a 32 bit. IPv6 è già in uso e rimpiazzerà a breve IPv4, diventando il protocollo Internet dominante, quindi è bene sapere che tutti gli strumenti presentati supportano IPv6 con l’aiuto
26
di parametri specifici da riga di comando. L’utility lsof può mostrare connessioni IPv6 quando combinato con -i6 o -i 6. L’utility netcat può funzionare in modalità IPv6 quando usata con il parametro -6. Usando netstat potete vedere la tabella di routing di IPv6 eseguendo netstat -6 -rn. L’output è molto più complesso del comando netstat -nr, il che prova che IPv6 è un protocollo un
po’ più complicato di IPv4. Analogamente il comando netstat -a -A inet6, equivalente a netstat -a -6, mostra tutte le connessioni Internet attive (sia server sia stabilite). Per riferimento, sia ping sia traceroute hanno una versione IPv6 chiamata rispettivamente ping6 e traceroute6. Potete saperne di più leggendo le specifiche ufficiali su www.ietf.org/rfc/rfc2460.txt.
Il terminale per i problemi di rete Usare netcat in sostituzione di nmap L’utility netcat vi permette di specificare un range di porte in cui fare port scanning. Il comando seguente indica a netcat di scansionare l’indirizzo 192.168.2.1 usando un range di porte da 20 a 40: $ netcat -z -v -n 192.168.2.1 20-40 L’opzione –n indica a netcat di disabilitare il lookup DNS per l’indirizzo IP fornito, mentre –z indica di inviare zero dati, ovvero di chiudere la connessione appena aperta senza inviare alcun dato. Notate che non potete
usare un range di porte per far sì che netcat ascolti su molteplici numeri di porta con un solo comando: per far ascoltare netcat su molteplici porte dovrete lanciare molteplici processi netcat. Lo script seguente risolverà il problema: #!/bin/bash fromPort=2000 toPort=2100 for (( i = fromPort+1; i
View more...
Comments