Copyright © 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Slackware Linux, Inc.
Slackware Linux is a registered trademark of Patrick Volkerding and Slackware Linux, Inc.
Linux is a registered trademark of Linus Torvalds.
FreeBSD is a registered trademark of the FreeBSD Foundation.
America Online and AOL are registered trademarks of America Online, Inc. in the United States and/or other countries.
Apple, FireWire, Mac, Macintosh, Mac OS, Quicktime, and TrueType are trademarks of Apple Computer, Inc., registered in the United States and other countries.
IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390, and ThinkPad are trademarks of International Business Machines Corporation in the United States, other countries, or both.
IEEE, POSIX, and 802 are registered trademarks of Institute of Electrical and Electronics Engineers, Inc. in the United States.
Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.
Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
Netscape and the Netscape Navigator are registered trademarks of Netscape Communications Corporation in the U.S. and other countries.
Red Hat, RPM, are trademarks or registered trademarks of Red Hat, Inc. in the United States and other countries.
XFree86 is a trademark of The XFree86 Project, Inc.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and Slackware Linux, Inc. was aware of the trademark claim, the designations have been followed by the “™” or the “®” symbol.
Il sistema operativo Slackware Linux è una potente piattaforma per sistemi Intel. E' progettato per essere stabile, sicuro, e funzionale sia come server high-end, sia come potente workstation.
Questo libro è progettato per permettervi di cominciare ad usare il sistema operativo Slackware Linux. Non intende coprire ogni singolo aspetto della distribuzione, ma piuttosto mostrare di cosa essa è capace e darvi una conoscenza funzionale di base del sistema.
Man mano che acquisirete esperienza con Slackware Linux, speriamo che troverete in questo libro un valido riferimento. Speriamo inoltre che lo presterete a tutti i vostri amici quando vi chiederanno di quello splendido sistema operativo Slackware Linux che state usando.
Per quanto questo libro non possa essere il romanzo sul vostro comodino, abbiamo cercato di renterlo quando più piacevole possibile. Con un po' di fortuna ne potrebbero trarre un film. Ovviamente, speriamo anche che possiate imparare qualcosa da questo libro, e che lo troviate utile.
E adesso, inizia lo spettacolo.
Questa seconda edizione è il culmine di anni di duro lavoro da parte dei membri dello Slackware Documentation Project. Seguono i maggiori cambiamenti in questa nuova edizione:
Chapter 3, Installazione, è stata modificata con nuove immagini del programma di installazione, e riflette i cambiamenti negli insiemi di dischi, e nell'installazione da CD.
Chapter 4, Configurazione del Sistema, è stata aggiornata con nuove informazioni sui kernel 2.6.x.
Chapter 5, Configurazione della Rete, è stata ampliata con ulteriori informazioni su Samba, NFS e DHCP. E' stata aggiunta inoltre una sezione sulle reti wireless. Questo capitolo attualmente riflette i maggiori cambiamenti del modo in cui Slackware gestisce la configurazione della rete.
Chapter 6, X Window System, è stata sostanzialmente riscritta per i sistemi basati su Xorg. Questo capitolo adesso copre anche il gestore grafico dei login xdm.
Chapter 13, Basic Network Commands, è stata migliorata con informazioni aggiuntive sulle utilità per la rete.
Chapter 14, Security, è un nuovo capitolo di questa edizione. In esso è spiegato come mantenere la sicurezza in un sistema Slackware.
Chapter 17, Emacs, è un nuovo capitolo di questa edizione. In esso si descrive l'utilizzo di Emacs, un potente editor per Unix.
Chapter 18, Package Management, è stato aggiornato con informazioni sugli script SlackBuild.
Ci sono molti altri cambiamenti, sia minori sia di maggior entità, allo scopo di riflettere i cambiamenti di Slackware durante la sua maturazione.
Fornisce del materiale introduttivo su Linux, Slackware, e sui movimenti Open Source e Free Software.
Descrive le risorse di aiuto disponibili su un sistema Slackware Linux, e quelle disponibili on line.
Descrive il processo di installazione passo-passo con delle immagini per fornire un aiuto grafico.
Descrive i file di configurazione importanti e copre la ricompilazione del kernel.
Spiega come connettere una macchina con Slackware Linux ad una rete. Copre argomenti come TCP/IP, PPP/dial-up, reti wireless, ed altro.
Descrive come configurare e usare il Sistema X Window in Slackware.
Descrive il processo per il quale un computer parte in Slackware Linux. Ricopre anche la modalita' dual-booting con un sistema operativo Microsoft Windows.
Descrive la potente interfaccia a riga di comando per Linux.
Descrive la struttura del filesystem, comprendendo file ownership, permessi, e link.
Descrive i comandi usati per manipolare files e directories dalla interfaccia a riga di comando.
Descrive il potente sistema di controllo dei processi di Linux ed i comandi usati per interagire con applicazioni in esecuzione multipla.
Descrive attivita' di system administration di base come aggiungere e rimuovere utenti, eseguire lo shutdown del sistema correttamente, e altro.
Descrive la collezione di programmi per la rete forniti con Slackware.
Descrive vari tools a disposizione per mantenere il tuo sistema Slackware sicuro, includendo iptables e tcpwrappers.
Descrive diversi metodi di compressione e archiviazione e le utilities disponibili per Linux.
Descrive il potente editor di testovi.
Descrive il potente editor di testo Emacs.
Descrive il sistema di package di Slackware e il processo utilizzato per creare packages personalizzati e tagfiles.
Descrive la versione di Linux ZipSlack che puo' essere utilizzata da Windows senza necessitare alcuna installazione.
Descrive i termini della licenza sotto la quale Slackware Linux e questo libro possono essere copiati e distribuiti.
Per fornire un testo consistente e di facile lettura, molte convenzioni sono seguite all'interno di questo libro.
Un carattere corsivo e' utilizzato per comandi, testo enfatizzato, e la prima volta in cui si utilizza un termine tecnico.
Monospace
Un carattere monospace
e' usato
per messaggi di errore,
comandi, variabili di sistema, nomi di ports, hostnames, nomi
utente, nomi di gruppi,
nomi di dispositivi, variabili, e pezzi di codice.
Un testo in grassetto e' utilizzato per esempi di testo digitato da utente.
I tasti sono evidenziati in grassetto per risaltare dal resto del testo. Combinazioni di tasti che devono essere battute simultaneamente sono evidenziate con `+' tra i tasti, come ad esempio:
Ctrl+Alt+Del
Si intente che l'utente dovrebbe premere i tasti Ctrl, Alt, and Del nello stesso momento.
Tasti che devono essere premuti in sequenza saranno separati da una virgola, per esempio:
Ctrl+X, Ctrl+S
Vuol significare che l'utente deve premere i tasti Ctrl e X contemporaneamente e poi i tasti Ctrl e S contemporaneamente.
Gli esempi iniziano con E:\> che indica un comando MS-DOS® . Finche' non diversamente segnato, questi comandi dovrebbero essere eseguidi da una finestra di “Command Prompt” su un moderno sistema Microsoft® Windows®.
D:\> rawrite a: bare.i |
Esempi che iniziano con # indicano che il comando deve essere invocato da superuser in Slackware. Tu puoi loggarti come root per eseguire il comando, oppure loggarti con il tuo normale account e utilizzare su(1) per ottenere i privilegi di superuser.
# dd if=bare.i of=/dev/fd0 |
Esempi che iniziano con % indicano che il comando dovrebbe essere invocato da un semplice account utente. Finche' non diversamente segnato, la sintassi della C-shell e' utilizzata per settare variabili di sistema ed altri comandi shell.
% top |
Questo progetto e frutto di mesi di lavoro di varie persone. Non sarebbe stato possibile per me produrre questo lavoro da solo. Molte persone meritano il nostro ringraziamento per aver lavorato spontaneamente: Keith Keller per il suo lavoro sulle reti wireless, Joost Kremers per il suo grande lavoro con una mano sola sulla sezione emacs, Simon Williams per il capitolo sulla sicurezza, Jurgen Phillippaerts per i comandi di networking di base, Cibao Cu Ali G Colibri per l'ispirazione e per gli stimoli. Infinite altre persone hanno inviato i loro suggerimenti e le loro correzioni. Una lista incompleta comprende: Jacob Anhoej, John Yast, Sally Welch, Morgan Landry, e Charlie Law. Vorrei anche ringraziare Keith Keller per l'hosting della mailing list per questo progetto, esattamente come Carl Inglis per il web hosting iniaiale. Ultimo ma non il meno importante, vorrei ringraziare Patrick J. Volkerding per Slackware Linux, e David Cantrell, Logan Johnson, e Chris Lumens per Slackware Linux Essentials prima Edizione. Senza il loro iniziale framework, nulla di questo sarebbe mai accaduto. Molti altri hanno contribuito in piccole e grandi parti di questo progetto e non sono stati menzionati. Spero che mi vogliano perdonare per la mia scarsa memoria.
Alan Hicks, Maggio 2005
Linus Torvalds cominciò a scrivere Linux, un kernel per sistemi operativi, come progetto personale nel 1991. Diede vita al progetto perché voleva poter usare un sistema operativo Unix senza spendere tanto. Inoltre voleva imparare sotto ogni suo aspetto l'architettura del processore 386. Linux fu pubblicato gratuitamente, in modo che chiunque potesse studiarlo e apportare miglioramenti sotto la licensa General Public License (vedete Section 1.3 e Appendix A per una spiegazione della licenza). Al giorno d'oggi Linux è diventato uno dei protagonisti nel mercato dei sistemi operativi. Èstato portato su svariate architetture, inclusi Alpha di HP/Compaq, SPARC e UltraSPARC di Sun, e PowerPC di Motorola (attraverso computer Apple Macintosh e IBM RS/6000). Centinaia, se non migliaia, di programmatori in tutto il mondo adesso sviluppano sotto Linux. Possono girare programmi come Sendmail, Apache, e BIND, software molto popolari usati per far girare server su Internet. Èimportante ricordare che il termine “Linux” in realtà si riferisce al kernel - il cuore del sistema operativo. Questo componente ha la responsabilità di controllare il processore, la memoria, i dischi rigidi, e le periferiche del vostro sistema. Questo è tutto quello che Linux sa fare: controlla le operazioni sul vostro computer e si assicura che tutti i suoi programmi funzionino. Ci sono varie compagnie e singoli individui che raggruppano il kernel e vari altri programmi per creare un sistema operativo. Possiamo chiamare questi sistemi "distribuzioni Linux".
Il progetto del kernel Linux cominciò nel 1991 come uno sforzo solitario di Linus Torvalds, ma come disse una volta Isaac Newton, “Se io ho visto oltre, è perché sono in piedi sulle spalle dei giganti.” Quando Linus Torvalds iniziò lo sviluppo del kernel, la Free Software Foundation aveva già istituito l'idea del software collaborativo. Essi chiamarono la loro opera GNU, un acronimo ricorsivo che significa semplicemente “GNU's Not Unix” (GNU non è Unix). Il software GNU girava su Linux sin dal primo giorno. Fu usato il loro compilatore gcc per compilare il kernel. Al giorno d'oggi molti strumenti, da gcc a gnutar costituiscono ancora la base di tutte le principali distribuzioni Linux. Per questo motivo molti dei sostenitori della Free Software Foundation sostengono che bisognerebbe dare ugual merito al loro lavoro e al kernel Linux. Inoltre suggeriscono fortemente di usare il termine GNU/Linux quando ci si riferisce alle distribuzioni.
Questo è argomento per molte flame war, superato soltanto dall'antica guerra santa "vi contro emacs". Lo scopo di questo libro non è di alimentare le fiamme di questa bollente discussione, ma piuttosto di chiarire la terminologia per i neofiti. Quando si legge GNU/Linux, si intende una distribuzione Linux. Quando si legge soltanto Linux, ci si sta riferendo o soltanto al kernel, o ad una distribuzione. Questo può portare a delle confusioni. Tipicamente il termine GNU/Linux non viene usato poiché è considerato troppo lungo
Slackware, progetto iniziato da Patrick Volkerding alla fine del 1992, e inizialmente rilasciata il 17 luglio 1993, fu la prima distribuzione di Linux a raggiungere un utilizzo diffuso. Volkerding all'inizio venne a sapere di Linux quando ebbe bisogno di un interprete LISP economico per un progetto. Una delle poche distribuzioni disponibili all'epoca era SLS Linux di Soft Landing Systems. Volkerding usò SLS Linux, risolvendo alcuni bug che aveva trovato in essa. Quindi decise di unire tutte le sue correzioni in una sua distribuzione privata, che lui e i suoi amici avrebbero potuto usare. Questa distribuzione privata crebbe velocemente in popolarità, così Volkerding decise di chiamarla Slackware e di renderla disponibile a tutti. Man mano, Patrick aggiunse nuove cose a Slackware; un sistema di installazione semplice basato su un sistema a menu, così come il concetto di gestione dei pacchetti, che consente agli utenti di aggiungere, rimuovere ed aggiornare facilmente i pacchetti del proprio sistema.
Ci sono molti motivi per cui Slackware è la più antica distribuzione di Linux esistente. Slackware non cerca di emulare Windows, ma cerca di essere quanto più possibile simile a Unix. Non cerca di nascondere i procedimenti con delle frivole interfacce grafiche "punta-e-clicca". Piuttosto lascia agli utenti il controllo, consentendo loro di sapere esattamente cosa sta succedendo. Il suo sviluppo non corre dietro a scadenze --ogni versione esce quando è pronta.
Slackware è per persone che amano imparare e modificare il proprio sistema per fare esattamente ciò che vogliono. La stabilità e la semplicità di Slackware sono il motivo per cui le persone continueranno a usarla per gli anni a venire. Slackware attualmente gode della reputazione di server robusto, e come workstation non è considerata assurda. Potete trovare desktop basati su Slackware su cui gira quasi ogni window manager o desktop environment, o anche nessuno di questi. I server basati su Slackware sono adatti al business, agendo in ogni funzione in cui un server può essere usato. Gli utenti di Slackware sono tra gli utenti di Linux più soddisfatti. Ovviamente, dovremmo dirlo :^)
All'interno della comunità Linux, ci sono due movimenti ideologici principali. Il movimento del Free Software (di cui parleremo tra poco) lavora per raggiungere lo scopo di liberare tutti i software dalle restrizioni delle proprietà intellettuali. I seguaci di questo movimento credono che queste restrizioni ostacolino lo sviluppo della tecnologia e agiscano contro il bene della comunità. Il movimento Open Source mira alla maggior parte di questi obiettivi, ma ha un approccio più pragmatico ad essi. I seguaci di questo movimento preferiscono basare le proprie argomentazioni sui meriti economici e tecnici del rendere il codice sorgente liberamente disponibile, piuttosto che sul princìpi etici e morali che guidano il movimento del Free Software.
Dall'altra parte sono schierati i gruppi che vogliono mantenere un controllo più stretto sui loro software.
Il movimento del Free Software è guidato dalla Free Software Foundation, una organizzazione che cerca di raccogliere fondi per il progetto GNU. Il Free Software è più di una ideologia. L'espressione più usata è “free as in speech, not free as in beer” (in inglese il termine "free" può significare sia "libero", sia "gratuito". La Free Software Foundation tiene a sottolineare la differenza tra "libero" e "gratuito", ponendo l'accento sul primo dei due significati. N.d.T.). In sostanza, il software libero cerca di garantire alcuni diritti sia agli utenti, sia agli sviluppatori. Questi diritti includono la libertà di eseguire il programma per qualsiasi scopo, di studiare e modificare il codice sorgente, di ridistribuire il codice sorgente, e di condividere tutte le modifiche effettuate. Per garantire queste libertà, fu creata la GNU General Public License La GPL, in breve, impone che chiunque distribuisca un programma compilato, licenziato sotto i termini della GPL, debba fornire anche il codice sorgente, e sia libero di fare modifiche al programma a patto che queste modifiche siano rese disponibili sotto forma di sorgenti. Questo garantisce che, dopo che un programma venga “aperto” alla comunità, non possa più essere “chiuso”, a meno che non ci sia il consenso di tutti gli autori di ogni parte di codice (anche delle modifiche). La maggior parte dei programmi di Linux sono sotto licenza GPL.
Èimportante notare che la GPL non esprime nulla a proposito del prezzo. Per quanto possa sembrare strano, potete chiedere soldi in cambio di software libero. Il termine “free” si riferisce alle libertà che avete sul codice sorgente, non al prezzo che pagate per il software. (Comunque, se qualcuno vi ha venduto o regalato un software libero in forma compilata che sottostà ai termini della licenza GPL, questi è anche obbligato a fornirvi il codice sorgente)
Un'altra licenza popolare è la licenza BSD. Rispetto alla GPL, la licenza BSD non pone alcun requisito per il rilascio del codice sorgente di un programma. Il software rilasciato sotto licenza BSD consente la ridistribuzione sotto forma di sorgenti o di binari, a patto che siano soddisfatte alcune condizioni. Le credenziali dell'autore non possono essere usate come una sorta di annuncio pubblicitario per il programma. Inoltre sgravia l'autore dalle conseguenze di danni che potrebbero occorrere con l'utilizzo del software. Molto del codice incluso in Slackware è sotto licenza BSD.
Sulla prima linea del più giovane movimento Open Source, la è una organizzazione che esiste all'unico scopo di aumentare il supporto al software open source, cioè quel software che mette a disposizione sia i sorgenti sia i programmi pronti per essere eseguiti. Essi non offrono una licenza specifica, ma piuttosto supportano vari tipi di licenze open source.
L'idea alle spalle della OSI è di portare quante più aziende possibile dietro l'open source, consentendo loro di scrivere le proprie licenze open source e avere le proprie licenze certificate dalla Open Source Initiative. Molte aziende vogliono rilasciare il codice sorgente, ma non vogliono usare la GPL. Siccome non possono cambiare radicalmente la GPL, viene offerta loro l'opportunità di creare delle proprie licenze e farle certificare da questa organizzazione.
Se da un lato la Free Software Foundation e l'Open Source Initiative lavorano per aiutarsi l'un l'altra, esse non sono la stessa cosa. La Free Software Foundation usa una licenza specifica sotto cui deve essere rilasciato il software. L'Open Source Initiative cerca di supportare tutte le licenze open source, inclusa quella della Free Software Foundation. Le basi su cui ciascuna lavora per rendere il codice sorgente disponibile a volte divide i due movimenti, ma il fatto che due ideologie diverse mirino allo stesso obiettivo rende credito agli sforzi di entrambe.
Vi sono occasioni nelle quali è necessario ottenere assistenza per un comando specifico, per configurare un programma o far funzionare un componente hardware. Potresti voler semplicemente capire cosa fa un comando, oppure vedere le opzioni possibili che questo accetta. Fortunatamente esistono diversi modi per ottenere aiuto. Se i pacchetti software della serie “F” sono stati installati, allora hai installato un patrimonio di informazioni essenziali come le FAQs (le domande più frequenti) e gli HOWTO (spiegano come usare o far funzionare un qualcosa, sia hardware che software). I programmi installati inoltre sono muniti di una loro documentazione, con file di configurazione e istruzioni per l'uso. Infine è sempre possibile consultare il sito web ufficiale di Slackware per ottenere maggiori informazioni.
Il comando man (abbreviazione di “manual”) è la forma tradizionale della documentazione online nei sistemi operativi Unix e Linux. Consiste in un formato particolare di file, i “man pages”. Questi sono scritti per la maggior parte dei comandi e vengono distribuiti insieme al software al quale fanno riferimento. Digitando man nomecomando verrà visualizzata la pagina del manuale relativa al comando denominato nomecomando.
Poiché sono veramente molte, le pagine del manuale vengono raggruppate in sezioni numerate. Questo sistema è utilizzato da così tanto tempo che spesso si incontrano riferimenti a comandi, programmi e anche a funzioni di librerie software assieme al relativo numero di sezione della pagina del manuale.
Ad Esempio
è possibile incontrare l'indicazione man(1). Questo significa che man (il comando) è documentato nella sezione 1 (comandi utente); è possibile determinare la visualizzazione della sezione 1 del manuale per “man” attraverso il comando man 1 man. Specificare la sezione nella quale man ricerca la pagina da visualizzare, è utile nel caso di argomenti multipli con lo stesso nome.
Table 2-1. Sezione delle MAN Pages
Sezione | Contenuto |
---|---|
Sezione 1 | Comandi Utente (solo introduzione) |
Sezione 2 | Chiamate di Sistema |
Sezione 3 | Chiamate alle librerie C |
Sezione 4 | Dispositivi (e.g., hd, sd) |
Sezione 5 | Formato dei file e protocolli (e.g., wtmp, /etc/passwd, nfs) |
Sezione 6 | Giochi (solo introduzione) |
Sezione 7 | Convenzioni, pacchetti macro, etc. (e.g., nroff, ascii) |
Sezione 8 | Amministrazione di sistema (solo introduzione) |
In aggiunta a man(1), ci sono i comandi whatis(1) e apropos(1), il cui scopo comune è quello di agevolare la ricerca di informazioni all'interno delle pagine del manuale.
Il comando whatis produce una descrizione molto breve dei comandi di sistema, una sorta di guida di riferimento tascabile per i comandi.
Esempio:
% whatis whatis whatis (1) - search the whatis database for complete words |
Il comando apropos è usato per cercare pagine di manuale che contengano una determinata parola.
Esempio:
% apropos wav cdda2wav (1) - a sampling utility that dumps CD audio data into wav sound files netwave_cs (4) - Xircom Creditcard Netwave device driver oggdec (1) - simple decoder, Ogg Vorbis file to PCM audio file (WAV or RAW) wavelan (4) - AT&T GIS WaveLAN ISA device driver wavelan_cs (4) - AT&T GIS WaveLAN PCMCIA device driver wvlan_cs (4) - Lucent WaveLAN/IEEE 802.11 device driver |
Se hai bisogno di informazioni su uno di questi comandi, leggi la loro pagine di manuale. ;)
I sorgenti, per la maggior parte dei pacchetti, includono una qualche specie di documentazione: file README, istruzioni d'uso, file di licenza, etc. Ogni tipo di documentazione inclusa nei sorgenti viene installata nella directory /usr/doc. Ogni programma installa la propria documentazione in:
/usr/doc/$program-$version
Dove $program è il nome del programma del quale vuoi avere informazioni, e $version è (ovviamente) la versione del pacchetto software installato nel tuo sistema.
Per esempio, per leggere la documentazione del comando man(1) devi fare cd alla directory:
% cd /usr/doc/man-$version |
Se le pagine del manuale non forniscono informazioni sufficienti, /usr/doc è il posto successivo dove soffermarsi.
Ègrazie al vero spirito della comunità che è stato possibile realizzare la collezione di HOWTO/mini-HOWTO. Questi file sono esattamente quello che il nome suggerisce - documenti che descrivono come fare (how to) le cose. Se il pacchetto contenente la collezione degli HOWTO viene installato, i relativi documenti vengono posizionati nelle directory /usr/doc/Linux-HOWTOs e /usr/doc/Linux-mini-HOWTOs.
Inclusa nello stesso pacchetto è possibile trovare una collezione di FAQ (lista di Risposte a Domande Frequenti) acronimo per:
Questo tipo di documentazione è scritta in forma di “Domanda e Risposta”. Le FAQ sono il posto giusto se cerchi una risposta veloce a qualcosa. Una volta installate, potrai trovarle nella directory /usr/doc/Linux-FAQs.
Vale la pena di leggere questi file ogni qualvolta non si è sicuri su come procedere. Viene coperta una fantastica quantità di argomenti e con un grado di dettaglio a volte sorprendente.
in aggiunta alla documentazione inclusa nel nostro beneamato Sistema Operativo Slackware Linux, ci sono una moltitudine di risorse online reperibili per apprendere al meglio.
Il sito ufficiale di Slackware Linux
Il sito ufficiale di Slackware Linux può non essere aggiornato, ma contiene informazioni relative alle ultime versioni di Slackware. Un tempo è esistito un forum attivo.. prima che orde di troll, piantagrane e frignoni vi si iscrivesse... Il mantenimento del forum è diventato sempre più difficile, così Pat ha deciso di chiuderlo. Adesso il il forum è stato riaperto, e lo si può trovare all'indirizzo http://www.userlocal.com/phorum/
Dopo che il forum è stato chiuso http://slackware.com, molti altri siti hanno offerto assistenza e supporto per gli utenti Slackware. Dopo molte difficoltà, Pat scelse di appoggiare www.linuxquestions.org come forum ufficiale per Slackware Linux.
Chiunque acquistasse un CD set ufficiale ha diritto al supporto tecnico all'installazione via e-mail da parte degli sviluppatori. Detto questo, cerca di ricordare che noi, gli sviluppatori (e la grande maggioranza degli utenti) di Slackware, siamo della cosiddetta “Vecchia Scuola”. Questo significa che preferiamo aiutare coloro che hanno un sincero interesse e che vogliono imparare a usare questo Sistema Operativo. Noi facciamo sempre del nostro meglio per aiutare chiunque ci scrive per avere supporto. Comunque, cerca nella tua documentazione e sui siti web (soprattutto tra le FAQ e sui forum elencati di seguito) prima di mandare una mail.
L'indirizzo e-mail per il supporto è: support@slackware.com. Altri indirizzi e-mail e informazioni per contattarci sono sul sito ufficiale di Slackware.
Abbimo molte mailing list, disponiblili come digest o in forma semplice. Ecco le informazioni su come iscriverti.
L'indirizzo per iscriversi alla mailing list di Slackware è :
majordomo@slackware.com
Mettendo come oggetto dell'e-mail “subscribe [name of list]”.
La scelta delle liste è elencata su sito ufficiale di Slackware (Usa uno di questi come oggetto per iscriverti ad una delle liste):
http://slackware.com/lists/archive/
La mailing list slackware-announce è usata per per annunciare l'uscita di una nuova versione, un aggiornamento o per informazioni generali.
La mailing list slackware-security è usata per per annunciare problemi di sicurezza sui pacchetti della distribuzione. Ogni exploit o vulnerabilità relative a Slackware vengono inviate a questa lista immediatamente.
Queste liste sono anche disponibili sottoforma di digest. Questo significa che riceverai un unico messaggio relativo a tutte le mail arrivate in quel giorno. Considerato che le mailing list di Slackware non permettono agli utenti di poter scrivere, e che le liste non hanno molto traffico, molti utenti preferiscono i digest. Per ricevere direttamentei digest usa come oggetto slackware-announce-digest oppure slackware-security-digest.
La cintura nera dei Motori di Ricerca. Quando vuoi trovare esattamente quello che cerchi, domandalo a google. Ricorda: “Google è tuo amico!”.
Ricerche specifiche per Linux
Ricerche specifiche per BSD. Slackware è così generico come sistema Unix-like che spesso si potrebbero non trovare abbastanza informazioni specifiche. Molte volte una ricerca su BSD svela più informazioni di una su Slackware
Quì puoi fare ricerche direttamente nei forum di discussione.
Un tesoro virtuale di conoscenze, buoni consigli, prime esperienze ed interessanti articoli. Spesso il primo posto dove puoi trovare novità sullo sviluppo di Slackware.
Il forum ufficiale per gli utenti di Slackware Linux.
“Un posto dove scaricare e avere aiuto su Linux.”
Altre FAQ
Usenet è sempre stato un posto per geek, dove potersi incontrare e aiutarsi l'uno con l'altro. Ci sono pochi newsgroup dedicati a Slackware Linux, ma tendono sempre ad essere pieni di gente preparata e competente.
alt.os.linux.slackware
alt.os.linux.slackware, meglio conosciuto come aols (da non confondere con AOL®!), è uno dei posti maggiormente attivi dove si può trovare aiuto tecnico su problemi riguardanti Slackware Linux. Come ogni newsgroup su Usenet, alcuni partecipanti di poco aiuti (“troll”) possono rendere spiacevole l'esperienza con delle dispute. Imparare ad ignorare i troll e ad identificare le persone che davvero vogliono aiutarti è la chiave per ottenere il massimo da questa risorsa.
Prima di iniziare ad usare Slackware Linux, devi reperirla ed installarla. Procurarsi Slackware è tanto facile quanto acquistarla o scaricarla gratuitamente da Internet. Installarla è altrettanto facile, a condizione che tu abbia alcune conoscenze di base riguardo il tuo computer e che abbia la volontà di imparare alcune cose nuove. Il programma di installazione, in sé, non è altro che una procedura passo-passo. Proprio per questo, potrai essere operativo in tempi molto brevi. Infatti, Slackware vanta uno dei tempi più brevi di installazione di qualsiasi distribuzione Linux completa.
Il set ufficiale di CD Slackware è distribuito da Slackware Linux, Inc. Il set di CD è composto da 4 dischi. Il primo disco contiene tutto il software necessario per l'installazione di un server di base, e dell'X window system. Il secondo cd è un “live” cd; ossia, un cd avviabile che si installa nella RAM e ti fornisce un'installazione temporanea per divertirti o per eseguire un ripristino dei dati o del sistema. Questo cd contiene inoltre alcuni pacchetti come gli ambienti desktop KDE e GNOME. Nel secondo cd si trovano altre piccole chicche, inclusi alcuni pacchetti non essenziali nella cartella “extra”. Il terzo e quarto CD, contengono i sorgenti di tutta Slackware, compresi quelli dell'edizione originale di questo libro.
Èinoltre possibile acquistare il box di CD che include i 4 dischi, una copia di questo libro e molto altro interessante materiale relativo a Slackware per mostrare il tuo essere geek. Tramite prenotazione si avrà la possibilità di ricevere i CD ad un prezzo ridotto.
Il metodo migliore per acquistare gadget Slackware è utilizzare lo Slackware store online.
Per i tuoi ordini, puoi anche chiamarci o inviarci una e-mail.
Slackware Linux è inoltre disponibile gratuitamente su Internet. Puoi scriverci per eventuali dubbi, ma avranno priorità coloro i quali hanno acquistato il set di CD ufficiali. Detto questo, riceviamo un gran numero di e-mail e il tempo a nostra disposizione è molto limitato. Prima di scriverci, ti consigliamo di consultare l'Chapter 2.
Il sito ufficiale Slackware Linux Project si trova su:
L'FTP principale di Slackware Linux è:
ftp://ftp.slackware.com/pub/slackware/
Ricorda che il nostro server ftp, nonostante sia aperto per il pubblico utilizzo, ha un'ampiezza di banda limitata. Prendi in considerazione la possibilità di utilizzare un mirror vicino a te per scaricare Slackware. Sul nostro sito è presente una lista incompleta dei mirror: http://www.slackware.com/getslack.
Una semplice installazione di Slackware richiede, come minimo, quanto segue:
Table 3-2. Requisiti di Sistema
Hardware | Richiesto |
---|---|
Processore | 586 |
RAM | 32 MB |
Spazio su Disco | 1GB |
CD-Rom | 4x CD-ROM |
Se sei in possesso del CD avviabile, probabilmente non avrai bisogno di un lettore floppy. Al contrario, per ovvie ragioni, se non possiedi un lettore CD-ROM, avrai bisogno di un lettore floppy per eseguire un' via rete. Per l'installazione via rete è richiesta una scheda di rete. Consulta la sezione chiamata NFS per maggiori informazioni.
Definire lo spazio su disco richiesto è difficile. Solitamente 1GB di spazio è sufficiente per un'installazione minima, ma se vuoi eseguire un'installazione completa, avrai bisogno di circa due gigabyte di spazio libero su disco oltre allo spazio necessario per i tuoi file personali.. La maggior parte degli utenti non effettua un'installazione completa. Infatti, molti fanno girare Slackware in meno di 100MB di spazio su disco.
Slackware può essere installata su sistemi dotati di poca RAM, con piccoli harddisk, e CPU poco potenti, ma questo richiede parecchio olio di gomito. Se questo è il tuo intento, dai un'occhiata al file LOWMEM.TXT presente nell'albero di distribuzione per avere maggiori informazioni.
Per motivi di semplicità, Slackware è stata storicamente divisa in serie di software. Una volta chiamate “disk sets” perché studiate per un'installazione basata su floppy, oggi, le serie di software vengono utilizzate principalmente per suddividere in categorie i pacchetti inclusi in Slackware. Ad oggi, non è piu' possibile effettuare un'installazione via floppy.
La seguente è una breve descrizione di ogni serie di software.
Table 3-3. Serie di Software
Serie | Contenuto |
---|---|
A | Il sistema di base. Contiene abbastanza software da permettere l'utilizzo; contiene anche un editor di testo e dei programmi di base per la comunicazione. |
AP | Varie applicazioni che non richiedono l'X Window System. |
D | Programmi per lo sviluppo. Compilatori, debugger, interpreti e pagine di man. |
E | GNU Emacs. |
F | FAQ, HOWTO, e documentazione varia. |
GNOME | L'ambiente desktop GNOME. |
K | Il codice sorgente del kernel Linux. |
KDE | L'ambiente desktop K. Un ambiente X che condivide molte caratteristiche grafiche e funzionali con MacOS e Windows. Le librerie Qt, che sono richieste da KDE, sono anch'esse contenute in questa serie. |
KDEI | Pacchetti di internazionalizzazione per il desktop KDE. |
L | Librerie. Librerie linkate dinamicamente richieste da molti programmi. |
N | Programmi di rete. Daemon, programmi di posta, telnet, lettori di news e così via. |
T | teTeX sistema di formattazione documenti. |
TCL | Il Tool Command Language. Tk, TclX e TkDesk. |
X | X Window System. |
XAP | Applicazioni X che non appartengono ai principali ambienti desktop (per esempio, Ghostscript e Netscape). |
Y | Giochi per terminale BSD |
Slackware Linux, Inc.
Mentre una volta era possibile installare Slackware Linux utilizzando i dischi floppy, l'aumento della dimensione dei pacchetti dei programmi (perlomeno di alcuni singoli programmi) ha portato all'abbandono dell'installazione tramite floppy. Fino alla versione 7.1 di Slackware era possibile eseguire una parziale installazione tramite floppy. Le serie A e N, infatti, potevano essere installate fornendo un sistema di base per installare il resto della distribuzione. Se stai considerando la possibilità di eseguire un'installazione via floppy (solitamente su vecchio hardware), è raccomandabile trovare un altra strada, o utilizzare una versione più vecchia. Slackware 4.0 è tuttora molto popolare per tale motivo, proprio come lo è la 7.0.
Èbene notare che i dischi floppy sono tuttora richiesti per l'installazione da CD-ROM se non disponi di un CD avviabile o per un'installazione NFS.
Se possiedi un CD avviabile, disponibile nel set di dischi ufficiale distribuito da Slackware Linux, Inc. (vedi la sezione Procurarsi Slackware), un'installazione basata su CD sarà un po' più semplice. In caso contrario, avrai bisogno di avviare tramite floppy. Inoltre, se possiedi hardware che rende problematico l'utilizzo del kernel del CD avviabile, dovrai usare dei floppy personalizzati.
Sin da Slackware 8.1 viene utilizzato un nuovo metodo per creare i CD avviabili, il quale purtroppo non funziona molto bene con alcuni tipi scadenti di BIOS (ad oggi la maggior parte dei CD Linux soffre di questo problema). In tal caso, raccomandiamo l'avvio tramite floppy disk.
Section 3.2.3 e Section 3.2.5 forniscono informazioni sulla scelta e sulla creazione dei floppies dai quali far boot, se questo fosse necessario.
NFS (Network File System) è un sistema per rendere disponibili i filesystem a delle macchine remote. Un'installazione NFS ti permette di installare Slackware da un altro computer presente nella tua rete. La macchina da cui stai installando deve essere configurata per esportare l'alberatura della distribuzione Slackware alla macchina su cui stai installando. Questo, ovviamente, implica la conoscenza di NFS, che e' descritto su Section 5.6.
Èpossibile effettuare un'installazione NFS utilizzando diversi metodi, come ad esempio PLIP (tramite porta parallela), SLIP e PPP (ma non tramite una connessione modem). Ad ogni modo, raccomandiamo l'utilizzo di una scheda di rete, se disponibile. Dopotutto, l'installazione di un sistema operativo tramite la porta della tua stampante è un processo molto, molto lento.
Il disco di avvio è il floppy da cui attualmente fai partire l'installazione. Contiene un'immagine compressa del kernel che viene utilizzata per il controllo dell'hardware durante l'installazione. Quindi, è essenziale (sempre che tu non avvii da CD, come descritto nella sezione CD-ROM). I dischi di avvio si trovano nella directory bootdisks/ all'interno dell'albero della distribuzione.
Ci sono diversi dischi di avvio Slackware tra cui potrai scegliere (sono circa 16). All'interno dell'albero della distribuzione Slackware, nel file bootdisks/README.TXT puoi trovare una lista compreta dei dischi di avvio, ognuno con la relativa descrizione. Ad ogni modo, la maggior parte delle persone utilizzano l'immagine di avvio bare.i (per le periferiche IDE) o scsi.s (per le periferiche SCSI).
Vedi Section 3.2.6 per sapere come creare un disco partendo da un'immagine.
Dopo l'avvio, ti verrà chiesto di inserire il disco di root.
Il disco di root contiene il setup e un filesystem che viene utilizzato durante l'installazione che sono entrambi essenziali. Le immagini dei dischi di root sono localizzati nella directory rootdisks dell'alberatura della distribuzione. Devi creare due dischi di root dalle immagini install.1 e install.2. Qui potrai trovare i dischi network.dsk, pcmcia.dsk, rescue.dsk, e sbootmgr.dsk.
Se stai effettuando un'installazione NFS o se stai installando su un sistema dotato di PCMCIA avrai bisogno di un disco supplementare. I dischi supplementari si trovano nella directory rootdksk dell'alberatura della distribuzione e si chiamano network.dsk e pcmcia.dsk. Recentemente sono stati aggiunti altri dischi supplementari come rescue.dsk e sbootmgr.dsk. Il disco di ripristino è un piccolo floppy contenente un'immagine che gira in un disco RAM da 4MB. Include alcune utility di rete basilari e l'editor vi per veloci cambiamenti sulle macchine. Il disco sbootmgr.dsk è utilizzato per avviare altri tipi di periferiche. Avvia da questo disco se il tuo CD-ROM non riesce ad avviare i CD Slackware. Ti proporrà diverse scelte per avviare e potrebbe offrirti una semplice via per aggirare i BIOS buggati.
Il disco di root, una volta caricato, ti spiegherà come utilizzare i dischi supplementari.
Una volta che hai selezionato un'immagine di avvio, devi inserirla in un floppy. Il processo è leggermente differente a seconda di quale sistema operativo stai utilizzando per creare i dischi. Se stai utilizzando Linux (o un qualsiasi sistema operativo Unix-like) dovrai utilizzare il comando dd(1). Se, per esempio, il file della tua immagine è bare.i e il tuo lettore floppy è /dev/fd0, il comando per creare il floppy è:
% dd if=bare.i of=/dev/fd0 |
Se stai utilizzando un SO Microsoft, dovrai usare il programma RAWRITE.EXE, che è incluso nell'alberatura della distribuzione nella stessa directory delle immagini dei floppy. Ipotizzando nuovamente che bare.i sia il file della tua immagine e che il tuo lettore floppy sia A:, apri un prompt di DOS e digita quanto segue:
C:\ rawrite a: bare.i |
Dopo aver avviato dal tuo supporto preferito, dovrai partizionare il tuo disco fisso. Una partizione è il luogo in cui verrà creato il filesystem Linux e dove Slackware verrà installata. Come minimo, raccomandiamo di creare due partizioni; una per il filesystem di root (/) e una per lo spazio swap.
Al termine del caricamento del disco di root, ti verrà presentato un prompt per il login. Accedi come root (non c'è password). Al prompt della shell lancia cfdisk(8) oppure fdisk(8). cfdisk fornisce un'interfaccia più semplice rispetto al normale fdisk, ma manca di alcune funzionalità. Spiegheremo ampiamente il funzionamento di fdisk in seguito.
Inizia lanciando fdisk per il tuo disco fisso. In linux, i dischi fissi non hanno lettere, ma vengono rappresentati sotto forma di file. Il primo disco fisso IDE (master primario) è /dev/hda, lo slave primario è /dev/hdb, e così via. I dischi SCSI seguono lo stesso sistema, ma sono rappresentati nella forma /dev/sdX. Dovrai lanciare fdisk e passargli il nome del tuo disco fisso:
# fdisk /dev/hda |
Come tutti i migliori programmi Unix, fdisk ti fornisce un prompt (stavi pensando ad un menù vero?). La prima cosa che dovresti fare è esaminare le tue attuali partizioni. Questo è fattibile digitando p al prompt di fdisk:
Command (m for help): p |
Questo visualizzerà ogni sorta di informazione riguardante le partizioni presenti. La maggior parte delle persone usa un disco vuoto per l'installazione e rimuove ogni partizione esistente per creare spazio per le partizioni Linux.
![]() |
ÈMOLTO IMPORTANTE CHE TU FACCIA UNA COPIA DI BACKUP DELLE INFORMAZIONI CHE VUOI SALVARE PRIMA DI DISTRUGGERE LE PARTIZIONI SU CUI RISIEDONO. |
Non esiste una soluzione semplice per recuperare l'eliminazione di una partizione, quindi fai sempre un backup prima di giocare con esse.
Guardando le informazioni sulla tabella delle partizioni, dovresti vedere un numero di partizione, la dimensione ed il suo tipo. Ci sono molte più informazioni, ma, al momento, non curartene. Stiamo per cancellare tutte le partizioni presenti su questo disco per creare quelle per Linux. Lanciamo il comando d per cancellarle:
Command (m for help): d Partition number (1-4): 1 |
Questo procedimento dovrebbe essere ripetuto per ognuna delle partizioni presenti. Dopo la cancellazione delle vecchie partizioni, siamo pronti per creare le partizioni Linux. Abbiamo deciso di creare una partizione per il filesystem di root e una per lo spazio swap. Gli schemi dei sistemi Unix sono fonte di animate discussioni, e molte volte gli utenti vi diranno che il loro è il miglior modo di farlo. Come minimo, devi creare una partizione per / e una di swap. Con il tempo, troverai un compromesso che andrà bene per te.
Io uso due schemi di base per le partizioni. Il primo per un desktop. Faccio 4 partizioni, /, /home, /usr/local, e swap. Questo mi permette di reinstallare o di aggiornare l'intera installazione sotto / senza rimuovere i miei dati presenti sotto /home o le mie applicazioni personalizzate sotto /usr/local. Per i server, di solito sostituisco la partizione /usr/local con /var. Molti server salvano le informazioni in questa partizione e tenerla separata da / fornisce un buon numero di benefici in fatto di prestazioni. Per ora, ci occuperemo solo di due partizioni: / e swap.
Ora creiamo le partizioni con il comando n:
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4):1 First cylinder (0-1060, default 0):0 Last cylinder or +size or +sizeM or +sizeK (0-1060, default 1060):+64M |
Devi assicurarti di creare partizioni primarie. La prima partizione sarà la tua partizione swap. Diciamo a fdisk di rendere la partizione numero 1 una partizione primaria. Facciamola iniziare al cilindro 0 e per il cilindro finale scriviamo +64M. Questo ci darà 64Mb di swap. (Lo spazio della partizione swap dipende dalla quantità di RAM di cui disponi. Èconvenzione la creazione di uno spazio swap doppio rispetto alla quantità di RAM disponibile.) A questo punto, facciamo iniziare la partizione numero 2 dal primo cilindro disponibile ed occupiamo tutto lo spazio rimasto sul disco.
Command (m for help):n Command action e extended p primary partition (1-4) p Partition number (1-4):2 First cylinder (124-1060, default 124):124 Last cylinder or +size or +sizeM or +sizeK (124-1060, default 1060):1060 |
Abbiamo quasi terminato. Dobbiamo modificare il tipo della prima partizione a 82 (Linux swap). Digita t per modificare il tipo, seleziona la prima partizione, e digita 82. Prima di scrivere i cambiamenti su disco, dovresti dare un'occhiata alla nuova tabella delle partizioni un'ultima volta. Usa p su fdisk per visualizzare la tabella delle partizioni. Se tutto sembra corretto, digita w per scrivere le modifiche su disco e uscire da fdisk.
Una volta create le tue partizioni, sei pronto per installare Slackware. Il prossimo passo nel processo di installazione è lanciare il programma setup(8). Per fare questo, digita semplicemente setup al prompt della shell. setup è un sistema di menù guida per installare i pacchetti Slackware e configurare il tuo sistema.
Il processo di setup funziona grossomodo così: Ti sposti tra ogni opzione del programma setup, nell'ordine in cui sono elencate. (Ovviamente, sei libero di farlo in qualsiasi ordine tu voglia.) Gli oggetti del menù vengono selezionati utilizzando le frecce sù e giù, e i pulsanti “Okay” e “Cancel” posso essere scelti utilizzando le frecce destra e sinistra. In alternativa, ogni opzione possiede un tasto corrispondente, che è sottolineato nel nome dell'opzione. Le opzioni che sono selezionabili (sono indicate da una [X]) posso essere modificate usando la barra spaziatrice.
Ovviamente, tutto questo è descritto nell'“help” della sezione setup.
Se è la prima volta che installi Slackware, potresti voler dare un'occhiata alla schermata di aiuto. Ti darà una descrizione di ogni parte del setup (proprio come quella che stiamo descrivendo, ma meno approfondita) e istruzione sul come destreggiarti con il resto dell'installazione.
Se necessiti di una mappa dei caratteri diversa dal layout “qwerty” degli Stati Uniti, potresti voler dare un'occhiata a questa sezione, che offre un gran numero di mappe alternative per la tua tastiera.
Se hai creato una partizione swap (vedi la precedente Section 3.3), questa sezione ti permetterà di abilitarla. Essa verrà rilevata automaticamente sul tuo disco fisso, permettendoti di selezionarla per formattarla e quindi abilitarla.
La sezione target è dove le altre partizioni (non swap) vengono formattate e associate ai punti di mount dei filesystem. Verrà visualizzata una lista delle partizioni presenti sul tuo disco fisso. Per ogni partizione, ti verrà chiesto se desideri formattarla o meno. A seconda del kernel utilizzato, potrai scegliere tra reiserfs (lo standard), ext3, ext2, jfs e xfs. La maggior parte delle persone utilizza reiserfs oppure ext3. Nel prossimo futuro potremmo vedere incluso il supporto per reiserfs4.
La prima opzione nella sezione target è la scelta di una partizione su cui installare il filesystem di root (/). Fatto questo, potrai associare altre partizioni ai filesystem come più preferisci. (Per esempio, potresti voler associare come home la tua terza partizione, chiamata /dev/hda3. Questo è solo un esempio; associa le partizioni come meglio credi.)
La sezione source è il punto in cui selezionare il supporto sorgente da cui installare Slackware. Attualmente ci sono quattro sorgenti tra cui poter scegliere. Questi sono CD-ROM, NFS oppure una directory premontata.
La selezione CD-ROM permette di specificare un CD-ROM di base per l'installazione. Questo fornirà la possibilità di ricercare un lettore CD-ROM o di visualizzare una lista di periferiche da cui selezionare il tipo di periferica. Assicurati di aver inserito il CD Slackware nel tuo lettore prima di lanciare la scansione.
La selezione NFS richiede le informazioni della tua rete e del tuo server NFS. Il server NFS deve essere già configurato. Devi inoltre notare che non puoi utilizzare gli hostname, devi obbligatoriamente usare gli indirizzi IP per tutte le tue macchine incluso il server NFS (non c'è un risolutore di nomi sul disco di setup). Naturalmente devi utilizzare il floppy network.dsk per aggiungere il supporto per il tuo controller di rete.
La directory premontata offre molta più flessibilità. Puoi usare questo metodo per installare da supporti come i dischi Jaz, NFS montato su PLIP, e filesystem FAT. Monta il filesystem in un punto a tua scelta prima di lanciare il setup per poi specificarne la locazione.
L'opzione select ti permette di scegliere le serie di software che desideri installare. Queste serie sono descritte su Section 3.2.1. Èda notare che è necessario installare la serie A per avere un sistema di base funzionante, tutte le altre serie sono opzionali.
Dando per assunto che tu sia andato attraverso le opzioni
“target”,
“source”, and “select”, l'opzione install
ti darà la possibilità di scegliere i packages dalla tua
serie di software. Se no, ti verrà richiesto di tornare indietro e
completare le altre
sezioni del programma di setup. L'opzione ti consente di selezione
sei diversi modalità
di installazione: full
, newbie
,
menu
, expert
,
custom
, and tag
path
.
L'opzione full
installerà tutti i
pacchetti di tutte le
serie software che hai scelto nella sezione “select”. Fatto questo
non
verranno chieste altre informazioni. Questa è la metodologia di
installazione più
semplice, almeno finchè non avrai la necessità di decidere quali
pacchetti installare.
Ovviamente, questa opzione consuma la maggior quantità di spazio
su disco.
La prossima opzione è newbie
. Questa
voce installa tutto
il software richiesto contenuto nella serie selezionata. Per tutti
gli altri pacchetti,
verrà visualizzata una richiesta in cui potrai scegliere “Yes”,
“No”, o “Skip”. Yes e No sono ovvi, mentre Skip proseguirà alla
prossima serie di software. In più, vedrai una descrizione e lo
spazio richiesto per ogni
pacchetto, per aiutarti a decidere se ne hai bisogno.
Raccomandiamo l'utilizzo di questa
opzione per i nuovi utenti visto che assicura l'installazione di
tutti i pacchetti
richiesti. Ad ogni modo, è leggermente più lenta a causa delle
richieste di conferma.
Menu
è una versione più veloce ed
avanzata dell'opzione
newbie. Per ogni serie viene visualizzato un menù dal quale potrai
selezionare tutti i
pacchetti non richiesti che desideri installare. I pacchetti
richiesti non vengono
visualizzati in questo menù.
Per gli utenti più esperti, l'installazione offre l'opzione expert
. Questa ti offre il totale
controllo sui pacchetti da
installare. Puoi deselezionare pacchetti che sono assolutamente
necessari, ottenendo un
sistema incoerente. D'altra parte però, puoi controllare
completamente i pacchetti che
verranno installati sul tuo sistema. Devi semplicemente
selezionare i pacchetti che vuoi
installare per ogni serie. Questa opzione non è consigliata ai
nuovi utenti, sarebbe più
semplice spararsi su un piede.
Anche le opzioni custom
e tag
path
sono per utenti esperti. Queste opzioni ti
permettono di installare basandoti
su tag file personalizzati che hai creato nell'alberatura della
distribuzione. Qesta
opzione è molto utile per installare un gran numero di macchine in
modo molto rapido. Per
maggiori informazioni sui tag file vedi Section
18.4.
Dopo aver selezionato la modalità di installazione, seguirà una di queste cose. Se hai selezionato full o menù, si aprirà una schermata menù che ti permetterà di selezionare i pacchetti che desideri installare. Se hai scelto full, inizierà immediatamente l'installazione dei pacchetti nel punto selezionato. Se hai scelto newbie, i pacchetti verranno installati fino a quando l'installazione non raggiungerà un pacchetto opzionale.
Ricorda che è possibile finire lo spazio durante l'installazione. Se hai scelto troppi pacchetti rispetto alla quantità di spazio disponibile su disco avrai di certo problemi. La cosa più sicura da fare è selezionare parte del software ed installare il restante in seguito, se necessario. Questo può essere fatto semplicemente usando i tool di gestione pacchetti di Slackware. Per maggiori informazioni vedi Chapter 18.
La sezione configure ti permette di fare le prime configurazioni di base, ora che i pacchetti sono stati installati. Ciò che vedrai qui dipenderà in gran parte dal software installato. In qualsiasi caso dovresti vedere quanto segue:
Qui ti verrà chiesto di scegliere un kernel da installare. Puoi installare il kernel dal disco di avvio che hai utilizzato per l'installazione o dal CD-ROM Slackware o da un altro floppy che hai predecentemente preparato. Oppure puoi scegliere di saltare questa fase, in questo caso verrà installato il kernel e l'esecuzione continuerà con la configurazione della connessione.
Creare un disco di avvio per un uso futuro è senza dubbio una
buona idea. Avrai la
possibilità di formattare un floppy e in seguito di creare uno
dei due tipi di disco di
avvio. Il primo tipo, simple
,
semplicemente (vedi figura)
scrive un kernel sul floppy. Un'opzione più flessibile (e
altamente raccomandata) è lilo
, che
creerà ovviamente un disco di avvio lilo. Vedi LILO in Section
7.1 per maggiori informazioni. Ovviamente, puoi anche
scegliere continue per procedere, in
tal caso non verrà creato
alcun disco di avvio.
Ti verranno richieste le informazioni riguardanti il modem. Più in dettaglio, ti verrà chiesto se desideri installare il tuo modem, e se lo possiedi, su quale porta seriale si trova.
Le prossime sezioni di configurazione potrebbero apparire o meno, a seconda del fatto che tu abbia installato o meno i pacchetti corrispondenti.
Questa sezione è molto semplice: ti verrà chiesto il fuso orario della tua zona. Se sei nel fuso di Zulu, siamo veramente spiacenti; la (estremamente lunga) lista è ordinata in ordine alfabetico, tu sei in fondo.
Questa sezione chiede che tipo di mouse possiedi, e se desideri abilitare il supporto da consolegpm(8) all'avvio.
Questa sezione chiede se l'orologio del tuo computer è configurato come Coordinated Universal Time (UTC o GMT). La maggior parte dei PC non lo sono, quindi probabilmente dovrai rispondere no.
Qui ti verrà chiesto di installare LILO (il LInux LOader; vedi Section 7.1 per maggiori informazioni).
Se Slackware dovrà essere l'unico sistema operativo sul tuo
computer, simple
dovrebbe andare
bene per te. Se invece vuoi fare un
dual-boot, l'opzione expert
è la
scelta migliore. Vedi Section 7.3
per maggiori informazioni sul dual-boot. La terza
opzione do not install
, non è
raccomandata se non sai cosa
stai facendo o se non hai una buona ragione per non installare
LILO. Se stai effettuando
un'installazione expert, ti verrà chiesto dove installare LILO.
Puoi installare LILO nel
MBR (Master Boot Record) del tuo disco fisso, nel superblock
della tua partizione Linux,
o su disco floppy.
Attualmente, la sezione di rete corrisponde a netconfig. Vedi Section 5.1 per maggiori informazioni.
Questa sezione ti permetterà di scegliere il window manager di default per X. Vedi Chapter 6 per maggiori dettagli riguardo X e i window manager.
Non importa quali pacchetti tu abbia installato, l'ultima cosa da configurare è la password di root. Per ragioni di sicurezza, questa, probabilmente, è una buona idea; comunque sia, come ogni altra cosa in Slackware, questa è una tua scelta.
Prima di poter configurare le parti più avanzate del sistema, è indispensabile imparare come questo è organizzato e quali comandi è possibile utilizzare per la ricerca di file e programmi. Èaltrettanto importante capire se sarà necessario compilare un kernel personalizzato e quali passi saranno necessari per farlo. Questo capitolo ha lo scopo di farti familiarizzare con l'organizzazione del sistema ed i file di configurazione. In seguito sarà possibile proseguire con la configurazione più avanzata.
Èimportante comprendere da cosa è composto il sistema Linux prima di immergersi nei vari aspetti della configurazione. Un sistema Linux è sensibilmente diverso da uno DOS, Windows o Macintosh ( ad eccezione di Mac OS X il quale è basato su Unix), ma queste sezioni ti aiuteranno a comprenderne la struttura in modo da poterlo configurare facilmente in base alle tue esigenze.
La prima differenza rilevante tra Slackware Linux e un sistema DOS o Windows è il filesystem. Per prima cosa, non vengono utilizzate lettere per identificare le diverse partizioni. Sotto Linux esiste un'unica directory principale. Potete pensare ad essa come al drive C: del DOS. Ogni partizione viene montata in una directory separata che si diparte dalla directory principale, un po' come un hard disk in "perenne espansione".
La directory principale viene denominata "/root directory/", ed è indentificata da un singolo slash (/). Questo concetto può apparire strano, ma facilita notevolmente le cose qualora sia necessario aggiungere dello spazio. Ad esempio, ipotizziamo di aver terminato lo spazio disponibile sul disco che ospita la partizione /home. La maggior parte delle persone installa Slackware creando un'unica grande partizione root. Bene, poichè ogni partizione può essere montata su una qualsiasi directory, è sufficiente acquistare un nuovo hard disk e montarlo sulla directory /home. In questo modo si è "appiccicato" un po' di spazio libero sul sistema, il tutto senza complicarsi la vita.
Di seguito vengono riportate le descrizioni delle directory principali di Slackware.
I programmi essenziali per l'utente vengono conservati qui. Essi rappresentano il minimo necessario ad un utente per utilizzare il sistema. In questa directory sono collocati programmi come la shell e i comandi per il filesystem (ls, cp, e cosi via). La directory /bin solitamente non viene modificata dopo l'installazione. Di solito, se viene modificata, è a causa dell'aggiornamento di qualche pacchetto software del sistema.
Contiene i file necessari al Linux Loader (LILO). Questa directory è suscettibile di qualche piccola modifica dopo l'installazione. Il kernel è conservato quì sin dalla versione 8.1 di Slackware. Nelle release precedenti, il kernel veniva archiviato direttamente nella directory /, ma attualmente è prassi comune metterequì il kernel ed i file ad esso relativi, allo scopo di facilitare il dual-boot.
Ogni cosa in Linux viene trattata come un file, perfino i dispositivi hardware come le porte seriali, gli hard disk e gli scanner. Per accedere a questi dispositivi è necessaria la presenza di alcuni file particolari, denominati device node. Tutti i device node sono collocati nella directory /dev. Potete riscontrare questa struttura in diversi sistemi operativi simil-UNIX.
Questa directory ospita i file di configurazione del sistema. Tutto è conservato qui: dai file di configurazione di X Window, al database utenti, fino agli script di inizializzazione del sistema. Gli amministratori di sistema acquisteranno con il tempo una certa familiarità con questa directory.
Linux è un sistema operativo multiutente. Ad ogni utente viene assegnato un account e dello spazio riservato ai suoi file personali. Questa directory viene denominata la "home" dell'utente. /home è la posizione predefinita dove vengono ospitate le directory home degli utenti (es.: /home/pippo è la home dell'utente pippo).
Qui vengono posizionate le librerie di sistema necessarie per le operazioni di base. Le librerie C, il dynamic loader, le librerie ncurses sono gli elementi più importanti che troviamo quì.
Questa directory contiene le directory usate come nount-point temporanei per le partizioni degli hard-disk od i dischi removibili. Qui, ad esempio, si trovano i mount-point per il CD-Rom ed i Floppy-Drive
Contiene i pachetti software opzionali installati. L'idea alla base della directory /opt è che ogni pacchetto software venga installato in /opt/software-package, il che ne rende possibile una successiva eliminazione in modo semplice. Slackware installa il contenuto di alcuni pacchetti in /opt ( come ad esempio KDE che viene posizionato in /opt/kde), ma sei libero di installare in /opt qualsiasi cosa.
Questa directory è particolare. Èil mount-point di un filesystem particolare che non risiede realmente su un disco, ma permette di comunicare con il kernel. Le informazioni che il kernel rende disponibili, vengono conservate sotto forma di file nella directory /proc. Èanche possibile inviare informazioni al kernel, scrivendo in alcuni dei files contenuti in /proc. Si provi ad esempio ad eseguire il comando cat /proc/cpuinfo.
L'amministratore di sistema è l'utente di nome root. La sua home directory è /root e non /home/root come per tutti gli altri utenti del sistema.
La ragione è molto semplice. Cosa accadrebbe se /home fosse in una partizione differente da / e non fosse possibile montarla per qualche motivo ? L'utente root non riuscirebbe ad accedere al sistema per riparare il problema, dal momento che la sua home directory sarebbe collocata sul filesystem non montato, magari perché danneggiato.
Questa directory contiene i programmi indispensabili all'utente root o per l'avvio del sistema. Sono programmi destinati ad essere eseguiti solo dall'utente root e non dai normali utenti.
Quì vengono collocati i files temporanei. Tutti gli utenti hanno accesso in lettura e scrittura in questa directory.
Solitamente, in un sistema Linux è la directory più grande. Vi è contenuto quasi tutto il resto del sistema: programmi, documentazione, il codice sorgente del kernel ed il sistema X Window. In questa directory verranno installati la maggior parte dei programmi.
In questa directory troviamo i file di log del sistema, la cache di dati ed i file di lock gestiti dai vari programmi. Viene utilizzata per conservare tutte quelle informazioni soggette a cambiamenti continui.
A questo punto dovresti avere una certa dimestichezza con le directory del sistema. Con il comando man 7 hier puoi trovare informazioni più dettagliate sulla struttura del filesystem La prossima sezione illustrerà alcuni metodi per trovare file specifici in modo efficente, evitando faticose ricerche manuali.
Adesso conosci il contenuto di ogni directory, tuttavia è ancora difficile trovare quello che si sta cercando. Puoi cercare directory per directory, ma esistono metodi decisamente più efficenti e veloci. In un sistema Slackware Linux, per la ricerca ci sono quattro comandi fondamentali.
Il primo comando è which(1). which viene impiegato per localizzare rapidamente un programma in quanto esegue la ricerca nelle directory indicate nella variabile di ambiente PATH. Restituisce la prima occorrenza del programma cercato ed il suo il percorso assoluto. Facciamo un esempio:
% which bash /bin/bash |
Come vedi, bash si trova nella directory /bin. è un comando molto limitato in quanto esegue la ricerca limitandosi al tuo PATH.
Il comando whereis(1) funziona in modo analogo al comando which ma ricerca anche le pagine di manuale ed i file sorgenti. Una ricerca whereis per bash darebbe il seguente risultato:
% whereis bash bash: /bin/bash /usr/bin/bash /usr/man/man1/bash.1.gz |
In questo caso non viene mostrata solo la posizione del programma bash, ma anche quella della relativa documentazione. Tuttavia anche questo comando è limitato. Se volessi cercare un file di configurazione? Per questo scopo non è possibile utilizzare i comandi which o whereis.
Il comando find(1) permette la ricerca di qualunque file nel filesystem sfruttando una ampia gamma di parametri di ricerca. Puoi specificare una ricerca con metacaratteri nei nomi dei file, intervalli di tempo per data/ora di creazione o modifica dei file oppure su altre proprietà avanzate dei file. Ad esempio, volessi cercare nel filesystem la posizione del file xinitrc, potresti usare il seguente comando:
% find / -name xinitrc /var/X11R6/lib/xinit/xinitrc |
find impiegherà un po' a completare la ricerca poichè dovrà attraversare tutto l'albero delle directory a partire dalla directory root. E lanci il comando come utente normale, probabilmente otterrai alcuni messaggi di errore relativi alle directory alle quali solo l'utente root ha accesso. Tuttavia find è molto efficace nella ricerca. Se solo potesse essere un pò più veloce...
Il comando slocate(1) ricerca nell'intero filesystem, proprio come il comando find, ma la ricerca viene fatta consultando un database, piuttosto che scorrendo il filesystem vero e proprio. Il sistema è configurato per aggiornare ogni mattina il contenuto del database con la lista aggiornata dei file presenti sul sistema. Puoi lanciare manualmente updatedb(1) per aggiornare tale database (prima di lanciare updatedb devi lanciare il comando su per diventare l'utente root). Ecco un esempio di slocate in azione:
% slocate xinitrc # non è necessario partire dalla directory root(/) /var/X11R6/lib/xinit/xinitrc /var/X11R6/lib/xinit/xinitrc.fvwm2 /var/X11R6/lib/xinit/xinitrc.openwin /var/X11R6/lib/xinit/xinitrc.twm |
Ottieni più di quello che stavi cercando ed anche più velocemente. Con questi comandi ora sei in grado di trovare qualsiasi cosa cerchi all'interno del tuo sistema Linux.
I file di inizializzazione del sistema si trovano nella directory /etc/rc.d. Slackware usa il layout BSD-style per i suoi file di inizializzazione a differenza degli init script di System, che tendono a rendere le variazioni di configurazione molto più difficoltose se non si utilizzano programmi specificatamente realizzati per questo scopo. Negli init script tipo BSD, ogni runlevel è dato ad un singolo file rc. In System V, ogni runlevel è data alla propria singola directory, la quale contiene numerosi init scripts. Questo fornisce una struttura organizzata che è facile da mantenere.
Ci sono diverse categorie di file di inizializzazione. Queste sono system startup, runlevels, inizializzazione della rete, e compatibilità con System V. Come da tradizione, ammasseremo qualunque altra cosa in un'altra categoria.
Il primo programma da eseguire sotto Slackware vicino al kernel di Linux è init(8). Questo programma legge il file /etc/inittab(5) per vedere come deve essere fatto partire il sistema. Esso esegue lo script /etc/rc.d/rc.S per preparare il sistema prima che questo venga portato nel runlevel desirato. Il file rc.S abilita la tua memoria virtuale, monta i tuoi filesystems, pulisce determinate directory di log, inizializza dispositivi Plug and Play, carica i moduli del kernel, configura i dispositivi PCMCIA, inizializza le porte seriali, ed esegue gli script System V (se presenti). Ovviamente rc.S ha parecchie funzioni in sè, ma ci sono alcuni altri scripts in /etc/rc.d che rc.S eseguirà per completare il proprio lavoro:
Questo è l'attuale script di inizializzazione del sistema.
Carica moduli del kernel. Cose tipo la tua scheda di rete, supporto per PPP, ed altre cose caricate qui. Se questo script trova rc.netdevice, esso lo eseguirà.
Esegue una scansione e configura qualunque dispositivo PCMCIA che tu potresti avere sul tuo sistema. Questo è molto utile per gli utenti di laptop, che probabilmente hanno modem o schede di rete PCMCIA.
Configura la tua porta seriale eseguento l'appropriato comando setserial.
Ricerca script System V init per il desirato runlevel e li esegue. Questo è discusso più in dettaglio più sotto.
Terminata l'inizializzazione del sistema, init procede all'inizializzazione del runlevel impostato. Un runlevel può essere pensato come una descrizione dello stato assunto dal sistema a regime. Potrebbe sembrare ridondante, ma in sostanza il runlevel impone ad init se il sistema accetterà o meno l'accesso di più utenti o se ne sarà ammesso uno solo; se saranno necessari o meno i servizi di rete e se dovrà essere usato il sistema X Window oppure il programma agetty(8) per gestire gli accessi degli utenti. I file elencati di seguito descrivono i numerosi runlevel presenti in Slackware Linux.
Arresto del sistema (runlevel 0). Di default il file rc.0 è un link simbolico a rc.6.
Avvio in modalità multiutente (runlevel 4) con interfaccia grafica (X11). Il programma che gestisce l'accesso potrebbe essere sia KDM che GDM o XDM.
Riavvio del sistema (runlevel 6).
Avvio in modalità utente singolo (runlevel 1).
Modalità multiutente (runlevel 2 e 3) con accesso standard: in modalità testuale. Si tratta del runlevel preimpostato in Slackware.
I runlevel 2, 3 e 4 avvieranno i servizi di rete. Di seguito sono elencati i file responsabili dell'inizializzazione dei servizi:
Creato dal programma netconfig, lo script rc.inet1 assolve al compito di configurare le interfacce di rete esistenti.
Eseguito dopo rc.inet1, avvia tutti i servizi base della rete.
Avvia i servizi di rete AppleTalk.
Avvia il web server Apache. Come pochi altri script rc, rc.httpd può essere impiegato per fermare e riavviare il servizio. Lo script accetta i parametri stop, start o restart.
Avvia il news server.
La compatibilità del processo di avvio con System V è stata introdotta in Slackware 7.0. Molte altre distribuzioni Linux usano tale stile anziché quello BSD. La differenza di base consiste nel fatto che ad ogni runlevel sia assegnata una sotto-directory per gli specifici script di init, mentre lo stile BSD prevede un unico script per ogni runlevel.
Lo script rc.sysvinit cercherà eventuali script System V di inizializzazione presenti sul sistema in /etc/rc.d e, nel caso il runlevel fosse quello appropriato, li lancerà. Una soluzione utile per pacchetti software commerciali che includono solo script di inizializzazione System V.
Segue una descrizione degli altri script di inizializzazione del sistema. Sono solitamente lanciati da uno degli script principali trattati in precedenza ed è pertanto sufficiente personalizzarne il contenuto.
Avvia il servizio di gestione del mouse che permette, tra l'altro, di copiare ed incollare il testo nella console Linux. Può capitare che gpm causi problemi con il mouse quando quest'ultimo è usato con X Windows. Se si dovessero riscontrare problemi nell'uso del mouse sotto X, si provi a revocare il permesso di esecuzione del file e quindi a fermare il servizio gpm.
Carica il font preimpostato per lo schermo della console di Linux.
Contiene i comandi di avvio specifici del proprio sistema. Lo script risulta vuoto immediatamente dopo l'installazione di un nuovo sistema, essendo riservato agli amministratori del sistema stesso. Lo script è lanciato per ultimo, dopo che ogni altra operazione di inizializzazione ha avuto luogo.
Tutto ciò che si deve fare per abilitare un qualsiasi script consiste nell'assegnare i permessi di esecuzione allo script stesso mediante il comando . Per disabilitare uno script, gli si revochi il permesso di esecuzione. Per informazioni più approfondite circa chmod si faccia riferimento alla Section 9.2.
Il Kernel è la parte del sistema operativo che fornisce l'accesso allo hardware, il controllo dei processi e dell'intero sistema. Il kernel comprende il supporto per le periferiche hardware installate, pertanto sceglierne uno per il proprio sistema rappresenta un passo importante della configurazione.
Slackware è corredata da più di una dozzina di kernel compilati e pronti all'uso tra cui è possibile effettuare la propria scelta. Ognuno è costituito da un insieme standard di driver più driver addizionali specifici. È possibile utilizzare uno dei kernel precompilati oppure compilarne uno che soddisfi le specifiche esigenze partendo dal codice sorgente. In entrambi i casi, è sempre bene accertarsi che il kernel includa il supporto per lo hardware necessario al sistema che si installa.
I kernel precompilati in Slackware sono disponibili nella directory /kernels presente sul CD-ROM o sul sito FTP nella directory principale: Slackware. I kernel disponibili cambiano ad ogni nuovo rilascio della distribuzione, per informazioni è opportuno consultare la documentazione contenuta nella directory. La directory /kernels comprende una sotto-directory per ogni kernel disponibile. Le sotto-directory hanno lo stesso nome del correlato dischetto di avvio. In ogni sotto-directory si troveranno i seguenti file:
File | Scopo |
---|---|
System.map | La mappatura di sistema per il kernel |
bzImage | L'immagine del kernel |
config | Il file di configurazione per compilare il kernel specifico |
Per usare un kernel è sufficiente copiare i file System.map e config nella directory /boot; copiare nella stessa directory l'immagine del kernel, rinominandola vmlinuz , e lanciare il comando /sbin/lilo(8) per installare il nuovo kernel, quindi riavviare il sistema. Bastano questi pochi passi per installare un nuovo kernel.
Tutti i kernel il cui nome termina con .i sono kernel IDE: non includono il supporto SCSI al loro interno. I kernel il cui nome termina con .s sono kernel SCSI. I kernel SCSI includono lo stesso supporto IDE di quelli .i ed in aggiunta il supporto SCSI.
La domanda “Dovrei compilare un kernel per il mio sistema ?” viene spesso avanzata dagli utenti neofiti. La risposta più appropriata è "Forse". Esistono situazioni in cui sarà necessario compilare un kernel specifico per il proprio sistema, ma la maggioranza degli utenti potrà ricorrere ad un kernel precompilato ed ai moduli dinamici dello stesso per ottenere un sistema perfettamente funzionante. Quando si aggiorna il kernel ad una versione più recente, di cui non sono ancora disponibili i pacchetti precompilati per Slackware, o se si installano patch al kernel per estenderne il supporto ad hardware speciale, non compreso in maniera nativa nel codice sorgente, la compilazione del kernel diventa indispensabile. Chiunque disponga di un sistema multi-processore vorrà sicuramente compilare un kernel che permetta la gestione di più processori. Ed ancora, un kernel personalizzato potrebbe girare molto più velocemente di uno standard; potrebbe perciò valer la pena di compilare un kernel con ottimizzazioni per il processore specifico della propria macchina.
La compilazione di un kernel personalizzato non è difficile. Il primo passo consiste nell'accertarsi di aver installato il codice sorgente sul proprio sistema, i pacchetti della serie K, durante l'installazione. Si dovrà poi verificare di aver installato i pacchetti della serie D, più nello specifico, il compilatore C, il make GNU e le binutils GNU. In generale non sarebbe male aver installato tutti i pacchetti della serie D, se si prevede di svolgere una qualsiasi attività di sviluppo. L'ultima release del codice sorgente del kernel può essere scaricata all'indirizzo http://www.kernel.org/mirrors.
% su - Password: # cd /usr/src/linux |
Il primo passo consiste nel portare il codice sorgente del kernel al suo stato base. Per farlo si lanci il comando (Nota bene: Si effettui preventivamente una copia di backup del file .config perché il comando lo cancella senza mostrare alcun avviso in merito).
# make mrproper |
Dopo di che è possibile configurare il kernel per il proprio sistema. Il kernel attuale offre tre strade per la configurazione: La prima consiste in un sistema testuale a domanda - risposta che pone un insieme di domande in sequenza per costruire il file di configurazione. Lo svantaggio di questo metodo è che, in caso di errore, si deve ricominciare da capo. Il metodo preferito da molti utenti consiste nell'interfaccia testuale a menù. Infine, esiste una interfaccia grafica basata su X window per configurare il kernel. Scelto il metodo, si proceda lanciando il rispettivo comando:
# make config (Interfaccia testuale domanda - risposta) # make menuconfig (Interfaccia testuale a menù) # make xconfig (Interfaccia grafica, accertarsi che X sia stato avviato) |
Gli utenti neofiti troveranno probabilmente che menuconfig sia il più facile da usare. Il programma fornisce numerose schermate di aiuto che descrivono le varie componenti del kernel. Dopo aver configurato il kernel, si esca dal programma di configurazione. Il programma scriverà automaticamente i file di configurazione necessari. Si può quindi procedere alla preparazione del codice sorgente per la compilazione con i comandi:
# make dep # make clean |
Il passo successivo consiste nella compilazione vera e propria del kernel, lanciando il comando bzImage come nell'esempio sottostante:
# make bzImage |
Che potrebbe impiegare molto tempo a seconda della velocità della propria CPU. Durante la fase di compilazione compariranno a video i messaggi del compilatore. Terminata la compilazione del kernel si proceda con tutte quelle parti configurate come moduli.
# make modules |
È infine possibile installare il kernel ed i relativi moduli compilati. Per farlo su di un sistema Slackware si lancino i seguenti comandi:
# mv /boot/vmlinuz /boot/vmlinuz.old # cat arch/i386/boot/bzImage > /vmlinuz # mv /boot/System.map /boot/System.map.old # cp System.map /boot/System.map # make modules_install |
Per prudenza si aggiorni il file /etc/lilo.conf aggiungendo una sezione per l'avvio con il vecchio kernel nel caso quello nuovo non funzioni a dovere. Dopo di che si lancio il comando /sbin/lilo per installare il nuovo settore di boot e si proceda al riavvio del sistema con il nuovo kernel.
La compilazione di un kernel della serie 2.6 differisce poco da
quella di un kernel
2.4 o 2.2, ma è importante capire le differenze prima di
cimentarvisi. Non è più
necessario lanciare i comandi make dep
e make clean. Il processo di
compilazione di un kernel 2.6 inoltre non
visualizza altrettanti messaggi. Il risultato è un processo di
compilazione più semplice,
comunque non esente da magagne proprie. In caso di problemi con
la compilazione del
kernel, il primo consiglio consiste nel riabilitare i messaggi
normalmente soppressi
concatenando V=1
al comando make.
Ciò consente di salvare più informazioni che potrebbero aiutare
uno sviluppatore del
kernel o altri "esperti" a fornire una soluzione del problema.
# make bzImage V=1 |
Modulo del kernel è un nome alternativo per un driver di dispositivo che può essere aggiunto ad un kernel in esecuzione. I moduli consentono di estendere il supporto hardware e le funzionalità del kernel senza necessariamente sceglierne uno diverso o ricompilarne uno ad hoc.
I moduli possono essere caricati o rimossi in qualsiasi momento, anche quando il sistema sia in funzione; ciò facilita enormemente ad un amministratore le operazioni di aggiornamento dei driver. Un nuovo modulo può essere compilato, il vecchio rimosso ed il nuovo caricato... il tutto senza riavviare la macchina.
I moduli sono immagazzinati nella directory /lib/modules/kernel version del sistema. Possono essere caricati durante la fase di avvio del sistema configurando il file rc.modules. Il file è molto ben commentato e offre parecchi esempi pratici per la maggioranza dei componenti hardware. Per stampare a video l'elenco dei moduli attivi, si lanci il comando lsmod(1):
# lsmod Module Size Used by parport_pc 7220 0 parport 7844 0 [parport_pc] |
Come si può vedere è caricato il solo modulo per la porta parallela. Per rimuovere un modulo si ricorre al comando rmmod(1). Per caricare un modulo si può ricorrere sia al comando modprobe(1) che a insmod(1). In generale modprobe è più sicuro poiché caricherà anche tutti i moduli da cui dipende quello che si sta cercando di installare.
Molti utenti non caricano o rimuovono mai moduli a mano.
Ricorrono all'autoloader del
kernel per la gestione dei moduli. Slackware include in maniera
nativa kmod
nei propri kernel. kmod
è una
opzione del kernel che consente al kernel stesso di caricare
automaticamente i moduli nel
momento in cui sono necessari. Per maggiori informazioni circa kmod
e la sua configurazione leggere il
file: /usr/src/linux/Documentation/kmod.txt.
Il pacchetto contenente i
sorgenti del kernel dovrà essere stato installato,
alternativamente i sorgenti del kernel
possono essere scaricati all'indirizzo http://kernel.org.
Maggiori informazioni possono essere reperite leggendo le pagine man dei rispettivi comandi o consultando il file rc.modules.
Quando hai installato Slackware, la procedura di installazione ha invocato il programma netconfig. netconfig ha provato ad eseguire per te le seguenti operazioni:
Ti ha chiesto il nome del tuo computer e il relativo nome di dominio.
Ti ha fornito una breve spiegazione dei vari schemi d'indirizzamento, ti ha indicato quando debbano essere usati e ti ha chiesto di sceglierne uno per configurare la tua scheda di rete:
Static-IP
DHCP
Loopback
Dopodichè ha provveduto a rilevare l'eventuale presenza di una scheda di rete da configurare.
netconfig, se lo desideri, si prenderà generalmente cura di un buon ottanta per cento del lavoro di configurazione della tua rete LAN. Ad ogni modo ti suggeriamo di controllare sempre il tuo file di configurazione per un paio di ragioni:
Non devi mai fidarti ciecamente di un programma di setup per la configurazione del tuo computer. Se usi un programma del genere, dovresti controllare in ogni caso la configurazione.
Se sei alle prime armi con Slackware e con la gestione di un sistema Linux, prendere visione di una configurazione funzionante può rivelarsi istruttivo. In questo modo imparerai come deve essere fatta la configurazione. E questo ti permetterà di correggere eventuali problemi della stessa in futuro.
Nel momento in cui vorrai connettere ad una rete il tuo sistema Slackware, la prima cosa di cui avrai bisogno è una scheda di rete compatibile con Linux. Controlla con attenzione che la scheda di rete prescelta sia davvero compatibile con Linux (per trovare informazioni sulle schede di rete supportate, puoi fare riferimento al Linux Documentation Project e/o alla documentazione del kernel). Ad ogni modo, resterai piacevolmente sorpreso dall'elevato numero di schede supportate dai kernel più recenti. Detto questo, prima di comprare la scheda di rete, ti suggeriamo ugualmente di dare un'occhiata alle varie liste di hardware compatibile, disponibili su internet (come The GNU/Linux Beginners Group Hardware Compatibility Links e The Linux Documentation Project Hardware HOWTO). Quel pizzico di tempo in più speso nella ricerca iniziale può farti evitare giorni o persino settimane di prove e tentativi per far funzionare una scheda di rete che non è affatto compatibile con Linux.
Quando prendi visione delle liste di compatibilità hardware di Linux disponibili su internet, o quando fai riferimento alla documentazione disponibile sulla tua macchina, sarebbe una buona idea annotare anche quale modulo del kernel dovrai usare per supportare la tua scheda di rete.
I moduli del kernel che devono essere caricati all'avvio sono elencati nel file rc.modules in /etc/rc.d, oppure vengono selezionati dal sistema di caricamento automatico dei moduli avviato da /etc/rc.d/rc.hotplug. Il file rc.modules di default include una sezione dedicata al supporto dei dispositivi di rete. Aprendo con un editor di testo il file rc.modules e cercando tale sezione, potrai notare come prima di tutto venga fatta una ricerca per il file eseguibile rc.netdevice in /etc/rc.d/. Questo script viene creato qualora il comando setup sia riuscito a rilevare automaticamente il tuo dispositivo di rete durante l'installazione.
Dopo il succitato blocco “if” relativo allo script, seguono una lista di dispositivi di rete e svariate righe di modprobe, tutte commentate e quindi non attive. Trova il tuo dispositivo e decommenta la corrispondente riga di modprobe, dopodichè salva il file. L'avvio di rc.modules da utente root dovrebbe ora permetterti di caricare il driver per la tua scheda di rete (assieme a qualsiasi altro modulo elencato nel file e non commentato). Tieni presente che alcuni moduli (come il driver ne2000) richiedono parametri; assicurati di scegliere la riga corretta.
Questo passaggio contempla tutte le schede di rete interne PCI e ISA. I driver per queste schede sono disponibili attraverso moduli del kernel caricabili, come descritto nel paragrafo precedente. /sbin/netconfig dovrebbe aver rilevato la scheda e dovrebbe aver preparato con successo il tuo file rc.netdevice. Se questo non è avvenuto, verosimilmente il modulo che stai provando a caricare non è quello idoneo per la tua scheda (è capitato talvolta che per generazioni diverse della stessa scheda, con lo stesso produttore, fosse necessario usare un modulo diverso). Se sei certo che il modulo che stai provando a caricare sia quello giusto, allora la soluzione migliore è fare riferimento alla documentazione del modulo per controllare l'eventuale necessità di parametri specifici da passare al momento del caricamento.
Come le schede LAN, i modem possono avvalersi di diversi tipi di bus. Fino a tempi recenti, la maggior parte dei modem era costituita da schede ISA a 8 o 16 bit. Oggigiorno, dopo gli sforzi fatti da Intel e dai produttori di schede madri per rendere del tutto obsoleto il bus ISA, i modem sono disponibili per lo più sotto forma di dispositivi esterni collegabili tramite porta seriale o USB, o come modem interni PCI. Se vuoi assicurarti che il tuo modem funzioni con Linux, è ESTREMAMENTE importante fare una ricerca preliminare sul modem che intendi acquistare, in modo particolare se stai pensando ad un modem PCI. Una buona parte dei modem PCI disponibili nei negozi, se non la quasi totalità, è costituita da WinModem. In questi ultimi, mancano alcuni componenti hardware basilari sulla scheda: le funzioni svolte dal suddetto hardware sono generalmente demandate alla CPU dal driver del modem e dal sistema operativo Windows. In pratica questo vuol dire che non dispongono dell'interfaccia seriale standard che PPPD si aspetta di trovare al momento della chiamata all'Internet Service Provider.
Se vuoi essere assolutamente certo che il modem che acquisterai funzioni con Linux, scegli un modem esterno che si colleghi alla porta seriale del tuo PC. Questo tipo di modem infatti funziona meglio e crea meno grattacapi in fase di installazione e mantenimento, anche se richiede alimentazione esterna e tende generalmente a costare un pò di più.
Esistono numerosi siti web che offrono driver e assistenza per configurare dispositivi WinModem. Alcuni utenti hanno configurato e installato con successo i driver per vari winmodem basati su chipset Lucent, Conexant e Rockwell. Dato che il software richiesto per questi dispositivi non è incluso in Slackware e dato che varia da driver a driver, non approfondiremo la discussione a riguardo.
Durante l'installazione di Slackware, ti viene data l'opportunità di installare il pacchetto pcmcia (disponibile nel set “A” della distribuzione). Questo pacchetto contiene i programmi e i file di installazione necessari per il funzionamento delle schede PCMCIA con Slackware. Èimportante notare che il pacchetto pcmcia installa solo il software necessario per il generico funzionamento delle schede PCMCIA. NON installa alcun driver o modulo. I moduli e i driver saranno invece disponibili nella directory /lib/modules/`uname -r`/pcmcia . Potresti dover fare un pò di sperimentazione per scoprire quale sia il modulo idoneo per la tua scheda di rete.
Dovrai modificare il file /etc/pcmcia/network.opts (per una scheda Ethernet) o il file /etc/pcmcia/wireless.opts (per una scheda di rete wireless). Come accade per la maggior parte dei file di configurazione in Slackware, questi due file contengono numerosi commenti esplicativi, che rendono semplice la determinazione delle modifiche da effettuare.
A questo punto, la tua scheda di rete dovrebbe essere fisicamente installata sul computer e i relativi moduli del kernel dovrebbero essere caricati. Benchè tu non sia ancora in grado di comunicare usando la scheda di rete, puoi ottenere informazioni sul dispositivo usando ifconfig -a .
# ifconfig -a eth0 Link encap:Ethernet HWaddr 00:A0:CC:3C:60:A4 UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 RX packets:110081 errors:1 dropped:0 overruns:0 frame:0 TX packets:84931 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:114824506 (109.5 Mb) TX bytes:9337924 (8.9 Mb) Interrupt:5 Base address:0x8400 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2234 errors:0 dropped:0 overruns:0 frame:0 TX packets:2234 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:168758 (164.8 Kb) TX bytes:168758 (164.8 Kb) |
Se avessi digitato soltanto /sbin/ifconfig
senza aggiungere
l'opzione -a
, non potresti vedere
l'interfaccia eth0, dato che la tua
scheda di rete non dispone ancora di un
valido indirizzo IP e delle informazioni di routing.
Benchè esistano molti modi diversi di configurare una rete, questi possono essere raggruppati in due tipi: indirizzamento statico e dinamico. Le reti statiche sono configurate in modo tale che ciascun nodo (termine tecnico per indicare qualsiasi cosa disponga di un indirizzo IP) abbia sempre lo stesso indirizzo IP. Le reti dinamiche sono configurate in modo che gli indirizzi IP assegnati ai nodi siano gestiti da un singolo server denominato server DHCP.
DHCP (o Dynamic Host Configuration Protocol, protocollo per la configurazione dinamica dei nodi), è uno dei sistemi attraverso cui è possibile assegnare un indirizzo IP ad un computer al suo avvio. Quando il client DHCP viene avviato, effettua una richiesta sulla rete locale, chiedendo ad un server DHCP di assegnargli un indirizzo IP. Il server DHCP ha un pool (o scope) di indirizzi IP disponibili. Il server risponderà a questa richiesta fornendo un indirizzo IP tra quelli nel pool, assieme ad un lease time (tempo di affitto). Una volta che il lease time per un dato indirizzo IP sia scaduto, il client dovrà contattare nuovamente il server e ripetere la negoziazione.
Il client dunque accetterà l'indirizzo IP fornitogli dal server e configurerà la propria interfaccia di rete con il suddetto indirizzo. Tuttavia, c'è un altro comodo trucco che i client DHCP usano durante le assegnazioni. Il client memorizza infatti l'indirizzo IP assegnatogli e, alla negoziazione successiva, chiederà al server di riassegnargli il medesimo indirizzo. Se possibile, il server soddisferà la richiesta; viceversa, assegnerà al client un nuovo indirizzo. Dunque, la negoziazione si svolge più o meno in questo modo:
Client: C'è un server DHCP disponibile sulla rete locale?
Server: Si, c'è. Sono qui.
Client: Ho bisogno di un indirizzo IP.
Server: Puoi prendere l'indirizzo 192.168.10.10 per 19200 secondi.
Client: Grazie.
Client: C'è un server DHCP disponibile sulla rete locale?
Server: Si, c'è. Sono qui.
Client: Ho bisogno di un indirizzo IP. L'ultima volta che abbiamo dialogato, avevo 192.168.10.10; posso averlo nuovamente?
Server: Si, puoi (oppure No, non puoi averlo: prendi invece l'indirizzo 192.168.10.12).
Client: Grazie.
Il client DHCP su Linux è /sbin/dhcpcd. Aprendo il file /etc/rc.d/rc.inet1 con il tuo editor di test preferito, noterai che il comando /sbin/dhcpcd viene chiamato a metà script. L'esecuzione del comando porterà alla conversazione descritta sopra. dhcpcd terrà inoltre traccia del tempo di validità rimasto per l'uso dell'indirizzo IP, e contatterà automaticamente il server DHCP richiedendo il rinnovo dell'affitto quando necessario. DHCP può anche controllare informazioni correlate, come il server ntp da usare, quale routing adoperare, etc.
Allestire DHCP su Slackware è facile. Avvia netconfig e seleziona l'opzione DHCP quando ti verrà proposta. Se hai più di una scheda di rete e non desideri che sia l'interfaccia eth0 ad essere configurata tramite DHCP, ti basterà modificare il file /etc/rc.d/rc.inet1.conf e cambiare i parametri relativi all'interfaccia di rete che dovrà avvalersi di DHCP.
Gli indirizzi IP statici sono indirizzi fissi che è possibile modificare solo manualmente. Sono usati in tutti quei casi in cui l'amministratore non desidera che gli indirizzi IP varino, per esempio sui server interni della LAN, sui server connessi ad Internet e sui router. Con l'indirizzamento IP statico, assegni manualmente un indirizzo e tale indirizzo rimane. Le altre macchine sapranno che hai sempre un dato indirizzo IP e tramite quello potranno sempre contattarti.
Se desideri assegnare un indirizzo IP al tuo nuovo Slackware box, puoi farlo sia attraverso lo script netconfig, sia modificando il file /etc/rc.d/rc.inet1.conf. In /etc/rc.d/rc.inet1.conf , potrai notare:
# Config information for eth0: IPADDR[0]="" NETMASK[0]="" USE_DHCP[0]="" DHCP_HOSTNAME[0]="" |
E alcune righe più avanti:
GATEWAY="" |
In questo caso, dobbiamo semplicemente inserire le informazioni corrette tra i doppi apici. Le variabili verranno poi usate da /etc/rc.d/rc.inet1 all'avvio di sistema per configurare le schede di rete. Per ciascuna scheda di rete, inserisci le informazioni di indirizzamento desiderate o in alternativa scrivi “YES” come valore per USE_DHCP. Slackware inizializzerà le interfacce con le suddette informazioni, nell'ordine in cui sono elencate nel file.
La variabile GATEWAY imposta il routing di default per Slackware. Tutte le comunicazioni tra il tuo computer e gli altri computer su Internet devono passare attraverso questo gateway, a meno che non vengano specificate altre informazioni di routing. Se usi DHCP, generalmente non avrai bisogno di fornire alcun indirizzo in questa variabile, dato che il server DHCP provvederà ad indicare quale gateway usare.
Ok, dunque disponi di un indirizzo IP, hai un gateway di defualt, potresti persino avere dieci milioni di dollari (manda qualcosa anche a noi), ma a che serve tutto questo se non puoi tradurre i nomi in indirizzi IP? A nessuno piace l'idea di scrivere 72.9.234.112 nel proprio web browser per raggiungere www.slackbook.org. Dopo tutto, chi altri memorizzerebbe quell'indirizzo IP, eccezion fatta per gli autori? Abbiamo bisogno di configurare DNS, ma come? Èqui che il file /etc/resolv.conf entra in gioco.
Èpossibile che tu abbia già le giuste informazioni in /etc/resolv.conf. Se configuri la tua connessione di rete usando DHCP, il server DHCP dovrebbe gestire l'aggiornamento di questo file per te (tecnicamente il server DHCP dice semplicemente a dhcpcd cosa scriverci, e quest'ultimo obbedisce) Se hai necessità di aggiornare manualmente la tua lista di server DNS, dovrai modificare manualmente il file /etc/resolv.conf. Segue un esempio:
# cat /etc/resolv.conf nameserver 192.168.1.254 search lizella.net |
La prima linea è semplice. La direttiva nameserver ci dice quale server DNS interrogare. Ovviamente, questi server sono espressi sempre tramite i loro indirizzi IP. Puoi avere un qualsiasi numero di server DNS elencati in questo modo. Slackware li adopererà uno dopo l'altro fino a quando uno di essi non restituisca l'informazione desiderata.
La seconda linea è un pò più interessante. La direttiva search ci offre una lista di nomi di dominio da assumere quando sia fatta una richiesta DNS. Questo ci permette di contattare una macchina attraverso la sola prima parte del suo FQDN (Fully Qualified Domain Name). Per esempio, se “slackware.com” fosse un tuo parametro per la direttiva search, potresti raggiungere http://store.slackware.com semplicemente indicando al tuo web browser l'URL http://store .
# ping -c 1 store PING store.slackware.com (69.50.233.153): 56 data bytes 64 bytes from 69.50.233.153 : icmp_seq=0 ttl=64 time=0.251 ms 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.251/0.251/0.251 ms |
Ora che anche DNS funziona bene, cosa potremmo fare se volessimo bypassare il nostro server DNS o associare ad una macchina un nome che non è disponibile tramite DNS? Slackware include il comodissimo file /etc/hosts che contiene una lista locale di nomi DNS e indirizzi IP associati.
# cat /etc/hosts 127.0.0.1 localhost locahost.localdomain 192.168.1.101 redtail 172.14.66.32 foobar.slackware.com |
Come puoi vedere, il nome localhost ha l'indirizzo IP 127.0.0.1 (sempre riservato a localhost), redtail può essere raggiunto all'indirizzo 192.168.1.101, e foobar.slackware.com ha indirizzo 172.14.66.32.
Molte persone si collegano ancora ad Internet attraverso qualche tipo di connessioni in dialup. Il metodo più comune è PPP, pure SLIP è ancora usato occasionalmente. Configurando il tuo sistema per farlo collegare via PPP ad un server remoto è abbastanza semplice. Abbiamo incluso alcuni tools per aiutarti a configurarlo.
Slackware include un programma chiamato pppsetup che ti permette di configurare il tuo sistema per l'uso di un account dialup. Il suo aspetto è simile a quello del programma netconfig. Per avviare il programma, assicurati di accedere al sistema come utente root. Dopodichè digita pppsetup .
Il programma ti presenterà una serie di domande, attraverso cui potrai passare le informazioni corrette. Per esempio il tuo modem, la stringa di inizializzazione dello stesso e il numero di telefono dell'ISP. Alcuni campi da riempire avranno un valore di default, che nella maggior parte dei casi si rivelerà idoneo e quindi non necessiterà alcuna modifica.
Dopo l'esecuzione di pppsetup, questo provvederà a creare i programmi ppp-go e ppp-off. Come i nomi auto-esplicativi suggeriscono, i due programmi servono rispettivamente per avviare e terminare la connessione PPP. I due programmi sono collocati in /usr/sbin e necessitano dei privilegi di root per funzionare.
Per la maggior parte degli utenti, l'uso di pppsetup sarà sufficiente per allestire il tutto. Tuttavia, ci possono essere situazioni in cui desideri modificare alcuni dei valori usati dal demone PPP. Tutte le informazioni di configurazione sono conservate in /etc/ppp. Ecco una lista dei diversi file disponibili assieme al relativo scopo:
ip-down |
Questo script viene avviato da pppd al termine della connessione PPP. |
ip-up |
Questo script viene avviato da pppd dopo una connessione PPP effettuata con successo. Inserisci in questo file qualsiasi comando tu voglia eseguire subito dopo la riuscita della connessione. |
options |
Generiche opzioni di configurazione per pppd. |
options.demand |
Generiche opzioni di configurazione per pppd quando avviato in modalità demand dialing. |
pppscript |
I comandi inviati al modem. |
pppsetup.txt |
Un log delle scelte da te effettuate quando hai eseguito pppsetup. |
![]() |
La maggior parte di questi file non esisterà fino a quando tu non abbia avviato pppsetup. |
Il networking wireless è ancora qualcosa di relativamente nuovo nel mondo dei computer ma sta prendendo piede molto rapidamente, man mano che la gente acquista laptop e desidera networking al volo, senza dover trafficare con vecchi cavi di rete. Questo trend non accenna a diminuire. Sfortunatamente, il supporto del networking wireless in Linux non è agli ottimi livelli di quello del tradizionale networking via cavo.
Ci sono tre passi base da seguire per configurare una scheda di rete wireless 802.11:
Supporto hardware per la scheda di rete
Configurare la scheda per la connessione ad un access point wireless
Configurare la rete
Il supporto hardware per una scheda di rete wireless è fornito attraverso il kernel, direttamente compilato nello stesso o tramite modulo. Generalmente, la maggior parte delle schede Ethernet più recenti sono supportate tramite moduli, dunque dovrai determinare il modulo del kernel appropriato e caricarlo tramite /etc/rc.d/rc.modules. netconfig potrebbe non rilevare la tua scheda di rete wireless, quindi dovrai probabilmente determinare da te il tipo di scheda. Prendi visione della pagina http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/ per recuperare ulteriori informazioni sui driver del kernel disponibili per le varie schede di rete wireless.
Quasi tutto il lavoro di configurazione viene svolto tramite iwconfig, quindi ricordati di fare riferimento alla man page di iwconfig se hai bisogno di altre informazioni.
Prima di tutto, vorrai configurare il tuo access point wireless. Gli access point wireless variano abbastanza per terminologia usata e configurazione, quindi potresti dover fare alcune aggiustamenti in base al tuo hardware. In generale, avrai bisogno almeno delle seguenti informazioni:
L'ID (valore identificativo) del dominio, o nome della rete (denominato ESSID da iwconfig)
Il canale usato dal wireless access point
Le impostazioni di cifratura, incluse le eventuali chiavi usate (preferibilmente in valori esadecimali)
![]() |
UNA NOTA SUL WEP. WEP non è un sistema molto sicuro, ma è sempre molto meglio di niente. Se desideri un maggior livello di sicurezza per la tua rete wireless, dovresti valutare l'allestimento di VPN o IPSec; entrambe le opzioni vanno oltre gli scopi di questo documento. Potresti anche configurare il tuo wireless access point in modo tale che non trasmetta pubblicamente il suo ID di dominio o ESSID. Discutere approfonditamente delle politiche di gestione wireless va oltre gli scopi di questa sezione, ma una rapida ricerca su Google ti offrirà più informazioni di quante potessi desiderarne. |
Una volta recuperate le informazioni descritte sopra, e assumendo che tu abbia usato modprobe per caricare gli opportuni driver del kernel, puoi modificare il file rc.wireless.conf e aggiungere le tue impostazioni. Il file rc.wireless.conf è un pò disordinato. L'ultima risorsa è modificare la sezione generica inserendo i valori per ESSID e KEY, nonchè CHANNEL se richiesto dalla scheda (prova inizialmente a non impostare valori per CHANNEL e controlla se funziona; altrimenti, imposta un valore appropriato anche per CHANNEL). Se ti senti particolarmente audace, puoi modificare il file in modo tale che solo i vari strettamente necessari siano impostati. I nomi di variabili presenti in rc.wireless.conf corrispondo ai parametri di iwconfig e vengono letti dal file rc.wireless e usatinei comandi appropriati con iwconfig .
Èuna buona idea creare una tua chiave di cifratura composta da valori esadecimali, perché in questo modo potrai essere quasi certo che il tuo wireless access point e iwconfig non avranno alcun problema con la chiave. Se invece usi una stringa, non potrai essere certo di come il wireless access point la tradurrà in una chiave esadecimale, quindi potresti dover fare lavoro di conversione.
Una volta modificato rc.wireless.conf, avvia rc.wireless da utente root, e poi avvia anche rc.inet1, sempre da utente root. Potrai poi testare la rete wireless con i classici strumenti di test come ping, assieme a iwconfig. Se hai un'interfaccia di rete via cavo, potresti voler usare ifconfig per disattivare quelle interfacce durante i test con la rete wireless, per assicurarti che eventuali errori non dipendano dalla configurazione delle altre reti. Potresti anche voler verificare il corretto funzionamento delle modifiche apportate dopo un riavvio.
Ora che hai visto come modificare /etc/rc.d/rc.wireless per la tua rete di default, diamo un'occhiata più da vicino a iwconfig e vediamo come funziona. In questo modo imparerai i metodi rapidi e manuali per impostare una rete wireless, utili per le volte in cui ti trovi in un Internet cafè o in un qualsiasi altro punto dove sia disponibile una connettività wireless per andare online.
Il primo passo è indicare alla tua scheda di rete wireless quale sia la rete cui accedere. Assicurati di rimpiazzare “eth0” con qualsivoglia interfaccia di rete la tua scheda usi e cambiare “miarete” con l'essid che desideri usare. Si, sappiamo che ricordartelo probabilmente è superfluo. Dopodichè dovrai specificare la chiave di cifratura (se presente) usata nella rete wireless. Infine, specifica il canale da usare (se necessario).
# iwconfig eth0 essid "miarete" # iwconfig eth0 key XXXXXXXXXXXXXXXXXXXXXXXXXXX # iwconfig eth0 channel n |
Questi comandi sono tutto ciò che è richiesto, dal punto di vista wireless.
Una volta che la scheda wireless sia funzionante e allacciata alla rete wireless, la configurazione di rete (indirizzo IP, etc.) viene fatta esattamente come per le reti via cavo. Fai semplicemente riferimento alle sezioni precedenti in questo capitolo.
A questo punto, dovresti avere una connessione TCP/IP funzionante sulla tua rete. Dovresti essere in grado di effettuare ping verso altri computer della tua rete interna e, se hai configurato un opportuno gateway, dovresti poter effettuare ping anche sui computer in Internet. Come è noto, il senso del portare computer in rete è l'accesso alle loro informazioni. Benchè alcune persone possano portare un computer in rete solo per il gusto di farlo, molta gente desidera condividere file e stampanti. Molte persone desiderano poter accedere a documenti su Internet o giocare a giochi online. Disporre di TCP/IP installato e funzionante sul tuo nuovo sistema Slackware è un primo passo in tal senso, ma con il solo TCP/IP installato, le funzionalità disponibili saranno molto rudimentali. Per condividere file, dovremmo trasferirli di qua e di là usando FTP o SCP. Non possiamo visualizzare i file presenti sul nostro nuovo computer Slackware sfruttando le funzioni Network Neighborhood e My Network Places presenti sui computer Windows. Ci piacerebbe poter accedere ai file sulle altre macchine Unix in modo trasparente.
Idealmente, ci piacerebbe poter usare un network file system (file system di rete) per disporre di accesso trasparente ai nostri file su altri computer. I programmi che usiamo per interagire con le informazioni presenti su altri computer non deve aver bisogno di sapere su quale computer queste effettivamente si trovino; devono solo sapere che esistono e come recuperarle. A quel punto è il sistema operativo che diviene responsabile della gestione dell'accesso a quel file attraverso i file system (di rete e non) disponibili. I due file system di rete più usati comunemente sono SMB (così come implementato da Samba) e NFS.
SMB (che sta per Server Message Block) è un discendente del vecchio protocollo NetBIOS, inizialmente utilizzato da IBM per il prodotto LAN Manager. Microsoft è sempre stata piuttosto interessata a NetBIOS e ai suoi successori (NetBEUI, SMB e CIFS). Il progetto Samba esiste dal 1991, quando fu originariamente scritto per collegare un PC IBM su cui girava NetBIOS con un server Unix. Oggigiorno, SMB è la prima scelta per condividere file e servizi di stampa su una rete, dato che Windows lo supporta.
Il file di configurazione di Samba è /etc/samba/smb.conf; uno dei file di configurazione più ricco di commenti e documentazione che tu possa trovare. Aree di condivisione di esempio sono già state impostate per te, in modo che tu possa prenderne visione e modificarle secondo le tue esigenze. Se hai bisogno di un controllo ancora maggiore, la man page per il file smb.conf è indispensabile. Dal momento che Samba è così ben documentato, non riscriveremo la sua documentazione qui. Tuttavia, daremo uno sguardo rapido alle basi.
smb.conf è spezzettato in sezioni multiple: una sezione per ciascuna area condivisa, e una sezione globale per impostare le opzioni che devono essere usate ovunque. Alcune opzioni sono valide soltanto per la sezione globale; altre sono valide soltanto fuori dalla sezione globale. Ricorda che le impostazioni definite nella sezione globale possono essere scavalcate da quelle delle altre sezioni. Fai riferimento alla man page per ulteriori informazioni.
Molto probabilmente vorrai modificare il tuo file smb.conf per adattarlo alle impostazioni di rete della tua LAN. Ti suggeriamo di modificare gli elementi sottoelencati:
[global] # workgroup = NT-Domain-Name or Workgroup-Name, eg: LINUX2 workgroup = MYGROUP |
Cambia il nome del workgroup inserendo il nome di workgroup o di dominio che usi localmente.
# server string is the equivalent of the NT Description field server string = Samba Server |
Questo sarà il nome del tuo computer Slackware quando comparirà nella cartella Network Neighborhood (o My Network Places).
# Security mode. Most people will want user level security. See # security_level.txt for details. NOTE: To get the behaviour of # Samba-1.9.18, you'll need to use "security = share". security = user |
Vorrai quasi sicuramente implementare sicurezza a livello utente per il tuo sistema Slackware.
# You may wish to use password encryption. Please read # ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba # documentation. # Do not enable this option unless you have read those documents encrypt passwords = yes |
Se le password cifrate non sono abilitate, non potrai usare Samba con NT4.0, Win2k, WinXP e Win2003. I precedenti sistemi operativi Windows non richiedevano cifratura per la condivisione dei file.
SMB è un protocollo con autenticazione, il che implica che dovrai inserire username e password corretti per usare questo servizio. Indichiamo al server samba quali username e password sono validi con il comando smbpasswd. smbpasswd necessita di un paio di ulteriori parametri che consentono di distinguere l'aggiunta di utenti tradizionali o di utenti macchina (SMB richiede che tu aggiunta i nomi NETBIOS dei computer come utenti macchina, restringendo così l'insieme dei computer da cui sia effettuabile l'autenticazione).
Aggiunta di un utente al file /etc/samba/private/smbpasswd . # smbpasswd -a user Aggiunta del nome di una macchina al file /etc/samba/private/smbpasswd . # smbpasswd -a -m machine |
Èimportante notare che un dato username o nome di macchina deve esistere preliminarmente nel file /etc/passwd. Puoi effettuare questa aggiunta semplicemente usando il comando adduser. Nota che, usando il comando adduser per aggiungere il nome di una macchina, dovrai aggiungere il simbolo del dollaro (“$”) al nome della macchina. Tuttavia, questo non deve essere fatto con il comando smbpasswd. smbpasswd aggiunge infatti il simbolo del dollaro per proprio conto. Se si dimentica di modificare in questo modo il nome della macchina con adduser, si riceverà un errore provando successivamente ad inserire lo stesso nome in samba.
# adduser machine$ |
NFS (o Network File System) è stato originariamente scritto da Sun per la propria implementazione Solaris di Unix. Benchè sia senza dubbio più semplice da allestire e far funzionare rispetto a SMB, è anche decisamente meno sicuro. Il punto debole principale di NFS è che è piuttosto semplice imitare l'ID di utente e gruppo da una macchina all'altra. NFS è un protocollo privo di autenticazione. Le versioni future del protocollo NFS prevedono un potenziamento della sicurezza, ma non sono ancora comunemente diffuse al momento in cui scriviamo.
La configurazione di NFS è gestita dal file /etc/exports. Aprendo il file /etc/exports di default in un editor, vedrai un file vuoto con due rughe commentate in cima. Dovremo aggiungere una riga al file per ciascuna directory che desideriamo esportare, con una lista delle postazioni client che potranno accedervi. Per esempio, se volessimo esportare la directory /home/foo rendendola accessibile alla postazione Bar, dovremmo semplicemente aggiungere la riga
/home/foo Bar(rw) |
al nostro file/etc/exports. Qui sotto, troverai gli esempi provenienti dalla man page del file exports:
# sample /etc/exports file / master(rw) trusty(rw,no_root_squash) /projects proj*.local.domain(rw) /usr *.local.domain(ro) @trusted(rw) /home/joe pc001(rw,all_squash,anonuid=150,anongid=100) /pub (ro,insecure,all_squash) |
Come puoi vedere sono disponibili diverse opzioni, molte delle quali risultano abbastanza autoesplicative.
NFS lavora basandosi sull'assunzione che un dato utente su una
macchina della rete
abbia lo stesso user ID su tutte le macchine della stessa rete.
Quando si tenta di
effettuare una lettura o una scrittura da un client NFS ad un
server NFS, viene passato
un UID come parte della richiesta di lettura o scrittura. Questo
UID è trattato come se
la richiesta di lettura/scrittura provenisse dalla macchina
locale. Come si può intuire,
se uno potesse specificare arbitrariamente un dato UID quando
accede alle risorse di un
sistema remoto, potrebbe ottenere un accesso superiore a quanto
pianificato. Come
parziale contromisura, ciascuna directory è montata con l'opzione
root_squash
. Questa mappa l'UID di
ciascun utente che afferma di
essere utente root ad un UID diverso, evitando l'accesso come
utente root ai file
presenti nella directory esportata. root_squash
dovrebbe
essere abilitata di default come misura di sicurezza, ma gli
autori raccomandano di
specificarla in ogni caso nel proprio file /etc/exports.
Puoi anche esportare una directory direttamente dalla riga di comando sul server usando il comando exportfs, come segue:
# exportfs -o rw,no_root_squash Bar:/home/foo |
Questa linea esporta la directory /home/foo
al computer
“Bar” e permette a Bar
di
accedere effettuando operazioni di lettura e scrittura. In più, il
server NFS non invoca
l'opzione root_squash
, il che
significa che qualsiasi utente
su Bar con un UID di “0” (l'UID dell'utente root) avrà gli stessi
privilegi
che avrebbe il root sul server. La sintassi usata da exportfs è un
pò strana (solitamente
la sintassi computer:/directory/file ,
viene usata per riferirsi
ad un dato file in una data directory presente su un dato
computer).
Troverai ulteriori informazioni sulla man page del file exports.
A partire da Slackware-10.0, l'ambiente X Window in Slackware è fornito da Xorg. X permette di disporre di un'interfaccia grafica. A differenza di quanto accade in MacOs o Windows, questa è indipendente dal sistema operativo.
X Window System è implementato attraverso numerosi programmi che girano in userland (spazio utente). I due componenti principali sono il server e il window manager. Il server si occupa delle funzioni di basso livello per l'interazione con l'hardware video, pertanto è progettato in modo specifico per ciascun sistema operativo. Il window manager si appoggia al server e fornisce l'interfaccia utente. Il vantaggio di questa organizzazione risiede nella possibilità di disporre di molte interfacce grafiche diverse, accessibili semplicemente cambiando il window manager da usare.
Configurare X può rivelarsi un lavoro complesso. La ragione risiede principalmente nel vasto numero di schede video disponibili per l'architettura PC, molte delle quali facenti uso di interfacce di programmazione che variano da scheda a scheda. Fortunatamente, la maggior parte delle schede oramai supporta alcuni standard video di base conosciuti come VESA; se la tua scheda è tra queste, allora potrai iniziare ad usare X semplicemente con il comando startx senza effettuare alcuna configurazione.
Se quanto scritto sopra non valesse per la tua scheda, o se desideri avvalerti delle sue caratteristiche per prestazioni elevate come accelerazione hardware o rendering 3D, allora dovrai necessariamente riconfigurare X.
Per configurare X, dovrai creare il file /etc/X11/xorg.conf. Questo file contiene numerosi dettagli sul tuo hardware video, mouse e monitor. Èun file di configurazione piuttosto complesso, fortunatamente esistono diversi programmi che possono generarne uno per te. Qui ne menzioneremo alcuni.
Il programma xorgconfig è un frontend basato su menu, con un approccio simile a quello del programma di installazione di Slackware. Ciò che fa è semplicemente ordinare al server X di esaminare la scheda video e di scrivere il file di configurazione come meglio può, in base alle informazioni raccolte. Il file /etc/X11/xorg.conf così generato dovrebbe essere un buon punto di partenza per la maggior parte dei sistemi (e dovrebbe funzionare senza necessità di ulteriori modifiche).
Si tratta di un programma testuale per la configurazione di X, pensato per l'esperto amministratore di sistema. Quella che segue è una descrizione esemplificativa dell'uso di xorgconfig. Per prima cosa, lancia il programma:
# xorgconfig |
Così facendo otterrai una schermata di informazioni su xorgconfig. Per continuare, premi ENTER. xorgconfig ti chiederà di verificare che tu abbia settato correttamente la variabile d'ambiente PATH. Dovrebbe essere a posto, quindi procedi e premi ENTER.
Scegli il tuo mouse nel menu che viene presentato. Se nell'elenco
non figura il tuo
mouse, scegli il protocollo Microsot -- è il più comune e
probabilmente funzionerà.
Successivamente xorgconfig ti proporrà
l'attivazione delle
opzioni ChordMiddle
e Emulate3Buttons
.
Sullo schermo potrai vedere anche la descrizione
in dettaglio delle suddette opzioni. Abilitale se il pulsante
centrale del tuo mouse non
funziona in X, o se il tuo mouse ha solo due pulsanti (Emulate3Buttons
ti permette di simulare il pulsante centrale
premendo i due pulsanti contemporaneamente). Dopodiché, digita il
nome del tuo mouse. La
scelta di default, /dev/mouse, dovrebbe
funzionare a dovere,
avendo già configurato opportunamente tale link durante il setup di
Slackware. Qualora tu
stia usando GPM (il mouse server di Linux) in modalità repeater
(ripetitore), puoi
impostare il tipo di mouse come /dev/gpmdata
per far sì che X
ottenga le informazioni sul mouse attraverso gpm.
In alcuni casi
(specialmente con i busmouse) ciò può portare ad un migliore
funzionamento, ma la maggior
parte degli utenti non devono ricorrere a questo accorgimento.
xorgconfig ti chiederà se desideri attivare associazioni speciali di tasti. Se ne hai bisogno, digita “y”. La maggior parte degli utenti può digitare “n” -- fai altrettanto, qualora fossi incerto.
Nella sezione successiva devi inserire l'intervallo di sincronizzazione per il tuo monitor. Per iniziare a configurare il tuo monitor, premi ENTER. Vedrai una lista di tipi di monitor -- scegli uno tra questi. Fa' attenzione a non andare oltre le specifiche del tuo monitor. Altrimenti, potresti danneggiare il tuo hardware.
Specifica la sincronizzazione verticale per il tuo monitor (devi cercare quest'informazione nel manuale del tuo monitor). xorgconfig ti chiederà di digitare alcune stringhe per identificare il tipo di monitor nel file xorg.conf. Inserisci ciò che preferisci in queste 3 righe (puoi anche lasciarle vuote).
Adesso hai la possibilità di prendere visione del database dei tipi di schede video. Èopportuno che tu lo faccia, quindi digita “y” e seleziona una scheda tra quelle disponibili nella lista. Se non è presente la tua scheda esatta, prova a selezionare una che usi lo stesso chipset e probabilmente funzionerà bene.
Dopodiché, dovrai indicare a xorgconfig la quantità di memoria RAM disponibile sulla scheda video. xorgconfig ti chiederà anche di inserire una descrizione testuale della tua scheda video. Se lo desideri, potrai inserire la descrizione in queste tre righe.
Successivamente ti verrà chiesto quali risoluzioni video desideri usare. Anche in questo caso, accettare le impostazioni predefinite è un buon modo per cominciare. Successivamente, potrai sempre modificare il file /etc/X11/xorg.conf e riorganizzare le modalità, in modo che la risoluzione 1024x768 (o qualsiasi altra risoluzione a te gradita) sia attivata di default.
A questo punto, il programma xorgconfig ti chiederà se desideri salvare il file di configurazione generato in base alle scelte effettuate. Rispondi affermativamente e il file di configurazione di X verrà salvato, completando il processo di setup. Puoi adesso avviare X con il comando startx.
Il secondo metodo per configurare X consiste nell'usare xorgsetup, un programma di autoconfigurazione disponibile in Slackware.
Per avviare xorgsetup, accedi al sistema come utente root e digita:
# xorgsetup |
Se disponi già di un file /etc/X11/xorg.conf (perché hai già configurato X), ti verrà chiesto se desideri fare una copia di backup del file di configurazione esistente prima di continuare. Il file originale verrà salvato con nome /etc/X11/xorg.conf.backup.
xinit(1) è il programma che attualmente avvia X; viene chiamato automaticamente da startx(1), quindi potresti non averlo notato (in effetti non c'è bisogno di conoscerlo). Il suo file di configurazione, tuttavia, determina quali programmi (window manager incluso) verranno avviati assieme ad X. xinit verifica prima di tutto l'eventuale presenta di un file .xinitrc nella tua home directory. Qualora questo venga trovato, viene avviato; in caso contrario, viene usato /var/X11R6/lib/xinit/xinitrc (il default di sistema). Quello che segue è un semplice file xinitrc:
#!/bin/sh # $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $ userresources=$HOME/.Xresources usermodmap=$HOME/.Xmodmap sysresources=/usr/X11R6/lib/X11/xinit/.Xresources sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap # merge in defaults and keymaps if [ -f $sysresources ]; then xrdb -merge $sysresources fi if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi if [ -f $userresources ]; then xrdb -merge $userresources fi if [ -f $usermodmap ]; then xmodmap $usermodmap fi # start some nice programs twm & xclock -geometry 50x50-1+1 & xterm -geometry 80x50+494+51 & xterm -geometry 80x20+494-0 & exec xterm -geometry 80x66+0+0 -name login |
Tutti i blocchi “if” servono per includere varie impostazioni di configurazione da altri file. La parte interessante di questo file si trova verso la fine, dove vari programmi vengono avviati. Questa sessione di X comincerà con il window manager twm(1), un orologio e tre terminali. Si noti l'exec prima dell'ultimo xterm. Ciò che fa è sostituire la shell di uso corrente (quella che sta eseguendo lo script xinitrc) con il comando xterm(1). Quando l'utente terminerà questo xterm, terminerà anche la sessione di X.
Per personalizzare il tuo avvio di X, copia il file di default /var/X11R6/lib/xinit/xinitrcin ~/.xinitrc e modificalo, sostituendo le linee relative ai programmi con ciò che preferisci. La fine del mio file è semplicemente:
# Start the window manager: exec startkde |
Nota che sono disponibili diversi file xinitrc.* in /var/X11R6/lib/xinit che corrispondono ai vari window manager e alle GUI. Puoi usare uno qualsiasi di questi, se lo desideri.
Per anni, Unix è stato usato quasi esclusivamente come sistema operativo per i server, se si eccettuano le workstation professionali a prestazioni elevate. Solo le persone tecnicamente preparate potevano verosimilmente usare un sistema Unix-like, e questo si rifletteva anche nell'interfaccia grafica. Le GUI tendevano ad essere il più possibile essenziali e scarne, progettate per far girare poche necessarie applicazioni come i programmi CAD e i renderer di immagini. La gestione dei file e del sistema era effettuata principalmente tramite riga di comando. Diversi produttori (Sun Microsystems, Silicon Graphics, ecc.) vendevano workstation tentando di fornire un “look and feel” coesivo, ma la grande varietà di toolkit per interfacce grafiche usati dagli sviluppatori portava inevitabilmente alla dissoluzione dell'uniformità del desktop. Per esempio, una barra di scorrimento poteva non avere lo stesso aspetto in due applicazioni diverse. I menu potevano apparire in posti differenti. I programmi potevano avere pulsanti e checkbox diversi. I colori variavano spesso ed erano solitamente hardcoded in ciascun toolkit. Fintanto che gli utenti rimanevano principalmente tecnici e professionisti, questi risultavano comunque dettagli senza importanza.
Con l'avvento dei sistemi operativi Unix-like liberi e con la crescente quantità e varietà di applicazioni grafiche, X ha progressivamente guadagnato un'ampio bacino di utenti desktop. La maggior parte degli utenti, naturalmente, è abituata al look and feel consistente offerto da Microsoft Windows o da MacOS di Apple; la mancanza di questa consistenza nelle applicazioni basate su X rappresentava una barriera per la sua diffusione su larga scala. In risposta, vennero allestiti due progetti open source: il K Desktop Environment, o KDE, e il GNU Network Object Model Environment, conosciuto come GNOME. Ciascuno di questi ha un'ampia varietà di applicazioni, dalle taskbar ai file manager, dai giochi alle office suite, scritte con lo stesso toolkit per interfaccia grafica e integrate a doppio filo per fornire un desktop uniforme e consistente.
In generale, le differenze in KDE e GNOME sono piuttosto sottili. Naturalmente hanno un look diverso, perché usano differenti toolkit per interfaccia grafica. KDE è basato sulle librerie Qt di Troll Tech AS, mentre GNOME usa GTK, un toolkit originariamente sviluppato per lo GNU Image Manipulation Program (in breve, The GIMP). Essendo progetti separati, KDE e GNOME hanno i propri progettisti e programmatori distinti, con differenti stili e filosofie di sviluppo. Il risultato in entrambi i casi è stato fondamentalmente lo stesso: un ambiente desktop e un set di applicazioni consistente e fortemente integrato. La funzionalità, usabilità e l'aspetto gradevole di KDE e GNOME rivaleggiano con tutto ciò che sia disponibile per gli altri sistemi operativi.
La notizia migliore, comunque, è che questi desktop avanzati sono liberi. Questo vuol dire che puoi averne uno o tutti e due (si, entrambi sullo stesso sistema). La scelta è tua.
In aggiunta agli ambienti desktop KDE e GNOME, Slackware include un'ampia collezione di window manager. Alcuni sono disegnati per emulare altri sistemi operativi, altri pensati per la maggiore personalizzazione possibile, altri ancora progettati per essere molto rapidi e leggeri. La varietà non manca. Naturalmente puoi installarne quanti desideri, provarli tutti, e decidere quale ti piace di più.
Per rendere facile la selezione del desktop, Slackware include anche un programma denominato xwmconfig che può essere usato per selezionare un desktop o window manager. Viene avviato come segue:
% xwmconfig |
Ti verrà mostrata una lista di tutti i desktop e window manager installati. Seleziona quello che preferisci dalla lista. Ciascun utente del tuo sistema avrà bisogno di avviare questo programma, dato che utenti diversi possono usare desktop differenti, e non tutti vorranno necessariamente usare quello di default, scelto da te in fase di installazione.
A questo punto non ti resta che avviare X e il gioco è fatto.
Linux sta diventando sempre più utile come sistema operativo desktop, e molti utenti trovano desiderabile che la macchina effettui il boot portando direttamente nell'ambiente grafico. Per effettuare questo, dovrai indicare a Slackware di effettuare il boot portando direttamente su X e dovrai selezionare un login manager grafico. Slackware è corredato di tre applicazioni grafiche per il login, xdm(1), kdm, e gdm(1).
xdm è il login manager grafico che viene fornito con il sistema X.org. Gira ovunque, non dispone però di tutte le opzioni offerte dai login manager alternativi. kdm è il login manager grafico fornito con KDE, il K Desktop Environment. Infine, gdm è il login manager grafico fornito con GNOME. Ciascuno di questi ti permetterà di effettuare il login con qualsiasi utente e di scegliere quale desktop usare.
Sfortunatamente, Slackare non include un comodo programma come xwmconfig per scegliere quale login manager usare, dunque potresti dover fare delle modifiche, qualora siano tutti installati, per scegliere il tuo preferito. Prima però, vediamo come effettuare il boot portando nell'ambiente grafico.
Per avviare X al boot, devi effettuare il boot nel run-level 4. I run-level sono semplicemente un modo per indicare ad init(8) di effettuare compiti diversi quando avvia il sistema operativo. Facciamo questo modificando il file di configurazione relativo ad init, /etc/inittab.
# These are the default runlevels in Slackware: # 0 = halt # 1 = single user mode # 2 = unused (but configured the same as runlevel 3) # 3 = multiuser mode (default Slackware runlevel) # 4 = X11 with KDM/GDM/XDM (session managers) # 5 = unused (but configured the same as runlevel 3) # 6 = reboot # Default runlevel. (Do not set to 0 or 6) id:3:initdefault: |
Per far si che Slackware effettui il boot portando nell'ambiente grafico, modifichiamo semplicemente il 3 in 4.
# Default runlevel. (Do not set to 0 or 6) id:4:initdefault: |
Ora Slackware effettuerà il boot nel runlevel 4 ed eseguirà /etc/rc.d/rc.4. Questo file si occupa di avviare X e chiama qualsiasi login manager tu abbia scelto. Dunque, come scegliamo il login manager? Esistono diversi modi per scegliere, li spiegherò dopo che avremo dato un'occhiata a rc.4.
# Try to use GNOME's gdm session manager: if [ -x /usr/bin/gdm ]; then exec /usr/bin/gdm -nodaemon fi # Not there? OK, try to use KDE's kdm session manager: if [ -x /opt/kde/bin/kdm ]; then exec /opt/kde/bin/kdm -nodaemon fi # If all you have is XDM, I guess it will have to do: if [ -x /usr/X11R6/bin/xdm ]; then exec /usr/X11R6/bin/xdm -nodaemon fi |
Come puoi vedere, rc.4 controlla in primis che gdm sia eseguibile, ed in caso affermativo lo avvia. Il secondo della lista è kdm, e per ultimo c'è xdm. Un modo per scegliere un login manager consiste semplicemente nel rimuovere tutti gli altri che non si desidera usare usando il comando removepkg. Puoi trovare maggiori informazioni su removepkg in Chapter 18.
In alternativa, puoi rimuovere i permessi di esecuzione per quei file che non desideri usare. Il comando chmod è discusso in Chapter 9.
# chmod -x /usr/bin/gdm |
Infine, puoi semplicemente commentare le linee relative ai login manager che non desideri usare.
# Try to use GNOME's gdm session manager: # if [ -x /usr/bin/gdm ]; then # exec /usr/bin/gdm -nodaemon # fi # Not there? OK, try to use KDE's kdm session manager: if [ -x /opt/kde/bin/kdm ]; then exec /opt/kde/bin/kdm -nodaemon fi # If all you have is XDM, I guess it will have to do: if [ -x /usr/X11R6/bin/xdm ]; then exec /usr/X11R6/bin/xdm -nodaemon fi |
Tutte le linee precedute dal carattere cancelletto (#) sono considerate commenti e vengono ignorate dalla shell. Dunque, anche qualora gdm sia installato ed eseguibile, la shell (in questo caso bash) lo ignorerà a priori.
Il processo di boot del tuo sistema Linux può essere a volte facile e a volte difficile. Molti utenti installano Slackware sul proprio computer e basta. Si limitano ad accenderlo ed è pronto all'uso. In altri casi, anche il solo avvio della macchina può essere impegnativo. Per la maggior parte degli utenti, LILO lavora meglio. Slackware include LILO e Loadlin per avviare Slackware Linux. LILO può funzionare da una partizione del disco rigido, dal master boot record di un disco rigido, o da un floppy disk, cosa che lo rende uno strumento molto versatile. Loadlin funziona dalla riga di comando del DOS, terminando il DOS e invocando Linux.
Un altro strumento popolare per avviare Linux è GRUB. GRUB non è incluso o ufficialmente supportato da Slackware. Slackware resta sugli standard “testati e affermati” per quanto riguarda ciò che viene incluso nella distribuzione. Mentre GRUB funziona bene e include alcune funzioni che LILO non ha, quest'ultimo gestisce affidabilmente tutti i compiti essenziali di un boot loader, con una carriera comprovata. Essendo più giovane, GRUB non ha ancora abbastanza esperienza per questa eredità. Non essendo incluso in Slackware, non ne discuteremo qui. Se intendi usare GRUB (probabilmente era incluso in un'altra distribuzione e intendi usarlo per fare il dual-boot), consulta la documentazione di GRUB.
Questa sezione tratta l'uso di LILO e Loadlin, i due strumenti di boot inclusi in Slackware. Essa inoltre mostra alcuni scenari tipici di dual-boot e spiega come realizzarli.
Il Linux Loader, o LILO, è il più popolare strumento di boot in uso sui sistemi Linux. Ècompletamente configurabile e può essere usato facilmente per avviare altri sistemi operativi.
Slackware Linux è dotata di uno strumento di configurazione basato su menu, chiamato liloconfig. Questo programma è lanciato la prima volta durante la fase di setup, ma puoi invocarlo successivamente scrivendo liloconfig al prompt.
LILO legge le sue impostazioni dal file /etc/lilo.conf(5). Quest'ultimo non viene letto ogni volta all'avvio, ma ogni volta che installi LILO. LILO deve essere reinstallato nel settore di avvio ogni volta che modifichi la configurazione. Molti errori di LILO derivano dai cambiamenti effettuati sul file lilo.conf, ma che falliscono quando si tenta di reinstallare LILO. liloconfig ti aiuterà a creare il file di configurazione così potrai installare LILO per il tuo sistema. Se preferisci modificare /etc/lilo.conf a mano, per reinstallare LILO bastterà digitare /sbin/lilo (come root) al prompt.
Quando invochi per la prima volta liloconfig, apparirà qualcosa del genere:
Se questa è la prima volta che configuri LILO, dovresti scegliere Simple. Altrimenti, se hai familiarità con LILO e Linux, dovresti trovare più veloce l'uso di Expert. Scegliendo Simple inizierà la configurazione di LILO.
Se è presente il supporto per il frame buffer nel tuo kernel, liloconfig chiederà quale risoluzione video vuoi usare. Questa risoluzione sarà usata anche dal frame buffer server di XFree86. Se non vuoi alcun modo video speciale per la console, basta scegliere Normal per mantenere in uso il modo testo standard da 80x25.
La prossima parte della configurazione di LILO è scegliere dove lo vuoi installare. Probabilmente questo è il passo più importante. La lista qui sotto spiega le destinazioni di installazione:
Root
Questo metodo installa LILO all'inizio della tua partizione root di Linux. Questa è l'opzione più sicura se hai altri sistemi operativi sul tuo computer. Questo assicura che altri sistemi di boot non vengano sovrascritti. Lo svantaggio è che LILO partirà soltanto da qui se il tuo drive è il primario del tuo sistema. Questo spiega perché molte persone scelgono di creare una partizione /boot molto piccola, come primo drive sul proprio sistema. Questo consente di installare il kernel e LILO all'inizio del drive dove LILO li possa trovare. Versioni precedenti di LILO contenevano un fastidioso problema conosciuto come il “limite del cilindro 1024”. LILO non poteva avviare kernel che risiedessero su partizioni poste dopo il 1024-esimo cilindro. Edizioni recenti di LILO hanno eliminato questo problema.
Floppy
Questo metodo è ancora più sicuro del precedente. Esso crea un floppy di boot che puoi usare per avviare il tuo sistema Linux. Questo stacca completamente il programma di boot dall'hard disk, così per usare Slackware basterà avviare questo floppy. I problemi di questo approccio sono ovvii. I floppy sono notoriamente capricciosi, proni agli errori. In secondo luogo, il boot loader non è più contenuto all'interno del computer. Se perdi il tuo floppy disk dovrai farne un altro per avviare il tuo sistema.
MBR
Questo metodo è preferibile se Slackware è l'unico sistema operativo sul tuo computer, o se intendi usare LILO per scegliere tra più sistemi operativi presenti sul tuo computer. Questo è il sistema più usato per installare LILO e funzionerà quasi con tutti i sistemi per computer.
![]() |
Questa opzione sovrascriverà qualsiasi altro sistema di boot che tu abbia nel MBR. |
Dopo aver scelto la posizione di installazione, liloconfig scriverà il file di configurazione e installerà LILO. Tutto qui. Se scegli la modalità Expert, vedrai un menu speciale. Questo menu consente di modificare il file /etc/lilo.conf, aggiungere altri sistemi operativi al menu di avvio, e far passare a LILO dei parametri speciali al kernel in fase di avvio. Il menu Expert apparirà così:
Qualsiasi sia la configurazione del tuo sistema, preparare un boot loader è facile. liloconfig rende molto semplice questa fase.
L'altro metodo per il boot che offre Slackware Linux è LOADLIN. LOADLIN è un eseguibile DOS che può essere usato per avviare Linux da un sistema DOS già avviato. Ènecessario che il kernel sia sulla partizione DOS in modo che LOADLIN possa caricarlo e avviare correttamente il sistema.
Durante la fase di installazione, LOADLIN sarà copiato nella home directory di root come file .ZIP. Non c'è alcun processo automatizzato per il set up di LOADLIN. Hai bisogno di copiare il kernel Linux (solitamente /boot/vmlinuz) e il e il file LOADLIN dalla home directory di root alla partizione DOS.
LOADLIN è utile se vuoi avere un menu di boot nella tua partizione DOS. Puoi aggiungere un menu al tuo file AUTOEXEC.BAT che ti permetterà di scegliere tra Linux e DOS. Scegliendo Linux sarà lanciato LOADLIN, che avvierà Slackware Linux. Questo esempio di AUTOEXEC.BAT fornirà un menu di avvio sufficiente sotto Windows 95:
@ECHO OFF SET PROMPT=$P$G SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\ CLS ECHO Please Select Your Operating System: ECHO. ECHO [1] Slackware Linux ECHO [2] Windows 95 ECHO. CHOICE /C:12 "Selection? -> " IF ERRORLEVEL 2 GOTO WIN IF ERRORLEVEL 1 GOTO LINUX :WIN CLS ECHO Starting Windows 95... WIN GOTO END :LINUX ECHO Starting Slackware Linux... CD \LINUX LOADLIN C:\LINUX\VMLINUZ ROOT=<root partition device> RO GOTO END :END |
Dovrai specificare la tua partizione di root con un nome di device Linux, come /dev/hda2 o qualcosa del genere. Puoi comunque sempre usare LOADLIN alla riga di comando. Semplicemente lo usi alla stessa maniera dell'esempio riportato sopra. La documentazione di LOADLIN fornisce molti esempi su come usarlo.
Molti utenti configurano il proprio computer per avviare Slackware Linux e un altro sistema operativo. Più avanti abbiamo descritto molti scenari tipici, nel caso tu abbia difficoltà a configurare il tuo sistema.
Configurare un computer con MS Windows e Linux è probabilmente il più comune scenario di dual-boot. Ci sono numerosi modi per configurare l'avvio, ma questa sezione ne coprirà soltanto due.
Spesso, configurando il dual-boot, può capitare di progettare le cose in modo che funzioni tutto perfettamente, ma di fare confusione nell'ordine di installazione. Èmolto importante capire che i sistemi operativi debbano essere installati in un preciso ordine affinché il dual-boot funzioni. Linux offre sempre controllo su ciò che eventualmente viene scritto sul Master Boot Record. Quindi è sempre consigliabile installare Linux per ultimo. Windows dovrebbe essere installato per primo, poiché scrive sempre il proprio programma di boot sul Master Boot Record, sovrascrivendo qualsiasi cosa Linux vi abbia scritto.
La maggior parte delle persone intende usare LILO per scegliere tra Linux e Windows. Come detto sopra, dovresti prima installare Windows, e poi Linux.
Poniamo che tu abbia un disco IDE da 40GB come unico disco nel sistema. Poniamo inoltre che tu voglia dedicare metà dello spazio a Windows e metà dello spazio a Linux. Questo presenta un problema quando si cerca di avviare Linux.
20GB Windows boot (C:) 1GB Linux root (/) 19GB Linux /usr (/usr) |
Inoltre vorrai anche dedicare un'adeguata quantità di spazio per la partizione di swap. La regola non scritta è di usare il doppio della memoria RAM che hai installato. Un sistema con 64MB di RAM potrebbe avere una partizione di swap di 128MB, e così via. La dimensione adeguata dello spazio per lo swap è argomento di discussione di molti flame su IRC e Usenet. Non c'è alcun modo “giusto” per farlo, ma una regola come quella detta sopra dovrebbe essere sufficiente.
Con le partizioni appena fatte, dovresti procedere con l'installazione di Windows. Dopo che è installato e funzionante, dovresti installare Linux. L'installazione di LILO richiede particolare attenzione. Occorre scegliere l'opzione Expert per installare LILO.
Comincia una nuova configurazione di LILO. Bisogna installarlo nel Master Boot Record in modo che possa essere usato per scegliere tra i due sistemi operativi. Dal menu, aggiungi la tua partizione Linux e la tua partizione Windows (o DOS). Una volta finito, puoi installare LILO.
Riavvia il computer. LILO dovrebbe caricarsi e mostrerà un menu col quale potrai scegliere tra i sistemi operativi che hai installato. Scegli il nome dell'OS che vuoi caricare (questi nomi sono stati scelti durante la configurazione di LILO).
LILO è un boot loader completamente configurabile. Non si limita ad avviare semplicemente Linux o il DOS. Può avviare praticamente tutto. Le pagine di manuale per lilo(8) e lilo.conf(5) forniscono informazioni più dettagliate
Che fare se LILO non funziona? Ci sono istanze di LILO che semplicemente non funzionano su una particolare macchina. Fortunatamente c'è un altro modo per fare il dual-boot con Linux e Windows.
Questo metodo può essere usato se LILO non funziona sul tuo sistema, o se semplicemente non vuoi usare LILO. Questo metodo è inoltre l'ideale per gli utenti che reinstallano windows spesso. Ogni volta che reinstalli Windows, viene sovrascritto il Master Boot Record, distruggendo così qualsiasi installazione di LILO. Con LOADLIN non sei soggetto a questo problema. Il più grande svantaggio è che puoi usare LOADLIN per caricare soltanto Linux.
Con LOADLIN, puoi installare i sistemi operativi in qualsiasi ordine. Fai attenzione a non installare nulla nel Master Boot Record, non è quello che vuoi. LOADLIN conta sul fatto che la partizione di Windows sia avviabile. Così durante l'installazione di Slackware, assicurati di saltare il setup di LILO.
Dopo aver installato i sistemi operativi, copia il file loadlinX.zip (dove X è un numero di versione, come ad esempio 16a) dalla home directory di root alla tua partizione Windows.Per fare questo bisogna essere in Linux. Questo esempio mostra come farlo:
# mkdir /win # mount -t vfat /dev/hda1 /win # mkdir /win/linux # cd /root # cp loadlin* /win/linux # cp /boot/vmlinuz /win/linux # cd /win/linuz # unzip loadlin16a.zip |
Questo creerà una directory chiamata C:\LINUX sulla tua partizione Windows (assumento che sia /dev/hda1) e copierà al suo interno il necessario per far funzionare LOADLIN. Dopo aver fatto questo, dovrai riavviare in Windows per configurare un menu di avvio.
Una volta in windows, apri un prompt del DOS. Innanzi tutto dobbiamo assicurarci che il sistema non si avvii con l'interfaccia grafica.
C:\> cd \ C:\> attrib -r -a -s -h MSDOS.SYS C:\> edit MSDOS.SYS |
Aggiungi questa riga al file:
BootGUI=0 |
Ora salva il file ed esci dall'editor. Adesso modifica C:\AUTOEXEC.BAT in modo da aggiungere un menu di avvio. Il seguente esempio mostra come appare configurato un blocco per il menu di boot in AUTOEXEC.BAT:
cls echo System Boot Menu echo. echo 1 - Linux echo 2 - Windows echo. choice /c:12 "Selection? -> " if errorlevel 2 goto WIN if errorlevel 1 goto LINUX :LINUX cls echo "Starting Linux..." cd \linux loadlin c:\linux\vmlinuz root=/dev/hda2 ro goto END :WIN cls echo "Starting Windows..." win goto END :END |
La riga chiave è quella che lancia LOADLIN. Gli indichiamo il kernel da caricare, la partizione root di Linux, e che la vogliamo montare inizialmente in sola lettura.
Gli strumenti per questi due metodi sono forniti da Slackware Linux. Ci sono molti altri programmi per il boot sul mercato, ma questi dovrebbero andar bene per la maggior parte dei dual-boot.
Questa è la situazione meno comune di dual-boot. Inizialmente LILO non era in grado di avviare Windows NT, obbligando quindi gli utenti a ricorrere a un trucco con NTLDR, cosa che presenta molti più problemi che facendo il dual-boot tra Windows 9x e Linux. Èimportante capire che le seguenti istruzioni sono deprecate. LILO è in grado di avviare Windows NT/2000/XP/2003 da molti anni ormai. Se in ogni caso stai usando una vecchia macchina, potresti aver bisogno di questo trucco.
Installa Windows NT
Installa Linux, assicurarsi che lilo sia installato nel superblock della partizione Linux
Prendi i primi 512 byte della partizione root di Linux e scrivili nella partizione di Windows NT
Modifica C:\BOOT.INI sotto Windows NT in modo da aggiungere un'opzione Linux
Installare Windows NT dovrebbe essere abbastanza semplice, come dovrebbe esserlo installare Linux. Da qui in poi le cose si complicano leggermente. Prendere i primi 512 byte dalla partizione Linux è più facile di quanto sembri. Basterà essere in Linux per farlo. Assumendo che la tua partizione Linux sia /dev/hda2, lancia questo comando:
# dd if=/dev/hda2 of=/tmp/bootsect.lnx bs=1 count=512 |
Tutto qui. Ora devi copiare bootsect.lnx nella partizione di Windows. Qui sorge un altro problema. Linux non ha un supporto stabile in scrittura per il filesystem NTFS. Se hai installato Windows NT e formattato la partizione con NTFS, dovrai copiare questo file su un floppy formattato con FAT e poi leggerlo da Windows NT. Se hai formattato la partizione di Windows NT con FAT, puoi semplicemente montarla da Linux e copiare il file al suo interno. In ogni caso dovrai copiare il file /tmp/bootsect.lnx dalla partizione Linux nel file C:\BOOTSECT.LNX sulla partizione di Windows NT.
L'ultimo passo è aggiungere un'opzione nel menu di avvio di Windows NT. Sotto Windows NT, apri un prompt dei comandi.
C:\WINNT> cd \ C:\> attrib -r -a -s -h boot.ini C:\> edit boot.ini |
Aggiungi questa riga alla fine del file:
C:\bootsect.lnx="Slackware Linux" |
Salva le modifiche ed esci dall'editor. Quando riavvierai Windows NT, avrai un'opzione Linux nel menu. Scegliendola, avvierai Linux.
Si, c'è chi lo fa veramente. Questo è veramente lo scenario più semplice. Basta usare LILO e aggiungere altre righe di configurazione al file /etc/lilo.conf. Ètutto quello che c'è da fare.<
In un ambiente grafico l'interfaccia è costituita da programmi che creano finestre, scrollbar, menu ecc. Sulla linea di comando l'interfaccia utente è fornita da una shell che interpreta i comandi e, in genere, rende possibili le diverse attività. Immediatamente dopo il login (che è descritto in questo capitolo) l'utente si trova nella shell ed è messo nella possibilità di impartire comandi. Questo capitolo è una introduzione all'uso della shell ed, in particolare, di quella più usata dagli utenti Linux: la Bourne Again Shell (bash). Per informazioni più dettagliate su ciò che è contenuto in questo capitolo puoi far riferimento alla pagina del manuale del comando bash(1).
Ora che hai eseguito il boot ti trovi di fronte qualcosa che ti consente l'accesso e che appare così:
Welcome to Linux 2.4.18 Last login: Wed Jan 1 15:59:14 -0500 2005 on tty6. darkstar login: |
Uhm.. nessuno ha mai detto nulla di un "login". E cos'è darkstar? Non preoccuparti: probabilmente non ti è mai capitato di aprire un collegamento iperspaziale con la luna artificiale dell'Impero Galattico. Spiacente, i collegamenti iperspaziali non sono attualmente supportati dal kernel di Linux. Probabilmente durante lo sviluppo delle versioni 2.8 sarà implementato il tanto sospirato supporto per . Scherzi a parte, darkstar non è altro che il nome di uno dei nostri computer che poi è stato utilizzato come default. Se hai specificato un nome diverso per il tuo computer durante il setup, dovresti vederlo al posto di darkstar.
Tornando al login... [As for the login...] se questo è il tuo primo accesso, vorrai entrare nel sistema come utente root. Ti sarà richiesta una password; se ne hai indicata una durante il processo di setup è il momento di usarla. Se non l'hai fatto, premi solo invio. Questo è tutto, sei dentro!
Ok, chi o cosa è root? e che ci fa un account sul tuo sistema?
Nel mondo di Unix e dei sistemi operativi simili (come Linux) ci sono utenti e utenti. Scenderemo nei dettagli più tardi ma la cosa importante da sapere è che root è l'utente con più poteri rispetto agli altri. root ha tutti i poteri e conosce tutto e nessuno disobbedisce a root. Ciò è semplicemente non consentito. root è ciò che chiamiamo “superutente” ed è giusto che sia così. Ma la cosa migliore di tutte è che il root sei tu.
Figo, vero?
Non essere incredulo: è davvero molto figo! Il punto è che a root è intrinsecamente permesso di distruggere tutto a suo piacimento. Potresti voler tornare indietro e capire come aggiungere un utente normale per poi effettuare il login con questo. La saggezza popolare suggerisce che è meglio diventare superutente solo quanto ciò è assolutamente necessario in modo da minimizzare la possibilità di danneggiare qualcosa accidentalmente
Se, tuttavia, decidi di voler diventare root dopo essere entrato come qualcun'altro, nessun problema, basta usare il comando su(1). Ti verrà richiesta la password di root e poi sarai root finchè non userai i comandi exit o logout. Puoi anche diventare qualsiasi altro utente usando su ammesso che tu sappia la password di quell'utente: su pincopallino, per esempio, ti farà diventare pincopallino.
![]() |
All'utente root è permesso di diventare qualsiasi utente senza conoscere la sua password. |
Èdifficile portare a compimento un lavoro senza avviare un programma; potresti riuscire a puntellare qualcosa con il tuo computer o mantenere la porta aperta e al più qualcuno troverà piacevole il suo ronzio, ma non più di questo. Penso che siamo tutti d'accordo che il suo uso come fermaporte ronzante non è ciò che ha portato al personal computer la popolarità di cui gode.
Ricordi che più o meno tutto in Linux è un file? Bene, questo succede anche per i programmi. Ogni comando che impartisci (e che non è parte integrante della shell) si trova da qualche parte sotto forma di file. Avvii un programma semplicemente specificando il suo path completo.
Ricordi, ad esempio, il comando su descritto nel paragrafo precedente? Generalmente si trova nella directory /bin: /bin/su dovrebbe girare senza problemi.
Allora perché digitando esclusivamente su funziona lo stesso? Dopotutto non hai indicato che si trova nella directory /bin. Potrebbe tranquillamente trovarsi in /usr/local/share, giusto? Come fa a saperlo? La risposta è nella variabile d'ambiente PATH; la maggior parte delle shell hanno PATH o qualcosa di molto simile a PATH. Essa contiene sostanzialmente una lista di directory in cui ricercare i programmi che provi ad avviare. Così quando digiti il comando su, la tua shell scorre la lista delle diretory controllando in ognuna se esiste un file eseguibile chiamato su; Il primo trovato verrà eseguito. Questo succede ogni volta che fai girare un programma senza specificare il path completo; se ottieni un errore del tipo ““Command not found”” significa solo che il programma che il programma che hai cercato di eseguire non è presente nel tuo PATH. (Naturalmente questo si verifica anche se il programma non esiste...). Scenderemo più nel dettaglo sulle variabili d'ambiente in Section 8.3.1.
Ricorda anche che “.” è sinonimo di directory corrente, così se ti trovi in /bin, ./su si comporta come se avessi specificato il path completo.
Quasi tutte le shell riconoscono alcuni caratteri come sostituti o abbreviazioni di "qualcosa va qui". Tali caratteri sono propriamente detti "caratteri jolly"; i più comuni sono * e ?. Per convenzione ? generalmente equivale a un singolo carattere. Ad esempio, supponi di essere in una directory con tre file: ex1.txt, ex2.txt, e ex3.txt. Supponi di voler copiare tutti questi file (usando il comando cp illustrato in Section 10.5.1) in un'altra directory, diciamo /tmp. Bene, digitare cp ex1.txt ex2.txt ex3.txt /tmp richiede troppo lavoro. Èpiù facile scrivere cp ex?.txt /tmp; il ? individua ognuno dei caratteri “1”, “2”, e “3” e, uno alla volta, lo sostituirà.
Cosa dici? Èancora troppo lavoro? Hai ragione. Èuna cosa terribile; ci sono le leggi sul lavoro che ci proteggono da questo genere di cose. Fortunatamente abbiamo anche *. Come già ricordato, * equivale a “qualsiasi numero di caratteri” o anche nessun carattere. Così se i tre file sono gli unici presenti nella directory possiamo semplicemente scrivere cp * /tmp beccandoli tutti in un solo colpo. Supponi ora che ci siano due ulteriori file chiamati ex.txt e hejaz.txt. Vogliamo copiare ex.txt ma non hejaz.txt; cp ex* /tmp farà questo per noi.
cp ex?.txt /tmp, riuscirà a copiare solo i nostri tre file di partenza: non c'è alcun carattere in ex.txt corrispondente a ? che così resta fuori dall'operazione di copia.
Altri caratteri jolly usati frequentemente sono le parentesi quadre [ ]. Ogni carattere all'interno delle parentesi sarà sostituito al posto delle [ ] per trovare le corrispondenze. Sembra una cosa confusa? Non è così difficile. Supponiamo, per esempio, di avere una directory contente gli otto file seguenti: a1, a2, a3, a4, aA, aB, aC, e aD . Vogliamo trovare solo quei file che terminano con un numero. [ ] è quello che fa per noi.
% ls a[1-4] a1 a2 a3 a4 |
Ma cosa succede se inveve vogliamo trovare solo a1, a2 e a4? Nell'esempio precendente abbiamo usato - che indica tutti i valori compresi tra 1 e 4. Possiamo anche elencare singole entità con le virgole.
% ls a[1,2,4] a1 a2 a4 |
So cosa stai pensando ora, “e cosa succede con le lettere?” Linux è case sensitive, cioè a e A sono caratteri diversi e la correlazione tra i due è solo nella tua mente. Le maiuscole vengono sempre prima delle lettere minuscole, quindi A e B vengono prima di a e b. Continuando con il nostro esempio precedente, se vogliamo i file a1 e A1 possiamo trovarli velocemente con [ ].
% ls [A,a]1 A1 a1 |
Nota che se avessimo usato il segno meno al posto della virgola avremmo ottenuto risultati errati.
% ls [A-a]1 A1 B1 C1 D1 a1 |
Puoi anche combinare segno meno e le virgole.
% ls [A,a-d] A1 a1 b1 c1 d1 |
(Qui ci va qualcosa di figo.)
% ps > blargh |
Sai cosa vuol dire? Che sto avviando il comando ps per vedere quali processi sono attivi; ps è descritto in Section 11.3. Ma questa non è la parte interessante. La cosa figa è > blargh che significa, schematicamente, prendi l'output da ps e scrivilo nel file blargh. Ma aspetta, te ne faccio vedere una migliore.
% ps | less |
Questo comando prende l'output di ps e lo indirizza verso less in modo tale che io possa scrollarlo a mio piacimento.
% ps >> blargh |
Questo è il terzo tipo di redirezione più comunemente usatp: fa la stessa cosa di “>” ad eccezione del fatto che “>>” accoda l'output di ps al file blargh ammesso che tale file esista. Se non esiste lo crea, così come fa “>”. (“>” cancella l'eventuale contenuto del file blargh.)
C'è anche un operatore “<” che significa "prendi l'input da ciò che segue" ma non è usato molto spesso.
% fromdos < dosfile.txt > unixfile.txt |
Gli operatori di redirezione diventano davvero divertenti quando cominci a combinarli:
% ps | tac >> blargh |
Questo comando avvia ps, inverte le linee del suo output e le accoda al file blargh. Puoi combinarne quanti ne vuoi: ricorda solo che vengono interpretati da sinistra a destra.
Consulta la man page di bash(1) per informazioni più dettagliate sulla redirezione.
Un sistema linux è una bestia complicata e ci sono un sacco di cose delle quali tenere traccia, parecchi piccoli dettagli che entrano in gioco nelle normali interazioni con i vari programmi (alcuni dei quali, probabilmente, non avrai mai necessità di conoscere). Nessuno vuole passare un numero spropositato di opzioni a tutti i programmi che esegue specificando il tipo di terminale, il nome del computer, come il prompt dovrebbe apparire...
Per fare fronte a tali incovenienti, gli utenti hanno a disposizione un meccanismo chiamato ambiente. L'ambiente definisce le condizioni nelle quali un programma gira ed alcune di queste definizioni sono variabili: l'utente può alterarle e giocare con loro così come è permesso in un sistema Linux. Praticamente tutte le shell hanno variabili d'ambiente (se non è così probabilmente non è una shell molto usabile). Di seguito daremo uno sguardo ai comandi che bash fornisce per manipolare le variabili d'ambiente.
Il comando set ti mostra tutte le variabili d'ambiente che sono definite in quel momento così come i loro valori. Come la maggior parte dei comandi incorporati in bash, può fare molte altre cose (utilizzando i parametri): lasciamo la descrizione dettagliata di ciò alla man page di bash(1). Example 8-1 mostra un esempio d'uso del comando set eseguito su uno dei computer dell'autore. Si nota la variabile PATH che è stata citata prima. I programmi presenti in queste directory possono essere eseguiti semplicemente digitando il nome del file.
Example 8-1. Elenco delle variabili d'ambiente ottenuto con set
% set PATH=/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin: /usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin: /usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin PIPESTATUS=([0]="0") PPID=4978 PS1='\h:\w\$ ' PS2='> ' PS4='+ ' PWD=/home/logan QTDIR=/usr/local/lib/qt REMOTEHOST=ninja.tdn SHELL=/bin/bash |
% unset VARIABLE |
unset cancella ogni variabile che gli passi come parametro, distruggendo sia la variabile che il suo valore: bash dimentica se tale variabile sia mai esistita. (Non preoccuparti. Se non è qualcosa che hai esplicitamente definito in quella particolare sessione della shell, probabilmente la ritroverai intatta in ogni altra sessione)
% export VARIABILE=qualcosa |
export è molto pratico. Usandolo, assegnerai alla variabile d'ambiente VARIABILE il valore “qualcosa”; se VARIABILE non esiste, verrà creata. Se VARIABILE già esiste ed ha un valore, esso verrà sostituito dal nuovo. Ciò non è proprio il massimo se stai provando ad aggiungere una directory a PATH. In tal caso, probabilmente, vorrai fare qulcosa del genere:
% export PATH=$PATH:/una/nuova/directory |
Nota l'uso di $PATH: quando vuoi che bash interpreti una variabile (la sostituisca, cioè, col suo valore), aggiungi un $ all'inizio del nome della variabile. Per esempio, echo $PATH mostra il valore di PATH, nel mio caso:
% echo $PATH /usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin: /usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin: /usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin |
(Qui va di nuovo qualcosa di figo)
Una interfaccia a riga di comando richiede molta dattilografia
Digitare è lavoro.
A nessuno piace lavorare.
Dalla 3 e dalla 2 possiamo ricavare che (4) a nessuno piace digitare. L'ovvio corollario è (5) a nessuno piace la linea di comando ma, fortunatamente, bash smentisce questa proposizione.
Ti chiederai: come fa bash ad ottenere tale fantastico risultato? In aggiunta all'espansione dei caratteri jolly discussa precendentemente, bash implementa la "tab completion".
La tab completion funziona in questo modo: supponiamo che tu stia scrivendo il nome di un file. Probabilmente si trova nel tuo PATH e probabilmente lo stai scrivendo tutto, esplicitamente. Tutto quello che devi fare è battere abbastanza caratteri da identificare univocamente il nome del file. Dopodiché basta premere il tasto tab. bash capirà cosa vuoi e finirà di scrivere il nome del file al posto tuo!
Esempio. /usr/src contiene due sottodirectory: /usr/src/linux e /usr/src/sendmail. Io voglio vedere cosa c'è in /usr/src/linux. Così digito ls /usr/src/l, premo il tasto TAB e bash mi produce ls /usr/src/linux.
Ora, supponiamo che ci siano due directory: /usr/src/linux e /usr/src/linux-old; se scrivo /usr/src/l e premo TAB, bash completerà il comando finchè può e mi darà /usr/src/linux. Posso fermarmi qui o posso premere TAB di nuovo e bash mi mostrerà una lista di directory che corrispondono a ciò che ho scritto prima.
Meno tasti da premere, quindi (e quindi alla gente possono piacere le interfacce a riga di comando). Ve l'ho detto che è interessante.
Supponiamo che mentre sei nel mezzo di un lavoro tu decida di fare altro. Dovresti semplicemente sospendere quello che stavi facendo e cambiare processo, ma Linux è un sistema multiutente, giusto? e tu puoi accedere simultaneamente quante volte vuoi, giusto? Perche, allora, dovresti fare una cosa alla volta?
E infatti non devi. Non possiamo avere tutti tastiere multiple, mouse multipli e più di un monitor per macchina: probabilmente nessuno di noi vuole questo. Chiaramente, l'hardware non è la soluzione. Ci resta il software e Linux risolve il problema tramite i “terminali virtuali” o “VT”.
Premendo Alt e un tasto funzione, puoi passare da un terminale virtuale all'altro: ad ogni tasto di funzione ne corrisponde uno. Slackware, per default, ammette l'accesso su 6 terminali virtuali. Alt+F2 seleziona il secondo, Alt+F3 il terzo ecc.
I restanti tasti funzione sono riservati alle sessioni di X. Ognuna di esse usa un suo terminale virtuale a partire dal settimo. (Alt+F7) Quando sei in X, la combinazione Alt+Tasto Funzione è sostituita da Ctrl+Alt+Tasto Funzione; così se sei in X e vuoi tornare ad un teminale virtuale in modalità testo (senza uscire dalla sessione X) Ctrl+Alt+F3 ti farà accedere al terzo VT. (Alt+F7, invece, ti farà ritornare indietro, ammesso che tu stia usando la prima sessione X)
Ma cosa succede nelle situazioni dove non ci sono terminali virtuali? Fortunatamente slackware include un ottimo screen manager chiamato proprio screen. screen è un emulatore di terminale che comprende il supporto per i terminali virtuali. Eseguendo screen si ottiene una breve introduzione e poi si accede a un terminale. Diversamente dai VT standard, screen ha i suoi specifici comandi. Tutti i comandi di screen cominciano con la pressione dei tasti Crtl+A. Per esempio, Ctrl+A+C crea un nuovo terminale. Ctrl+A+N passa al terminale successivo. Ctrl+A+P passa al terminale precedente.
screen supporta anche lo sgancio e il successivo recupero delle sessioni screen; ciò è particolarmente utile nelle connessioni remote via ssh e telnet (maggiori dettagli in seguito). Ctrl+A+D sgancia dello screen in funzione in quel momento. Eseguendo screen -r si ottiene una lista di tutte le sessioni screen che possono essere recuperate.
% screen -r There are several suitable screens on: 1212.pts-1.redtail (Detached) 1195.pts-1.redtail (Detached) 1225.pts-1.redtail (Detached) 17146.pts-1.sanctuary (Dead ???) Remove dead screens with 'screen -wipe'. Type "screen [-d] -r [pid.]tty.host" to resume one of them. |
Il comando screen -r 1212 recupera la prima sessione di screen elencata. Ho detto prima quanto utile sia questo per le connessioni remote. Se ho ottenuto l'accesso a un server slackware remoto via ssh c'è la possibilità che la mia connessone venga interrotta da qualcosa con un problema con l'alimentazione locale e qualsiasi cosa stia facendo in quel momento viene irrimediabilmente persa, il che può essere una cosa orribile per il tuo server. L'uso di screen previene questo sganciando le mie sessioni se la connessione si interrompe. Una volta ripristinata la connessione, posso recuperare la mia sessione di screen e riprendere da dove avevo lasciato.
Abbiamo già discusso della struttura delle directory in Slackware Linux. A questo punto dovresti essere in grado di trovare i file e le directory di cui hai bisogno. Ma il filesystem è qualcosa di più della struttura delle directory.
Linux è un sistema operativo multiutente. Tutti gli aspetti del sistema sono progettati per la multiutenza, filesystem compreso. Il sistema memorizza informazioni come il proprietario di un file e a chi è permesso leggerlo. Ci sono altre caratteristiche del filesystem, come i link e i mount di NFS. Questo capitolo illustra tutto ciò oltre che le ricadute della multiutenza sul filesystem.
Il filesystem memorizza le informazioni relative ai diritti di accesso per ogni file o directory presente nel sistema. Queste informazioni includono, tra le altre, l'utente e il gruppo proprietari di un determinato file. Il modo più semplice per vedere tali informazioni è con il comando ls :
% ls -l /usr/bin/wc -rwxr-xr-x 1 root bin 7368 Jul 30 1999 /usr/bin/wc |
Siamo interessati alla terza e quarta colonna. Queste contengono l'username dell'utente e il nome del gruppo proprietari del file. Nell'esempio l'utente “root” e il gruppo “bin” sono i proprietari del file.
Possiamo cambiare facilmente i proprietari di un file con il comando chown(1) (che significa “change owner”) e con il comando chgrp(1) (che significa “change group”). Per cambiare il proprietario del file in daemon, dovremo usare chown:
# chown daemon /usr/bin/wc |
Per cambiare il gruppo proprietario in “root” dovremo usare chgrp:
# chgrp root /usr/bin/wc |
Possiamo anche usare chown per specificare sia l'utente che il gruppo proprietari di un file:
# chown daemon:root /usr/bin/wc |
Nell'esempio precedente, si sarebbe potuto usare un punto al posto dei due punti. Il risultato sarebbe stato lo stesso; la forma con due punti, comunque, è considerata migliore. L'uso del punto è obsoleto e potrebbe essere rimosso dalle future versioni di chown per permettere di usare username con punti senza ambiguità. Username di questo tipo tendono a diventare molto popolari con i server Windows Exchange e si incontrano molto spesso negli indirizzi email come: mr.jones@example.com. In slackware è sconsigliato usare tali username perché alcuni script usano ancora il punto per separare l'utente e il gruppo di un file o di una directory. Nel nostro esempio chmod interpreta mr.jones come utente “mr” e gruppo “jones”.
La proprietà di un file è molto importante nell'uso di un sistema Linux, anche se sei l'unico utente. A volte avrai bisogno di modificare i proprietari di un file o di un device
I permessi sono un'altra parte importante di un filesystem multiutente. Tramite questi puoi determinare chi può leggere, scrivere o eseguire i file
Le informazioni sui permessi sono codificate come quattro cifre in ottale ognuna delle quali specifica un insieme diverso di permessi. Distinguiamo i permessi per il proprietario, per il gruppo e per il resto del mondo. La quarta cifra ottale è usata per memorizzare informazioni speciali quali set user ID, set group ID e lo sticky bit. I valori ottali associati ai permessi sono (tali valori sono codificati anche con delle lettere che sono visualizzate da programmi come ls e che posso essere usate da chmod):
Table 9-1. Valori ottali dei permessi
Tipo | Valore ottale | Valore letterale |
---|---|---|
“sticky” bit | 1 | t |
set user ID | 4 | s |
set group ID | 2 | s |
lettura | 4 | r |
scrittura | 2 | w |
esecuzione | 1 | x |
Puoi oggiungere il valore ottale ad ogni blocco di permessi. Per esempio, se vuoi che i permessi per il gruppo siano “lettura” e “scrittura”, dovresti usare “6” nel blocco dei permessi riferito al gruppo.
I permessi di default di bash sono:
% ls -l /bin/bash -rwxr-xr-x 1 root bin 477692 Mar 21 19:57 /bin/bash |
Il primo trattino sarebbe sostituito da una “d” se questa fosse una directory. I tre gruppi di permessi (propietario, gruppo e resto del mondo) sono mostrati subito dopo. Vediamo che il proprietario ha i permessi di lettura, scrittura ed esecuzione (rwx). Il gruppo ha solo i permessi di lettura ed esecuzione (r-x) e gli altri hanno solo i permessi di lettura ed esecuzione (r-x).
Come possiamo impostare i permessi di un altro file per ricalcare quelli di bash? Prima consideriamo un file d'esempio:
% touch /tmp/example % ls -l /tmp/example -rw-rw-r--- 1 david users 0 Apr 19 11:21 /tmp/example |
Useremo chmod(1) (che significa “change mode”) per impostare i permessi sul file example. Aggiungiamo i numeri ottali per i permessi desiderati: per il propretario che deve leggere, scrivere ed eseguire il file avremo il valore 7. Per leggere ed eseguire avremo 5. Concateniamo questi valori e passiamoli a chmod così:
% chmod 755 /tmp/example % ls -l /tmp/example -rwxr-xr-x 1 david users 0 Apr 19 11:21 /tmp/example |
Ora potresti pensare, “Perchè non creare direttamente un file con questi permessi?” La risposta è semplice bash include un utile comando integrato chiamato umask. Èincluso nella maggior parte delle shell in Unix e controlla i permessi che sono assegnati ai file appena creati. Discuteremo dei comandi integrati in bash con maggiori dettagli in Section 8.3.1. Ci vuole poco per usare umask. Lavora in maniera molto simile a chmod, solo al contrario. Devi specificare il valori ottale che NON desideri avere nei file creati ex-novo. Il valore di default per umask è 0022.
% umask 0022 % umask 0077 % touch tempfile % ls -l tempfile -rw-------- 1 david users 0 Apr 19 11:21 tempfile |
Dai un'occhiata alla pagina di manuale di bash per maggiori informazioni.
Per impostare i permessi speciali con chmod, somma i numeri corrispondenti e piazzali nella prima colonna. Ad esempio, per impostare il set user ID e il set group ID useremo 6 nella prima colonna:
% chmod 6755 /tmp/example % ls -l /tmp/example -rwsr-sr-x 1 david users 0 Apr 19 11:21 /tmp/example |
Se i valori in ottale ti confondono puoi usare le lettere con chmod. I blocchi di permessi sono rappresentati come:
Per fare la stessa cosa di prima dovremmo usare parecchi comandi:
% chmod a+rx /tmp/example % chmod u+w /tmp/example % chmod ug+s /tmp/example |
Qualcuno preferisce le lettere ai numeri. Entrambe le strade consentono di manipolare lo stesso insieme di permessi.
Il formato ottale è spesso più veloce ed è quello più frequentemente usato negli script della shell. Talvolta, comunque, le lettere sono più potenti. Per esempio, non c'è un modo semplice di cambiare un blocco di permessi preservando il contenuto degli altri blocchi se si usa il formato ottale; cosa, invece, molto semplice con l'uso delle lettere.
% ls -l /tmp/ -rwxr-xr-x 1 alan users 0 Apr 19 11:21 /tmp/example0 -rwxr-x--- 1 alan users 0 Apr 19 11:21 /tmp/example1 ----r-xr-x 1 alan users 0 Apr 19 11:21 /tmp/example2 % chmod g-rwx /tmp/example? -rwx---r-x 1 alan users 0 Apr 19 11:21 /tmp/example0 -rwx------ 1 alan users 0 Apr 19 11:21 /tmp/example1 -------r-x 1 alan users 0 Apr 19 11:21 /tmp/example2 |
Abbiamo menzionato i permessi set user ID e set group ID molte volte precedentemente. Potresti voler sapere cosa sono. Normalmente quando esegui un programma esso gira sotto il tuo account. Cioè ha tutti i privilegi che tu hai come utente. Lo stesso è vero per il gruppo. Quando esegui un programma, esso gira sotto il tuo attuale gruppo. Con il permesso set user ID puo forzare il programma a girare sempre come se fosse il proprietario ad eseguirlo (ad esempio l'utente “root”). Il permesso set group ID fa lo stesso, ma per il gruppo.
Usali con circospezione: i programmi con i permessi set user ID e set group ID possono causare seri problemi di sicurezza al tuo sistema. Se imposti set user ID programmi il cui proprietario è root, stai permettendo a chiunque di far girare il programma come se fosse l'utente root. Dato che root non ha limitazioni nell'uso del sistema, puoi facilmente capire come tutto ciò comporti un serio problema di sicurezza. In poche parole, usa i permessi set user ID e set group ID con oculatezza.
I link sono puntatori tra file. Con i link puoi avere un dato file in diverse posizioni e rendenderlo accessibile con molti nomi diversi. Ci sono due tipi di link: hard link e soft link.
Gli hard link sono nomi di file particolari. Possono risiedere all'interno di un singolo filesystem (non sono permessi hard link fra filesystem diversi) e vengono rimossi solo quando il file puntato è eliminato dal sistema. Sono utili in qualche caso ma la maggior parte degli utenti trova i soft link più versatili.
I soft link, chiamati anche link simbolici, possono puntare a un file esterno al filesystem. Sono generalmente piccoli file contenenti le informazioni necessarie. Puoi aggiungere e rimuovere i soft link senza intaccare il file a cui puntano. Inoltre, possono puntare anche a directory. Èabbastanza comune, per esempio, avere /var/tmp come link simbolico a /tmp
I link non hanno un proprio insieme di permessi e di proprietari ma ereditano quelli del file cui puntano. Slackware usa principalmente i link simbolici. Ecco un esempio comune:
% ls -l /bin/sh lrwxrwxrwx 1 root root 4 Apr 6 12:34 /bin/sh -> bash |
La shell sh sotto Slackware è in genere bash. Per la rimozione dei link si usa rm. Il comando ln è usato per creare i link. Questi comandi saranno discussi approfonditamente in Chapter 10.
Èmolto importante essere accorti nell'uso dei link simbolici. Una volta stavo lavorando su una macchina che puntualmente falliva il backup su nostro ogni notte. Due link simbolici che creavano un link circolare tra le directory. Il programma per i backup accodava ciclicamente le stesse directory al nastro fino a che lo spazio non finiva. Normalmente un po' di controlli possono far evitare l'uso dei link simbolici in queste situazioni ma senz'altro il nostro era un caso particolare.
Come abbiamo precedentemente discusso in Section 4.1.1, tutti i driver e le periferiche del tuo computer sono un unico, grande filesystem. Le diverse partizioni dell'hard disk, i cd-rom e i floppy sono tutti inquadrati nella stessa struttura ad albero. Al fine di collegare tali periferiche al filesystem in modo da potervi accedere, devi usare i comandi mount(1) e umount(1).
Il mount di alcuni dispositivi è effettuato automaticamente nella fase di boot del computer. Tali dispositivi sono elencati nel file /etc/fstab. Di qualsiasi cosa tu voglia fare il mount automatico devi metterla una riga di questo file. Per gli altri dispositivi devi impartire un comando ogni volta che vuoi usarli.
Diamo un'occhiata ad un esempio del file /etc/fstab :
% cat /etc/fstab /dev/sda1 / ext2 defaults 1 1 /dev/sda2 /usr/local ext2 defaults 1 1 /dev/sda4 /home ext2 defaults 1 1 /dev/sdb1 swap swap defaults 0 0 /dev/sdb3 /export ext2 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 none /proc proc defaults 0 0 /dev/fd0 /mnt ext2 defaults 0 0 /dev/cdrom /mnt/cdrom iso9660 ro 0 0 |
La prima colonna è il nome del dispositivo. In questo caso i dispositivi sono due hard disk SCSI, due filesystem che non richiedono un dispositivo, un floppy e un lettore CD-ROM. La seconda colonna indica dove il dispositivo dovrà essere montato. Il punto di mount è necessario che sia una directory tranne nel caso di partizioni di swap. La terza colonna contiene il tipo di filesystem residente sul dispositivo. Per il normale filesystem di Linux il tipo sarà ext2 (second extended filesystem). Per i lettori CD-ROM è iso9660, e per i dispositivi Windows-based sarà o msdos oppure vfat.
La quarta colonna è una lista di opzioni che si applicano al filesystem montato. defaults è una buona scelta per quasi tutto. Comunque, per i dispositivi in sola lettura andrebbe usato il flag ro. Ci sono molte opzioni che possono essere usate. Consulta la pagina del manuale di fstab(5) per maggiori informazioni. Le ultime due colonne sono usate da fsck e altri comandi che necessitano di manipolare i dispositivi. Ancora una volta controlla la pagina del manuale per i dettagli.
Quando installi Slackware Linux, il programma di setup crea la maggior parte del file fstab.
Collegare un altro dispositivo al filesystem è facile. Tutto ciò che hai bisogno di fare è usare il comando mount insieme a qualche opzione. L'uso di mount si può semplificare se il dispositivo ha una entry nel file /etc/fstab. Per esempio, diciamo che io voglia fare il mount del il mio lettore CD-ROM a che il mio file fstab appaia come l'esempio visto nella precedente sezione. Potrei invocare mount come segue:
% mount /cdrom |
Dato che c'è una linea in fstab per tale punto di mount (/cdrom) mount sa quali opzioni utilizzare. Se non ci fosse tale linea, dovrei usare molti parametri assieme a mount:
% mount -t iso9660 -o ro /dev/cdrom /cdrom |
Questa linea di comando comprende le stesse informazioni usate
prima nell'esempio con
fstab ma abbiamo dovuto dichiararle
esplicitamente. -t iso9660
indica il
tipo di filesystem sul dispositivo. In questo
caso sarà il filesystem iso9660 che è quello che i CD-ROM usano
comunemente. -o ro
dice a mount di
utilizzare il dispositivo in sola lettura.
/dev/cdrom è il nome del dispositivo e /cdrom è la posizione nel filesystem alla
quale fare il mount.
Prima che tu possa rimuovere un floppy, un CD-ROM o un altro dispositivo rimovibile del quale è stato fatto il mount è necessario che prima tu lo disconnetta. Puoi usare sia il nome del dispositivo che il punto di mount come argomento di umount. Per esempio, se vuoi scollegare il lettore CD-ROM dell'esempio precedente entrambi i seguenti comandi sono corretti:
# umount /dev/cdrom # umount /cdrom |
NFS sta per Network Filesystem.
I grossi ambienti Unix spesso condividono i programmi, insiemi di directory e gli spool per le mail. Il problema di avere le stesse copie delle risorse su ogni macchina è risolta da NFS. Possiamo usare NFS per condividere un insieme di home directory tra tutte le postazioni. Le singole postazioni montano le condivisioni NFS così come se risiedessero sulla macchina stessa.
Vedi Section 5.6.2 e le pagine di manuale di exports(5), nfsd(8) e mountd(8) per maggiori informazioni.
Linux mira a essere il più possibile Unix-like. Tradizionalmente, i sistemi operativi Unix sono orientati alla linea di comando. Certo abbiamo un' interfaccia utente grafica in Slackware, ma la linea di comando resta il principale livello di controllo del sistema. Èquindi importante capire alcune delle basi per la gestione dei files.
Le seguenti sezioni spiegano i comandi comuni per la gestione dei files e mostrano alcuni esempi di come sono usati. Ci sono molti altri comandi, ma questi ti aiuteranno a cominciare. I comandi sono discussi brevemente, troverai molti più dettagli nelle man pages che accompagnano ogni comando.
Questo comando visualizza i files contenuti in una directory. Gli utenti Windows e DOS lo possono comparare al suo simile dir Da solo, ls(1) mostrerà i files della directory corrente. Per vedere cosa c'è nella tua directory root, dovresti usare questi comandi:
% cd / % ls bin cdr dev home lost+found proc sbin tmp var boot cdrom etc lib mnt root suncd usr vmlinuz |
Un problema che hanno molte persone è che con questo output non puoi sapere facilmente che cosa è una directory e cosa è un file. Alcuni utenti preferiscono che ls aggiunga un identificatore per ogni listing, come questo:
% ls -FC bin/ cdr/ dev/ home/ lost+found/ proc/ sbin/ tmp/ var/ boot/ cdrom/ etc/ lib/ mnt/ root/ suncd/ usr/ vmlinuz |
Le directory hanno una slash alla fine del nome, mentre i files eseguibili hanno un asterisco alla fine del nome, e cosi via.
ls può essere usato anche per ottenere altre informazioni sui files. Ad esempio, per vedere le date di creazione, i proprietari e i permessi, ecco un esempio:
% ls -l drwxr-xr-x 2 root bin 4096 May 7 09:11 bin/ drwxr-xr-x 2 root root 4096 Feb 24 03:55 boot/ drwxr-xr-x 2 root root 4096 Feb 18 01:10 cdr/ drwxr-xr-x 14 root root 6144 Oct 23 18:37 cdrom/ drwxr-xr-x 4 root root 28672 Mar 5 18:01 dev/ drwxr-xr-x 10 root root 4096 Mar 8 03:32 etc/ drwxr-xr-x 8 root root 4096 Mar 8 03:31 home/ drwxr-xr-x 3 root root 4096 Jan 23 21:29 lib/ drwxr-xr-x 2 root root 16384 Nov 1 08:53 lost+found/ drwxr-xr-x 2 root root 4096 Oct 6 12:47 mnt/ dr-xr-xr-x 62 root root 0 Mar 4 15:32 proc/ drwxr-x--x 12 root root 4096 Feb 26 02:06 root/ drwxr-xr-x 2 root bin 4096 Feb 17 02:02 sbin/ drwxr-xr-x 5 root root 2048 Oct 25 10:51 suncd/ drwxrwxrwt 4 root root 487424 Mar 7 20:42 tmp/ drwxr-xr-x 21 root root 4096 Aug 24 03:04 usr/ drwxr-xr-x 18 root root 4096 Mar 8 03:32 var/ |
Se vuoi ottenere anche una lista dei files noscosti nella directory corrente, questo comando fa per te:
% ls -a . bin cdrom home mnt sbin usr .. boot dev lib proc suncd var .pwrchute_tmp cdr etc lost+found root tmp vmlinuz |
I files che iniziano con un punto (chiamati dot files) sono
nascosti all'output di ls. Puoi vederli
solo se gli passi l'opzione -a
Ci sono molte altre opzioni che possono essere trovate nelle manual pages online. Non dimenticare che puoi combinare varie opzioni da passare a ls.
Il comando cd è utilizzato per cambiare la directory corrente. Devi semplicemente scrivere cd seguito dal path name a cui vuoi accedere. Ecco alcuni esempi:
darkstar:~$ cd /bin darkstar:/bin$ cd usr bash: cd: usr: No such file or directory darkstar:/bin$ cd /usr darkstar:/usr$ ls bin darkstar:/usr$ cd bin darkstar:/usr/bin$ |
Nota che senza la slash iniziale, cd tenta di accedere alla directory nella directory corrente. Eseguendo cd senza alcuna opzione, verrai portato nella tua home directory.
Il comando cd non è come tutti gli altri, è un comando integrato nella shell. I comandi integrati nella Shell sono discussi in Section 8.3.1. Questo può non avere molto senso per te. In sostanza significa che non ci sono man pages per questo comando. Devi usare invece l'help della shell. Ad esempio:
% help cd |
Ti mostrerà le opzioni per cd e come usarle.
Il comando pwd è usato per mostrare la directory corrente. Per usare pwd basta scrivere pwd. Per esempio:
% cd /bin % pwd /bin % cd /usr % cd bin % pwd /usr/bin |
more(1) è quello che chiamiamo un pager utility. Spesso l'output di un particolare programma è troppo grande per stare in una singola schermata e il comando individuale non sa come adattare l'output su più schermate. Così questo compito è lasciato ai pager utility.
Il comando more rompe l'output in schermate individuali e aspetta la pressione della barra spaziatrice prima di passare alla schermata successiva. Premendo il tasto enter l'output avanzerà di una riga. Ecco un buon esempio:
% cd /usr/bin % ls -l |
Questo mostrerà alcune schermate tutte di seguito. Per interrompere l'output schermata per schermata, basterà redirigere tutto a more tramite il pipe:
% ls -l | more |
Il carattere pipe (shift backslash) è un' "abbreviazione" per dire: prendi l'output di ls e redirigilo come input a more. Puoi usare pipe con qualsiasi comando attraverso more, non solo ls. Il piping è descritto anche in Section 8.2.3.
Il comando more è certamente pratico, ma spesso supererai la schermate di cui hai bisogno involontariamente. more non prevede un modo per tornare indietro. Il comando less(1) prevede invece questa opzione. Viene usato nello stesso modo di more, quindi gli esempi precedenti valgono anche qui. less è di più di more. Joost Kremers lo descrive così:
less is more, but more more than more is, so more is less less, so use more less if you want less more.
Dove more e less falliscono, most(1) risolve i problemi. Se less è di più di more, most è di più di less. Mentre gli altri pagers possono mostrare solo un file alla volta, most è capace di trattare più file alla volta. most ha molte opzioni, dai un'occhiata alla man page per i dettagli.
cat(1) è l'abbreviazione di “concatenate”. All'inizio serviva per unire più file di testo in un unico file, ma può essere usato per molti altri scopi.
Per unire due o più file in uno unico, devi semplicemente listare i files dopo il comando cat e poi redirigere il nuovo output ad un file. cat lavora con lo standard input e standard output, quindi devi usare i caratteri di redirezione della shell. Per esempio:
% cat file1 file2 file3 > bigfile |
Questo comando prende il contenuto di file1, file2, and file3 e li unisce tutti insieme. Il nuovo output è mandato alla standard output.
Si può usare anche cat per visualizzare files. Molte persone usano cat per leggere i file di testo con i comandi more o less ,ad esempio:
% cat file1 | more |
Questo visualizzerà il file file1 e attraverso pipe con il comando more verrà visualizzata una schermata per volta.
Un altro uso di cat è copiare i files. Puoi copiare qualsiasi file con cat, ad esempio:
% cat /bin/bash > ~/mybash |
Il programma /bin/bash viene copiato nella tua home directory e chiamato mybash.
cat ha molti usi e quelli discussi qui sono solo alcuni. Siccome cat fa grande uso dello standard input e dello standard output, è ideale per l'uso negli shell scripts o per altri comandi complessi.
Il comando echo(1) visualizza il testo
specificato sullo
schermo. Devi specificare la stringa da visualizzare dopo il
comando echo. Di default echo
visualizzerà la
stringa e il carattere di newline dopo essa. Puoi passare
l'opzione -n
per sopprimere
l'aggiunta del carattere di newline. L'opzione
-e
farà in modo che echo
cerchi
caratteri di escape nella stringa e li esegua.
touch(1) è usato per cambiare il timestamp a un file. Puoi cambiare il timestamp di accesso e modificazione con questo comando. Se il file specificato non esiste ,touch ne creerà uno di lunghezza zero con il nome specificato. Per marcare un file con la corrente data/ora del sistema, dovrai usare questo comando:
% ls -al file1 -rw-r--r-- 1 root root 9779 Feb 7 21:41 file1 % touch file1 % ls -al file1 -rw-r--r-- 1 root root 9779 Feb 8 09:17 file1 |
Ci sono altre opzioni per touch, incluse opzioni per specificare quale timestamp modificare, il tempo da usare, e molto altro. La manual page online lo discute in dettaglio.
mkdir(1) crea una nuova directory. Devi semplicemente specificare la directory da creare mentre usi mkdir. Questo esempio crea la directory hejaz nella directory corrente:
% mkdir hejaz |
Puoi anche specificare un path, ad esempio:
% mkdir /usr/local/hejaz |
L' opzione -p
dirà a mkdir
di
creare ogni directory parente. L'esempio sopra fallirà se /usr/local
non esiste. L'opzione -p
creerà /usr/local e /usr/local/hejaz:
% mkdir -p /usr/local/hejaz |
cp(1) copia files. Gli utenti DOS possono paragonarlo al comando copy. Ci sono altre opzioni per il comando cp, quindi dovresti dare un'occhiata alla man page prima di usarlo.
Un uso comune di cp è copiare un file da un posto ad un altro. Per esempio:
% cp hejaz /tmp |
Questo copia il file hejaz dalla directory corrente alla directory /tmp .
Molti utenti preferiscono mantenere i timestamps, come in questo esempio:
% cp -a hejaz /tmp |
Questo assicura che i timestamps non saranno modificati nella copiatura.
Per copiare ricorsivamente il contenuto di una directory ad un'altra directory, dovrai dare questo comando:
% cp -R mydir /tmp |
Questo copierà la directory mydir nella directory/tmp.
Se vuoi copiare un file e mantenere i suoi vecchi permessi e timestamps usa il comando cp -p.
% ls -l file -rw-r--r-- 1 root vlad 4 Jan 1 15:27 file % cp -p file /tmp % ls -l /tmp/file -rw-r--r-- 1 root vlad 4 Jan 1 15:27 file |
cp ha molte altre opzioni discusse dettagliatamente nelle manual page online.
mv(1) muove files da un posto ad un altro. Suona semplice no ?
% mv oldfile /tmp/newfile |
mv ha qualche altra opzione discussa in dettaglio nella man page. Solitamente, mv non viene mai usato con opzioni nella commandline .
rm(1) rimuove file e directories Gli utenti DOS possono confrontarlo con i comandi del e deltree. rm può essere molto pericoloso se non presti attenzione. Anche se alcune volte è possibile recuperare un file cancellato di recente, ciò può essere complicato (potenzialmente costoso) e non è argomento di questo libro.
Per cancellare un file specifica il suo nome quando usi rm:
% rm file1 |
Se il file non ha permessi di scrittura, avrai un messaggio d'errore "permission denied". Per forzare la sua rimozione usa l'opzione -f, come questo:
% rm -f file1 |
Per rimuove una intera directory, usa le opzioni -r
e
-f
insieme. Questo è un buon esempio
di come puoi cancellare
l'intero contenuto del tuo hard disk. Non dovresti assolutamente
fare questo, ma ecco
l'esempio:
# rm -rf / |
Presta molta attenzione con rm; potresti inciampare da solo. Ci sono altre opzioni che sono discusse nelle pagine di manuale.
rmdir(1) rimuove directories dal filesystem. La directory deve essere vuota prima che possa essere rimossa. La sintassi è semplice:
% rmdir <directory> |
Questo esempio rimuoverà la subdirectory hejaz nella directory corrente:
% rmdir hejaz |
Se questa directory non esiste, rmdir te lo dirà. Puoi anche specificare l'intero path della directory da rimuovere, come mostra questo esempio:
% rmdir /tmp/hejaz |
Questo esempio tenterà di rimuovere la directory hejaz dentro la directory /tmp.
Puoi anche rimuovere la directory e tutte le sue directories
parenti passando
l'opzione -p
.
% rmdir -p /tmp/hejaz |
Questo tenterà dapprima di rimuovere la directory hejaz dentro /tmp. Se questo avviene con successo, tenterà poi di rimuovere /tmp. rmdir continuerà questo finchè non avviene un errore o l'intero albero specificato è rimosso.
ln(1) è usato per creare links tra files. Questi links possono essere hard links or soft (simbolici) links. Le differenze tra questo due tipi di link sono discusse in Section 9.3. Se vuoi creare un link simbolico alla directory /var/media/mp3 e mettere questo link nella tua home directory, dovrai fare questo:
% ln -s /var/media/mp3 ~/mp3 |
L'opzione -s
dice a ln
di fare un
link simbolico. L'opzione successiva è il target del link e
l'opzione finale è il nome
del link. In questo caso, creerà solamente un file chiamato mp3
nella tua home directory che punta a /var/media/mp3.
Creare un hard link è semplice. Tutto quello che devi fare è
togliere l'opzione -s
. Gli hard links
però non devono riferirsi a directory o file
systems diversi. Per creare un hard link /usr/bin/email
a /usr/bin/mutt, scrivete semplicemente
quanto segue:
# ln /usr/bin/mutt /usr/bin/email |
Tutti i programmi in esecuzione sono detti Processi. I Processi sono delle entità attive all'interno di un calcolatore, i processi vanno dall' X Window System (il server grafico) a tutti quei programmi che vengono lanciati all'avvio del computer. Ogni processo è in esecuzione con i permessi di un particolare utente. I processi lanciati durante l'avvio, generalmente hanno i permessi dell'utente root oppure di nobody. I Processi che lanci tu hanno i tuoi permessi, quelli lanciati da altri hanno i permessi di chi li ha lanciati.
Hai il controllo su tutti i processi che lanci. Inoltre l'utente root ha il controllo su tutti i processi del sistema, incluso su quelli lanciati da altri utenti. I processi possono essere controllati e monitorati tramite diversi programmi e comandi della shell.
I programmi che lanci da riga di comando sono in foreground (in primo piano). Questo ti permette di vedere tutto l'output del programma e di interagire con esso. D'altro canto, ci sono occasioni in cui vuoi che il comando lanciato non occupi il terminale o che il suo output non venga visualizzato. Questo significa lanciare un programma in background (secondo piano) e ci sono diversi modi per farlo.
Il primo modo per lanciare un processo in background è quello di aggiungere un ampersand (il simbolo &)( shift + 6 nelle tastiere italiane) alla linea di comando. Per esempio, supponiamo che vuoi usare amp per suonare degli mp3 che sono in una directory, ma hai bisogno di continuare a usare il terminale. La seguente linea di comando fa partire amp in background:
% amp *.mp3 & |
Il processo parte normalmente, e ti ritorna il prompt.
Un altro modo per mettere un processo in background è farlo mentre è in esecuzione. Durante l'esecuzione premi Control+z. Questo sospenderà il processo. Un processo sospeso è semplicemente in pausa, ma può essere rimesso in esecuzione in qualsiasi momento. Una volta che lo hai sospeso, ti viene ritornato il prompt. Puoi mandare in background il processo sospeso digitando:
% bg |
Adesso il processo sospeso è in background.
Se vuoi interagire con un processo in background, puoi farlo tornare in foreground (il contrario di background, cioè in primo piano). Se hai un solo processo in background, puoi farlo ritornare in foreground digitando:
% fg |
Se il programma non termina correttamente il suo compito, prende il controllo del terminale e non ritorna il prompt. A volte, il programma completa la sua esecuzione mentre è in background. in questo caso restituirà un messaggio come questo:
[1]+ Done /bin/ls $LS_OPTIONS |
Questo significa che il programma in background è terminato con successo.
Èpossibile avere più programmi in background contemporaneamente. Quando questo accade, hai bisogno di conoscere quale è il programma da riportare in foreground. Usando il comando fg viene riportato in foreground l'ultimo programma mandato in background. Cosa fare se hai una lunga lista di comandi in background? Fortunatamente, bash include un comando che ci da la lista di tutti i processi in background. Si chiama jobs e ritorna un output come questo:
% jobs [1] Stopped vim [2]- Stopped amp [3]+ Stopped man ps |
Come puoi vedere, sono tutti stoppati. Questo significa che i processi sono sospesi. Il numero è una sorta di ID per ogni processo in background. L'ID con un + vicino (man ps) è il processo che verrà messo in foreground se digiti fg.
Se vuoi mettere in foreground vim, devi digitare:
% fg 1 |
E vim tornerà in foreground. Mettere in background un processo può essere molto utile se hai un solo terminale aperto su una connessione dialup. Puoi avere più programmi in esecuzione su un singolo terminale, e controllarli commutando tra loro.
Adesso sai come commutare tra più processi mandati in esecuzione da riga di comando. E sai anche che ci sono sempre molti processi in esecuzione nello stesso tempo. Come fare ad avere una lista di tutti i programmi in esecuzione? Bene, usa il comando ps(1). Questo comando ha molte opzioni, e ne illustreremo quelle più importanti. Per una lista completa, guarda le pagine di manuale di ps. Per informazioni su come usare le pagine di manuale leggi il capitolo Section 2.1.1.
Semplicemente digitando ps avrai la lista dei programmi in esecuzione sul tuo terminale. Questa include i processi in foreground, che girano sulla shell su cui stai lavorando, e quindi, anche ps stesso. Inoltre mostra anche i processi in background che hai mandato in esecuzione. Molte volte la lista è veramente breve:
Anche se questo listato non contiene molti processi, le informazioni sono decisamente tipiche. Le colonne visualizzate sono le stesse di quando lanci il normale ps, indipendentemente dal numero di processi in esecuzione.
Bene, il PID è il process ID. Tutti i processi in esecuzione hanno il proprio PID, un identificativo numerico univoco che può avete valori tra 1 e 32767. A un nuovo processo viene asegnato il prossimo PID libero. Quando un processo termina (oppure viene ucciso, come vedrai nella prossima sezione), libera il proprio PID. Quando si raggiunge il PID massimo, il prossimo PID assegnato sarà il più piccolo tra i PID liberi
La colonna TTY indica in quale terminale sta girando il processo. Visto che ps è stato lanciato senza opzioni ritornerà solo i programmi in esecuzione sul terminale corrente, quindi tutti i processi avranno lo stesso valore di terminale. Come puoi vedere, ogni processo elencato è in esecuzione su ttyp0. In questa colonna possiamo vedere se il processo è in esecuzione su un terminale locale, remoto o su un terminale virtuale che gira sotto X.
La colonna TIME indica quanto tempo di CPU il processo ha usato. Questo è diverso dall'attuale tempo di esecuzione del processo. Ricorda che Linux è un Sistema Operativo multitasking. Ci sono molti processi in esecuzione in ogni momento, e ciascuno riceve una piccola porzione del tempo di CPU. Perciò la colonna TIME dovrebbe indicare, per ciascun processo, molto meno tempo di quanto in realtà ne utilizza per essere eseguito. Se noti che il valore nella colonna TIME riporta un numero consistente di minuti, allora qualcosa non va.
Infine, la colonna CMD mostra quale è effettivamente il programma. Mostra solo il nome del programma, non le opzioni o altre informazioni simili. Per avere informazioni di questo tipo, hai bisogno di usare una delle molte opzioni di ps. Ne discuteremo brevemente.
Puoi avere una lista completa di tutti i processi che girano sul tuo sistema usando la giusta combinazione di opzioni. Probabilmente restituirà una lunga lista di processi (cinquantacinque sul mio portatile in questo momento), mostrerò solo una parte dell'output.
% ps -ax PID TTY STAT TIME COMMAND 1 ? S 0:03 init [3] 2 ? SW 0:13 [kflushd] 3 ? SW 0:14 [kupdate] 4 ? SW 0:00 [kpiod] 5 ? SW 0:17 [kswapd] 11 ? S 0:00 /sbin/kerneld 30 ? SW 0:01 [cardmgr] 50 ? S 0:00 /sbin/rpc.portmap 54 ? S 0:00 /usr/sbin/syslogd 57 ? S 0:00 /usr/sbin/klogd -c 3 59 ? S 0:00 /usr/sbin/inetd 61 ? S 0:04 /usr/local/sbin/sshd 63 ? S 0:00 /usr/sbin/rpc.mountd 65 ? S 0:00 /usr/sbin/rpc.nfsd 67 ? S 0:00 /usr/sbin/crond -l10 69 ? S 0:00 /usr/sbin/atd -b 15 -l 1 77 ? S 0:00 /usr/sbin/apmd 79 ? S 0:01 gpm -m /dev/mouse -t ps2 94 ? S 0:00 /usr/sbin/automount /auto file /etc/auto.misc 106 tty1 S 0:08 -bash 108 tty3 SW 0:00 [agetty] 109 tty4 SW 0:00 [agetty] 110 tty5 SW 0:00 [agetty] 111 tty6 SW 0:00 [agetty] [output cut] |
Molti di questi processi sono stati avviati durante il boot. Io ho fatto diverse modifiche al mio sistema, per questo il tuo output risulterà leggermente differente. Comunque, potrai vedere molti di questi processi anche sul tuo sistema. Come puoi vedere, questa opzione mostra le opzioni con cui il comando è stato avviato. Recentemente, una vulnerabilità del kernel nel comando ptrace ha portato ad un fix per il quale non verranno mostrati troppe opzioni per molti programmi in esecuzione. Questi sono mostrati in parentesi come i PID dal 108 al 110. Questo permette meno colonne e un output più interessante.
Innanzitutto, avrai notato che molti processi sono mostrati come in esecuzione su tty“?”. Questi non sono in esecuzione in un particolare terminale. Questo è comune con i demoni: processi che sono in esecuzione senza essere attaccati ad un particolare terminale. Demoni comuni sono sendmail, BIND, apache e NFS. Attendono una richiesta da un client e ritornano a questo le informazioni volute.
Inoltre, c'è una nuova colonna: STAT. Questa mostra lo stato del processo. S sta a indicare che il processo sta aspettando che qualcosa accada. Z sta per processo “zombied”. Un processo “zombied” è un processo il cui padre è terminato lasciando il figlio attivo. Questa non è una buona cosa. D sta per un processo che è entrato in una fase di sleep interminabile. Spesso, questi processi rifiutano di terminarsi quando viene viene passato un SIGKILL. Puoi leggere ancora su SIGKILL nella prossima sezione su kill. W sta per paginazione. Un processo terminato è rappresentato con una X. Un processo rappresentato con T è tracciato o stoppato. R sta a significare che il processo è in esecuzione.
Se vuoi vedere ancora più informazioni su i processi in informazione, prova questo:
% ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 344 80 ? S Mar02 0:03 init [3] root 2 0.0 0.0 0 0 ? SW Mar02 0:13 [kflushd] root 3 0.0 0.0 0 0 ? SW Mar02 0:14 [kupdate] root 4 0.0 0.0 0 0 ? SW Mar02 0:00 [kpiod] root 5 0.0 0.0 0 0 ? SW Mar02 0:17 [kswapd] root 11 0.0 0.0 1044 44 ? S Mar02 0:00 /sbin/kerneld root 30 0.0 0.0 1160 0 ? SW Mar02 0:01 [cardmgr] bin 50 0.0 0.0 1076 120 ? S Mar02 0:00 /sbin/rpc.port root 54 0.0 0.1 1360 192 ? S Mar02 0:00 /usr/sbin/sysl root 57 0.0 0.1 1276 152 ? S Mar02 0:00 /usr/sbin/klog root 59 0.0 0.0 1332 60 ? S Mar02 0:00 /usr/sbin/inet root 61 0.0 0.2 1540 312 ? S Mar02 0:04 /usr/local/sbi root 63 0.0 0.0 1796 72 ? S Mar02 0:00 /usr/sbin/rpc. root 65 0.0 0.0 1812 68 ? S Mar02 0:00 /usr/sbin/rpc. root 67 0.0 0.2 1172 260 ? S Mar02 0:00 /usr/sbin/cron root 77 0.0 0.2 1048 316 ? S Mar02 0:00 /usr/sbin/apmd root 79 0.0 0.1 1100 152 ? S Mar02 0:01 gpm root 94 0.0 0.2 1396 280 ? S Mar02 0:00 /usr/sbin/auto chris 106 0.0 0.5 1820 680 tty1 S Mar02 0:08 -bash root 108 0.0 0.0 1048 0 tty3 SW Mar02 0:00 [agetty] root 109 0.0 0.0 1048 0 tty4 SW Mar02 0:00 [agetty] root 110 0.0 0.0 1048 0 tty5 SW Mar02 0:00 [agetty] root 111 0.0 0.0 1048 0 tty6 SW Mar02 0:00 [agetty] [output cut] |
Qua sono mostrate molte informazioni. Principalmente, vengono
mostrate informazioni su
quale utente ha lanciato il processo, quante risorse di sistema il
processo sta usando
(le colonne %CPU, %MEM, VSZ, e RSS) e in quale data questo è
iniziato. Ovviamente ci sono
molte informazioni che possono essere gestite da un amministratore
di sistema. Le
informazioni mostrate vanno fuori dal bordo dello schermo e questo
non ti permette di
vederle. L'opzione -w
forza il comando
ps di effettuare un wrap per le linee
lunghe.
Non è molto elegante, ma svolge il suo lavoro. Adesso hai la lista completa per ogni processo. Ci sono molte altre informazioni che puoi ottenere per ogni processo. Controlla la man page del commando ps. Comunque, le opzioni appena mostrate sono le più comuni e sono quelle che utilizzerai più spesso.
Spesso dei programmi possono tenere comportamenti anomali ed hai la necessità di bloccarli. Il programma per questo tipo di amministrazioni è kill(1), usato per manipolare i processi in vari modi. Il modo più ovvio di usare kill è per terminare un processo. Hai bisogno di terminare in questo modo un processo quando questo occupa molte risorse di sistema o sta lavorando male.
Per terminare un processo, hai bisogno di conoscere il suo PID o il suo nome. Per ottenere il PID usa il comando ps come illustrato nella precendete sessione. Per esemprio, per terminare il processo 4747, devi agire come segue:
% kill 4747 |
Nota che per terminare un processo devi esserne il proprietario. Questa è una feature di sicurezza. Se tu hai il permesso di terminare processi lanciati da altri utenti, è possibile che tu possa fare ogni sorta di operazioni dannose. Naturalmente l'utente root può terminare ogni processo nel sistema.
C'è un altro tipo di kill chiamato killall(1). Questo opera esattamente come segue: termina ogni programma che ha un certo nome. Se vuoi terminare tutti le istanze di vim in esecuzione, devi operare così:
% killall vim |
E ogni processo vim verrà terminato. Facendo questo da root puoi terminare ogni processo vim lanciato da ogni utente. Questo comporta un interessante modo per terminare la connessione al sistema a qualcuno (compreso se stesso):
# killall bash |
Molte volte un kill non basta per terminare un processo. Infatti occorre usare una forma più potente. Se il PID 4747 non risponde alla tua richiesta di kill, puoi agire come segue:
% kill -9 4747 |
Questo certamente terminerà il processo 4747. Puoi fare la stessa cosa con killall. Questo invia un particolare segnale al processo. Un kill invia un segnale SIGTERM (termina), che dice al processo di finire quello che sta facendo, effettuare la restituzione delle risorse allocate (clean-up) e uscire. kill -9 invia un segnale SIGKILL al processo che essenzialmente lo termina brutalmente. Il processo non effettua il clean-up e spesso possono capitare cose spiacevoli come la corruzione dei dati. C'è una completa lista dei segnali a tua disposizione. Puoi otternere la lista usando:
% kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR |
Il numero può essere usato per il kill, e il nome meno l'iniziale “SIG” può essere usato con killall. Ecco un altro esempio:
% killall -KILL vim |
Un uso diverso di kill è per rilanciare un processo. Inviando un SIGHUP, molti processi rileggeranno i loro file di configurazione. Questo è specialmente utile per dire ad un processo di sistema di rileggere i propri file di configurazione dopo l'editing.
Ecco finalmente il comando per mostrare le informazioni aggiornate sui processi in esecuzione sul sistema. Questo comando è chiamato top(1):
% top |
Verrà mostrata una schermata con le informazioni sui processi in esecuzione e determinate informazioni riguardo il sistema. Ovvero la media di carico, il numero di processi, lo stato della CPU, informazioni sulla memoria libera e informazioni dettagliate sui processi includendo i PID, l'utente, la priorità, l'uso di CPU e memoria, il tempo di esecuzione e il nome.
6:47pm up 1 day, 18:01, 1 user, load average: 0.02, 0.07, 0.02
61 processes: 59 sleeping, 2 running, 0 zombie, 0 stopped
CPU states: 2.8% user, 3.1% system, 0.0% nice, 93.9% idle
Mem: 257992K av, 249672K used, 8320K free, 51628K shrd, 78248K buff
Swap: 32764K av, 136K used, 32628K free, 82600K cached
PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
112 root 12 0 19376 18M 2468 R 0 3.7 7.5 55:53 X
4947 david 15 0 2136 2136 1748 S 0 2.3 0.8 0:00 screenshot
3398 david 7 0 20544 20M 3000 S 0 1.5 7.9 0:14 gimp
4946 root 12 0 1040 1040 836 R 0 1.5 0.4 0:00 top
121 david 4 0 796 796 644 S 0 1.1 0.3 25:37 wmSMPmon
115 david 3 0 2180 2180 1452 S 0 0.3 0.8 1:35 wmaker
4948 david 16 0 776 776 648 S 0 0.3 0.3 0:00 xwd
1 root 1 0 176 176 148 S 0 0.1 0.0 0:13 init
189 david 1 0 6256 6156 4352 S 0 0.1 2.4 3:16 licq
4734 david 0 0 1164 1164 916 S 0 0.1 0.4 0:00 rxvt
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:08 kflushd
3 root 0 0 0 0 0 SW 0 0.0 0.0 0:06 kupdate
4 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kpiod
5 root 0 0 0 0 0 SW 0 0.0 0.0 0:04 kswapd
31 root 0 0 340 340 248 S 0 0.0 0.1 0:00 kerneld
51 root 0 0 48 48 32 S 0 0.0 0.0 0:00 dhcpcd
53 bin 0 0 316 316 236 S 0 0.0 0.1 0:00 rpc.portmap
57 root 0 0 588 588 488 S 0 0.0 0.2 0:01 syslogd
|
Èchiamato top perché i programmi che stanno usando intensivamente la CPU vengono mostrati in cima. Una nota interessante è che top verrà mostrato come primo in base all'uso che fa della CPU in certi sistema. Comunque,top è molto utile per determinare quale programma si sta comportando male ed è necessario terminare.
Supponi che tu vuoi solamente la lista dei tuoi processi o i
processi di un altro
utente. I processi che vuoi vedere potrebbero non essere quelli che
usano maggiormente la
CPU. L'opzione -u
permette di
specificare un nome utente o un
UID e monitorare solo i processi lanciati da quel particolare
utente.
% top -u alan PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3622 alan 13 0 11012 10m 6956 S 1.0 2.1 0:03.66 gnome-terminal 3739 alan 13 0 1012 1012 804 R 0.3 0.2 0:00.06 top 3518 alan 9 0 1312 1312 1032 S 0.0 0.3 0:00.09 bash 3529 alan 9 0 984 984 848 S 0.0 0.2 0:00.00 startx 3544 alan 9 0 640 640 568 S 0.0 0.1 0:00.00 xinit 3548 alan 9 0 8324 8320 6044 S 0.0 1.6 0:00.30 gnome-session 3551 alan 9 0 7084 7084 1968 S 0.0 1.4 0:00.50 gconfd-2 3553 alan 9 0 2232 2232 380 S 0.0 0.4 0:00.05 esd 3555 alan 9 0 2552 2552 1948 S 0.0 0.5 0:00.10 bonobo-activati 3557 alan 9 0 2740 2740 2224 S 0.0 0.5 0:00.05 gnome-smproxy 3559 alan 9 0 6496 6492 5004 S 0.0 1.3 0:00.31 gnome-settings- 3565 alan 9 0 1740 1740 1440 S 0.0 0.3 0:00.28 xscreensaver 3568 alan 9 0 7052 7052 4960 S 0.0 1.4 0:02.28 metacity 3572 alan 9 0 11412 11m 7992 S 0.0 2.2 0:01.58 gnome-panel 3574 alan 9 0 12148 11m 8780 S 0.0 2.4 0:00.64 nautilus 3575 alan 9 0 12148 11m 8780 S 0.0 2.4 0:00.00 nautilus 3576 alan 9 0 12148 11m 8780 S 0.0 2.4 0:00.00 nautilus |
Come puoi vedere, al momento ho in esecuzione X, top, un gnome-terminal (dal quale sto scrivendo) e molti altri processi legati a X che usano da molto tempo la CPU. Questo è un ottimo modo per monitorare quanto duramente i tuoi utenti stanno lavorando sul sistema.
top inoltre supporta il monitoraggio dei processi tramite il loro PID, ignorando i processi zombied o in idle e molti altre opzioni. Il modo migliore di avere una visione completa di queste opzioni è leggere la man page di top.
Whoa whoa whoa whoa whoa.... so cosa stai pensando. “Io non sono un amministratore di sistema! E non voglio neanche essere un amministratore!”
Il fatto è che tu sei amministratore di qualunque computer del quale hai la password di root . Questo potrebbe essere la tua macchina desktop con uno o due utenti, o potrebbe essere un grosso server con diverse centinaia di utenti. Considerazioni a parte, avrai bisogno di conoscere come amministrare gli utenti e come spegnere il sistema in maniera corretta. Queste mansioni sembrano semplici, ma ci sono dei dettagli dei quali bisogna tener conto.
Come già detto nel Chapter 8, non dovresti usare il tuo sistema accedendo come root. Dovresti invece, creare un account utente per l'uso quotidiano ed usare l'account di root solo per i compiti di amministrazione. Per creare un utente puoi, sia usare gli strumenti messi a disposizione da Slackware, sia modificare il file delle password a mano.
La maniera più facile di gestire gli utenti e i gruppi, è quella di utilizzare gli script e i programmi a disposizione. Slackware hai i programmi adduser, userdel(8), chfn(1), chsh(1) e passwd(1) per gestire gli utenti. I comandi groupadd(8), groupdel(8) e groupmod(8) sono per gestire i gruppi. Con l'eccezione di chfn, chsh e passwd, questi programmi sono eseguiti solo da root, e sono quindi contenuti in /usr/sbin. chfn, chsh e passwd possono essere usati da chiunque e sono contenuti in /usr/bin.
Gli utenti possono essere aggiunti con il programma adduser . Cominceremo seguendo l'intera procedura, mostrando tutte le domande che vengono fatte e descrivendo brevemente ciò che ogni cosa significa. La risposta predefinita è tra parantesi e può essere scelta per quasi tutte le domande, a meno che tu non voglia realmente cambiare qualcosa.
# adduser Login name for new user []: jellyd |
Questo è il nome che l'utente userà per effettuare il login. Tradizionalmente, i nomi di login sono composti da otto, o meno, lettere e solo da minuscole. (Potresti usare più di otto lettere o usare altri caratteri, ma evita di farlo a meno che tu non abbia delle ottime ragioni).
Puoi anche fornire il nome di login come argomento sulla linea di comando:
# adduser jellyd |
In entrambi i casi, dopo aver fornito il nome di login, adduser chiederà l'user ID:
User ID ('UID') [ defaults to next available ]: |
L'user ID (UID) è il modo effettivo con il quale viene determinato il proprietario dei file in Linux. Ogni utente ha un numero unico, partendo da 1000 in Slackware. Puoi scegliere un UID per il nuovo utente, o puoi semplicemente lasciare che adduser assegni all'utente il primo disponibile.
Initial group [users]: |
Tutti gli utenti sono messi nel gruppo users , se non viene disposto diversamente. Potresti voler mettere il nuovo utente in un gruppo diverso, ma è sconsigliato, a meno che tu non sappia cosa stai facendo.
Additional groups (comma separated) []: |
Questa domanda ti permette di mettere il nuovo utente in ulteriori gruppi. È possibile per un utente far parte di più gruppi contemporaneamente. Questo è utile se hai stabilito gruppi per cose come modificare i file del sito web, eseguire dei programmi e così via. Per esempio, alcuni siti definiscono il gruppo wheel come l'unico che può usare il comando su . Oppure, una installazione di Slackware standard usa il gruppo sys per gli utenti autorizzati ad eseguire suoni attraverso la scheda audio interna.
Home directory [/home/jellyd] |
Le home directory vengono messe in /home. Se gestisci un sistema molto grande è possibile che tua abbia messo le home directory in un posto diverso (o più posti diversi). Questo passaggio ti permette di specificare quale directory utilizzare come home dell'utente.
Shell [ /bin/bash ] |
bash è la shell di default di Slackware Linux, e andrà bene per la maggior parte delle persone. Se il tuo nuovo utente ha usato in passato Unix, potrebbe trovarsi a suo agio con una shell diversa. Puoi cambiare la sua shell adesso, o può farlo lui stesso successivamente, usando il comando chsh .
Expiry date (YYYY-MM-DD) []: |
Gli account possono essere configurati per scadere ad una certa data. Di default non c'è alcuna scadenza. Puoi cambiarlo, se vuoi. Questa opzione potrebbe essere utile per le persone che gestiscono un ISP, il quale potrebbe volere che un account scada ad una ceta data, a meno che non riceva il pagamento dell'anno successivo.
New account will be created as follows: --------------------------------------- Login name: jellyd UID: [ Next available ] Initial group: users Additional groups: [ None ] Home directory: /home/jellyd Shell: /bin/bash Expiry date: [ Never ] |
Ecco qui... se vuoi uscire dai pasticci, premi Control+C. Altrimenti premi ENTER per andare avanti e creare l'account.
Ora ti vengono mostrate tutte le informazioni che hai inserito, riguardanti il nuovo account, e ti è data la possibilità di interromperne la creazione. Se hai inserito qualcosa di sbagliato, premi Control+C e ricomincia da capo. Altrimenti puoi premere enter e l'account verrà creato.
Creating new account... Changing the user information for jellyd Enter the new value, or press return for the default Full Name []: Jeremy Room Number []: Smith 130 Work Phone []: Home Phone []: Other []: |
Tutte queste informazioni sono opzionali. Non devi inserire alcuna di queste informazioni, se non vuoi farlo, e l'utente può cambiarle in qualcunque momento usando chfn. Comunque, potresti trovare utile inserire almeno il nome completo e il numero di telefono, nel caso in cui avessi bisogno di contattare la persona successivamente.
Changing password for jellyd Enter the new password (minimum of 5, maximum of 127 characters) Please use a combination of upper and lower case letters and numbers. New password: Re-enter new password: Password changed. Account setup complete. |
Dovrai inserire una password per il nuovo utente. Di solito, se il nuovo utente non è presente fisicamente in questo momento, sceglierai una password predefinita e dirai all'utente di cambiarla per maggior sicurezza.
![]() |
Scegliere una password: Avere una password sicura è la prima linea difensiva per evitare le intrusioni. Non scegliere una password facilmente indovinabile, perché questo rende più facile per qualcuno entrare abusivamente nel tuo sistema. Idealmente, una password sicura è una serie di caratteri casuali, comprese lettere maiuscole e minuscole, numeri e altri caratteri. (il carattere Tab potrebbe non essere una scelta saggia, a seconda del tipo di computer dai quali effettuerai il login.) Ci sono molti pacchetti software capaci ci generare password casuali, cerca in Internet queste applicazioni. Come regola generale, semplicemente usa il buon senso, non scegliere una password che è la data del compleanno di qualcuno che conosci, una frase comune, qualcosa sulla tua scrivania o qualsiasi altra cosa che è facilmente associabile a te. Una password come “secure1” o qualsiasi altra password che vedi stampata o online, è anch'essa una cattiva scelta. |
Rimouvere gli utenti non è per niente difficile. Semplicemente esegui userdel con il nome dell'account da rimuovere. Dovresti verificare che l'utente non abbia effettuato il login e che non ci siano processi in esecuzione di quell'utente. Inoltre, ricorda che una volta che hai rimosso quell'utente, tutte le informazioni sulla sua password sono perse permanentemente.
# userdel jellyd |
Questo comando rimuove quel fastidioso utente jellyd dal tuo sistema. Che Liberazione! :) L'utente è cancellato dai file /etc/passwd, /etc/shadow e /etc/group , ma non viene rimossa la sua home directory.
Se volessi cancellare anche la home directory, useresti questo comando:
# userdel -r jellyd |
Il disabilitare temporaneamente un account, sarà affrontato nella prossima sezione sulle password, dato che un cambio temporaneo implica un cambiamento nella password dell'utente. Come cambiare le altre informazioni sull'account è affrontato nella sezione Section 12.1.3.
I programmi per aggiungere e cancellare i gruppi sono molto semplici, groupadd aggiungerà un'altra voce nel file /etc/group con un unico group ID (GID), mentre groupdel cancellerà il gruppo specificato. Sta a te modificare il file /etc/group per aggiungere gli utenti ad un gruppo. Per esempio, per aggiungere un gruppo chiamato cvs:
# groupadd cvs |
E per rimuoverlo:
# groupdel cvs |
Il programmapasswd cambia le password modificando il file /etc/shadow . Questo file contiene tutte le password del sistema in un formato criptato. Per cambiare la tua password, digiteresti:
% passwd Changing password for chris Old password: Enter the new password (minumum of 5, maximum of 127 characters) Please use a combination of upper and lower case letters and numbers. New password: |
Come puoi vedere ti viene richiesto di inserire la tua vecchia password. Non apparirà sullo schermo mentre la digiti, come quando effettui il login. Poi, ti viene chiesto di inserire la nuova password. passwd farà molti controlli sulla tua nuova password, e si lamenterà se non passa i suoi controlli. Puoi ignorare i suoi avvertimenti, se vuoi. Ti verrà richiesto di inserire la tua nuova password una seconda volta per conferma.
Se sei root, puoi cambiare anche la password degli altri utenti:
# passwd ted |
Dovrai quindi seguire la stessa procedura di prima, a parte il fatto che non dovrai inserire la vecchia password. (Uno dei tanti benefici di essere root...)
Se ce n'è bisogno, puoi anche disabilitare temporaneamente un account e successivamente riabilitarlo. Sia disabilitare che riabilitare un account può essere fatto con passwd. Per disabilitare un account, fai come segue, da root:
# passwd -l david |
Questo cambierà la password di david in qualcosa che è impossibile che corrisponda a qualunque valore criptato. Potrai riabilitare l'account così:
# passwd -u david |
Ora, l'account di david è di nuovo normale. Disabilitare un account potrebbe essere utile se l'utente non rispetta le regole da te imposte sul tuo sistema.
Ci sono due informazioni che gli utenti possono cambiare in qualsiasi momento: la loro shell e le loro finger information. Slackware Linux usachsh (change shell) e chfn (change finger) per modificare questi valori.
Un utente può scegliere qualsiasi shell che sia elencata nel file /etc/shells . Per la maggior parte delle persone /bin/bash andrà bene. Altri potrebbero essere abituati ad usare una shell presente sul loro sistema al lavoro o a scuola e voler usare quello che conoscono già.Per cambiare la tua shell, usa chsh:
% chsh Password: Changing the login shell for chris Enter the new value, or press return for the default Login Shell [/bin/bash]: |
Dopo aver inserito la tua password, inserisci il percorso completo della tua nuova shell. Prima però, assicurati che sia elencata nel file /etc/shells(5) . L'utente root può anche cambiare la shell di qualsiasi utente, eseguendo chsh con il nome dell'utente come argomento.
Le finger information sono le informazioni opzionali come il tuo nome completo, numero di telefono e numero di stanza. Queste possono essere cambiate usando chfn, e seguendo la stessa procedura fatta durante la creazione dell'account. Come al solito, root può cambiare le finger information di chiunque.
Ovviamente, è possibile aggiungere, modificare e rimuovere utenti e gruppi senza usare gli script e i programmi forniti da Slackware. Non è realmente difficile, anche se, dopo aver letto questo procedimento, probabilmente troverai molto più semplice usare gli script. Comunque, è importante sapere come le tue informazioni sulle password sono memorizzate, nel caso in cui tu abbia bisogno di recuperare queste informazioni e non abbia gli strumenti di Slackware disponibili.
Per prima cosa aggiungeremo un nuovo utente ai file /etc/passwd(5), /etc/shadow(5) e /etc/group(5). Il file passwd contiene alcune informazioni riguardanti gli utenti sul tuo sistema, ma (abbastanza stranamente) non le loro password. Una volta le conteneva, ma venne cambiato tempo fa per ragioni di sicurezza. Il file passwd deve essere leggibile da tutti gli utenti, ma tu non vuoi che il mondo intero possa leggere le password criptate, visto che coloro che volessero entrare nel tuo sistema, potrebbero usare le password criptate come punto di partenza per decriptare la password di un utente. Invece, le password criptate sono contenute nel file shadow, che è leggibile solo da parte di root, e le password di tutti gli utenti sono inserite nel file passwd semplicemente come “x”. Il file group elenca tutti i gruppi e chi ne fa parte.
Puoi usare il comando vipw per modificare il file /etc/passwd in maniera sicura e il comando vigr per modificare il file /etc/group in maniera sicura. Usa vipw -s per modificare il file/etc/shadow in maniera sicura. (con “in maniera sicura” in questo contesto, si intende che qualcun'altro non potrà modificare il file mentre lo stai facendo tu. Se sei l'unico amministratore del tuo sistema, probabilmente non corri rischi, ma è meglio stare in un buon ambiente sin dall'inizio).
Esaminiamo il file/etc/passwd e guardiamo come aggiungere un nuovo utente. Una classica voce in passwd è simile alla seguente:
chris:x:1000:100:Chris Lumens,Room 2,,:/home/chris:/bin/bash |
Ogni riga è una voce per un utente e i campi su ogni riga sono separati dai due punti. I campi sono il nome di login, la password criptata (“x” per tutti, su un sistema Slackware, da quando Slackware usa le password shadow), user ID, group ID, le finger information opzionali (separate da delle virgole), la home directory e la shell. Per aggiungere un nuovo utente a mano aggiungi una nuova riga alla fine del file, riempiendo in maniera corretta i vari campi.
Le informazioni che aggiungi devono corrispondere a dei requisiti, o il tuo nuovo utente potrebbe avere dei problemi nell'effettuare il login. Per prima cosa, assicurati che il campo password contenga solo una x, e che sia nome utente, sia user ID, siano unici. Inserisci l'utente in un gruppo, o 100 (il gruppo “users” in Slackware), o il tuo gruppo predefinito (usa il suo numero, non il nome). Dai all'utente una home directory valida (che creerai successivamente) ed una shell (ricorda, le shell valide sono elencate in/etc/shells).
Successivamente avremo bisogno di aggiungere una voce nel file /etc/shadow, che contiene le password criptate. Una classica voce è simile a questa:
chris:$1$w9bsw/N9$uwLr2bRER6YyBS.CAEp7R.:11055:0:99999:7::: |
Ancora una volta, ogni riga è una voce per una persona, con ogni campo delimitato dai due punti. I campi sono (in ordine) il nome di login, la password criptata, i giorni dall'Epoca (1 Gennaio, 1970) di quando è stata cambiata l'ultima volta, i giorni prima che la password possa essere modificata, i giorni dopo i quali la password deve essere modificata, i giorni prima della scadenza della password in cui l'utente viene avvertito, i giorni dopo la scadenza della password in cui l'account viene disabilitato, i giorni a partire dal 1 gennaio 1970 dopo i quali l'account viene disabilitato e un campo riservato.
Come puoi vedere, la maggior parte dei campi è per la scadenza dell'account. Se non stai usando le informazioni della scadenza, devi solo riempire pochi campi con alcuni valori speciali. Altrimenti dovrai prendere alcune decisioni e fare dei calcoli, prima di riempire questi campi. Per un nuovo utente, metti dei caratteri casuali nel campo della password. Non ti preoccupare del valore che quella password ha attualmente, perché tanto verrà cambiata a breve. L'unico carattere che non puoi mettere nel campo della password sono i due punti (":"). Lascia il campo “giorni da quando la password è stata cambiata” vuoto. Inserisci poi 0,99999 e 7 come nell'esempio e lascia gli altri campi vuoti.
(Per quelli di voi che credono che quella sopra sia la mia password criptata e pensano di essere ad un passo dall'entrare nel mio sistema, andate avanti a leggere. Se riuscite a decriptare quella password, avrete la password di un sistema di prova dotato di firewall. Molto utile :) )
Tutti gli utenti normali fanno parte del gruppo “users” su un tipico sistema Slackware. Comunque, se vuoi creare un nuovo gruppo, o aggiungere il nuovo utente ad un ulteriore gruppo, devi modificare il file /etc/group . Ecco una classica voce:
cvs::102:chris,logan,david,root |
I campi sono il nome del gruppo, il group ID e i membri del gruppo, separati da virgole. Creare un nuovo gruppo significa semplicemente aggiungere un nuova riga con un group ID unico. Gli utenti che fanno parte di questo nuovo gruppo dovranno rifare il login affinché le modifiche abbiano effetto.
A questo punto, potrebbe essere una buona idea usare i comandi pwck e grpck per
verificare che i
cambiamenti fatti siano andati a buon fine. Per prima cosa, usa pwck
-r e grpck -r: l'opzione -r
non
fa modifiche, ma elenca i cambiamenti che ti verrebbero chiesti di
fare se avessi
eseguito il comando senza l'opzione. Puoi usare questo output per
decidere se hai bisogno
di modificare ulteriormente qualche file, di eseguire pwck
o grpck senza l'opzione -r
, o
semplicemente di lasciare tutto com'è.
A questo punto, dovresti usare il comando passwd per creare una password corretta per l'utente. Poi, usa il comando mkdir per creare la home directory del nuovo utente, quella specificata in /etc/passwd e usare chown per settare il nuovo utente come proprietario della directory appena creata.
Rimuovere un utente significa semplicemente cancellare tutte le voci esistenti, riguardanti quell'utente. Rimuovi le voci dell'utente dai file /etc/passwd e /etc/shadow e rimuovi il nome di login da qualsiasi gruppo nel file /etc/group. Se è quello che desideri, cancella la home directory dell'utente, il file mail spool e le eventuali voci in crontab.
Rimuovere i gruppi è simile: cancella le voci di quel gruppo da /etc/group.
È molto importante che tu spenga il tuo sistema in maniera corretta. Spegnere semplicemente premendo l'interruttore di corrente può causare seri danni al filesystem. Mentre il sistema è acceso, i file sono in uso, anche se tu non stai facendo niente. Ricorda che per tutto il tempo ci sono molti processi in esecuzione in background. Questi processi gestiscono il sistema e tengono aperti molti file. Quando viene tolta la corrente al sistema, questi file non vengono chiusi correttamente e potrebbero danneggiarsi. A seconda di quali file si danneggiano, il sistema potrebbe diventare completamente inutilizzabile! O comunque dovrai sempre seguire una lunga procedura di scansione del filesystem al successivo riavvio.
![]() |
Se hai configurato il tuo sistema con un filesystem dotato di journal come ext3 o reiserfs, sarai parzialmente protetto dai danneggiamenti del filesystem e la scansione al riavvio sarà più breve che se avessi usato un filesystem senza journal, come ext2. Comunque, questa "rete di protezione" non è una scusa per spegnere il sistema in maniera scorretta! Un FS con il journal è pensato per proteggere i tuoi file da eventi fuori dal tuo controllo, non dalla tua pigrizia. |
Ad ogni modo, quando vuoi riavviare o spegnere il tuo computer, è importante farlo correttamente. Ci sono vari modi di farlo: puoi scegliere quello che ritieni migliore (o che richiede meno lavoro). Visto che spegnere e riavviare sono procedure simili tra loro, la maggior parte dei modi di spegnere il sistema, può essere usata anche per il riavvio.
Il primo metodo è attraverso il comando shutdown(8) ed è probabilmente il più diffuso. shutdown può essere usato per riavviare o spegnere il sistema ad un'ora stabilita e può mostrare un messaggio che dice a tutti gli utenti che hanno effettuato il login, che il sistema si sta per spegnere.
La maniera più semplice di usare shutdown per spegnere il computer è:
# shutdown -h now |
In questo caso non manderemo alcun messaggio personalizzato agli
utenti, ma vedranno
il messaggio predefinito di shutdown. “now
” indica il momento in cui vogliamo che
si spenga e
“-h
” dice di spegnere (halt) il sistema.
Questo
non è un modo molto amichevole di gestire un sistema multi-utente,
ma va bene sul tuo
computer di casa. Un metodo migliore, su un sistema multi-utente,
potrebbe essere quello
di mandare a tutti un messaggio di avvertimento in anticipo:
# shutdown -h +60 |
Questo spegnerà il sistema dopo un'ora (60 minuti), il che, può andare bene su un sistema multi-utente. I sistemi importanti, dovrebbero avere il loro spegnimento programmato molto in anticipo e potresti mettere messaggi di avvertimento in ogni posto appropriato usato per le notifiche di sistema (email, bulletin board, /etc/motd , od altro).
Per riavviare il sistema si usa lo stesso comando, ma sostituendo “-h
” con “-r
”:
# shutdown -r now |
Puoi usare la stessa notazione del tempo con shutdown -r di come faresti con shutdown -h. Ci sono molte altre cose che puoi fare con shutdown per controllare quando spegnere o riavviare la macchina; leggi la pagina di manuale per maggiori dettagli.
Il secondo modo per spegnere o riavviare il computer è quello di usare i comandi halt(8) e reboot(8). Come il nome suggerisce, halt arresta immediatamente il sistema operativo e reboot riavvia il sistema (reboot in realtà è solo un link simbolico a halt.) Vengono invocati in questo modo:
# halt # reboot |
Un modo di riavviare o spegnere il sistema ad un livello più basso è quello di interagire direttamente con init. Tutti gli altri metodi sono solamente dei modi più comodi di interagire con init, ma tu puoi dirgli direttamente cosa fare. telinit(8) (nota che ha solo una “l”). Attraverso telinit, si dirà a init a quale runlevel passare, e questò causerà l'esecuzione di un particolare script. Questo script terminerà o avvierà processi, a seconda delle necessità di quel runlevel. Questo funziona per riavviare e spegnere il computer perché entrambi sono dei runlevel speciali.
# telinit 0 |
Il runlevel 0 è il runlevel relativo all'arresto del sistema. Dicendo a init di entrare nel runlevel 0, tutti processi verranno terminati, i filesystem verranno smontati e la macchina si arresterà. Questo è un modo perfettemente accettabile di chiudere il sistema. Su molti computer portatili e sui moderni computer desktop, questo causerà anche lo spegnimento della macchina.
# telinit 6 |
Il runlevel 6 è il runlevel relativo al riavvio. Tutti i processi verranno terminati, i filesystem smontati e la macchina riavviata. Questo è un modo perfettamente accettabile di riavviare il sistema.
Per i curiosi, quando si passa al runlevel 0 o 6, se fatto usando shutdown, halt, o reboot, verrà eseguito lo script /etc/rc.d/rc.6 (Lo script /etc/rc.d/rc.0 è un link simbolico a /etc/rc.d/rc.6.) Puoi personalizzare questo file a seconda dei tuoi gusti - assicurati di provare i tuoi cambiamenti con cautela!
C'è un ultimo modo di riavviare il sistema. Tutti gli altri metodi necessitano che tu abbia effettuato il login come root. Comunque, è possibile riavviare la macchina anche non essendo root, se hai accesso fisico alla tastiera. Usando Control+Alt+Delete (il saluto a tre dita) la macchina verrà riavviata immediatamente (Dietro le quinte, il comando shutdown viene richiamato per te quando usi use Control+Alt+Delete.) Il "saluto" non funziona sempre mentre stai usando X Windows--potresti aver bisogno di usare Control+Alt+F1 (o un altro tasto funzione) per passare ad un terminale non-X Windows prima di usarlo.
Come ultima cosa, il file che fondamentalmente controlla ogni aspetto dell'accensione e dello spegnimento è /etc/inittab(5) Generalmente, non dovresti aver bisogno di modificare questo file, ma può farti capire perché alcune cose funzionano nella maniera che lo fanno. Come sempre, guarda la pagina di manuale per maggiori dettagli.
Una rete consiste di diversi computer connessi tra loro. La rete può essere semplice, come quella costituita da pochi computer connessi in casa o ufficio, o complessa, come le grandi reti universitarie o come l'intero Internet. Qualora il tuo computer faccia parte di una rete, potrai accedere agli altri sistemi connessi in rete sia in modo diretto che attraverso servizi come posta e web.
Esistono numerosi programmi di rete a tua dispozione. Alcuni sono utili per effettuare controlli diagnostici e verificare che tutto stia funzionando correttamente. Altri, come i programmi di posta elettronica e i web browser, sono utili per lavorare e tenersi in contatto con altre persone.
ping(8) invia un pacchetto ICMP ECHO_REQUEST all'host specificato. Se l'host risponde, otterrai un pacchetto ICMP di risposta. Sembra inutile a prima vista? Bene, puoi “inviare ping” ad un indirizzo IP per controllare se la macchina è viva. Se non ricevi risposta, probabilmente la macchina ha qualche problema. Ecco una tipica conversazione tra due utenti Linux:
Utente A: Quella macchina è finita di nuovo offline.
User B: Ne sei sicuro?
User A: Si. Ho provato ad inviare dei ping, ma non ho ricevuto risposta.
Sono situazioni come queste che rendono ping un comando utile e di uso frequente. Esso rappresenta una soluzione molto rapida per controllare se una macchina sia online e connessa alla rete. La sintassi di base è:
% ping www.slackware.com |
Ci sono naturalmente molte opzioni che possono essere specificate. Per ulteriori informazioni, consulta la man page del comando ping(1).
Il comando traceroute(8) di Slackware è un'utilità diagnostica di rete molto utile. traceroute mostra tutti gli host che un pacchetto attraversa nel tentativo di raggiungere la sua destinazione. Puoi usare il comando seguente per vedere a quanti “hop” (singolo passaggio attraverso un host) di distanza ti trovi rispetto al sito web di Slackware:
% traceroute www.slackware.com |
Ciascun host attraversato verrà inserito nell'elenco, assieme ai suoi tempi di risposta. Ecco un output di esempio:
% traceroute www.slackware.com traceroute to www.slackware.com (204.216.27.13), 30 hops max, 40 byte packets 1 zuul.tdn (192.168.1.1) 0.409 ms 1.032 ms 0.303 ms 2 207.171.227.254 (207.171.227.254) 18.218 ms 32.873 ms 32.433 ms 3 border-sf-2-0-4.sirius.com (205.134.230.254) 15.662 ms 15.731 ms 16.142 ms 4 pb-nap.crl.net (198.32.128.20) 20.741 ms 23.672 ms 21.378 ms 5 E0-CRL-SFO-03-E0X0.US.CRL.NET (165.113.55.3) 22.293 ms 21.532 ms 21.29 ms 6 T1-CDROM-00-EX.US.CRL.NET (165.113.118.2) 24.544 ms 42.955 ms 58.443 ms 7 www.slackware.com (204.216.27.13) 38.115 ms 53.033 ms 48.328 ms |
traceroute e ping hanno in comune l'uso di pacchetti ICMP. Esistono diverse opzioni che puoi specificare quando usi traceroute. Queste opzioni sono descritte dettagliatamente nella man page.
Domain Name Service (in breve DNS) è quel protocollo magico che ti permette di tradurre nomi di dominio come www.slackware.com in indirizzi IP come 64.57.102.34. I computer non possono instradare i pacchetti verso un nome di dominio (in questo caso www.slackware.com), ma possono instradare pacchetti verso l'indirizzo IP relativo al nome. I nomi rappresentano un modo molto comodo per ricordare le macchine. Senza DNS dovremmo ricordare a memoria quale sia l'indirizzo IP dei computer che vogliamo raggiungere, assumendo per giunta che questo indirizzo non cambi mai. Chiaramente assegnare nomi ai computer rende la memorizzazione molto più semplice, ma come associamo i nomi agli indirizzi IP?
Il comando host(1) può fare questo per te. host viene usato per associare nomi ad indirizzi IP. Èuna utility molto rapida e semplice, con poche funzioni.
% host www.slackware.com www.slackware.com is an alias for slackware.com. slackware.com has address 64.57.102.34 |
Assumiamo che per qualche ragione ci interessi associare un indirizzo IP ad un nome di dominio; in questo caso cosa facciamo?
nslookup è un programma consolidato che esiste da tantissimo tempo. nslookup è però superato, e potrebbe essere rimosso nelle future versioni della distribuzione. Non esiste neanche una man page per questo programma.
% nslookup 64.57.102.34 Note: nslookup is deprecated and may be removed from future releases. Consider using the `dig' or `host' programs instead. Run nslookup with the `-sil[ent]' option to prevent this message from appearing. Server: 192.168.1.254 Address: 192.168.1.254#53 Non-authoritative answer: www.slackware.com canonical name = slackware.com. Name: slackware.com Address: 64.57.102.34 |
Il domain information groper, dig(1) in breve, è il programma a cui affidarsi per recuperare informazioni DNS. dig può effettuare ricerche di ogni tipo sui server DNS, inclusi reverse lookup, A, CNAME, MX, SP e record TXT. dig ha numerose opzioni a riga di comando; se non hai familiarità con questo programma, ti consigliamo di leggere la sua ampia man page.
% dig @192.168.1.254 www.slackware.com mx ; <<>> DiG 9.2.2 <<>> @192.168.1.254 www.slackware.com mx ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26362 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.slackware.com. IN MX ;; ANSWER SECTION: www.slackware.com. 76634 IN CNAME slackware.com. slackware.com. 86400 IN MX 1 mail.slackware.com. ;; AUTHORITY SECTION: slackware.com. 86400 IN NS ns1.cwo.com. slackware.com. 86400 IN NS ns2.cwo.com. ;; ADDITIONAL SECTION: ns1.cwo.com. 163033 IN A 64.57.100.2 ns2.cwo.com. 163033 IN A 64.57.100.3 ;; Query time: 149 msec ;; SERVER: 192.168.1.254#53(192.168.1.254) ;; WHEN: Sat Nov 6 16:59:31 2004 ;; MSG SIZE rcvd: 159 |
Quanto visto sopra dovrebbe darti un'idea di come funziona dig. “@192.168.1.254” specifica il server dns da usare. “www.slackware.com” è il nome di dominio per cui deve effettuare la ricerca, e “mx” è il tipo di lookup che deve essere effettuato. La query mostrata sopra ci mostra come le email inviate a www.slackware.com vengano invece inviate a mail.slackware.com per giungere a destinazione.
finger(1) recupera informazioni sull'utente specificato. Specificando un username o un indirizzo email come parametro, proverà a contattare il server necessario per recuperare username, ufficio, numero di telefono e altre informazioni di questo tipo. Ecco un esempio::
% finger johnc@idsoftware.com |
finger può restituire l'username, lo stato dell'email, numeri di telefono e file denominati “dot plan” e “dot project”. Naturalmente, le informazioni restituite variano a seconda del finger server. Quello incluso con Slackware restituisce di default le seguenti informazioni:
Username
Numero di stanza
Numero del telefono di casa
Numero del telefono di ufficio
Stato di login
Stato dell'email
Contenuto del file .plan nella home directory dell'utentefile in the user's home directory
Contenuto del file .project nella home directory dell'utente
I primi quattro campi possono essere impostati con il comando chfn. Quest'ultimo memorizza i valori nel file /etc/passwd. Per cambiare le informazioni contenute nel tuo file .plan o .project, ti basterà semplicemente modificarli con il tuo editor di testo preferito. L'importante è che i due file risiedano nella tua home directory e siano denominati .plan e .project.
Molti utenti usano finger sul proprio account da una macchina remota, per controllare se hanno nuovi messaggi di posta. Oppure, finger può essere utile per visionare i piani o i progetti di cui si occupa un dato utente.
Come molti altri comandi, anche finger dispone di opzioni. Consulta la man page per ulteriori informazioni.
Un tempo qualcuno disse che telnet(1) era la più geniale invenzione che si potesse concepire per i computer. L'abilità di accedere a macchine remote e lavorare su un altro computer è una delle caratteristiche distintive dei sistemi operativi Unix e Unix-like.
telnet ti permette di accedere ad un computer qualsiasi, come se fossi seduto davanti al relativo terminale. Una volta che il tuo username e la relativa password siano stati verificati, avrai accesso ad un prompt shell. Da qui, potrai fare qualsiasi cosa che richieda soltanto una console testuale. Scrivere email, leggere i newsgroup, spostare file e così via. Se hai X avviato e usi telnet per lavorare su un'altra macchina, potrai avviare programmi X sulla macchina remota e visualizzarli sulla tua.
Per accedere ad una macchina remota, usa questa sintassi:
% telnet <hostname> |
Se l'host risponde, riceverai un prompt di login. Inserisci il tuo username e la tua password. E il gioco è fatto. Ora puoi lavorare da una shell nella macchina remota. Per terminare la tua sessione telnet, puoi usare il comandoexit o in alternativa logout.
![]() |
telnet non cripta le informazioni che invia. Tutto viene inviato sotto forma di testo semplice (in chiaro), anche le password. Per questo motivo, non è consigliabile usare telnet su Internet. Al suo posto, dovresti usare Secure Shell. Quest'ultimo cripta tutto il traffico ed è liberamente disponibile. |
Dopo averti appena persuaso a non usare più il protocollo telnet per accedere ad una macchina remota, ti mostreremo un paio di situazioni in cui telnet si rivela comunque molto comodo.
Puoi usare il comando telnet per connetterti ad un dato host su una determinata porta.
% telnet <hostname> [port] |
Questa possibilità torna utile quando si debba testare rapidamente un dato servizio e si voglia avere pieno controllo sui comandi, per vedere esattamente cosa stia accadendo. Per esempio puoi testare o usufruire in modo interattivo di un server SMTP, POP3, HTTP e così via.
Nella figura seguente vedrai come si possa usare telnet per connettersi ad un server HTTP sulla porta 80 e recuperare da esso alcune semplici informazioni.
Figure 13-1. Connessione telnet ad un server web
% telnet store.slackware.com 80 Trying 69.50.233.153... Connected to store.slackware.com. Escape character is '^]'. HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Mon, 25 Apr 2005 20:47:01 GMT Server: Apache/1.3.33 (Unix) mod_ssl/2.8.22 OpenSSL/0.9.7d Last-Modified: Fri, 18 Apr 2003 10:58:54 GMT ETag: "193424-c0-3e9fda6e" Accept-Ranges: bytes Content-Length: 192 Connection: close Content-Type: text/html Connection closed by foreign host. % |
Puoi effettuare la stessa operazione con altri protocolli che mandino i dati sotto forma di testo semplice, a patto che tu sappia a quale porta conetterti, e quali siano i comandi del protocollo.
Oggigiorno, secure shell gode dell'adorazione che una volta era riservata a telnet. ssh(1) permette di connettersi ad una macchina remota ed eseguire programmi come se ci si trovasse fisicamente davanti a quella macchina; per di più, ssh cripta tutti i dati che viaggiano tra i due computer in modo che, anche nell'ipotesi che altri intercettino la conversazione, questa risulti incomprensibile. Quella che segue è una tipica connessione secure shell.
% ssh carrier.lizella.net -l alan The authenticity of host 'carrier.lizella.net (192.168.1.253)' can't be established. RSA key fingerprint is 0b:e2:5d:43:4c:39:4f:8c:b9:85:db:b2:fa:25:e9:9d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'carrier.lizella.net' (RSA) to the list of known hosts. Password: password Last login: Sat Nov 6 16:32:19 2004 from 192.168.1.102 Linux 2.4.26-smp. alan@carrier:~$ ls -l MANIFEST -rw-r--r-- 1 alan users 23545276 2004-10-28 20:04 MANIFEST alan@carrier:~$ exit logout Connection to carrier.lizella.net closed. |
In questo esempio puoi vedere come effettuo una connessione a carrier.lizella.net e controllo i permessi del file MANIFEST sulla macchina remota.
La posta elettronica è uno dei servizi più popolari accessibili su Internet. Nel 1998 si rilevò che veniva inviata più posta elettronica che posta ordinaria. Indubbiamente, è un servizio utile e diffuso.
In Slackware vengono messi a disposizione diversi client e un server standard di posta elettronica. Tutti i client descritti a seguire sono testuali. Molti utenti Windows potrebbero avere da ridire su questo, ma avrai modo di vedere che un client testuale si rivela molto comodo, specialmente quando si voglia controllare la posta da una postazione remota. Non temere, ci sono naturalmente molti client di posta elettronica con interfaccia grafica, come Kmail di KDE. Se desideri adoperare uno di questi ultimi, fai riferimento alla sua guida.
pine(1) is not elm (pine non è elm). O così dice il detto. L'Università di Washington, avendo bisogno di un semplice lettore di posta elettronica per i suoi studenti, ha creato il suo programma per le news e la posta su Internet. pine è uno dei client di posta elettronica più popolari tra quelli in uso attualmente, ed è disponibile per quasi tutte le varianti di Unix e persino per Windows.
Vedrai un menu di comandi e in basso una riga con diversi tasti chiave. pine è indubbiamente un programma complesso, quindi qui non ne discuteremo tutte le caratteristiche disponibili.
Per esplorare il contenuto della tua inbox, digita i. I tuoi messaggi sono elencati con relativa data, autore e soggetto. Evidenzia il messaggio che ti interessa e premi enter per leggerlo. Premendo r potrai scrivere una risposta al messaggio. Una volta scritta la risposta, premi Ctrl+X per inviarla. Puoi premere i per ritornare all'elenco dei messaggi.
Se desideri cancellare un messaggio, premi d. Il messaggio evidenziato verrà contrassegnato per la cancellazione. pine cancella la posta quando termini il programma. pine ti permette anche di conservare la posta in cartelle. Puoi ottenere un elenco delle cartelle premendo l. Dall'elenco dei messagi, premi s per salvarne uno in un'altra cartella. Ti verrà chiesto il nome della cartella in cui scrivere il messaggio.
pine offre moltissime caratteristiche; dovresti decisamente dare un'occhiata alla relativa man page. Lì troverai informazioni dettagliate e aggiornate sul programma.
elm(1) è un altro client testuale di posta elettronica piuttosto popolare. Anche se la sua interfaccia non è amichevole come quella di pine, esiste e viene usato da molto più tempo.
Per default, ti verrà mostrata la tua inbox. I messaggi sono elencati con relativo numero, data, mittente e soggetto. Usa i tasti freccia per selezionare il messaggio che preferisci. Premi Enter per leggere il messaggio.
Per scrivere un nuovo messaggio, premi m nella schermata principale. Il tasto d contrassegna un messaggio per la cancellazione. Il tasto r ti permette di scrivere una risposta al messaggio che stai leggendo. Tutti i tasti adoperabili sono mostrati in fondo allo schermo, assieme ad un prompt.
Informazioni dettagliate su elm sono reperibili nella man page, quindi vorrai probabilmente leggerla prima di cominciare ad usarlo.
“Tutti i client di posta sono brutti. Questo semplicemente è meno brutto.” L'interfaccia originale di mutt era basata su elm, a questa sono state aggiunte caratteristiche derivate da altri popolari client di posta, ottenendo come risultato un ibrido (da cui il nome mutt, che in inglese si usa per riferirsi al cane bastardino).
Di seguito sono elencate alcune delle caratteristiche disponibili:
supporto dei colori
threading dei messaggi
supporto MIME e PGP/MIME
supporto pop3 e imap
supporto per diversi formati di mailbox (mbox, MMDF, MH, maildir)
elevate possibilità di personalizzazione
Se stai cercando un client di posta che ti permetta di avere il controllo totale su tutto, allora mutt ti piacerà. Tutte le impostazioni di default possono essere personalizzate, le associazioni di tasti possono essere modificate e se desideri aggiungere una macro, puoi farlo.
Probabilmente vorrai dare un'occhiata alla man page di muttrc, dove potrai trovare informazioni su come configurare tutto. In alternativa, puoi dare un'occhiata al file muttrc d'esempio.
nail(1) è un client a riga di comando. Èmolto primitivo e non offre granchè in termini di interfaccia utente. Tuttavia, mailx è comodo per quelle situazioni in cui si abbia bisogno di inviare rapidamente una email, di inserire un mailer in uno script, di testare l'installazione di un MTA o di effettuare altri compiti simili. Si noti che Slackware crea link simbolici di nome /usr/bin/mail e /usr/bin/mailx che puntano a nail. Qualsiasi tra questi tre comandi eseguirà lo stesso programma. In effetti, molto spesso vedrai il comando nail riferito come mail.
L'uso tipico da riga di comando è:
% mailx <subject> <to-addr> |
mailx legge il corpo del messaggio dallo standard input. Questo vuol dire che al comando puoi concatenare un file per spedirne il contenuto, o semplicemente scrivere testo e poi premere Ctrl+D quando hai completato il messaggio.
Segue un esempio che mostra come si possa mandare ad un'altra persona il file sorgente di un programma.
% cat randomfunc.c | mail -s "Here's that function" asdf@example.net |
La man page spiega nel dettaglio quello che nail può fare, quindi vorrai probabilmente dargli un'occhiata prima di cominciare ad usarlo.
La prima cosa che viene in mente alla gente quando sente la parola Internet è “navigare nel web”. O dare un'occhiata ai siti web usando un browser. Probabilmente questo è l'uso più comune che l'uente medio fa di Internet.
Slackware mette a disposizione sia diversi web browser grafici nel software set “XAP”, sia alcuni browser testuali nel software set “N”. Nella parte che segue daremo una rapida occhiata alle opzioni più comuni.
lynx(1) è un web browser testuale. Rappresenta una soluzione molto rapida per recuperare informazioni su Internet. A volte la grafica diventa soltanto una perdita di tempo, se sai esattamente ciò che stai cercando.
Per avviare lynx, digita semplicemente lynx al prompt:
% lynx |
Potresti voler specificare un sito che lynx debba aprire:
% lynx http://www.slackware.com |
lynx mostra in fondo allo schermo i tasti chiave e l'azione associata. I tasti freccia su e giù permettono di scorrere il documento, il tasto Enter seleziona il link evidenziato e il tasto freccia sinistra permette di tornare alla pagina precedente. Premendo d si potrà scaricare il file selezionato. Il tasto g mostra il prompt di immissione del sito, dove si può indicare a lynx un URL da aprire.
Ci sono molti altri comandi in lynx. Puoi consultare la man page o digitare h per ottenere una schermata di aiuto dove sono disponibili ulteriori informazioni.
Esattamente come lynx, links è un web browser testuale, dove puoi effettuare la navigazione usando la tastiera. Tuttavia, premendo il tasto Esc, otterrai un comodissimo menù a tendina in cima allo schermo. Questo rende il browser molto semplice da usare, anche senza conoscere tutte le scorciatoie da tastiera. La gente che non usa spesso browser testuali apprezzerà particolarmente questa caratteristica.
Sembra che links, rispetto a lynx, abbia miglior supporto per frame e tabelle.
wget(1) è un'utility a riga di comando che scaricherà i file da un URL specificato. Anche se non si tratta di un web browser, wget viene usato principalmente per recuperare siti web (nella loro interezza o soltanto una parte) per consultazione offline o per scaricare rapidamente singoli file da server HTTP o FTP. La sintassi di base è:
% wget <url> |
Puoi anche passare delle opzioni. Per esempio, il comando seguente scaricherà il sito web di Slackware:
% wget --recursive http://www.slackware.com |
wget creerà una directory www.slackware.com e conserverà lì i file, riproducendo l'organizzazione del sito.
wget può anche scaricare file dai server FTP; specifica semplicemente un URL FTP invece che uno HTTP.
% wget ftp://ftp.gnu.org/gnu/wget/wget-1.8.2.tar.gz --12:18:16-- ftp://ftp.gnu.org/gnu/wget/wget-1.8.2.tar.gz => `wget-1.8.2.tar.gz' Resolving ftp.gnu.org... done. Connecting to ftp.gnu.org[199.232.41.7]:21... connected. Logging in as anonymous ... Logged in! ==> SYST ... done. ==> PWD ... done. ==> TYPE I ... done. ==> CWD /gnu/wget ... done. ==> PORT ... done. ==> RETR wget-1.8.2.tar.gz ... done. Length: 1,154,648 (unauthoritative) 100%[==================================>] 1,154,648 209.55K/s ETA 00:00 12:18:23 (209.55KB/s) - `wget-1.8.2.tar.gz' saved [1154648] |
wget dispone di moltissime opzioni, che lo rendono particolarmente comodo per effettuare script che svolgano compiti specifici (effettuare il mirror di un sito web e così via). Consulta la man page per ulteriori informazioni.
FTP sta per File Transfer Protocol (protocollo di trasferimento file). Ti permette di inviare e ricevere file tra due computer. Questo è possibile attraverso l'uso di server e client FTP. In questa sezione illustreremo il client.
Nel caso te lo fossi chiesto, il “client” sei tu. Il “server” è il computer che risponde alla tua richiesta FTP e ti permette l'accesso. Potrai scaricare file dal server e inviare file allo stesso. Il client non può accettare connessioni FTP, può soltanto connettersi ai server.
Per connetterti ad un server FTP, usa il comando ftp(1) e specifica l'indirizzo remoto:
% ftp <hostname> [port] |
Qualora l'host remoto disponga di un server FTP funzionante, questo ti chiederà username e password. Puoi accedere come te stesso o come “anonymous”. I siti FTP ad accesso anonimo sono molto diffusi per la realizzazione di archivi di software pubblicamente accessibili. Per esempio, per ottenere Slackware Linux via FTP, devi usare FTP anonimo.
Una volta connesso, ti verrà presentato il prompt ftp> . Esistono comandi speciali per le sessioni FTP, ma sono simili ai comandi standard. La tabella seguente mostra alcuni dei comandi di base e la relativa azione eseguita:
Table 13-1. comandi ftp
Comando | Azione |
---|---|
ls | Elenca i file |
cd <dirname> | Cambia directory |
bin | Imposta la modalità di trasferimento binaria |
ascii | Imposta la modalità di trasferimento ASCII |
get <filename> | Scarica un file |
put <filename> | Invia un file |
hash | Attiva/disattiva l'indicatore di stato cancelletto |
tick | Attiva/disattiva l'indicatore del contatore di byte |
prom | Attiva/disattiva la modalità interattiva per i download |
mget <mask> | Scarica un file o un gruppo di file; è possibile usare caratteri jolly |
mput <mask> | Invia un file o un gruppo di file; è possibile usare caratteri jolly |
quit | Disconnette dal server FTP |
Puoi anche usare alcuni dei seguenti comandi, abbastanza autoesplicativi: chmod, delete, rename, rmdir. Per una lista completa di tutti i comandi e del loro significato, digita help o ? e ne vedrai una completa lista sullo schermo.
FTP è un programma piuttosto semplice da usare, ma non dispone di quell'interfaccia utente a cui molti di noi sono abituati oggigiorno. La man page offre ulteriori dettagli sulle opzioni a riga di comando disponibili per ftp(1).
ftp> ls *.TXT 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. -rw-r--r-- 1 root 100 18606 Apr 6 2002 BOOTING.TXT -rw-r--r-- 1 root 100 10518 Jun 13 2002 COPYRIGHT.TXT -rw-r--r-- 1 root 100 602 Apr 6 2002 CRYPTO_NOTICE.TXT -rw-r--r-- 1 root 100 32431 Sep 29 02:56 FAQ.TXT -rw-r--r-- 1 root 100 499784 Mar 3 19:29 FILELIST.TXT -rw-r--r-- 1 root 100 241099 Mar 3 19:12 PACKAGES.TXT -rw-r--r-- 1 root 100 12339 Jun 19 2002 README81.TXT -rw-r--r-- 1 root 100 14826 Jun 17 2002 SPEAKUP_DOCS.TXT -rw-r--r-- 1 root 100 15434 Jun 17 2002 SPEAK_INSTALL.TXT -rw-r--r-- 1 root 100 2876 Jun 17 2002 UPGRADE.TXT 226 Transfer complete. ftp> tick Tick counter printing on (10240 bytes/tick increment). ftp> get README81.TXT local: README81.TXT remote: README81.TXT 200 PORT command successful. 150 Opening BINARY mode data connection for README81.TXT (12339 bytes). Bytes transferred: 12339 226 Transfer complete. 12339 bytes received in 0.208 secs (58 Kbytes/sec) |
ncftp(1) (pronunciato "Nik-F-T-P") è un'alternativa al tradizionale client ftp fornito con Slackware. Si tratta sempre di un client testuale, ma offre numerosi vantaggi rispetto a ftp, tra cui:
Completamento automatico (con tab)
Elenco siti preferiti
Maggiori possibilità con i caratteri jolly
Cronologia dei comandi usati
Per default, ncftp cercherà di
effettuare il login anonimo al
server da te specificato. Puoi obbligare ncftp
a presentarti un
prompt di login usando l'opzione “-u
”.
Una volta
avuto accesso al server potrai usare gli stessi comandi
disponibili in ftp, ma noterai
un'interfaccia più gradevole, che funziona in modo
simile a bash.
ncftp /pub/linux/slackware > cd slackware-current/ Please read the file README81.TXT it was last modified on Wed Jun 19 16:24:21 2002 - 258 days ago CWD command successful. ncftp ...ware/slackware-current > ls BOOTING.TXT FAQ.TXT bootdisks/ CHECKSUMS FILELIST.TXT extra/ CHECKSUMS.asc GPG-KEY isolinux/ CHECKSUMS.md5 PACKAGES.TXT kernels/ CHECKSUMS.md5.asc PRERELEASE_NOTES pasture/ COPYING README81.TXT rootdisks/ COPYRIGHT.TXT SPEEKUP_DOCS.TXT slackware/ CRYPTO_NOTICE.TXT SPEEK_INSTALL.TXT source/ CURRENT.WARNING Slackware-HOWTO ChangeLog.txt UPGRADE.TXT ncftp ...ware/slackware-current > get README81.TXT README81.TXT: 12.29 kB 307.07 kB/s |
wall(1) è una soluzione rapida per scrivere un messaggio ad altri utenti sul sistema. La sintassi di base è:
% wall [file] |
Questo comando mostra il contenuto del [file] sui terminali di tutti gli utenti che sono connessi al sistema in quel momento. Se non specifichi un file, wall legge dallo standard input; quindi puoi semplicemente scrivere il tuo messaggio e terminarlo con Ctrl+d.
wall non ha molte caratteristiche, ma torna utile per informare i tuoi utenti che stai per fare importanti operazioni di manutenzione sul sistema o che stai per riavviarlo, in modo che abbiano il tempo di salvare il loro lavoro e uscire :)
talk(1) permette a due utenti di comunicare. Divide lo schermo a metà, orizzontalmente. Per richiedere la conversazione con altri utenti, usa il comando:
% talk <person> [ttyname] |
Se specifichi soltanto un username, la richiesta di chat viene considerata locale, quindi soltanto gli utenti locali vengono contattati. Il parametro ttyname è richiesto se desideri contattare un utente su un terminale specifico (qualora l'utente sia connesso su più terminali). Le informazioni richieste per i parametri di talk sono ottenibili con il comando w(1).
talk può anche contattare utenti su host remoti. Come username devi semplicemente specificare il parametro utente@host. talk proverà a contattare l'utente remoto su quell'host.
talk ha delle limitazioni. Supporta solo due utenti e la comunicazione è half-duplex.
ytalk(1) è un sostituto retrocompatibile di talk. Slackware mette a disposizione il comando ytalk. La sintassi è simile a quella di talk, ma con alcune differenze:
% ytalk <username>[#ttyname] |
Il nome utente e terminale sono specificati nello stesso modo in cui avviene in talk, eccetto il fatto che vanno passati come unico parametro e separati con il carattere cancelletto (#).
ytalk offre diversi vantaggi:
Supporta più di due utenti.
Premendo Esc si può accedere ad un menu di opzioni in qualsiasi momento.
Puoi accedere alla shell mentre ti trovi nella sessione di talk.
Altro ancora...
Se sei un amministratore di server, vorrai probabilmente assicurarti che la porta ntalk sia abilitata in /etc/inetd.conf. ytalk ha bisogno che sia attiva per funzionare correttamente.
La sicurezza su qualsiasi sistema è importante; essa può prevenire il lancio di attacchi dalla tua macchina, come può proteggere i dati sensibili. Questo capitolo è interamente dedicato a come cominciare a rendere sicura la tua postazione Slackware contro gli script kiddie, i cracker e i criceti mascalzoni. Tieni a mente che questo è solo l'inizio della messa in sicurezza di un sistema; la sicurezza è un processo, non un prodotto.
Il primo passo dopo l'installazione di Slackware dovrebbe essere disabilitare tutti i servizi che non ti occorrono. Qualsiasi servizio può esporre a potenziali rischi, quindi è importante tenere in funzione il minor numero di servizi possibili (cioè solo quelli necessari). I servizi sono avviati da due posti principali - inetd e gli script di inizializzazione (init scripts).
Molti dei daemon inclusi in Slackware sono lanciati da inetd(8). inetd è un daemon che ascolta su tutte le porte usate dai servizi configurato per essere lanciati da esso, e avvia un'istanza del daemon appropriato qualora ci sia un tentativo di connessione. I daemon avviati da inetd possono essere disabilitati commentando le relative righe in /etc/inetd.conf. Per farlo, apri questo file con il tuo editor preferito (come ad esempio vi); dovresti vedere delle righe simili a queste:
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd |
Puoi disabilitare questo servizio, e tutti quelli di cui non hai bisogno, commentando (cioè aggiungendo il simbolo # (hash, o cancelletto) all'inizio della riga). La riga sopra diventerà:
#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd |
Dopo che inetd sarà riavviato, questo servizio sarà disabilitato. Puoi riavviare inetd con il comando:
# kill -HUP $(cat /var/run/inetd.pid) |
I rimanenti servizi che partono all'avvio della macchina sono lanciati dagli script di inizializzazione situati in /etc/rc.d/. Questi possono essere disabilitati in due diversi modi; il primo consiste nel togliere il permesso di esecuzione sul relativo script, mentre il secondo consiste nel commentare le relative righe negli script di inizializzazione.
Per esempio, SSH è avviato dal proprio script di inizializzazione /etc/rc.d/rc.sshd. Puoi disabilitarlo usando:
# chmod -x /etc/rc.d/rc.sshd |
Per i servizi che non hanno il proprio script di inizializzazione, avrai bisogno di commentare le righe negli script per disabilitarli. Ad esempio, il daemon portmap è avviato dalle seguenti righe in /etc/rc.d/rc.inet2:
# This must be running in order to mount NFS volumes. # Start the RPC portmapper: if [ -x /sbin/rpc.portmap ]; then echo "Starting RPC portmapper: /sbin/rpc.portmap" /sbin/rpc.portmap fi # Done starting the RPC portmapper. |
Questo può essere disabilitato aggiungendo il simbolo # all'inizio delle righe che non iniziano già con questo carattere, come in questo esempio:
# This must be running in order to mount NFS volumes. # Start the RPC portmapper: #if [ -x /sbin/rpc.portmap ]; then # echo "Starting RPC portmapper: /sbin/rpc.portmap" # /sbin/rpc.portmap #fi # Done starting the RPC portmapper. |
Questi cambiamenti avranno effetto soltanto dopo un riavvio del sistema o passando a un runlevel e tornando al precedente (3 o 4). Per fare questo puoi digitare il seguente comando in console (occorrerà fare nuovamente il login dopo il passaggio al runlevel 1):
# telinit 1 # telinit 3 |
iptables è il programma di configurazione del filtro di pacchetti per Linux 2.4 e superiore. Il kernel 2.4 (2.4.5 per l'esattezza) fu introdotto per la prima volta in Slackware 8.0 e divenne il kernel di default nella 8.1. Questa sezione tratta soltanto il suo uso basilare, e dovresti visitare il sito http://www.netfilter.org/ per maggiori dettagli. Questi comandi possono essere inseriti in /etc/rc.d/rc.firewall, che deve essere impostato eseguibile affinché queste regole abbiano effetto all'avvio. Nota che dare comandi sbagliati di iptables può essenzialmente impedirti l'accesso alla tua stessa macchina. A meno che tu non sia sicuro al 100% delle tue capacità, assicurati sempre di avere accesso fisico alla macchina.
La prima cosa che la maggior parte delle persone dovrebbe fare è impostare la politica (policy) di default per ogni catena (chain) in ingresso a DROP:
# iptables -P INPUT DROP # iptables -P FORWARD DROP |
Quando tutto è negato, puoi cominciare a permettere di passare qualcosa. La prima cosa da consentire è il traffico entrante per tutte le sessioni già stabilite:
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT |
Per evitare di bloccare le applicazioni che comunicano con l'indirizzo di loopback, è buona norma aggiungere una regola come questa:
# iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT |
Queste regole permettono il traffico da e verso 127.0.0.0/8 (127.0.0.0 - 127.255.255.255) sull'interfaccia di loopback (lo). Quando crei le regole, è una buona idea essere il più specifico possibile, in modo da essere sicuro di non consentire nulla di cattivo inavvertitamente. Detto questo, regole più specifiche implicano un numero maggiore di regole e più caratteri da digitare.
La prossima cosa da fare sarà consentire l'accesso ai servizi specifici che girano sulla tua macchina. Se, per esempio, vuoi far girare un server web sulla tua macchina, potresti usare una regola simile a questa:
# iptables -A INPUT -p tcp --dport 80 -i ppp0 -j ACCEPT |
Questa regola permetterà l'accesso a qualsiasi macchina verso la porta 80 attraverso l'interfaccia ppp0. Potresti voler restringere l'accesso a questo servizio in modo che soltanto alcune macchine possano accedervi. Questa regola permette l'accesso al tuo web server dall'host 64.57.102.34:
# iptables -A INPUT -p tcp -s 64.57.102.34 --dport 80 -i ppp0 -j ACCEPT |
Permettere il passaggio del traffico ICMP può essere utile per scopi diagnostici. Per farlo, puoi usare una regola di questo tipo:
# iptables -A INPUT -p icmp -j ACCEPT |
La maggior parte delle persone, inoltre, vuole impostare il Network Address Translation (NAT) sulla propria macchina che funge da gateway, in modo che le altre macchine della loro rete possano accedere a Internet attraverso essa. Per farlo potresti usare la seguente regola:
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE |
Inoltre avrai bisogno dell'IP forwarding. Puoi farlo temporaneamente usando questo comando:
# echo 1 > /proc/sys/net/ipv4/ip_forward |
Per abilitare l'IP forwarding in maniera permanente (in modo che il cambiamento rimanga dopo un reboot), bisognerà aprire il file /etc/rc.d/rc.inet2 con il tuo editor preferito e cambiare la seguente riga:
IPV4_FORWARD=0 |
...in questa:
IPV4_FORWARD=1 |
Per maggiori informazioni riguardo il NAT, consulta il NAT HOWTO.
tcpwrappers controlla l'accesso ai daemon al livello applicazione, piuttosto che al livello IP. Questo approccio fornisce un livello di sicurezza extra quando i controlli di accesso su base IP (come Netfilter) non funzionano correttamente. Per esempio, se ricompili il kernel ma dimentichi di includere il supporto a iptables, la tua protezione su base IP fallirà, ma tcpwrappers continuerà a proteggere il tuo sistema.
L'accesso ai servizi protetti da tcpwrappers può essere controllato usando i file /etc/hosts.allow ed /etc/hosts.deny.
La maggioranza delle persone può usare una singola riga in /etc/hosts.deny per impedire di default l'accesso a tutti i daemon. Questa riga è:
ALL : ALL |
Una volta fatto questo, puoi concentrarti sul consentire l'accesso ai servizi a determinati host, domini o intervalli di indirizzi IP. Questo va fatto in /etc/hosts.allow, che ha lo stesso formato.
Molti vorranno cominciare con l'accettare tutte le connessioni da localhost. Questo può essere fatto usando:
ALL : 127.0.0.1 |
Per consentire l'accesso a SSHd da 192.168.0.0/24, puoi usare una delle seguenti regole:
sshd : 192.168.0.0/24 sshd : 192.168.0. |
Èanche possibile restringere l'accesso agli host in un particolare dominio. Per farlo puoi usare la seguente regola (nota che questo sistema conta sul fatto che sia presente una reverse entry nel DNS per l'host che si connette, quindi ne sconsiglierei l'uso con gli host connessi ad Internet):
sshd : .slackware.com |
Quando si riscontra un problema di sicurezza in Slackware, viene inviata un'email a tutti i sottoscrittori della mailing list slackware-security@slackware.com. Vengono inviati dei rapporti per le vulnerabilità di qualsiasi parte di Slackware, escluso il software in /extra o /pasture. Questi annunci di sicurezza includono dettagli su come ottenere i pacchetti aggiornati per Slackware, o dei work-around, se ce ne sono.
Come sottoscriversi alla mailing list è spiegato in Section 2.2.2.
Quando vengono rilasciati pacchetti aggiornati per una versione di Slackware, (di solito solo per risolvere dei bachi di sicurezza, nel caso delle versioni di Slackware già rilasciate), essi vengono collocati nella directory /patches. Il percorso completo di queste patch dipende dal mirror che stai usando, ma è della forma /percorso/di/slackware-x.x/patches/.
Prima di installare questi pacchetti, è buona norma verificare la stringa md5 (md5sum) del pacchetto. md5sum(1) è una utility da riga di comando che crea un hash matematico “unique” del file. Se un singolo bit del file viene cambiato, esso genererà una stringa md5 diversa.
% md5sum package-<ver>-<arch>-<rev>.tgz 6341417aa1c025448b53073a1f1d287d package-<ver>-<arch>-<rev>.tgz |
Dovresti fare sempre questo controllo per tutti i pacchetti contenuti nel file CHECKSUMS.md5 nella radice della directory slackware-$VERSION (anche nella directory /patches per le patch) o nell'email proveniente dalla mailing list slackware-security mailing list.
Se hai un file contenente le somme md5, puoi usarlo
alternativamente con l'opzione
-c
del comando md5sum.
# md5sum -c CHECKSUMS.md5 ./ANNOUNCE.10_0: OK ./BOOTING.TXT: OK ./COPYING: OK ./COPYRIGHT.TXT: OK ./CRYPTO_NOTICE.TXT: OK ./ChangeLog.txt: OK ./FAQ.TXT: FAILED |
Come vedi, md5sum indica tutti i file che ritiene corretti con un “OK”, mentre i file che non superano il controllo sono etichettati con “FAILED”. (Si, questo è un insulto alla tua intelligenza. Come fate a tollerarlo?)
gzip(1) è il programma GNU per la compressione. Prende un singolo file e lo comprime. Si utilizza in questo modo:
% gzip filename |
Il file ottenuto da questo procedimento viene chiamato filename.gz e risulta solitamente di dimensioni minori rispetto al file di partenza. Notare che filename.gz sostituisce filename sul disco. Ciò significa che filename alla fine del procedimento non esisterà più, anche se ne verrà creata una copia gzipped (compressa con gzip). I normali file di testo verrano compressi in modo corretto, mentre le immagini jpeg, gli mp3, ed altri simili file non verranno compressi affatto, o lo saranno in maniera minima dato che sono file già compressi di loro. La massima compressione viene ottenuta in questo modo:
% gzip -9 filename |
Il procedimento di compressione ci metterà un po' più del normale, ma il file risultante avrà la dimensione minima che gzip è in grado di ottenere. Usare valori numerici più bassi causa una compressione più rapida, ma il file non è così compresso come con -9.
Per decomprimere i file compressi con gzip si possono usare due comandi, che in realtà fanno capo allo stesso programma. gzip decomprime ogni file con una estensione riconosciuta. Le estensioni riconosciute sono le seguenti: .gz, -gz, .z, -z, .Z, o -Z. Il primo metodo consiste nell'eseguire gunzip(1) su di un file, in questo modo:
% gunzip filename.gz |
Questo comando lascerà una copia decompressa del file originale nella directory corrente, e l'estensione .gz verrà eliminata dal nome del file. gunzip in realtà fa parte di gzip ed equivale ad eseguire gzip -d (questo è il secondo metodo).
bzip2(1) è un programma alternativo per la compressione. Utilizza un algoritmo di compressione diverso da quello di gzip, cosa che crea alcuni vantaggi, ma anche qualche svantaggio. Il principale vataggio con bzip2 è la dimensione del file compresso. Infatti bzip2 nella maggior parte dei casi comprime meglio rispetto a gzip. In qualche caso la differenza tra le dimensioni è davvero notevole. Questo può essere un enorme vantaggio per le persone con una connessione internet lenta. Inoltre ricorda che quando scarichi un file compresso da un server ftp pubblico, se hai modo di scegliere, è buona norma scaricare il file .bz2 invece di quello in formato .gz, visto che comporterà meno spreco di banda che le persone generose che ospitano il server mettono a disposizione di tutti.
Lo svantaggio di bzip2 è che questo programma utilizza più CPU di quanto non faccia gzip. Ciò vuol dire che sebbene il file risultante sia di dimensioni più esigue, il processo di compressione impiega più tempo e consuma più CPU. Quando decidi quale programma usare per comprimere un file, devi soppesare i benefici di un file con dimensioni ridotte, gli svantaggi di un processo più lungo e determinare quale sia più importante per il tuo caso specifico.
L'utilizzo di bzip2 è pressoché identico a gzip, non perderemo quindi molto tempo a discuterne. Come gunzip, bunzip2 equivale ad eseguire bzip2 -d. La differenza più importante nell'utilizzo di tutti i giorni è che bzip2 usa l'estensione .bz2.
% bzip2 filename % bunzip2 filename.bz2 % bzip2 -9 filename |
tar(1) è la versione GNU dell'utility di archiviazione tar (tar sta per Tape ARchiver, ma oggi giorno questo nome è anacronistico). Prende vari file e directory e crea un file più grande. Questo ti consente di comprimere un'intera directory, cosa impossibile utilizzando soltanto gzip o bzip2. tar ha svariate opzioni passabili da linea di comando, opzioni che sono spiegate nella sua man page. Questa sezione copre soltanto gli utilizzi più comuni di tar.
L'utilizzo più comune di tar è decomprimere ed estrarre un pacchetto scaricato da un sito web o ftp. La maggior parte dei file vengono distribuiti con una estensione .tar.gz. Questo tipo di file è comunemente noto come “tarball”. Significa che svariati file sono stati archiviati usando tar e successivamente compressi usando gzip. Potresti inoltre vedere dei file .tar.Z. In sostanza è la stessa cosa, ma di solito si incontrano su sistemi Unix un po' datati.
Può anche capitarti di incontrare file .tar.bz2 da qualche parte. Ad esempio i sorgenti del Kernel sono distribuiti in questo modo dato che come abbiamo visto in precedenza, un file compresso con bzip2 è di dimensioni minori. Come appare evidente, i file .tar.bz2 vengono utilizzati per archiviare svariati file con tar e successivamente compressi con bzip2.
Puoi estrarre tutti i file contenuti in questo tipo di archivio
usando tar e delle opzioni specificate da
linea di comando. Per estrarre un
tarball si utilizza ad esempio l'opzione -z
,
la quale opzione
dice a tar di passare il file attraverso gunzip,
per
decomprimerlo. Il modo più comune per decomprimere un tarball è
questo:
% tar -xvzf filename.tar.gz |
Sono un po' di opzioni, non è vero? A cosa servono? L'opzione -x
serve ad estrarre (eXtract). Èimportante,
dato che dice a
tar cosa fare esattamente del file in
questione. In questo caso
specifico, divideremo il tarball nei file che lo compongono. -v
significa che vuoi che sia prolisso
(Verbose). Questo stamperà
l'elenco dei files che sta estraendo. Ovviamente è perfettamente
accettabile escludere
questa opzione, se trovate la trovate noiosa. In alternativa puoi
usare -vv
, se vuoi che sia ancora più
prolisso e stampi a schermo un
numero maggiore di informazioni. L'opzione -z
dice a tar di trattare filename.tar.gz
attraverso
gunzip. Ed in fine, l'opzione -f
dice a tar che la stringa che segue è il
file su cui
operare.
Ci sono anche altri modi di scrivere lo stesso comando. Su vecchi sistemi senza una copia recente (o decente) di tar, potresti trovarlo scritto così:
% gunzip filename.tar.gz | tar -xvf - |
Questo comando decomprime il file e spedisce l'output a tar. Dal momento che gzip scrive il suo output nello standard out se così gli viene chiesto, questo comando scrive il file decompresso nello standard output. Il pipe poi lo invia a tar, per l'estrazione dall'archivio. Il “-” significa che deve operare sullo standard inpunt. In sostanza prende il flusso di dati da gzip e lo scrive su disco.
Un altro metodo per scrivere il primo comando è tralasciare il trattino che precede le opzioni, in questo modo:
% tar xvzf filename.tar.gz |
Potresti anche trovarti di fronte ad un archivio bzip2. La versione
di tar inclusa in Slackware Linux è in
grado di maneggiare questi file
allo stesso modo degli archivi gzip. Invece dell'opzione -z
,
useresti -j
:
% tar -xvjf filename.tar.bz2 |
Èimportante notare che tar mette i file
estratti nella
directory corrente. Per cui, se avessi un archivio in /tmp,
e
lo volessi decomprimere nella tua home directory, potresti farlo in
vari modi. Primo,
potresti spostare l'archivio nella tua home directory,
successivamente eseguiresti tar. Secondo,
potresti specificare il percorso dell'archivio nella
riga di comando. Terzo, puoi utilizzare l'opzione -C
per
“far estrarre” il tarball in una directory precisa.
% cd $HOME % cp /tmp/filename.tar.gz . % tar -xvzf filename.tar.gz % cd $HOME % tar -xvzf /tmp/filename.tar.gz % cd / % tar -xvzf /tmp/filename.tar.gz -C $HOME |
Tutte le espressioni elencate qui sopra sono equivalenti. In tutti i casi, l'archivio viene scompattato nella tua home directory ed il file originario viene lasciato al suo posto.
E ora che sai come estrarre gli archivi, che te ne fai di queste
informazioni se non
sei in grado di crearli? Beh, tar può fare
anche quello. Nella
maggior parte dei casi per farlo devi soltanto sostituire l'opzione
“-x
” con “-c
”.
% tar -cvzf filename.tar.gz . |
L'opzione -c
dice a tar
di creare
un archivio, mentre l'opzione -z
passa
il file risultante
attraverso gzip per comprimerlo. filename.tar.gz
è il nome del file che desideri creare.
Specificare l'opzione “-f
” non è sempre
necessario, ma usarla rimane comunque una buona idea. Senza di essa,
tar scrive nello standard output, cosa che
è solitamente desiderata
per effettuare il pipe dell'output di tar
in un altro programma,
come in questo esempio:
% tar -cv filename.tar . | gpg --encrypt |
Questo comando crea un archivio tar non compresso della directory corrente, passa il risultato del comando attraverso il pipe a gpg che cripta l'archivio, rendendo realisticamente impossibile leggerne il contenuto a chiunque non conosca la chiave segreta.
Infine, ci sono due utility che possono venire utilizzate sui file zip. Questo tipo di file è molto comune nel mondo di Windows, data la diffusione di questi file anche Linux ha dei programmi che consentono di utilizzarli. Il programma di compressione è chiamato zip(1), mentre quello per decomprimere unzip(1).
% zip pippo * |
Il comando appena mostrato crea il file pippo.zip, che contiene tutti i file presenti nella directory corrente. zip aggiunge l'estensione .zip automaticamente, quindi non c'è alcun bisogno di includere anche quella nel nome del file. Puoi anche lanciare il comando in maniera ricorsiva, zippando in questo modo anche tutte le directory contenute in quella corrente:
% zip -r pippo * |
Anche la decompressione è facile.
% unzip pippo.zip |
Questo comando estrae tutti i file contenuti in foo.zip, comprese le directory eventualmente incluse nell'archivio.
Le utility zip hanno anche opzioni avanzate che consentono la creazione di archivi auto-estraenti, di escludere file, controllare la dimensione dei file compressi, stampare a schermo ciò che accade e molto altro. Per scoprire come utilizzare queste opzioni, fai riferimento alle man page di zip e unzip.
vi(1) è il programma di editing di testo standard in Unix e anche se imparare a conoscerlo non è più essenziale come era un tempo, rimane comunque un traguardo gratificante. Esistono numerose versioni (o cloni) di vi, inclusi vi, elvis, vile, e vim. Ogni versione di Unix, così come di Linux, contiene almeno uno tra i cloni appena elencati. Tutte queste versioni di vi includono le stesse caratteristiche di base e comandi, quindi imparare ad usare un clone dovrebbe aiutare anche nell'apprendimento di un qualsiasi altro clone. Grazie alla varietà degli editor di testo inclusi nelle distribuzioni Linux e nelle varianti di Unix, molte persone oggi giorno non utilizzano più vi. Ciò nonostante rimane l'editor di testo più diffuso nell'ambiente Unix e nei sistemi simili ad Unix. Apprendere il funzionamento di vi significa automaticamente che non ti troverai mai di fronte ad una macchina Unix senza essere in confidenza con almeno un potente editor di testo installato su di essa.
vi include svariate e potenti funzioni, fra le quali l'evidenziazione della sintassi, la formattazione del codice, un efficente meccanismo di ricerca e sostituzione, macro e molto altro. Queste caratteristiche lo rendono appetibile specialmente ai programmatori, web developer e simili. Gli amministratori di sistema apprezzeranno l'automazione e la possibile integrazione con la shell.
In Slackware Linux, il comando vi fà in realtà capo all'eseguibile elvis. Altre versioni - vim e gvim inclusi - sono disponibili se i pacchetti appropriati sono stati installati. gvim è una versione per X Window di vim che include toolbar, menu a tendina e finestre di dialogo.
vi può essere avviato da linea di comando in svariati modi. Il modo più semplice è:
% vi |
Questo esegue vi con un buffer vuoto. A questo punto vedrai una schermata in gran parte vuota. Ciò significa che l'editor si trova in “command mode” (modalità di comando), aspettando che tu faccia qualcosa. Per una discussione delle varie modalità di vi, si veda la Section 16.2. Per uscire da vi, digitare quanto segue:
:q |
Dando per scontato che non vi siano state modifiche al file, questo causerà il termine della sessione di vi. Se fossero state effettuate modifiche, verresti avvertito che ci sono stati dei cambiamenti, e ti suggerirebbe come ignorarli. Questo solitamente viene fatto aggiungendo un punto esclamativo dopo “q” in questo modo:
:q! |
Il punto esclamativo, più in generale, significa che bisogna forzare una determinata azione. Discuteremo questa ed altre combinazioni di tasti in dettaglio più avanti.
Puoi anche avviare vi aprendo un file pre-esistente. Ad esempio, il file /etc/resolv.conf verrebbe aperto in questo modo:
% vi /etc/resolv.conf |
In fine, vi può essere fatto partire direttamente su una particolare riga di un file. Questo è utile in particolar modo per i programmatori, quando si trovano di fronte un messaggio di errore che include il numero di riga in cui si è verificato. Ad esempio, potresti far partire vi alla linea 47 di /usr/src/linux/init/main.c in questo modo:
% vi +47 /usr/src/linux/init/main.c |
vi mostrerà il file dato e posizionerà il cursore alla riga specificata. Nel caso in cui specificassi il numero di una riga che vada oltre la fine del file, vi posizionerà il cursore all'ultima riga. Questa funzione, come già accennato, è di particolare aiuto ai programmatori, dato che possono andare direttamente alla riga che ha generato un errore, senza bisogno di cercarla.
vi opera in vari modes (in italiano: modalità), i quali sono usati per eseguire vari compiti. Quando fai partire vi vieni messo nel command mode. Da questo punto puoi istruire vari comandi per manipolare il testo, muoversi all'interno del file, salvare, uscire, e cambiare modalità. La modifica del testo viene fatto nell'insert mode. Puoi passare da una modalità all'altra con semplici combinazioni di tasti, spiegati in dettaglio di seguito.
Come prima cosa dopo l'avvio, vieni messo in command mode. Da questa modalità non puoi inserire direttamente del testo, o modificare quello che già è presente. Tuttavia puoi manipolare il testo, cercare, salvare, uscire, caricare nuovi files ed altro. Questa è da considerarsi una semplice introduzione al command mode, per una descrizione dei vari comandi, si veda la Section 16.7.
Il comando utilizzato più spesso è probabilmente il passaggio all'insert mode (modalità inserimento). Questo viene fatto premendo il tasto i. Il cursore cambia forma, e -- INSERT -- viene mostrato nella parte bassa dello schermo (nota che questo non accade in tutti i cloni di vi). Da li, ad ogni pressione dei tasti corrisponde l'inserimento di testo nel buffer corrente, e alla conseguente visualizzazione sullo schermo. Per tornare nel command mode, premi il tasto ESCAPE.
Il command mode è inoltre la modalità che consente di muoverti all'interno del file. In alcuni sistemi è possibile utilizzare i tasti freccia per muoverti in giro. Su altri sistemi, potresti dover utilizzare il modo più tradizionale, che consiste nell'utilizzo dei tasti “hjkl”. Qui c'è un semplice listato che spiega come quei tasti vengano utilizzati:
h | muove a sinistra di un carattere |
j | muove in giù di un carattere |
k | muove in su di un carattere |
l | muove a destra di un carattere |
Premi semplicemente uno di quei tasti per muoverti. Come imparerai più avanti, i tasti possono essere utilizzati in combinazione con un numero, al fine di muoversi più efficacemente.
Molti dei comandi che userai nel command mode iniziano con il carattere due punti. Ad esempio, per uscire si usa :q, come discusso in precedenza. I due punti semplicemente stanno ad indicare che quello che segue è un comando, mentre la “q” dice a vi di uscire. Altri tipi di comando sono composti da un numero opzionale, seguito da una lettera. Questi comandi non hanno i due punti a precederli, e generalmente sono utilizzati per manipolare il testo.
Per esempio, la cancellazione di una riga da un file viene fatta premendo dd. Questo rimuove la riga alla quale si trova il cursore. Il comando 4dd direbbe a vi di cancellare la riga alla quale si trova il cursore e le tre righe successive. In generale, il numero dice a vi quante volte ripetere un dato comando.
Puoi combinare un numero con un tasto di movimento per muoverti in giro di svariati caratteri alla volta. Ad esempio, 10k muoverebbe verso l'alto di dieci righe sullo schermo.
Il command mode può inoltre essere utilizzato per tagliare ed incollare, inserire testo e leggere altri files nel buffer corrente. La copia del testo si effettua con il tasto y (y sta per yank; strattonare, strappare in inglese). Per copiare una riga intera (quella corrente) bisogna digitare yy, e questo può essere ovviamente preceduto da un numero per copiare più righe per volta. Successivamente, per incollare, spostati nella parte del file che preferisci e premi p. Il testo viene incollato nella riga successiva a quella dove ti trovi.
Per tagliare una riga si utilizza dd, e sempre p per incollare di nuovo il testo all'interno del file. Inserire testo proveniente da un altro file è una procedura semplicissima. Premi :r, seguito da uno spazio e dal nome del file che desideri inserire. Il contenuto del file verrà incollato nel buffer corrente una riga dopo il cursore. Alcuni sofisticati cloni di vi contengono persino una funzione di completamento automatico del nome del file, simile a quella della shell.
Infine, l'ultimo uso del command mode che analizzeremo è la ricerca. Il command mode ti consente ricerche più o meno complesse come anche la ricerca e la sostituzione tramite le espressioni regolari. Una completa discussione sulle espressioni regolari va al di là dello scopo di questo capitolo, per cui questa sezione tratterà la semplice ricerca.
Una ricerca viene effettuata premendo il tasto /, seguito dal testo che desideri cercare. vi cercherà in avanti partendo dal cursore fino alla fine del file, fermandosi alla prima corrispondenza. Nota che anche le corrispondenze non complete faranno interrompere la ricerca. Ad esempio cercando “oro”, la ricerca si fermerà in corrispondenza di “toro”, “orobico”, e via discorrendo. Questo perché tutte quelle parole contengono “oro”.
Dopo che vi ha trovato la prima corrispondenza, puoi continuare a cercare fino a quella successiva premendo il tasto / seguito da invio. Puoi anche cercare a ritroso nel file, sostituendo lo slash con il tasto ?. Ad esempio, per cercare “oro” all'indietro, bisognerebbe digitare ?oro.
L'inserimento e la sostituzione del testo vengono effettuati dall'insert mode. Come discusso in precedenza, puoi entrare nell'insert mode premendo il tasto i dalla modalità di comando (command mode). Dopo di che, tutto il testo digitato viene inserito nel buffer corrente. Premendo il tasto ESCAPE verrai riportato nel command mode.
La sostizione del testo può avvenire in svariati modi. Dal command mode, premendo r ti verrà consentito di sostituire il carattere sotto il cursore. Basta premere il nuovo carattere, e quello verrà inserito al posto del vecchio; poi come sempre verrai riportato nel command mode. Premendo invece R, potrai sostituire tutti i caratteri che desideri. Per uscire da questa modalità di sostituzione, premi ESCAPE, e verrai riportato nel command mode.
Esiste anche un altro modo per passare da inserimento a sostituzione. Premendo il tasto INSERT in command mode verrai portato nell'insert mode. Una volta che ti trovi in insert mode, il tasto INSERT funzionerà come interruttore tra inserimento e sostituzione. Se lo premi una volta ti consente di sostituire, premendolo nuovamente consente di inserire del testo.
vi ti permette di aprire file dal command mode oppure specificando un file dalla linea di comando. Per aprire il file /etc/lilo.conf:
:e /etc/lilo.conf |
Se hai effettuato modifiche nel buffer corrente senza salvare, vi ti avvertirà. Puoi in ogni caso aprire il file senza salvare il buffer corrente digitando :e!, seguito da uno spazio e dal nome del file. In generale, i messaggi di avvertimento di vi possono essere soppressi facendo seguire il comando da un punto esclamativo.
Se vuoi aprire di nuovo il file corrente, puoi farlo semplicemente digitando e!. Questo si dimostra particolarmente utile se hai in qualche modo incasinato il file e desideri aprirlo nuovamente.
Alcuni cloni di vi (ad esempio vim) permettono l'apertura di numerosi buffer per volta. Ad esempio, se volessi aprire il file 09-vi.sgml nella home directory mentre un altro file è aperto, scriveresti:
:split ~/09-vi.sgml |
Il nuovo file viene mostrato nella metà superiore dello schermo, e il vecchio file viene mostrato in quella inferiore. Ci sono un sacco di comandi che manipolano lo schermo diviso, e molti di quei comandi ricordano in qualche modo Emacs. Il posto migliore per cercare quei comandi dovrebbe essere la man page corrispondente al clone di tua scelta. Nota che molti cloni non supportano lo schermo diviso, quindi potresti non essere in grado di usare affatto questa caratteristica.
Esistono svariati metodi per salvare i file in vi. Se volessi salvare il buffer corrente nel file randomness, scriveresti:
:w randomness |
Dopo aver salvato il file la prima volta, salvarlo di nuovo è ancora più semplice; basterebbe infatti digitare soltanto :w. Ogni cambiamento sarà scritto nel file. Dopo aver salvato, vieni riportato nel command mode. Se vuoi salvare il file ed uscire allo stesso tempo da vi (un'operazione piuttosto comune), basta digitare :wq. Questo dice a vi di salvare il file corrente e di uscire, tornando alla shell.
In qualche circostanza potresti voler salvare un file a sola lettura. Questo è possibile aggiungendo un punto esclamativo dopo il comando write (w), in questo modo:
:w! |
Ad ogni modo, esistono dei casi in cui non sarai comunque in grado di scrivere sul file (ad esempio se stai tentando di modificare un file appartenente ad un altro utente). Quando questo accade, vi ti avverte che non è possibile salvare il file. Se desideri davvero modificare il file, dovrai tornare indietro e modificarlo come root o (preferibilmente) in qualità di proprietario del file.
Un modo per uscire da vi è attraverso :wq, che salva il buffer corrente prima di uscire. Puoi anche uscire senza modificare con :q oppure (più comunemente) :q!. Il secondo comando viene utilizzato quando hai modificato il file ma non desideri salvare i cambiamenti apportati.
In qualche occasione, il tuo computer potrebbe bloccarsi o potrebbe essere vi a farlo. Ad ogni modo, sia elvis che vim prendono provvedimenti per minimizzare il danno ai buffer in uso. Entrambi gli editor salvano i buffer correnti in un file temporaneo di tanto in tanto. Questo file è solitamente chiamato in un modo simile a quello del file aperto, ma con un punto all'inizio. Ciò rende il file nascosto.
Il file temporaneo viene rimosso una volta che l'editor viene chiuso in condizioni normali. Questo significa che la copia temporanea resterà in giro se qualcosa si blocca o se qualcosa va storto. Una volta tornato a modificare il file, ti verrà domandato quale azione desideri intraprendere. Nella maggior parte dei casi, una grande fetta del lavoro che non hai potuto salvare potrà essere recuperata. elvis ti manderà inoltre una email (dalla Groenlandia, strano eh? :) ) nella quale ti avverte dell'esistenza della copia di backup.
Il clone vi di tua scelta può essere configurato in svariati modi.
Mentre ti trovi nel command mode, puoi eseguire un gran numero di comandi per configurare vi nel modo che più ti piace. A seconda del tuo editor, puoi abilitare funzionalità che rendono la programmazione più semplice (come il syntax hilighting, auto-indenting, e molto altro), configurare macro e rendere automatici alcuni compiti, abilitare la sostituzione del testo, ed altro.
Quasi tutti quei comandi possono essere inseriti in un file di configurazione nella tua home directory. elvis si aspetta un file chiamato .exrc, mentre vim .vimrc. La maggior parte dei comandi di configurazione che possono essere inseriti dal command mode, possono venire ugualmente inseriti nel file di configurazione. Ciò include le informazioni di setup, la sostituzione del testo, macro, ed altro.
Discutere tutte quelle opzioni e le delle differenze tra i vari editor è una cosa piuttosto complicata che esula dai nostri obiettivi. Per maggiori informazioni, leggi le man page o il sito web del clone di tua scelta. Alcuni editor (come ad esempio vim) hanno una sezione di aiuto accessibile direttamente con il comando :help, o qualcosa di simile. Puoi inoltre cercare il libro della O'Reilly intitolato Learning the vi Editor by Lamb and Robbins.
Molti programmi comuni, in Linux, caricheranno i file di testo in vi se non specificato altrimenti. Ad esempio quando modifichi un crontab, viene lanciato vi. Se non ti piace vi e vorresti che fosse un altro editor ad essere avviato al suo posto, tutto ciò che devi fare è settare la variabile d'ambiente VISUAL con l'editor di tua scelta. Per informazioni sul settare le variabili d'ambiente, leggi la sezione chiamata Variabili d'ambiente nel capitolo 8. Se vuoi essere certo che l'editor di tua scelta sia sempre quello predefinito ad ogni login, aggiungi il settaggio di VISUAL nel tuo file .bash_profile o in .bashrc.
Questa sezione è una semplice referenza di svariati e comuni comandi di vi commands. Alcuni di questi sono stati discussi in precedenza nel capitolo, altri sono nuovi
Table 16-1. Movimenti
Operazione | Tasto |
---|---|
sinistra, giù, su, destra | h, j, k, l |
Alla fine della riga | $ |
All'inizio della riga | ^ |
Alla fine del file | G |
All'inizio del file | :1 |
Alla riga 47 | :47 |
Table 16-2. Modificare
Operazione | Tasto |
---|---|
Cancellare una riga | dd |
Cancellare cinque righe | 5dd |
Sostituire un carattere | r |
Cancellare un carattere | x |
Cancellare dieci caratteri | 10x |
Undo last action | u |
Unire la riga corrente e quella successiva | J |
Sostituire vecchio con nuovo, globalmente | %s'vecchio'nuovo'g |
Table 16-3. Cercare
Operazione | Tasto |
---|---|
Cercare “asdf” | /asdf |
Cercare all'indietro “asdf” | ?asdf |
Ripetere l'ultima ricerca in avanti | / |
Ripetere l'ultima ricerca all'indietro | ? |
Ripetere l'ultima ricerca, nella stessa direzione | n |
Ripetere l'ultima ricerca, nella direzione inversa | N |
Table 16-4. Salvare ed uscire
Operazione | Tasto |
---|---|
Uscita | :q |
Uscita senza salvare | :q! |
Scrivi (salva) ed esci | :wq |
Scrivi senza uscire | :w |
Ricarica il file aperto in quel momento | :e! |
Scrivi il buffer nel file asdf | :w asdf |
Apri il file hejaz | :e hejaz |
Leggi il file asdf into buffer | :r asdf |
Leggi l'output di ls nel buffer | :r !ls |
Mentre vi (con i suoi cloni) è senza dubbio l'editor più diffuso sui sistemi Unix-like, Emacs viene subito dopo. Invece di usare differenti “modi”, come fa vi, usa combinazioni di Control e Alt per immettere comandi, nello stesso modo con cui puoi usare le combinazioni basate su Control e Alt in un word processor e in molte altre applicazioni per eseguire certe funzioni (bisogna tener presente però che i comandi raramente corrispondono; così mentre molte applicazioni moderne usano Ctrl-C/ X/ V per copiare, tagliare e incollora, Emacs usa combinazioni differenti).
Inoltre, a differenza di vi, che è un (eccellente) editor e nulla più, Emacs è un software con capacità illimitate. Emacs è (per lo più) scritto in Lisp, un linguaggio di programmazione molto potente che ha la caratteristica peculiare di rendere ogni programma scritto in questo linguaggio un compilatore Lisp per se stesso. Questo significa che l'utente può estendere Emacs, e di fatto scrivere programmi completamente nuovi “in Emacs”.
Come risultato, Emacs non è più solamente un editor. Ci sono molti programmi addizionali per Emacs (quasi tutti con il codice sorgente) che forniscono ogni genere di funzionalità. Molti di questi programmi sono correlati all'editazione del testo, che dopo tutto è il compito base di Emacs, ma non si fermano qui. Per esempio ci sono diversi fogli di calcolo per emacs, ci sono databases, giochi, client di posta e di news (il migliore dei quali è gnus), etc.
Ci sono due versioni principali di Emacs: GNU Emacs (che è la versione che usa Slackware) e XEmacs. La seconda non è una versione di emacs che gira sotto X. Infatti, sia Emacs sia XEmacs, girano in console come sotto X. XEmacs fu iniziato come progetto per ripulire il codice di Emacs. Attualmente tutte e due le versioni sono attivamente sviluppate, e c'è molta interazione tra i due team di sviluppo. Per questo capitolo, è indiferrente che tu usi Emacs o XEmacs, le differenze tra essi sono irrivelanti per l'utente normale.
Emacs può essere lanciato dalla shell semplicemente scrivendo emacs. Quando sei sotto X, Emacs (normalmente) avrà la sua finestra X, solitamente con la barra del menu in alto, dove puoi trovare le funzionalità più importanti. All'avvio, Emacs mostrerà per prima cosa un messaggio di benvenuto, e dopo pochi secondi il buffer *scratch*. (See Section 17.2.)
Puoi anche lanciare Emacs su un file esistente digitando:
% emacs /etc/resolv.conf |
Questo farà caricare ad Emacs all'avvio il file specificato, saltando il messaggio di benvenuto.
Come precedentemente menzionato, Emacs usa Control e Alt per impartire i comandi. La convenzione è di scrivere queste combinazioni con C-lettera e M-lettera, rispettivamente. Così C-x significa Control+x, e M-x significa Alt+x. (La lettera M è usata in luogo di A perche' originariamente il tasto non era Alt ma il tasto Meta. Il tasto Meta è scomparso dalla tastiere dei computer, e in Emacs il tasto Alt ha preso la sua funzione.
Molti comandi Emacs consistono in sequence di tasti e combinazioni. Ad esempio: C-x C-c (che è Control-x seguito da Control-c ) termina Emacs, C-x C-s salva il file corrente. Tieni a mente che C-x C-b non è C-x b. Il significato formale di Control-x seguito da Control-b, mentre il secondo significa Control-x seguito solamente da 'b'.
In Emacs, il concetto di “buffers” è essenziale. Ogni file che apri è caricato nel proprio buffer. Inoltre, Emacs ha diversi buffer speciali, che non contengono un file ma sono usati per altre funzioni. Questi buffer speciali solitamente hanno un nome che inizia e finisce con un asterisco ('*'). Ad esempio, il buffer che Emacs mostra quando è appena partito, è il cosidetto buffer *scratch*. Nel buffer *scratch*, puoi scrivere testo normalmente, ma non sarà salvato quando Emacs uscirà.
C'è un altro buffer speciale che devi conoscere, ed è il minibuffer. Questo buffer consiste di una sola riga, ed è sempre sullo schermo: è l'ultima riga della finestra di Emacs, subito sotto la barra di stato del buffer corrente. Il minibuffer è dove Emacs mostra i messaggi per l'utente, ed è anche il buffer dove i comandi richiedono input dall'utente. Ad esempio, quando apri un file, Emacs ti chiederà il suo nome proprio nel minibuffer.
Si può passare da un buffer all'altro con il comando C-x b. Questo comando ti chiederà di inserire il nome di un buffer (che solitamente è il nome del file che stai editando dentro un buffer), e fornisce come scelta di default, il buffer che precedentemente stavi editando. Premendo solamente Enter Emacs passerà a questo buffer.
Se vuoi passare ad un altro buffer diverso da quello di default proposto da Emacs, scrivi il suo nome. Nota che puoi usare la cosidetta Tab-completion (completamento automatico): digita le prime lettere del nome del buffer e premi Tab; Emacs completerà il nome del buffer. La Tab-completion in Emacs funziona ovunque abbia senso.
Puoi vedere la lista dei buffer aperti digitando C-x C-b. Questo comando solitamente dividerà la finestra in due parti, mostrando il buffer su cui stai lavorando nella metà superiore e un nuovo buffer chiamato *Buffer List* in quella inferiore. Questo nuovo buffer contiene la lista di tutti i buffer, la loro dimensione e i modi ed, eventualmente, i file che sono aperti da Emacs. Ti puoi liberare del *Buffer List* digitando: C-x 1.
![]() |
Sotto X, la lista dei buffer è anche disponibile nel menu Buffer nella barra dei menu. |
Ogni buffer in Emacs ha associato un modo. Questo è molto differente dal concetto di modi in vi: un modo ti dice in quale tipo di buffer sei. Per esempio, c'è il text-mode (modo testo) per i normali file di testo, ma ci sono anche modi come il c-mode (modo C) per editare programmi C, lo sh-mode per editare script di shell, latex-mode per editare file LaTeX, mail-mode per editare email e news, etc. Un modo fornisce personalizzazioni speciali e funzionalità che sono utili per il tipo di file che stai editando. È persino possibile per un modo ridefinire i tasti e le combinazioni. Per esempio, nel text-mode, il tasto Tab semplicemente salta alla tabulazione successiva, ma in molto modi per programmare, il tasto Tab effettua un'indentazione della riga corrente in accordo con il livello di annidamento del blocco a cui appartiene.
I modi citati sopra sono chiamati major mode (modi principali). Ogni buffer ha esattamente un major mode. Inoltre un buffer può avere uno o più minor mode (modi secondari). Un minor mode fornisce funzionalità aggiuntive che potrebbero essere utili in determinate situazioni. Ad esempio, se premi INSERT, invochi l'overwrite-mode (modo sovrascrittura), che fa esattamente la cosa che ti aspetti. C'è anche l'auto-fill-mode (riempimento automatico), che è molto comodo sia con il text-mode sia con il latex-mode: fa in modo che ogni riga digitata sia automaticamente portata a capo quando si raggiunge un certo numero di caratteri. Senza l'auto-fill-mode digitare: M-q per riempire un paragrafo. (Che puoi usare anche per riformattare un paragrafo dopo aver editato del testo al suo interno e non è più formattato correttamente).
Per aprire un file in Emacs, fai
C-x C-f |
Emacs ti chiederà il nome del file, usando alcuni percorsi di default per te (che di solito è ~/). Dopo che hai scritto il nome del file (puoi usare Tab-completion) e hai dato ENTER , Emacs aprirà il file in un nuovo buffer e mostrerà tale buffer sullo schermo.
![]() |
Emacs creerà automaticamente un nuovo buffer, non caricherà il file nel buffer corrente. |
Per creare un nuovo file in Emacs, non puoi solamente scrivere. Prima devi creare un buffer e assegnarli un nome di file. Questo si ottiene digitando: C-x C-f e scrivendo il nome del file, come se stessi aprendo un file esistente. Emacs ti informerà che il file che hai specificato non esiste e creerà un nuovo buffer mostrando “(New File)” nel minibuffer.
Quando digiti C-x C-f e poi inserisci il nome di una directory al posto di un nome di file, Emacs creerà un nuovo buffer dentro il quale troverai la lista di tutti i file di quella directory. A questo punto puoi spostare il cursore sul file che stai cercando e digitanto, Emacs lo aprirà. (Ci sono infatti molte più azioni che puoi effettuare qui, come ad esempio cancellare, rinominare e spostare file, etc. Emacs è ora nel dired-mode (modo directory, che essenzialmente è un semplice filemanager).
Quando hai digitato C-x C-f e immediatamente cambi idea, puoi digitare C-g per cancellare l'azione. C-g funziona pressochè ovunque tu voglia cancellare un'azione o un comando che hai cominciato ma che non vuoi finire.
Quando hai aperto un file, naturalmente puoi spostare il cursore dentro il buffer. I tasti direzionali e PgUp, PgDn fanno esattamente quello che ti aspetti. Home e End spostano il cursore all'inizio e alla fine della riga, rispettivamente (in alcune vecchie versioni potrebbero spostare il cursore all'inizio e alla fine del buffer). Comunque ci sono anche le keystroke basate su Control, Meta (Alt) per spostare il cursore. Poichè non devi spostare le tue mani in un'altra parte della tastiera per quest'ultime, sono molto più veloci appena ti ci abitui. I comandi più importanti sono elencati in Table 17-1.
Table 17-1. Comandi base per l'editing
Comando | Effetto |
---|---|
C-b | torna indietro di un carattere |
C-f | va un carattere avanti |
C-n | va una linea giù |
C-p | va una linea su |
C-a | va ad inizio riga |
C-e | va a fine riga |
M-b | va una parola indietro |
M-f | va una parola avanti |
M-} | va un paragrafo avanti |
M-{ | va un paragrafo indietro |
M-a | salta alla frase precedente |
M-e | salta alla frase successiva |
C-d | cancella il carattere sotto il cursore |
M-d | cancella dal cursore fino alla fine della parola |
C-v | va una schermata giù (i.e., PgDn) |
M-v | va una schermata su (i.e., PgUp) |
M-< | salta all'inizio del buffer |
M-> | salta alla fine del buffer |
C-_ | cancella l'ultima modifica (può essere ripetuto); nota che devi premere Shift+Control+- per questo. |
C-k | cancella dal cursore in poi (sino a fine della riga) |
C-s | ricerca avanti |
C-r | ricerca indietro |
Nota che molti comandi con il tasto Meta sono paralleli ai comandi con Control ad eccezione del fatto che lavorano su unità più grandi: mentre C-f va avanti di un carattere M-f va avanti di una parola, etc.
Nota anche che M-< e M-> richiedono che tu digiti Shift+Alt+, e Shift+Alt+. rispettivamente, affinchè < and > Shift+, e Shift+..
Nota che C-k cancella (uccide, come è comunemente chiamato) tutto il testo dopo il cursore sino alla fine della riga, ma non cancella la riga stessa (i.e. non cancella il newline finale). Cancella la riga solo se non c'è testo dopo il cursore. In altre parole, per cancellare una riga intera, devi spostare il cursore all'inizio della riga, e digitare C-k due volte: una per cancellare il testo delle riga e una per cancellare la riga stessa.
Per salvare un file, devi digitare
C-x C-s |
Emacs non ti chiederà un nome di file, il buffer verrà salvato nel file dal quale è stato caricato. Se vuoi salvare il buffer in un altro file, digita:
C-x C-w |
Quando salvi il file per la prima volta durante una sessione, Emacs normalmente salva la vecchia versione del tuo file in un file di backup, che ha lo stesso nome con una ~ (tilde) alla fine: così se stai editando un file chiamato “cars.txt”, Emacs creerà un file di backup chiamato “cars.txt~”.
Questo file di backup è una copa del file che hai aperto. Mentre stai lavorando, Emacs creerà delle copie automaticamente del lavoro che stai facendo, in file chiamati come questo: #cars.txt# (notare i due # all'inizio e alla fine del nome). Questo backup è cancellato quando salvi il file con C-x C-s.
Quando stai editando un file, puoi chiudere il buffer corrispondente digitando:
C-x k |
Emacs chiederà quale buffer vuoi chiudere, impostando il buffer corrente come default, che puoi selezionare premendo ENTER. Se non hai ancora salvato il tuo file, Emacs ti chiederà se vuoi davvero chiudere il buffer.
Per uscire da Emacs, puoi digitare
C-x C-c |
Questo comando fa terminare Emacs. Se hai un qualsiasi file non salvato, Emacs ti chiederà cosa vuoi farne per ognuno di essi. Se rispondi di no ad una qualsiasi di queste domande, Emacs chiederà un ultima conferma e poi uscirà.
Un pacchetto software è un insieme di programmi correlati pronti per essere installati. Quando scarichi un archivio contenente codice sorgente devi configurarlo, compilarlo e installarlo manualmente. Con un pacchetto software, questi compiti sono stati già svolti per te. Tutto ciò che devi fare è installare il pacchetto. Un'altra comoda caratteristica dei pacchetti software è la semplicità con cui puoi rimuoverli e aggiornarli, se lo desideri. Slackware è corredata di programmi che permettono di soddisfare tutte le necessità di gestione dei pacchetti. Puoi installare, rimuovere, aggiornare, creare ed esaminare i pacchetti con molta facilità.
C'è una leggenda che circola, da quando RedHat ha pubblicato il suo RedHat Package Manager, secondo cui Slackware non avrebbe avuto a disposizione alcun programma per la gestione dei pacchetti. Questa storia non potrebbe essere più distante dalla verità. Slackware ha sempre incluso un gestore dei pacchetti, prima ancora che RedHat esistesse. Benché questo non sia ricco di caratteristiche o diffuso come RPM (o come DEB), pkgtool e i suoi programmi correlati sono tanto validi quanto RPM per l'installazione dei pacchetti. La verità a proposito di pkgtool è che non non esista, ma che piuttosto non effettui alcun controllo delle dipendenze.
Apparentemente, molta gente nella comunità Linux ritiene che un gestore di pacchetti debba, per definizione, includere il controllo delle dipendenze. Non è questo il caso, visto che in Slackware ciò non avviene. Ciò non vuol dire che i pacchetti Slackware non abbiano dipendenze, ma piuttosto che il suo gestore di pacchetti non le controlli. La gestione delle dipendenze viene lasciata all'amministratore di sistema, ed è così che ci piace.
Prima di imparare ad usare i vari programmi, devi prendere confidenza con il formato di un pacchetto Slackware. In Slackware, un pacchetto è semplicemente un file archivio tar che è stato poi compresso con gzip. I pacchetti sono stati progettati per essere poi estratti nella root directory.
Ecco un proramma fittizio con il relativo pacchetto d'esempio:
./ usr/ usr/bin/ usr/bin/makehejaz usr/doc/ usr/doc/makehejaz-1.0/ usr/doc/makehejaz-1.0/COPYING usr/doc/makehejaz-1.0/README usr/man/ usr/man/man1 usr/man/man1/makehejaz.1.gz install/ install/doinst.sh |
Il sistema di gestione dei pacchetti estrarrà questo file nella root directory per installarlo. Verrà creata una nuova voce nel database dei pacchetti, comprendente una lista dei file contenuti nel pacchetto, in modo che quest'ultimo possa essere aggiornato o rimosso in seguito.
Nota la subdirectory install/. Questa è una directory particolare che può contenere uno script postinstallazione, detto doinst.sh. Se il sistema di gestione dei pacchetti trova questo file, lo eseguirà subito dopo aver installato il pacchetto.
Altri script possono essere inclusi nel pacchetto, ma questi sono discussi più dettagliatamente in Section 18.3.2.
Esistono quattro programmi principali per la gestione dei pacchetti. Si occupano dell'installazione, della rimozione e dell'aggiornamento.
pkgtool(8) è un programma con scelte da menu che consente di procedere all'installazione e alla rimozione dei pacchetti. Il menu principale è mostrato in Figure 18-1.
L'installazione viene proposta partendo dalla directory corrente, da un'altra directory o da floppy disk. Scegli semplicemente il metodo di installazione che preferisci e pkgtool cercherà in quella locazione pacchetti validi da installare.
Puoi anche prendere visione della lista dei pacchetti installati come mostrato in Figure 18-2.
Se desideri rimuovere pacchetti, seleziona l'opzione di rimozione e ti sarà presentata una lista di tutti i pacchetti installati. Contrassegna quelli che desideri rimuovere e scegli OK. pkgtool procederà alla rimozione.
Alcuni utenti preferiscono usare questa utility piuttosto che i programmi a riga di comando. Tuttavia, bisogna tener presente che questi ultimi offrono molte più opzioni. Inoltre, la possibilità di aggiornare i pacchetti è accessibile solo tramite utilità a riga di comando.
installpkg(8) si occupa dell'installazione di nuovi pacchetti sul sistema. La sintassi è la seguente:
# installpkg option package_name |
Esistono diverse opzioni per installpkg.
Table 18-1. Opzioni di installpkg
Opzioni | Effetti |
---|---|
-warn | Mostra una simulazione di ciò che accadrebbe (eventuali rimozioni e modifiche a file e directory) se tu installassi il pacchetto prescelto. Questa opzione è utile per i sistemi di produzione, in modo che tu possa vedere esattamente cosa accadrebbe prima di installare qualcosa. |
-root altrarootdirectory | Questa opzione ha lo stesso effetto dell'impostare la variabile di ambiente ROOT (vedi sotto per maggiori informazioni). |
-infobox | Usa dialog per mostrare una schermata informativa mentre viene installato il pacchetto. Principalmente usato quando installpkg viene chiamato in causa da altri script. |
-menu | Usa dialog per mostrare un menu che chiede all'utente se desidera o meno installare il pacchetto (o i pacchetti). Principalmente usato quando installpkg viene chiamato in causa da altri script. |
-ask | Usato con la modalità -menu. Quando selezionato, chiede sempre se un pacchetto debba essere installato o meno, ignorando il livello di priorità del pacchetto (vedere opzione successiva). |
-priority ADD|REC|OPT|SKP | Quando si installa con l'opzione -menu, permette di fissare una priorità da riga di comando che verrà seguita al posto di quella presente nel tagfile (si veda la parte dedicata ai tagfile in questo stesso capitolo per maggiori informazioni). |
-tagfile /altradir/tagfile | Specifica di usare un tagfile differente da quello di default (che sarebbe quello presente nella stessa directory dei pacchetti). |
Se passi la variabile d'ambiente ROOT prima di installpkg, il percorso specificato nella variabile verrà considerato come root directory. Questo comportamento si rivela utile per allestire la tua directory di root su nuovi dischi. Tipicamente verranno montati su /mnt o in ogni caso su qualcosa di diverso da /.
La voce relativa al pacchetto installato viene conservata in /var/log/packages. In realtà questa voce è semplicemente un file di testo, unico per ciascun pacchetto. Se il pacchetto possiede uno script postinstallazione, questo viene conservato in /var/log/scripts/.
Puoi specificare diversi pacchetti dopo il comando, o usare i caratteri jolly nel nome del pacchetto. Ricorda che installpkg non ti avvertirà in caso di sovrascrittura di un pacchetto già installato. Semplicemente installerà il nuovo pacchetto sopra il vecchio. Se vuoi assicurarti che i file relativi al precedente pacchetto siano rimossi in sicurezza, usa il comando upgradepkg.
removepkg(8) si occupa della rimozione dal sistema di pacchetti installati. La sintassi è la seguente:
# removepkg option package_name |
Per il comando removepkg sono disponibili quattro opzioni.
Table 18-2. Opzioni di removepkg
Opzioni | Effetti |
---|---|
-copy | Il pacchetto viene copiato nella directory dei pacchetti preservati (/var/log/setup/tmp/preserved_packages/). Viene dunque creata una copia del pacchetto originale, senza operazioni di rimozione. |
-keep | Salva i file temporanei che vengono creati durante la rimozione. Èutile esclusivamente per scopi di debug. |
-preserve | Il pacchetto, oltre ad essere rimosso, viene anche copiato nella directory dei pacchetti preservati (/var/log/setup/tmp/preserved_packages/) allo stesso tempo. |
-warn | Effettua una simulazione di ciò che accadrebbe se rimuovessi il pacchetto, senza rimuoverlo effettivamente. |
Se passi la variabile d'ambiente ROOT prima di removepkg, il percorso specificato nella variabile verrà considerato come root directory. Questo comportamento si rivela utile per allestire la tua directory di root su nuovi dischi. Tipicamente verranno montati su /mnt o in ogni caso su qualcosa di diverso da /.
removepkg controlla gli altri pacchetti installati e rimuove esclusivamente i file che si trovano solamente nel pacchetto che hai specificato. Effettua anche una rilettura dello script postinstallazione relativo al pacchetto, in modo da rimuovere tutti i link simbolici creati dallo script.
Durante il processo di rimozione, viene visualizzato un rapporto sulle operazioni in corso. Dopo la rimozione, la voce relativa al pacchetto viene spostata dal database dei pacchetti in /var/log/removed_packages e il relativo script postinstallazione viene spostato in /var/log/removed_scripts.
Come per installpkg, puoi specificare diversi pacchetti dopo il comando o usare caratteri jolly nel nome del pacchetto.
upgradepkg(8) aggiorna un pacchetto Slackware installato. La sintassi è la seguente:
# upgradepkg package_name |
or
# upgradepkg old_package_name%new_package_name |
upgradepkg procede installando prima il nuovo pacchetto e poi rimuovendo il vecchio pacchetto in modo che i vecchi file non rimangano nel sistema. Qualora il nome del pacchetto aggiornato fosse diverso, usa il carattere percentuale per specificare il nome del vecchio pacchetto (quello installato) e il nuovo pacchetto (quello con cui si desidera aggiornare il vecchio).
Se passi la variabile d'ambiente ROOT prima di upgradepkg, il percorso specificato nella variabile verrà considerato come root directory. Questo comportamento si rivela utile per allestire la tua directory di root su nuovi dischi. Tipicamente verranno montati su /mnt o in ogni caso su qualcosa di diverso da /.
upgradepkg non è infallibile. Devi sempre fare una copia di sicurezza dei tuoi file di configurazione. Se venissero rimossi o sovrascritti, vorrai sicuramente avere una copia degli originali per ripristinarli.
Esattamente come per installpkg e removepkg, puoi specificare diversi pacchetti dopo il comando o usare i caratteri jolly nel nome del pacchetto.
Il Package Manager di Red Hat è un sistema di gestione dei pacchetti molto popolare. Molti distributori di programmi offrono i loro prodotti in formato RPM. Dal momento che questo non è il formato che usiamo nativamente, preferiamo non incoraggiare la gente ad usarlo. D'altra parte, alcuni software potrebbero essere disponibili soltanto in pacchetti RPM (persino il codice sorgente).
Slackware Linux mette a disposizione un programma che converte i pacchetti RPM nel formato nativo Slackware .tgz. Questo programma ti permette di estrarre i pacchetti (magari con il comando explodepkg) in una directory temporanea per esaminarne il contenuto.
Il programma rpm2tgz crea un pacchetto Slackware con l'estensione .tgz, mentre il programma rpm2targz crea un archivio con l'estensione .tar.gz.
Creare pacchetti Slackware può essere facile o difficile a seconda delle situazioni. Non esiste un metodo specifico per costruire uno. L'unico requisito è che il pacchetto sia un file tar compresso con gzip e che, nell'eventualità in cui ci sia bisogno di uno script postinstallazione, questo sia /install/doinst.sh.
Se ti interessa creare pacchetti per il tuo sistema o per una rete sotto la tua gestione, devi dare un'occhiata ai vari script di build disponibili nell'albero dei sorgenti di Slackware. Per creare i pacchetti esistono diversi metodi.
explodepkg(8) fa la medesima cosa che installpkg fa per estrarre i pacchetti, ma non li installa e non li registra nel database dei pacchetti. Si limita semplicemente ad estrarne il contenuto nella directory corrente.
Se dai un'occhiata all'albero dei sorgenti di Slackware, noterai come usiamo questo comando per la struttura dei pacchetti. Questi pacchetti contengono uno scheletro del pacchetto che risulterà alla fine. Essi mantengono tutti i nomi dei file (vuoti), i relativi permessi e le informazioni sui proprietari. Lo script di build aggiungerà il contenuto del pacchetto dalla directory sorgente alla directory di build del pacchetto.
makepkg(8) impacchetta la directory corrente, creando un pacchetto Slackware valido. Effettua una ricerca dei link simbolici nell'albero a partire dalla directory corrente e aggiunge informazioni nello script postinstallazione, in modo da poter ricreare i link durante la successiva installazione del pacchetto. Ti avverte anche dell'eventuale presenza di file di dimensione nulla nel pacchetto.
Questo comando viene tipicamente lanciato dopo aver creato il proprio albero del pacchetto.
I pacchetti Slackware sono costruiti nei più svariati modi per necessità. Non tutti i pacchetti software si compilano allo stesso modo, dato che vengono progettati diversamente dai rispettivi programmatori. Molti software hanno opzioni selezionabili al momento della compilazione che non sono incluse nei pacchetti usati da Slackware. Potresti trovarti magari ad aver bisogno di queste funzionalità non attivate; dovrai quindi compilare il tuo pacchetto. Fortunatamente, nell'albero dei sorgenti di Slackware troverai script SlackBuild per molti pacchetti Slackware.
Dunque cos'è uno script SlackBuild? Gli script SlackBuild sono shell script eseguibili che puoi lanciare da utente root per configurare, compilare e creare pacchetti Slackware. Puoi liberamente modificare questi script nella directory dei sorgenti ed eseguirli per creare le tue versioni dei pacchetti Slackware di default.
Il programma di installazione di Slackware si occupa dell'installazione dei pacchetti software nel tuo sistema. Esistono alcuni file che indicano al programma di installazione quali pacchetti debbano essere installati, quali siano opzionali e quali debbano essere selezionati per default.
Questi file, denominati tagfile, sono presenti nelle directory relative ai software set della distribuzione. Elencano i pacchetti presenti in quel dato set, assieme al loro status (livello di priorità). Questo può essere:
Table 18-3. Opzioni di priorità dei Tagfile
Opzione | Significato |
---|---|
ADD | L'installazione del pacchetto è richiesta per il corretto funzionamento del sistema. |
SKP | Il pacchetto verrà automaticamente saltato. |
REC | L'installazione del pacchetto non è obbligatoria, ma è raccomandata. |
OPT | L'installazione del pacchetto è opzionale. |
Il formato del tagfile è semplicemente:
package_name: status |
Bisogna quindi specificare un pacchetto per ciascuna riga e il relativo livello di priorità. Èuna buona idea effettuare una copia di backup dei tagfile prima di modificarli. In questo modo, avrai sempre la possibilità di ripristinare gli originali.
Molti amministratori preferiscono scrivere i propri tagfile, avviando il programma di installazione e scegliendo l'installazione “full” (installazione completa). Il programma di installazione leggerà i tagfile ed effettuerà l'installazione in base al loro contenuto. Ricorda che usando REC o OPT, in fase di installazione ti verrà presentata una finestra di dialogo dove ti verrà chiesto se desideri o meno installare il pacchetto in questione. Dunque, se vuoi realizzare un'installazione completamente automatizzata, ti raccomandiamo di adoperare soltanto ADD e SKP.
Assicurati che i tuoi tagfile siano scritti nella stessa locazione degli originali. In alternativa, puoi comunque specificare un percorso personalizzato di ricerca dei tagfile.
ZipSlack è una versione speciale di Slackware Linux. È una copia già installata di Slackware pronta da lanciare dalla tua partizione DOS o Windows. È un'installazione di base, non c'è tutto quello che c'è solitamente con Slackware.
ZipSlack prende il suo nome dal modo in cui è distribuita, in un grande file .ZIP. Gli utenti di DOS e Windows probabilmente avranno familiarità con questi file. Sono degli archivi compressi. L'archivio ZipSlack contiene tutto ciò di cui hai bisogno per avere una Slackware funzionante.
Èimportante notare che ZipSlack è significativamente diversa da una installazione regolare. Sebbene funzionino alla stessa maniera e contengano gli stessi programmi, il pubblico cui si rivolgono è molto diverso. Molti vantaggi e svantaggi di ZipSlack sono discussi più in avanti nel capitolo.
Un'ultima cosa, dovresti sempre rivedere la documentazione inclusa nella directory della ZipSlack più recente. Essa contiene le ultime informazioni riguardo l'installazione, l'avvio, e l'uso generale del prodotto.
Non richiede il ripartizionamento del tuo hard disk.
È un ottimo modo per imparare Slackware Linux senza confondere l'utente con il processo di installazione.
Usa il filesystem del DOS, che è più lento del filesystem nativo di Linux.
Non funziona con Windows NT.
Ottenere ZipSlack è facile. Se hai comprato il set ufficiale di CD di Slackware Linux, allora hai già ZipSlack. Basta trovare il CD che contiene la directory zipslack e inserirlo nel lettore di CD-ROM. Di solito si trova sul terzo o sul quarto disco, ma fidati sempre più delle etichette dei dischi che di questa documentazione, dato che il disco sul quale risiede è soggetto a modifiche.
Se vuoi scaricare ZipSlack, dovresti innanzi tutto visitare la nostra pagina web “Get Slack” per le ultime informazioni di download.
http://www.slackware.com/getslack/
ZipSlack fa parte di ogni release di Slackware. Trova la release che vuoi, e vai in quella directory sul sito FTP. Puoi trovare l'ultima release a questo indirizzo:
ftp://ftp.slackware.com/pub/slackware/slackware/
Troverai ZipSlack nella subdirectory /zipslack. ZipSlack è disponibile come un unico grande file .ZIP, o diviso in più parti, ciascuna delle dimensioni di un floppy disk. Queste parti sono nella directory /zipslack/split.
Non fermarti soltanto ai file .ZIP. È consigliabile scaricare anche i file di documentazione e tutte le immagini di boot che compaiono nella directory.
Una volta scaricati i componenti necessari, dovrai estrarre il file .ZIP. Assicurati di usare un programma di unzip a 32 bit. Le dimensioni e i nomi dei file nell'archivio sono eccessivi per un programma di decompressione a 16 bit. Esempi di programmi di decompressione a 32 bit includono Winzip e PKZIP per Windows.
ZipSlack è pensata per essere estratta direttamente nella root di una partizione (come C: o D:). Verrà creata una directory \LINUX che contiene un'installazione di fatto di Slackware. Inoltre in quella directory troverai i file necessari per l'avvio del sistema.
Dopo aver estratto i file, dovresti avere una directory \LINUX sulla partizione scelta (d'ora in poi useremo C:).
Ci sono molti modi di avviare ZipSlack. Il più comune è usare l'incluso LINUX.BAT per avviare il sistema dal DOS (o dalla modalità DOS sotto Windows 9x). Questo file deve essere modificato in modo da adattarsi al tuo sistema, prima che possa funzionare.
Comincia con l'aprire il file C:\LINUX\LINUX.BAT nel tuo editor di testo preferito. All'inizio del file troverai un lungo commento, che spiega cosa ti occorre per modificare questo file (e anche cosa fare se stai avviando il sistema da un lettore Zip esterno). Non preoccuparti se non capisci il parametro root=. Ci sono molti esempi, quindi scegline liberamente uno e provalo. Se non funziona, puoi modificare nuovamente questo file, commentare le linee che avevi decommentato, e usarne un altro.
Dopo aver decommentato la righa che vuoi, rimuovendo il “rem” dall'inizio della riga, salva il file ed esci dall'editor. Avvia la tua macchina in modalità DOS.
Un prompt del DOS in Windows 9x NON funzionerà.
Digita C:\LINUX\LINUX.BAT per avviare il sistema. Se tutto va bene, ti si presenterà una schermata di login.
Accedi come root, senza password. Probabilmente vorrai cambiare la password di root, ed aggiungere un account per te stesso. A questo punto puoi fare riferimento alle altre sezioni di questo libro per l'uso generale.
Se eseguire LINUX.BAT per avviare il sistema non funziona, dovresti fare riferimento al file C:\LINUX\README.1ST per trovare altri modi per avviare il sistema.
Tutte le informazioni di un utente, l'username, la password, informazioni sul finger, UID, GID e la directory di home. Creare un account vuol dire aggiungere e definire un utente.
Una variabile definita nella shell dell'utente la quale può essere referenziata da quell'utente o da un programma che l'utente esegue in quella shell. Le variabili d'ambiente sono generalmente usate per memorizzare preferneze e parametri di default.
Ogni processo che sta lavorando senza accettare input o senza essere controllato da un terminale, si dice che sta lavorando in background.
Un floppy disk contente un sistema operativo (nel nostro caso il kernel Linux) dal quale un computer può avviarsi.
Convertire un codice sorgente in codice “binario” comprensibile dalla macchina.
Un programma progettato per lavorare in background e, senza l'intervento di un utente, assolvere un determinato obiettivo (usualmente provedere un servizio).
L'hostname di default su Slackware; il tuo computer verrà chiamato darkstar se non specifichi un altro nome.
Uno delle macchine di sviluppo di Patrick Volkerding è chiamata “Dark Star” da una canzone dei Grateful Dead.
Un interfaccia grafica (GUI) in esecuzione sul sistema X Window e provvede features come applicazioni integrate, look-and-feel per programmi e componenti, gestione delle finestre e dei file etc. Un passo dopo il semplice manager di finestre.
Una parte di codice nel kernel che direttamente controlla uno specifico componente hardware.
Un particolare tipo di file nel filesystem /dev che rappresenta un componente hardware nel sistema operativo.
Domain Name Service. Un sistema per convertire i nomi dei computer collegati in una rete nel loro indirizzo numerico.
Il nome DNS del computer, a parte il suo hostname.
Su Linux, i file nascosti hanno un filename che inizia per un dot ('.').
Il formato di un indirizzo IP, così chiamato perchè consiste in 4 numeri (da 0 a 255) separati da un dot ('.').
Quando i programmi vengono compilati sotto Linux, usualmente usano pezzi di codice (funzioni) da librerie esterne. Quando questi programmi vanno in esecuzione, quelle librerie vengono trovate e le funzioni richieste caricate in memoria. Questo è il lavoro del dynamic loader.
Un periodo storico; su Unix, “L'Epoca” inizia alle 00:00:00 UTC del 1 Gennaio, 1970. Questa è considerata “l'alba dei tempi” dai sistemi operativi Unix e Unix-like, e tutte le altre date sono calcolate in relazione a questa.
Una rappresentazione dei dati memorizzati in “file” organizzati in “directory”. Il filesystem è la forma più di rappresentare i dati memorizzati nei dischi (sia fissi che removibili).
Un programma che sta accettando input o viene controllato da un terminale si dice che sta lavorando in foregroud.
Un particolare device grafico; su Linux, ci si riferisce spesso ad un software framebuffer, il quale provvede un'interfaccia framebuffer standard per i programmi che vogliono accedere a specifici driver hardware. Questo strato di astrazione libera i programmi dal bisogno di interfacciarsi direttamente ai vari driver hardware.
File Transfer Protocol. FTP è il più popolare metodo per trasferire dati tra i computer.
Un computer attraverso il quale i dati su una rete sono trasferiti ad un altra rete.
Identificatore del Gruppo. Il GID è un numero unico attribuito ad un gruppo di utenti.
Gli utenti su Unix sono divisi in “gruppi”, i quali contengono molti utentei e sono usati per controllare la loro esistenza e gestirli facilmente.
Graphical User Interface. Interfaccia software che usa elementi grafici come pulsanti, scrollbar, finestre etc. per facilitare l'input e l'output basati sul testo.
Directory home di un utente. E' la directory dove l'utente viene immediatamente diretto dopo il suo loggin in. Gli utenti hanno i pieni permessi nelle loro home directory.
Un documento che descrive “come fare” qualcosa, come configurare un firewall o gestire utenti e gruppi. Ci sono vaste collezioni di questi documenti disponibili da Linux Documentation Project.
Hypertext Transfer Protocol. HTTP è il protocollo più usato nel World Wide Web.
Internet Control Message Protocol. Un protocollo molto basilare, utilizzato maggiormente per i ping.
Il cuore di un sistema operativo. Il kernel è la parte che provvede il controllo di base dei processi e le interfaccie verso l'hardware del computer.
Una parte di codice del kernel, usualmente un driver di qualche sorta, che può essere caricato e rimosso dalla memoria separatamente dal corpo principale del kernle. I moduli sono molto manipolabili quando si aggiornano i driver o si settano i parametri del kernel, perchè possono essere caricati e rimossi senza effettuare il reboot.
Collezione di funzioni che possono essere condivise da vari programmi.
LInux LOader. LILO è il più usato boot manager su Linux.
LOADLIN è un programma che gira sotto MS DOS o Windows ed effettua il boot per un sistema Linux. E' utilizzato spesso su computere con molti sistemi operativi (includendo Linux e DOS/Windows naturalmente).
Pagine nell'online manuale standard di Unix raggruppate in sezioni per una facile indicizzazione. Tutta la programmazione C è nella sezione 4, l'amministrazione di sistema nella sezione 5 etc..
Master Boot Record. Spazio riservato in un hard disk dove vengono memorizzate informazioni su come effettuare il boot. LILO o altri boot manager sono memorizzati qui.
Popolare toolkit per la programmazione utilizzato in molti programmi X datati.
Message of the Day. Il motd (memorizzato su Linux in /etc/motd è un file di testo che viene mostrato a tutti gli utenti quando effettuano il loggin. Tipicamente è utilizzato dall'amministratore di sistema come una sorta di “bollettino” per comunicare con gli utenti.
Directory vuota in un filesystem dove un altro filesystem può essere “montato” o innestato.
Server di informazioni DNS. Traduce i nomi DNS in indirizzi IP numerici.
Rappresentazione virtuale di un device di rete provvisto dal kernel. Le interfacce di rete permette agli utenti e ai programmi di comunicare con la rete.
Network Filesystem. NFS permette di montare un filesystem remoto come se fosse in locale provvedendo un metodo trasparente per lo scambio di file.
Sistema numerico a base 8, con cifre da 0 a 7
Programma per X che permette agli utenti di vedere e di commutare tra più “desktop”.
Parte di un hard disk. Il filesystem esiste in cima alla partizione.
Point-to-Point Protocol. PPP è usato principalmente per collegare un modem ad un Internet Service Provider.
Un programma in esecuzione.
Rappresentata come un “/”, la directory di root esiste in cima al filesystem, con tutte le altre directory collegate a questa come in un “albero di file”.
Il disco (solitamente fisso) in cui la directory root è memorizzata
Insieme delle informazioni che il kernel usa nell'effettuare il “routing” dei dati nella rete. Contiene informazioni come il gateway di defalut, su quale interfaccia di rete è collegata a quale rete etc...
La condizione del sistema è definita dall'init. Runlevel 6 sta per la fase di reboot, Runlevel 1 è per la modalità “singolo utente”, Runlevel 4 è un login da X, etc. Ci sono 6 runlevel disponibili su un sistema Slackware.
Metodo criptato (e quindi sicuro) per effettuare il logging in un computer remoto. Molto programmi per la secure shell sono disponibili; è necessaria la presenza di un client e di un server.
La condivisione di informazioni e/o dati tra programmi da un singolo “server” a più “client”. HTTP, FTP, NFS, etc. sono servizi.
Le suite Shadow Password permette di gestire password criptate per essere nascoste agli utenti, invece il resto delle informazioni in /etc/passwd rimangono in chiaro. Questo permette di prevenire attacchi brute-force per crackare le password.
La Shell provvede un interfaccia a riga di comando per l'utente. Quando effetti in login in un prompt testuale, tu sei in una shell.
Un comando definito dentro la shell stessa. Per esempio, bash ha un cd builtin.
I programmi Unix possono comunicare tra di loro usando i “segnali”, i quali sono numerati e hanno un significato specifico. kill -l fornisce una lista dei segnali disponibili.
Serial Line Interface Protocol. SLIP è molto simile al protocollo PPP, e viene usato per connettere due macchine tramite la porta seriale.
File speciale che semplicemente punta ad un altro file. Un link simbolico è usato per eliminare la ripetizione dei dati quando un file è richiesto in più posizione.
Un programma e i file ad esso associati, archiviati e compressi in un singolo file in modo che uno script specifico può gestire l'installazione, l'upgrade e la rimozione.
Collezione di pacchetti software in Slackware. I pacchetti KDE sono in “kde”, i pacchetti per il networking sono in“n” etc..
Codice leggibile nel quale molti programmi sono scritto. Il codice sorgente poi è compilato in codice “binario”.
The Unix-standard output stream for errors. Programs write any error messages on stderr, so that they can be separated from normal output.
Lo standard stream Unix per l'input. I dati possono essere ridiretti verso lo standard input di un programma da ogni sorgente.
Lo standard stream Unix per l'output. Il normale output testuale di un programma è scritto nello stdout, il quale è separato dallo stderr in cui vengono riportati i messaggi di errore e può essere indirizzato come stdin per in programma o in un file.
Un range di indirizzi IP parte di un più vasto range. Per esempio 192.168.1.0 è una subnet di 192.168.0.0 (dove 0 è una maschera che sta per “indefinito”).
Su Linux, le partizioni sono considerate come blocchi. Un blocco è di 512 byte. Il superblock è composto dai primi 512 byte di una partizione.
In Slackware, un floppy usato durante l'installazione che non contiene ne il kernel (che è nel boot disk) ne il filesystem root (che si trova nel root disk), ma contiene altri file necessari come moduli per la rete oppure il supporto PCMCIA.
Un processo il quale è stato bloccato fino a quando verrà terminato o ripreso.
Spazio sul disco usato dal kernel come RAM “virtuale”. E' più lento della RAM, ma essendo lo spazio sul disco più economico, la swap è generalmente più abbondante. Lo spazio di swap è usato dal kernel per memorizzare i dati meno usati e quando lo spazio sulla RAM fisica è esaurito.
Un file usato dal setup di Slackware che descrive l'insieme di pacchetti che verrà installato.
Interfaccia utente consistente almeno di un monitor e qualche strumento per l'input (generalmente una tastiera).
Un toolkit GUI è una collezione di librerie che permettono ad uno sviluppatore di utilizzare del codice per disegnare “widgets” come scrollbar, checkbox etc e costruire così un'interfaccia grafica. Il toolkit gui utilizzato da un porgramma spesso definisce il suo “look and feel”.
User Identifier. Numero univoco che identifica un utente nel sistema. Spesso usato da molti programmi al posto dell'username perchè è più semplice gestire dei numeri; un username è utilizzato generalmente solo quando l'utente deve vedere cosa accade.
Video Electronics Standards Association. Il termine VESA è spesso usato per denominare uno standard specificato da questa Associazione. Tutti gli adattatori video moderni sono VESA-compliant.
L'uso di un softwae per simulare molti terminali che utlizzano soltanto un set di device di input e output. Una particolare combinazione di tasti permette di passare da un terminale virtuale ad uno fisico.
Un programma X che provvede un'interfaccia grafica oltre al semplice rettangolo di disegno del sistema X Windoes. I Window manager generalmente provvedono titlebar, menu per lanciare programmi, etc.
La directory in cui un programma si considera essere quando è in esecuzione.
Un programma il cui unico scopo è lanciare altri programmi, cambiando il loro comportamente in diversi modi alternando il loro ambiente o filtrando il loro input.
Il programma nel sistema X Window che si interfaccia con l'hardware grafico e gestisce i programmi X in esecuzione.
Sistema grafico Network-oriented utilizzato in molti sistemi Unix-like come Linux.
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The “Program”, below, refers to any such program or work, and a “work based on the Program” means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term “modification”.) Each licensee is addressed as “you”.
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and “any later version”, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
NO WARRANTY
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. |
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a “copyright disclaimer” for the program, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. <signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice |
This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.