------------------------------------------------------------------------------ Introduzione all'uso di Linux ver 0.2 ------------------------------------------------------------------------------ By: WhiteR4bbit (whiter4bbit[at]linuxmail[dot]org) linuxhowtos.altervista.org Licenza: FDL Ultimo aggiornamento: Novembre 2003 Testing: Mandrake 9.1 (2.4.21-0.13mdk) ------------------------------------------------------------------------------ SOMMARIO: 0) Changelog 1) Presentazione 2) La shell 3) Comandi principali 4) I device 5) L'albero delle directory 6) La gestione dei programmi 7) I moduli 8) Le console di emergenza ------------------------------------------------------------------------------ 0) Changelog 0.2 [Novembre 2003] Aggiunta qualche riga riguardo i filesystem supporati, all'interno della parte 3 0.1 [Agosto 2003] Documento originale 1) Presentazione Nonostante questo sito sia dedicato ai newbie del mondo di Linux, e quindi ogni how-to è stato scritto tenendo a mente che chi lo leggerà non è un kernel-hacker, è impossibile seguire alcuni tutorial senza prima aver mosso i proverbiali "primi passi" su Linux; ci saranno inoltre alcuni termini o concetti che torneranno spesso nei tutorial, e per questo ho deciso di pubblicare anche questo file. Benvenuti nella tana del bianconiglio, lasciatevi guidare tra le meraviglie del mondo Linux... 2) La shell Innanzitutto introduciamo la shell: questa benedetta cosa che sta alla base di tutto ciò che farete su Linux. Sia chiaro che shell, console e terminale vengono utilizzati per indicare la stessa cosa. Per scoprire cosa, cliccate sul terzo tasto da sinistra del vostro pannello sul desktop (se utilizzate KDE, ma anche in gnome è lì, da qualche parte), e vi si aprirà Konsole (o Xterm, o gnome-terminal... a seconda del window-manager scelto). Subito vi troverete davanti un prompt di comandi; ecco, è da qui che dovrete impartire tutti i comandi che troverete scritti in questo sito. Ci sono sostanzialmente due tipi di shell, quella di utente normale e quella di superutente (o root); la prima viene indicata con il simbolo $, mentre la seconda con il simbolo #. Questo significa che tutti i comandi preceduti da $ possono essere eseguiti da utente normale, mentre quelli preceduti da # devono essere eseguiti da root (generalmente per questione di permessi). Come fare dunque per diventare root ed eseguire i comandi preceduti da #? E' semplice, per loggarvi come root digitate "su" (senza virgolette) e premete invio. Ora dovrete inserire la password di root: essa non verrà stampata a schermo mentre la digitate per questioni di sicurezza, ma non preoccupatevi, voi scrivetela e date nuovamente invio. Ecco fatto, siete root. Ovviamente i simboli $ e # servono solo, appunto, per indicare con quale utente eseguire i comandi e NON vanno inclusi nei comandi. Quindi se vi dico che per tornare da root a essere un utente normale dovete digitare # exit, significa che, dopo esservi loggati come root, dovrete scrivere "exit" senza virgolette e premere invio. 3) Comandi principali Bene, ora individuata la nostra fidata shell e aver appreso le basi di come utilizzarla, vediamo i comandi principali per poter utilizzare il sistema operativo. Per spostarvi da una cartella (che in Linux si chiamerà sempre "directory") ad un'altra, utilizzate il comando $ cd (change directory) seguito dal nome (e eventualmente il percorso) della directory in cui volete entrare. Ad esempio il comando $ cd /usr/bin Vi porterà all'interno della sottodirectory bin nella directory /usr. Come avrete notato, Linux ha un modo molto diverso rispetto a Windows di distribuire file e cartelle; tutto parte da una directory principale (detta radice, o root -da non confondere con il superutente-) che viene indicata con il simbolo / Questo significa che digitando $ cd / Vi ritroverete all'inizio del vostro filesystem, e che digitando $ cd /usr da qualunque posizione, sottintendete che la directory usr parte dalla directory radice e non è una sottodirectory. Omettendo il simbolo / oppure facendolo anticipare da un punto, invece, si sottintende che la cartella in cui si vuole entrare è una sottodirectory della cartella in cui si è in quel momento. Ad esempio, se si è in /usr e si digita uno dei due comandi $ cd bin $ cd ./bin ci si ritroverà sempre nella nostra /usr/bin. Mentre digitando: $ cd /bin ci si ritroverà in /bin, che è tutt'altra directory. Ricordatevi quindi che con "path completo" si intende il percorso di una directory a partire dalla radice, quindi sempre preceduto da / Se il path non è preceduto da /, esso non partirà dalla radice, ma dalla directory corrente (quella in cui siete mentre digitate il comando). Per conoscere il path completo della directory corrente, e sapere quindi con precisione dove siete, digitate il comando $ pwd che sta per "print working directory". Per sapere quali file sono presenti nella directory corrente, digitate invece $ ls Se volete che vengano elencati anche i file nascosti (tutti i file nascosti in linux hanno un nome preceduto da un punto, quindi qualunque file o cartella col nome che inizia per un punto che vedete è un file nascosto o una cartella nascosta) digitate $ ls -a Cos'è quel "-a"? E un parametro che viene passato al comando (programma) "ls" e che gli dà delle indicazioni su come agire; in questo caso "a" sta per "all" e gli dice appunto di agire su tutti i file della directory corrente. I parametri verranno usati moltissimo, e vi permettono di sfruttare a fondo ogni programma di Linux; vediamo ora alcuni casi in cui i parametri sono in realtà dei file a vostra scelta. Per copiare un file da una directory all'altra, usate il comando $ cp: $ cp /home/user/file.txt /home/user/Documents/ In questo caso i parametri passati sono due path, quello del file da copiare e quello della directory in cui copiarlo. Per copiare invece un'intera directory, dovrete aggiungere anche il parametro "-r" $ cp -r ./Documents /mnt/windows/backup/Documents In questo caso avete appena fatto il backup dell'intera cartella Documents in un'altra partizione. Se volete invece rinominare o spostare un file, dovrete usare il comando $ mv: $ mv flie.txt file.txt In questo caso avete rinominato il file "flie.txt" in "file.txt"; $ mv file.txt /home/user/Documents/ In questo caso avete spostato "file.txt" nella vostra cartella Documents. Per creare un link (simbolico) a un file dovrete invece utilizzare un ulteriore comando: $ ln -s /mnt/windows /home/user In questo caso avete creato nella vostra home un link a una cartella. Badate che l'opzione "-s" dev'essere obbligatoriamente presente. Vale la pena fare un breve excursus circa i filesystem supportati da Linux: i filesystem nativi sono ovviamente supportati in toto, quindi copiare o spostare un file in una partizione ext2/3, ReiserFS, XFS o JFS non dà il minimo problema. I filesystem Microsoft invece danno qualche problema: nel caso di FAT32 semplicemente non potrete creare link simbolici, e se eseguite l'operazione da utente verrete avvertiti che non avete il permesso di preservare l'orario e impostare i permessi (nel caso di mv); i file verranno in ogni caso copiati o spostati correttamente. Nel caso invece di NTFS, per ora il supporto in scrittura è considerato ancora sperimentale; questo significa che, a meno di apposite ricompilazioni (comunque rischiose) del kernel, non potrete copiare o spostare i file in una partizione NTFS. Potrete invece leggere tranquillamente i dati presenti nella partizione. Infine, per cancellare un file utilizzate rm, seguito dall'opzione "-f" se non volete che vi si chieda conferma, e dall'opzione "-r" se dovete cancellare un'intera directory $ rm file1.txt rimuovere regular file `file1.txt'? $ rm -f rile2.txt $ rm -rf ./Documents Come vedete, nel primo caso vi ha chiesto conferma; in questi casi premete sempre "y" per confermare e "n" per annullare. Nel secondo caso avete cancellato un file e nel terzo una directory, entrambi "forzando" il sistema a non chiedervi alcuna conferma. A proposito di file e cartelle, ricordatevi che i file in linux non vengono generalmente catalogati a seconda dell'estensione; questo significa che si chiamate un file "classifica", nessuno vi stresserà dicendo "hai cambiato estensione al file!", e se esso è un file di testo, verrà normalmente aperto con qualunque editor di testo. Per una questione di compatibilità con Windows però, è consigliabile dare un'estensione ai file (ad esempio .txt per i documenti di testo), altrimenti quando li passerete a chi usa Windows, verrete insultati :) Un'altra cosa importante da sapere è che in linux i nomi di file e cartelle sono case-sensitive e non ammettono gli spazi; questo significa che in una stessa cartella potete tenere un file "classifica.txt" e un altro file "CLASSIFICA.TXT", che potete chiamare una cartella "Mia_musica" ma non "Mia Musica". In realtà vi è un compromesso che vi permette tranquillamente di spostarvi anche tra cartelle i cui nomi contengono spazi: si tratta di utilizzare il carattere "\" prima di ogni spazio. Questo significa che, ad esempio $ cd Documents and Settings vi darà errore, mentre $ cd Documents\ and\ Settings vi porterà nella vostra vetusta cartella "Documents and Settings". Un altro utilissimo consiglio per spostarvi serenamente tra le directory, è quello di usare il tasto TAB: esso si trova a sinistra del tasto "Q" e premendolo la shell completerà il nome della cartella o del file a cui volete accedere. Ad esempio scrivendo $ cd Doc e poi premendo TAB (ovviamente prima di invio) otteremo: $ cd Documents in automatico. Se ci sono più file o cartelle col nome che inizia per "Doc" vi verranno presentate tutte le possibilità. Ricordatevi che potete anche fare copia incolla in una console; per incollare del testo in una console digitate i tasti "SHIFT+Ins" (CTRL+V non funziona). Infine sappiate che se / indica la directory radice, ~ indica la vostra home directory; quindi se siete loggati come pippo, digitando $ cd ~ vi ritroverete in /home/pippo, e digitando $ cd ~/Documents nella vostra cartella Documents; la tilde si fa premendo ALT Gr+ì E se volete creare una nuova directory, il comando è mkdir: $ mkdir ~/musica creerà la cartella "musica" all'interno della vostra home. Un ultimo appunto va di dovere al comando "man"; esso fornisce aiuto e spiegazioni riguardo a qualunque comando o programma abbiate installato sul vostro sistema. Quindi digitando ad esempio: $ man rm verrà visualizzato il manuale del comando rm, con la spiegazione delle sue funzioni e delle sue opzioni, nel dettaglio. Per uscire da un manuale premete il tasto Q. I manuali sono una fonte molto utile di informazioni, ed è quindi consigliato farne sempre uso prima di cercare soluzioni da altre parti. 4) I device Un'altra cosa cruciale sono i dispotivi (device); in linux si ha il concetto di "mount" di un dispositivo (o periferica). I dispositivi di memoria di massa (quindi hard disk, cd-rom, floppy, pen-drive, ecc.), come ogni altra periferica, vengono visti come dei file speciali e per essere utilizzati hanno bisogno di essere "montati" in una directory appositamente creata (chiamata "punto di mount") e che conterrà i dati in essi contenuti. A dire il vero oggigiorno in alcune distribuzioni esiste il concetto di "automount", secondo il quale vi basta cliccare e, ad esempio, viene automaticamente montato il cdrom e aperta la directory del punto di mount. Ma è comunque una nozione molto utile a sapersi; vediamo ad esempio come si potrebbe creare un punto di mount per una partizione Windows, e successivamente montarla per poterla utilizzare: # mount -t vfat /dev/hda1 /mnt/windows # mount /mnt/windows Allo stesso modo una periferica può essere "smontata"; ad esempio un lettore cdrom prima montato, dev'essere smontato per poter estrarre il cd in esso contenuto: # umount /mnt/cdrom # eject /mnt/cdrom 5) L'albero delle directory Diamo ora una rapida occhiata al nostro albero di directory, per non perderci subito: Se listate il contenuto di / vedrete le principali directory del vostro filesystem. /home contiene le cartelle personali di ogni utente. Se avete creato un utente "username", in /home/username ci saranno tutti i suoi file, e solo lui e root avranno totali permessi su di essi. /root è la home dell'utente root. /mnt è la directory che contiene i punti di mount in cui vengono montati i dispositivi, quali il cdrom, le partizioni e il lettore floppy, ma anche una fotocamera USB. /dev è la directory che contiene i file speciali che rappresantano i dispositivi collegati al vostro computer /usr è una sorta di "directory" di sistema, in cui si installano generalmente i programmi. ogni programma viene però suddiviso in diverse sottodirectory di /usr. Diciamo semplicemente che in /usr/bin sono presenti i collegamenti agli eseguibili dei programmi principali. /etc è una directory che contiene file di configurazione. /boot contiene i file necessari all'avvio del sistema. Le altre directory hanno un'importanza più marginale, e non vengono trattate qui. 6) La gestione dei programmi Un altro aspetto importante da apprendere è la gestione dei programmi. Innanzitutto scordatevi i .exe di Windows, come abbiamo già visto in Linux l'estensione non conta, perciò non perdete tempo a cercare il file setup.exe. Installare un programma sotto Linux è generalmente una cosa più complessa rispetto al farlo sotto Windows. Ogni distribuzione ha un suo sistema di pacchetti, e in questo caso le cose non sono particolarmente difficili. Ad esempio su debian esistono i .deb, su Mandrake (ma anche su Red Hat e SuSE) i .rpm. Per installare un programma rilasciato ad esempio in rpm per mandrake, basta di solito cliccare sul file dalla modalità grafica (come su Windows, insomma). Ma non dimentichiamoci che il cuore di Linux è la shell, e quindi è consigliabile saperla utilizzare anche per installare i programmi "pacchettizzati". Ad esempio un rpm su Mandrake può essere installato digitando, quasi sempre da root: # urpmi pacchetto.rpm Altri software però vengono rilasciati in formati non "pacchettizzati", ad esempio sottoforma di archivi compressi .tar.gz; in questo caso la procedura cambia da programma a programma, ma quella più usata è: # tar -xzvf programma.tar.gz # cd programma # ./configure # make # make install In ogni caso la cosa migliore da fare (prendetela come una procedura STANDARD) è scompattare l'archivio e prima di ogni altra cosa leggersi il file README (o INSTALL) ivi contenuto, con le istruzioni per installare il programma. Altri software vengono rilasciati con un installer sottoforma di script di shell (ad esempio install.sh), il quale va lanciato con: # sh install.sh Ma anche solo con # ./install.sh Vediamo ora dunque come lanciare i programmi una volta che essi sono stati installati correttamente. La maggior parte di essi installa anche un link simbolico in una delle directory bin o sbin; questo cosa significa? semplicemente che per far partire il programma specifico, basta digitarne il nome in shell; questo verrà ricercato in una delle directory succitate e, se trovato, sarà eseguito. Le principali directory in cui vengono installati questi "eseguibili" sono: /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin Quindi, ad esempio, per lanciare "$ /usr/bin/mozilla" vi basterà digitare "$ mozilla". Solitamente i nomi dei programmi sono scritti tutti in minuscolo, quindi attenzione a non sbagliare. Quando lanciate un programma da console potete fare in modo che esso venga eseguito in backround, senza quindi occuparvi la shell stessa; ad esempio per eseguire mozilla da una shell, e poter poi utilizzare la stessa shell anche con mozilla aperto, digitiamo: $ mozilla & ed ecco fatto. Se vogliamo bloccare un processo da shell (magari perchè in loop infinito, oppure perchè non prevede di stopparsi da solo) basta premere CTRL+C. Ad esempio lanciate glxgears: $ glxgears Vi accorgerete che "non si ferma più!", quindi stoppatelo voi premendo CTRL+C. Nel caso in cui un'applicazione vada in crash e non riusciate a chiuderla, dovrete utilizzare il comando $ kill -9 PID Cos'è il PID? Trattasi del "Process IDentifier", un numero intero che identifica ogni processo (diciamo "ogni programma", anche se non è del tutto corretto) in esecuzione sul vostro PC; il "-9" è un comando che forza l'uccisione del processo, potete provare a ometterlo ma è quasi sempre necessario. Come fare invece per individuare il PID del programma che è crashato? si utilizza il comando "ps", che elenca tutti i processi in esecuzione in quel momento, seguito dal comando "grep" che dirà a ps di elencare solo il programma che avete richiesto. Ad esempio, se vi è andato in crash mozilla, dovrete agire come segue: $ ps aux | grep mozilla Vi verranno mostrate un paio di righe, una per processo; il primo dato di ogni riga è l'utente che ha eseguito il programma, il secondo è il PID del processo, l'ultimo contiene il nome del programma; assicuratevi di prendere il PID giusto (non quello di "grep mozilla" ad esempio), e passatelo a kill, che procederà con "l'esecuzione". Ad esempio se il PID di mozilla in quel momento è 3367, digitate: $ kill -9 3367 Ed ecco fatto; se volete killare più programmi vi basta aggiungere altri PID: $ kill -9 3367 3368 2049 7) I moduli Un'altra cosa che vi sarà utile comprendere è il concetto di modulo, dato che ritornerà abbastanza spesso negli HOWTO di questo stesso sito. I moduli sono delle parti del kernel (il kernel è il cuore del sistema operativo) separati, che possono essere caricati o meno a seconda che se ne ha il bisogno; questo permette di non caricare nel kernel cose inutili, appesantendo stupidamente il sistema. Spesso i moduli del kernel sono paragonabili ai driver sotto Windows; ad esempio il modulo "radeon" è un driver per le schede video ATI, una controparte in Linux di quelli che sono i Catalyst su Windows. E' intuibile quindi che i moduli verranno spesso caricati quando si installerà o configurerà una nuova periferica. Vediamo dunque come fare: Tutto ciò che riguardo i moduli va fatto ovviamente da root, essendo essi pur sempre parte del kernel. Facciamo degli esempi prendendo in considerazione il modulo "radeon" di cui sopra. Per caricarlo nel sistema, si usa il comando "modprobe": # modprobe radeon Per rimuoverlo una volta caricato, bisogna passare a modprobe il parametro "-r": # modprobe -r radeon Per avere una lista dei moduli caricati al momento sul proprio sistema, digitate invece: # lsmod Se volete che un modulo venga caricato ad ogni avvio del PC (ad esempio perchè è una periferica che usate spesso se non sempre, come ad esempio la scheda video o audio), dovete aggiungere il nome del modulo al file /etc/modules, che in pratica si occuperà di far eseguire un "modprobe radeon" ad ogni avvio del kernel. Aprite quindi il file /etc/modules con un editor di testo (da root, mi raccomando), scrivete semplicemente "radeon" (senza virgolette) alla fine del file, e salvate. 8) Le console di emergenza Un ultimo spazio in questo lungo documento va dedicato alle situazioni di emergenza: Può capitare che abbiate dei problemi con XFree86. Chi è costui? E' semplicemente la modalità grafica di Linux, il motore che vi permette di avviare KDE, gnome e qualunque altro window-manager. Potreste usare Linux anche senza X (sinonimo di XFree86), senza quindi alcuna modalità grafica, e vi trovereste davanti semplicemente la console. Se ad esempio va in crash un'applicazione e questo rende X quasi inutilizzabile (forti rallentamenti, eccetera), potete accedere a una console di emergenza e killare da lì l'applicazione colpevole. Premete CTRL+ALT+F2 e vedrete aprirsi una shell a tutto schermo... ecco come apparirebbe Linux senza XFree86. Da qui killate quindi il processo, nel modo descritto poco sopra, e tornate a X premendo CTRL+ALT+F7. A dire il vero avete a disposizione più di una console di emergenza, e potete accedere ad ognuna premendo CTRL+ALT+F1/F6 (uno tra i tasti F1,F2,F3,F4,F5,F6). Può capitare anche che vogliate riavviare X; in questo caso digitate, dalla vostra "mega console" a tutto schermo: # init 3 e successivamente # init 5 Oppure può capitare che, ad esempio sempre per un crash, vogliate ritornare al login di X anzichè aprire una console d'emergenza. In questo caso premete CTRL+ALT+BACKSPACE Se invece non vi parte proprio per nulla la modalità grafica, ad esempio per problemi al monitor o alla scheda video, potete utilizzare l'opzione di avvio "failsafe" che vi si presenterà tra le altre al boot: sceglietela dunque, dopodichè specificate che volete accedere a una console di rescue e inserite la password di root. Da qui potrete, per esempio, modificare con un editor il file di configurazione di XFree86 per risolvere il problema. Ecco, terminato di leggere questa guida, siete più che pronti per entrare nel mondo Linux a testa alta, e vi sentirete meno spaesati leggendo i vari HOWTO. E' il momento di fare sul serio ora, datevi alla pratica e ottimizzate al meglio il vostro sistema.