Slackware Linux Essentials

Alan Hicks

Chris Lumens

David Cantrell

Logan Johnson

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.

1-57176-338-4

Table of Contents
Prefazione
1 Una introduzione a Slackware Linux
1.1 Cos'è Linux?
1.1.1 Due parole su GNU
1.2 Cos'è Slackware?
1.3 Open Source e Free Software
2 Help
2.1 Sistema di Help
2.1.1 man
2.1.2 La Directory /usr/doc
2.1.3 HOWTO e mini-HOWTO
2.2 Help Online
2.2.1 Il Sito Ufficiale e il Forum di aiuto
2.2.2 Supporto E-mail
2.2.3 Siti non ufficiali e forum di aiuto
3 Installazione
3.1 Procurarsi Slackware
3.1.1 Il Set di Dischi e il Box Ufficiale
3.1.2 Via Internet
3.2 Requisiti di Sistema
3.2.1 Le Serie di Software
3.2.2 Tipologie di Installazione
3.2.3 Disco di Avvio
3.2.4 Disco di root
3.2.5 Disco Supplementare
3.2.6 Creare i dischi
3.3 Partizionamento
3.4 Il Programma setup
3.4.1 HELP
3.4.2 KEYMAP
3.4.3 ADDSWAP
3.4.4 TARGET
3.4.5 SOURCE
3.4.6 SELECT
3.4.7 INSTALL
3.4.8 CONFIGURE
4 Configurazione del Sistema
4.1 Panoramica sul Sistema
4.1.1 Organizzazione del File System
4.1.2 Ricerca dei file
4.1.3 The /etc/rc.d Directory
4.2 Selezionare un Kernel
4.2.1 La directory /kernels sul CD-ROM di Slackware
4.2.2 Compilare un kernel a partire dal codice sorgente
4.2.3 Impiego dei Moduli del Kernel
5 Configurazione di Rete
5.1 Introduzione: netconfig è tuo amico.
5.2 Configurazione dell'Hardware di Rete
5.2.1 Caricare i Moduli di Rete
5.2.2 Schede di rete LAN (10/100/1000Base-T e Base-2)
5.2.3 Modem
5.2.4 PCMCIA
5.3 Configurazione TCP/IP
5.3.1 DHCP
5.3.2 Indirizzamento IP statico
5.3.3 /etc/rc.d/rc.inet1.conf
5.3.4 /etc/resolv.conf
5.3.5 /etc/hosts
5.4 PPP
5.4.1 pppsetup
5.4.2 /etc/ppp
5.5 Wireless
5.5.1 Supporto Hardware
5.5.2 Configurare le impostazioni wireless
5.5.3 Configurare la rete
5.6 File System di Rete
5.6.1 SMB/Samba/CIFS
5.6.2 Network File System (NFS)
6 Configurazione di X
6.1 xorgconfig
6.2 xorgsetup
6.3 xinitrc
6.4 xwmconfig
6.5 xdm
7 La fase di boot
7.1 LILO
7.2 LOADLIN
7.3 Dual Boot
7.3.1 Windows
7.3.2 Linux
8 La shell
8.1 Utenti
8.1.1 Il login
8.1.2 Root: il superutente
8.2 La linea di comando
8.2.1 Avviare i programmi
8.2.2 Caratteri jolly
8.2.3 Redirezione dell' Input/Output e Piping
8.3 La Bourne Against Shell (bash)
8.3.1 Le variabili d'ambiente
8.3.2 La Tab Completion
8.4 Terminali virtuali
8.4.1 Screen
9 La struttura del filesystem
9.1 Proprietari di un file
9.2 I Permessi
9.3 I link
9.4 Il mount dei dispositivi
9.4.1 fstab
9.4.2 mount e umount
9.5 NFS
10 Gestire File e Directories
10.1 Navigazione : ls, cd, e pwd
10.1.1 ls
10.1.2 cd
10.1.3 pwd
10.2 Pagers: more, less, and most
10.2.1 more
10.2.2 less
10.2.3 most
10.3 Output semplice: cat e echo
10.3.1 cat
10.3.2 echo
10.4 Creazione: touch e mkdir
10.4.1 touch
10.4.2 mkdir
10.5 Copy e Move
10.5.1 cp
10.5.2 mv
10.6 Cancellazione: rm e rmdir
10.6.1 rm
10.6.2 rmdir
10.7 Aliasing di files con ln
11 Controllo dei Processi
11.1 Backgrounding
11.2 Foregrounding
11.3 ps
11.4 kill
11.5 top
12 Amministrazione basilare di Sistema
12.1 Utenti e Gruppi
12.1.1 Script Forniti
12.1.2 Cambiare le Password
12.1.3 Cambiare le informazione dell'utente
12.2 Utenti e Gruppi, la strada difficile
12.3 Spegnere correttamente
13 Basic Network Commands
13.1 ping
13.2 traceroute
13.3 Tool DNS
13.3.1 host
13.3.2 nslookup
13.3.3 dig
13.4 finger
13.5 telnet
13.5.1 Altri usi di telnet
13.6 Secure Shell
13.7 email
13.7.1 pine
13.7.2 elm
13.7.3 mutt
13.7.4 nail
13.8 Browser
13.8.1 lynx
13.8.2 links
13.8.3 wget
13.9 FTP Clients
13.9.1 ftp
13.9.2 ncftp
13.10 Comunicare con altre persone
13.10.1 wall
13.10.2 talk
13.10.3 ytalk
14 Security
14.1 Disabling Services
14.1.1 Servizi lanciati da inetd
14.1.2 Servizi avviati dagli script di inizializzazione (init scripts)
14.2 Controllo degli accessi all'host
14.2.1 iptables
14.2.2 tcpwrappers
14.3 Keeping Current
14.3.1 La mailing list slackware-security
14.3.2 La directory /patches
15 Archiviare file
15.1 gzip
15.2 bzip2
15.3 tar
15.4 zip
16 Vi
16.1 Avviare vi
16.2 Modes
16.2.1 Command Mode
16.2.2 Insert Mode
16.3 Aprire i file
16.4 Salvare i file
16.5 Uscire da vi
16.6 Configurazione di vi
16.7 Vi Keys
17 Emacs
17.1 Avviare Emacs
17.1.1 Command Keys
17.2 Buffers
17.3 Modi
17.3.1 Aprire files
17.4 Basic Editing
17.5 Salvere i file
17.5.1 Uscire da Emacs
18 Gestione dei pacchetti Slackware
18.1 Descrizione del formato del pacchetto
18.2 Programmi per la gestione dei pacchetti
18.2.1 pkgtool
18.2.2 installpkg
18.2.3 removepkg
18.2.4 upgradepkg
18.2.5 rpm2tgz/rpm2targz
18.3 Creare Pacchetti
18.3.1 explodepkg
18.3.2 makepkg
18.3.3 SlackBuild Scripts
18.4 Creare Tags e Tagfiles (per l'installazione)
19 ZipSlack
19.1 Cos'è ZipSlack?
19.1.1 Vantaggi
19.1.2 Svantaggi
19.2 Ottenere ZipSlack
19.2.1 Installazione
19.3 Avviare ZipSlack
Glossary
A. The GNU General Public License
A.1. Preamble
A.2. TERMS AND CONDITIONS
A.3. How to Apply These Terms to Your New Programs
Index
List of Tables
2-1. Sezione delle MAN Pages
3-1. Come Contattare Slackware Linux, Inc.
3-2. Requisiti di Sistema
3-3. Serie di Software
9-1. Valori ottali dei permessi
13-1. comandi ftp
16-1. Movimenti
16-2. Modificare
16-3. Cercare
16-4. Salvare ed uscire
17-1. Comandi base per l'editing
18-1. Opzioni di installpkg
18-2. Opzioni di removepkg
18-3. Opzioni di priorità dei Tagfile
List of Figures
4-1. Menù di Configurazione del Kernel
6-1. xorgconfig Configurazione Mouse
6-2. xorgconfig Horizontal Sync
6-3. xorgconfig Vertical Sync
6-4. xorgconfig Scheda Video
6-5. Desktop Configuration with xorgconfig
7-1. liloconfig
7-2. liloconfig Expert Menu
11-1. Basic ps output
13-1. Connessione telnet ad un server web
13-2. Il menu principale di Pine
13-3. Schermata principale di Elm
13-4. Schermata principale di Mutt
13-5. Pagina iniziale di default di Lynx
13-6. Links, con il menù file aperto
13-7. Due utenti in una sessione di talk
13-8. Due utenti in una sessione ytalk
16-1. Una sessione di vi.
18-1. Il menu principale di pkgtool.
18-2. Pkgtool view mode
List of Examples
8-1. Elenco delle variabili d'ambiente ottenuto con set

Prefazione

Per chi è questo libro

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.

Cambiamenti dalla Prima Edizione

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:

Organizzazione di questo libro

Chapter 1, Introduzione

Fornisce del materiale introduttivo su Linux, Slackware, e sui movimenti Open Source e Free Software.

Chapter 2, Help

Descrive le risorse di aiuto disponibili su un sistema Slackware Linux, e quelle disponibili on line.

Chapter 3, Installazione

Descrive il processo di installazione passo-passo con delle immagini per fornire un aiuto grafico.

Chapter 4, Configurazione del Sistema

Descrive i file di configurazione importanti e copre la ricompilazione del kernel.

Chapter 5, Configurazione della Rete

Spiega come connettere una macchina con Slackware Linux ad una rete. Copre argomenti come TCP/IP, PPP/dial-up, reti wireless, ed altro.

Chapter 6, Il Sistema X Window

Descrive come configurare e usare il Sistema X Window in Slackware.

Chapter 7, Boot

Descrive il processo per il quale un computer parte in Slackware Linux. Ricopre anche la modalita' dual-booting con un sistema operativo Microsoft Windows.

Chapter 8, La Shell

Descrive la potente interfaccia a riga di comando per Linux.

Chapter 9, Struttura del Filesystem

Descrive la struttura del filesystem, comprendendo file ownership, permessi, e link.

Chapter 10, Manipolazione di Files e Directories

Descrive i comandi usati per manipolare files e directories dalla interfaccia a riga di comando.

Chapter 11, Controllo dei processi

Descrive il potente sistema di controllo dei processi di Linux ed i comandi usati per interagire con applicazioni in esecuzione multipla.

Chapter 12, Essential System Administration

Descrive attivita' di system administration di base come aggiungere e rimuovere utenti, eseguire lo shutdown del sistema correttamente, e altro.

Chapter 13, Comandi di Network di base

Descrive la collezione di programmi per la rete forniti con Slackware.

Chapter 14, Sicurezza

Descrive vari tools a disposizione per mantenere il tuo sistema Slackware sicuro, includendo iptables e tcpwrappers.

Chapter 15, Archiviazione dei Files

Descrive diversi metodi di compressione e archiviazione e le utilities disponibili per Linux.

Chapter 16, vi

Descrive il potente editor di testovi.

Chapter 17, Emacs

Descrive il potente editor di testo Emacs.

Chapter 18, Slackware manipolazione dei Package

Descrive il sistema di package di Slackware e il processo utilizzato per creare packages personalizzati e tagfiles.

Chapter 19, ZipSlack

Descrive la versione di Linux ZipSlack che puo' essere utilizzata da Windows senza necessitare alcuna installazione.

Appendix A, La GNU General Public License

Descrive i termini della licenza sotto la quale Slackware Linux e questo libro possono essere copiati e distribuiti.

Convenzioni usate in questo libro

Per fornire un testo consistente e di facile lettura, molte convenzioni sono seguite all'interno di questo libro.

Convenzioni Tipografiche

Carattere Corsivo

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.

Grassetto

Un testo in grassetto e' utilizzato per esempi di testo digitato da utente.

Inserimenti 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.

Esempi

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

Riconoscimenti

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


Chapter 1 Una introduzione a Slackware Linux

1.1 Cos'è Linux?

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".


1.1.1 Due parole su GNU

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


1.2 Cos'è Slackware?

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 :^)


1.3 Open Source e Free Software

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.


Chapter 2 Help

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.


2.1 Sistema di Help

2.1.1 man

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. ;)


2.1.2 La Directory /usr/doc

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.


2.1.3 HOWTO e mini-HOWTO

È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:

Frequently
Asked
Questions

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.


2.2 Help Online

in aggiunta alla documentazione inclusa nel nostro beneamato Sistema Operativo Slackware Linux, ci sono una moltitudine di risorse online reperibili per apprendere al meglio.


2.2.1 Il Sito Ufficiale e il Forum di aiuto

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.


2.2.2 Supporto E-mail

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.


2.2.2.1 La mailing list dello Slackware Linux Project

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/

slackware-announce

La mailing list slackware-announce è usata per per annunciare l'uscita di una nuova versione, un aggiornamento o per informazioni generali.

slackware-security

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.


2.2.3 Siti non ufficiali e forum di aiuto

2.2.3.1 Siti utili

Google

La cintura nera dei Motori di Ricerca. Quando vuoi trovare esattamente quello che cerchi, domandalo a google. Ricorda: “Google è tuo amico!”.

Google:Linux

Ricerche specifiche per Linux

Google:BSD

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

Google:Groups

Quì puoi fare ricerche direttamente nei forum di discussione.

http://userlocal.com

Un tesoro virtuale di conoscenze, buoni consigli, prime esperienze ed interessanti articoli. Spesso il primo posto dove puoi trovare novità sullo sviluppo di Slackware.


2.2.3.2 Risorse sul web

linuxquestions.org

Il forum ufficiale per gli utenti di Slackware Linux.

LinuxISO.org Slackware Forum

“Un posto dove scaricare e avere aiuto su Linux.”

alt.os.linux.slackware FAQ

Altre FAQ


2.2.3.3 Gruppi Usenet (NNTP)

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.


Chapter 3 Installazione

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.


3.1 Procurarsi Slackware

3.1.1 Il Set di Dischi e il Box Ufficiale

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.

http://store.slackware.com

Per i tuoi ordini, puoi anche chiamarci o inviarci una e-mail.

Table 3-1. Come Contattare Slackware Linux, Inc.

Mezzo Dettagli Contatto
Telefono 1-(925) 674-0783
Sito Web http://store.slackware.com
Email orders@slackware.com
Posta 1164 Claremont Drive, Brentwood, CA 94513

3.1.2 Via Internet

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:

http://www.slackware.com/

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.


3.2 Requisiti di Sistema

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.


3.2.1 Le Serie di Software

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.


3.2.2 Tipologie di Installazione

3.2.2.1 Floppy

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.


3.2.2.2 CD-ROM

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.


3.2.2.3 NFS

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.


3.2.3 Disco di Avvio

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.


3.2.4 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.


3.2.5 Disco Supplementare

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.


3.2.6 Creare i dischi

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

3.3 Partizionamento

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.

Warning

È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.


3.4 Il Programma setup

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.


3.4.1 HELP

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.


3.4.2 KEYMAP

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.


3.4.3 ADDSWAP

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.


3.4.4 TARGET

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.)


3.4.5 SOURCE

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.


3.4.6 SELECT

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.


3.4.7 INSTALL

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.


3.4.8 CONFIGURE

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:


3.4.8.1 Selezione Kernel

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.


3.4.8.2 Creare un disco di avvio

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.


3.4.8.3 Modem

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.


3.4.8.4 Timezone

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.


3.4.8.5 Mouse

Questa sezione chiede che tipo di mouse possiedi, e se desideri abilitare il supporto da consolegpm(8) all'avvio.


3.4.8.6 Orologio Hardware

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.


3.4.8.7 Font

La sezione font ti permette di scegliere da una lista di font per console.


3.4.8.8 LILO

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.


3.4.8.9 Network

Attualmente, la sezione di rete corrisponde a netconfig. Vedi Section 5.1 per maggiori informazioni.


3.4.8.10 X Window Manager

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.


Chapter 4 Configurazione del Sistema

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.


4.1 Panoramica sul Sistema

È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.


4.1.1 Organizzazione del File System

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.

bin

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.

boot

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.

dev

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.

etc

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.

home

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).

lib

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ì.

mnt

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

opt

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.

proc

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.

root

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.

sbin

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.

tmp

Quì vengono collocati i files temporanei. Tutti gli utenti hanno accesso in lettura e scrittura in questa directory.

usr

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.

var

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.


4.1.2 Ricerca dei file

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.


4.1.2.1 which

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.


4.1.2.2 whereis

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.


4.1.2.3 find

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...


4.1.2.4 slocate

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.


4.1.3 The /etc/rc.d Directory

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.


4.1.3.1 System Startup

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:

rc.S

Questo è l'attuale script di inizializzazione del sistema.

rc.modules

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à.

rc.pcmcia

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.

rc.serial

Configura la tua porta seriale eseguento l'appropriato comando setserial.

rc.sysvinit

Ricerca script System V init per il desirato runlevel e li esegue. Questo è discusso più in dettaglio più sotto.


4.1.3.2 Script di Inizializzazione dei Runlevel

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.

rc.0

Arresto del sistema (runlevel 0). Di default il file rc.0 è un link simbolico a rc.6.

rc.4

Avvio in modalità multiutente (runlevel 4) con interfaccia grafica (X11). Il programma che gestisce l'accesso potrebbe essere sia KDM che GDM o XDM.

rc.6

Riavvio del sistema (runlevel 6).

rc.K

Avvio in modalità utente singolo (runlevel 1).

rc.M

Modalità multiutente (runlevel 2 e 3) con accesso standard: in modalità testuale. Si tratta del runlevel preimpostato in Slackware.


4.1.3.3 Inizializzazione dei Servizi di Rete

I runlevel 2, 3 e 4 avvieranno i servizi di rete. Di seguito sono elencati i file responsabili dell'inizializzazione dei servizi:

rc.inet1

Creato dal programma netconfig, lo script rc.inet1 assolve al compito di configurare le interfacce di rete esistenti.

rc.inet2

Eseguito dopo rc.inet1, avvia tutti i servizi base della rete.

rc.atalk

Avvia i servizi di rete AppleTalk.

rc.httpd

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.

rc.news

Avvia il news server.


4.1.3.4 Compatibilità con System V

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.


4.1.3.5 Altri File

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.

rc.gpm

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.

rc.font

Carica il font preimpostato per lo schermo della console di Linux.

rc.local

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.


4.2 Selezionare un Kernel

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.


4.2.1 La directory /kernels sul CD-ROM di Slackware

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.


4.2.2 Compilare un kernel a partire dal codice sorgente

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.


4.2.2.1 Compilazione di un Kernel Linux Serie 2.4

% 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)

Figure 4-1. Menù di Configurazione del Kernel

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.


4.2.2.2 Compilazione di un Kernel Linux Serie 2.6

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

4.2.3 Impiego dei Moduli del Kernel

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.


Chapter 5 Configurazione di Rete

5.1 Introduzione: netconfig è tuo amico.

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:

  1. 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.

  2. 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.


5.2 Configurazione dell'Hardware di Rete

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.


5.2.1 Caricare i Moduli 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.


5.2.2 Schede di rete LAN (10/100/1000Base-T e Base-2)

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.


5.2.3 Modem

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.


5.2.4 PCMCIA

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.


5.3 Configurazione TCP/IP

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.


5.3.1 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.


5.3.2 Indirizzamento IP statico

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.


5.3.3 /etc/rc.d/rc.inet1.conf

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.


5.3.4 /etc/resolv.conf

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



5.3.5 /etc/hosts

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.


5.4 PPP

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.


5.4.1 pppsetup

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.


5.4.2 /etc/ppp

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.

Note

La maggior parte di questi file non esisterà fino a quando tu non abbia avviato pppsetup.


5.5 Wireless

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:

  1. Supporto hardware per la scheda di rete

  2. Configurare la scheda per la connessione ad un access point wireless

  3. Configurare la rete


5.5.1 Supporto Hardware

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.


5.5.2 Configurare le impostazioni 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)

Warning

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.


5.5.3 Configurare la rete

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.


5.6 File System di Rete

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.


5.6.1 SMB/Samba/CIFS

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$

5.6.2 Network File System (NFS)

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.


Chapter 6 Configurazione di X

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.


6.1 xorgconfig

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.

Figure 6-1. xorgconfig Configurazione Mouse

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.

Figure 6-2. xorgconfig Horizontal Sync

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.

Figure 6-3. xorgconfig Vertical Sync

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).

Figure 6-4. xorgconfig Scheda Video

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.


6.2 xorgsetup

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.


6.3 xinitrc

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.


6.4 xwmconfig

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

Figure 6-5. Desktop Configuration with xorgconfig

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.


6.5 xdm

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.


Chapter 7 La fase di boot

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.


7.1 LILO

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:

Figure 7-1. liloconfig

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.

Warning

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ì:

Figure 7-2. liloconfig Expert Menu

Qualsiasi sia la configurazione del tuo sistema, preparare un boot loader è facile. liloconfig rende molto semplice questa fase.


7.2 LOADLIN

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.


7.3 Dual Boot

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.


7.3.1 Windows

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.


7.3.1.1 Usare LILO

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.


7.3.1.2 Usare LOADLIN

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.


7.3.1.3 Trucco deprecato per Windows NT

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.

  1. Installa Windows NT

  2. Installa Linux, assicurarsi che lilo sia installato nel superblock della partizione Linux

  3. Prendi i primi 512 byte della partizione root di Linux e scrivili nella partizione di Windows NT

  4. 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.


7.3.2 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.<


Chapter 8 La shell

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).


8.1 Utenti

8.1.1 Il login

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!


8.1.2 Root: il superutente

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.

Note

All'utente root è permesso di diventare qualsiasi utente senza conoscere la sua password.


8.2 La linea di comando

8.2.1 Avviare i programmi

È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.


8.2.2 Caratteri jolly

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

8.2.3 Redirezione dell' Input/Output e Piping

(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.


8.3 La Bourne Against Shell (bash)

8.3.1 Le variabili d'ambiente

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

8.3.2 La Tab Completion

(Qui va di nuovo qualcosa di figo)

  1. Una interfaccia a riga di comando richiede molta dattilografia

  2. Digitare è lavoro.

  3. 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.


8.4 Terminali virtuali

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)


8.4.1 Screen

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.


Chapter 9 La struttura del filesystem

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.


9.1 Proprietari di un file

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


9.2 I Permessi

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:

Proprietario u
Gruppo g
Resto del mondo o
Tutti i precedenti a

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.


9.3 I link

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.


9.4 Il mount dei dispositivi

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.


9.4.1 fstab

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.


9.4.2 mount e umount

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

9.5 NFS

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.


Chapter 10 Gestire File e Directories

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.


10.1 Navigazione : ls, cd, e pwd

10.1.1 ls

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.


10.1.2 cd

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.


10.1.3 pwd

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

10.2 Pagers: more, less, and most

10.2.1 more

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.


10.2.2 less

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.


10.2.3 most

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.


10.3 Output semplice: cat e echo

10.3.1 cat

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.


10.3.2 echo

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.


10.4 Creazione: touch e mkdir

10.4.1 touch

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.


10.4.2 mkdir

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

10.5 Copy e Move

10.5.1 cp

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.


10.5.2 mv

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 .


10.6 Cancellazione: rm e rmdir

10.6.1 rm

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.


10.6.2 rmdir

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.


10.7 Aliasing di files con ln

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

Chapter 11 Controllo dei Processi

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.


11.1 Backgrounding

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.


11.2 Foregrounding

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.


11.3 ps

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:

Figure 11-1. Basic ps output

% ps
    PID TTY          TIME CMD
    7923 ttyp0    00:00:00 bash
    8059 ttyp0    00:00:00 ps

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.


11.4 kill

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.


11.5 top

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.


Chapter 12 Amministrazione basilare di Sistema

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.


12.1 Utenti e Gruppi

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.


12.1.1 Script Forniti

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.

Note

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

12.1.2 Cambiare le Password

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.


12.1.3 Cambiare le informazione dell'utente

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.


12.2 Utenti e Gruppi, la strada difficile

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.


12.3 Spegnere correttamente

È 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.

Note

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.


Chapter 13 Basic Network Commands

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.


13.1 ping

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).


13.2 traceroute

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.


13.3 Tool DNS

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?


13.3.1 host

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?


13.3.2 nslookup

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

13.3.3 dig

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.


13.4 finger

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.


13.5 telnet

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.

Warning

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.


13.5.1 Altri usi di telnet

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.


13.6 Secure Shell

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.


13.7 email

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.


13.7.1 pine

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.

Figure 13-2. Il menu principale di Pine

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.


13.7.2 elm

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.

Figure 13-3. Schermata principale di Elm

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.


13.7.3 mutt

“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

Figure 13-4. Schermata principale di Mutt

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.


13.7.4 nail

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.


13.8 Browser

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.


13.8.1 lynx

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

Figure 13-5. Pagina iniziale di default di 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.


13.8.2 links

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.

Figure 13-6. Links, con il menù file aperto


13.8.3 wget

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.


13.9 FTP Clients

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.


13.9.1 ftp

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)

13.9.2 ncftp

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

13.10 Comunicare con altre persone

13.10.1 wall

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 :)


13.10.2 talk

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]

Figure 13-7. Due utenti in una sessione di talk

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.


13.10.3 ytalk

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]

Figure 13-8. Due utenti in una sessione ytalk

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.


Chapter 14 Security

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.


14.1 Disabling Services

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).


14.1.1 Servizi lanciati da inetd

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)

14.1.2 Servizi avviati dagli script di inizializzazione (init scripts)

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

14.2 Controllo degli accessi all'host

14.2.1 iptables

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.


14.2.2 tcpwrappers

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

14.3 Keeping Current

14.3.1 La mailing list slackware-security

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.


14.3.2 La directory /patches

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?)


Chapter 15 Archiviare file

15.1 gzip

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).


15.2 bzip2

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

15.3 tar

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.


15.4 zip

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.


Chapter 16 Vi

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.


16.1 Avviare vi

vi può essere avviato da linea di comando in svariati modi. Il modo più semplice è:

% vi

Figure 16-1. Una sessione di 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.


16.2 Modes

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.


16.2.1 Command Mode

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.


16.2.2 Insert Mode

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.


16.3 Aprire i file

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.


16.4 Salvare i file

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.


16.5 Uscire da vi

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.


16.6 Configurazione di vi

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.


16.7 Vi Keys

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

Chapter 17 Emacs

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.


17.1 Avviare Emacs

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.


17.1.1 Command Keys

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'.


17.2 Buffers

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.

Note

Sotto X, la lista dei buffer è anche disponibile nel menu Buffer nella barra dei menu.


17.3 Modi

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).


17.3.1 Aprire files

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.

Note

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.


17.4 Basic Editing

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.


17.5 Salvere i file

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.


17.5.1 Uscire da Emacs

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à.


Chapter 18 Gestione dei pacchetti Slackware

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.


18.1 Descrizione del formato del pacchetto

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.


18.2 Programmi per la gestione dei pacchetti

Esistono quattro programmi principali per la gestione dei pacchetti. Si occupano dell'installazione, della rimozione e dell'aggiornamento.


18.2.1 pkgtool

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.

Figure 18-1. Il menu principale di pkgtool.

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.

Figure 18-2. Pkgtool view mode

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.


18.2.2 installpkg

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.


18.2.3 removepkg

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.


18.2.4 upgradepkg

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.


18.2.5 rpm2tgz/rpm2targz

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.


18.3 Creare Pacchetti

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.


18.3.1 explodepkg

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.


18.3.2 makepkg

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.


18.3.3 SlackBuild Scripts

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.


18.4 Creare Tags e Tagfiles (per l'installazione)

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.


Chapter 19 ZipSlack

19.1 Cos'è ZipSlack?

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.


19.1.1 Vantaggi

  • Non richiede il ripartizionamento del tuo hard disk.

  • È un ottimo modo per imparare Slackware Linux senza confondere l'utente con il processo di installazione.


19.1.2 Svantaggi

  • Usa il filesystem del DOS, che è più lento del filesystem nativo di Linux.

  • Non funziona con Windows NT.


19.2 Ottenere ZipSlack

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.


19.2.1 Installazione

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:).


19.3 Avviare ZipSlack

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.

Glossary

Account

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.

Variabile d'ambiebte (Environment variabile)

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.

Background

Ogni processo che sta lavorando senza accettare input o senza essere controllato da un terminale, si dice che sta lavorando in background.

Dischetto di Avvio (Boot disk)

Un floppy disk contente un sistema operativo (nel nostro caso il kernel Linux) dal quale un computer può avviarsi.

Compilare

Convertire un codice sorgente in codice “binario” comprensibile dalla macchina.

Demone (Daemon)

Un programma progettato per lavorare in background e, senza l'intervento di un utente, assolvere un determinato obiettivo (usualmente provedere un servizio).

Darkstar

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.

Desktop Environment

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.

Device driver

Una parte di codice nel kernel che direttamente controlla uno specifico componente hardware.

Device node

Un particolare tipo di file nel filesystem /dev che rappresenta un componente hardware nel sistema operativo.

DNS

Domain Name Service. Un sistema per convertire i nomi dei computer collegati in una rete nel loro indirizzo numerico.

Nome di Dominio (Domain Name)

Il nome DNS del computer, a parte il suo hostname.

Dot file

Su Linux, i file nascosti hanno un filename che inizia per un dot ('.').

Dotted quad

Il formato di un indirizzo IP, così chiamato perchè consiste in 4 numeri (da 0 a 255) separati da un dot ('.').

Caricatore Dinamico (Dynamic loader)

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.

Epoca (Epoch)

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.

Filesystem

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).

Foreground

Un programma che sta accettando input o viene controllato da un terminale si dice che sta lavorando in foregroud.

Framebuffer

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.

FTP

File Transfer Protocol. FTP è il più popolare metodo per trasferire dati tra i computer.

Gateway

Un computer attraverso il quale i dati su una rete sono trasferiti ad un altra rete.

GID

Identificatore del Gruppo. Il GID è un numero unico attribuito ad un gruppo di utenti.

Gruppo

Gli utenti su Unix sono divisi in “gruppi”, i quali contengono molti utentei e sono usati per controllare la loro esistenza e gestirli facilmente.

GUI

Graphical User Interface. Interfaccia software che usa elementi grafici come pulsanti, scrollbar, finestre etc. per facilitare l'input e l'output basati sul testo.

Home directory

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.

HOWTO

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.

HTTP

Hypertext Transfer Protocol. HTTP è il protocollo più usato nel World Wide Web.

ICMP

Internet Control Message Protocol. Un protocollo molto basilare, utilizzato maggiormente per i ping.

Kernel

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.

Modulo del Kernel (Kernel module)

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.

Libreria

Collezione di funzioni che possono essere condivise da vari programmi.

LILO

LInux LOader. LILO è il più usato boot manager su Linux.

LOADLIN

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).

Sezione di Man (Man section)

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..

MBR

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.

Motif

Popolare toolkit per la programmazione utilizzato in molti programmi X datati.

MOTD

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.

Punto di Mount (Mount point)

Directory vuota in un filesystem dove un altro filesystem può essere “montato” o innestato.

Server dei Nomi (Nameserver)

Server di informazioni DNS. Traduce i nomi DNS in indirizzi IP numerici.

Interfaccia di Rete (Network Interface)

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.

NFS

Network Filesystem. NFS permette di montare un filesystem remoto come se fosse in locale provvedendo un metodo trasparente per lo scambio di file.

Ottale

Sistema numerico a base 8, con cifre da 0 a 7

Pager

Programma per X che permette agli utenti di vedere e di commutare tra più “desktop”.

Partizione

Parte di un hard disk. Il filesystem esiste in cima alla partizione.

PPP

Point-to-Point Protocol. PPP è usato principalmente per collegare un modem ad un Internet Service Provider.

Processo

Un programma in esecuzione.

Directory Radice (Root directory)

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”.

Disco di Root (Root disk)

Il disco (solitamente fisso) in cui la directory root è memorizzata

Tabella di Routing (Routing Table)

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...

Runlevel

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.

Secure shell

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.

Servizio

La condivisione di informazioni e/o dati tra programmi da un singolo “server” a più “client”. HTTP, FTP, NFS, etc. sono servizi.

Shadow password suite

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.

Shell

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.

Shell builtin

Un comando definito dentro la shell stessa. Per esempio, bash ha un cd builtin.

Segnale (Signal)

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.

SLIP

Serial Line Interface Protocol. SLIP è molto simile al protocollo PPP, e viene usato per connettere due macchine tramite la porta seriale.

Collegamento Simbolico (Symbolic Link)

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.

Pacchetto Software (Software Package)

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.

Serie di Software (Software series)

Collezione di pacchetti software in Slackware. I pacchetti KDE sono in “kde”, i pacchetti per il networking sono in“n” etc..

Codice Sorgente (Source Code)

Codice leggibile nel quale molti programmi sono scritto. Il codice sorgente poi è compilato in codice “binario”.

Standard Error (stderr)

The Unix-standard output stream for errors. Programs write any error messages on stderr, so that they can be separated from normal output.

Standard Input (stdin)

Lo standard stream Unix per l'input. I dati possono essere ridiretti verso lo standard input di un programma da ogni sorgente.

Standard Output (stdout)

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.

Sottorete (Subnet)

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”).

Superblocco (Superblock)

Su Linux, le partizioni sono considerate come blocchi. Un blocco è di 512 byte. Il superblock è composto dai primi 512 byte di una partizione.

Disco Supplementare (Supplemental Disk)

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.

Process Sospeso (Suspended Process)

Un processo il quale è stato bloccato fino a quando verrà terminato o ripreso.

Spazio di Swap (Swap Space)

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.

Tagfile

Un file usato dal setup di Slackware che descrive l'insieme di pacchetti che verrà installato.

Terminale

Interfaccia utente consistente almeno di un monitor e qualche strumento per l'input (generalmente una tastiera).

Toolkit, GUI

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”.

UID

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.

VESA

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.

Terminale Virtuale (Virtual Terminal)

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.

Gestore di Finestre (Window manager)

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.

Directory di lavoro (Working directory)

La directory in cui un programma si considera essere quando è in esecuzione.

Programma Wrapper (Wrapper Program)

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.

Server X (X server)/glossterm>

Il programma nel sistema X Window che si interfaccia con l'hardware grafico e gestisce i programmi X in esecuzione.

SistemaX Window (X Window System)

Sistema grafico Network-oriented utilizzato in molti sistemi Unix-like come Linux.


Appendix A. The GNU General Public License

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.


A.1. Preamble

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.


A.2. TERMS AND CONDITIONS

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  1. 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.

  2. 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.

  3. 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:

    1. You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.

    2. 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.

    3. 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.

  4. 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:

    1. 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,

    2. 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,

    3. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. 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.

  12. 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.

  13. 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


A.3. How to Apply These Terms to Your New Programs

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.


Index

Symbols

3-D hardware, Configurazione di X
802.11, Wireless

C

Caratteri jolly, Caratteri jolly
cat, cat
cd, cd
CD-ROM, fstab
checksum, La directory /patches
chmod , Altri File, I Permessi
chown, Proprietari di un file
CIFS, SMB/Samba/CIFS
compressione, gzip

D

daemons, Controllo dei Processi, ps, Servizi lanciati da inetd
darkstar, Il login
Debian Linux, Gestione dei pacchetti Slackware
decompressione, gzip
default gateway, /etc/rc.d/rc.inet1.conf
default route, /etc/rc.d/rc.inet1.conf
devices
mounting, Il mount dei dispositivi
DHCP, Introduzione: netconfig è tuo amico., DHCP
client, DHCP
directories, ls
changing, cd
copying, cp
creating, mkdir
current, pwd
moving, mv
removing, rm
DNS, /etc/resolv.conf, Tool DNS, tcpwrappers
diagnostics, dig
Domain Name Service
see DNS
DOS, Panoramica sul Sistema, La fase di boot, Cos'è ZipSlack?
Dual booting, Dual Boot

E

echo, echo
editor
see Emacs or vi
elvis, Vi
emacs, Due parole su GNU, Emacs
basic commands, Basic Editing
basic editing, Basic Editing
buffers, Buffers
modes, Modi
quitting, Uscire da Emacs
saving files, Salvere i file
starting, Avviare Emacs
email, email
composing, elm
email clients
elm, pine, elm
mutt, mutt
nail, nail
pine, pine
environment variables, Avviare i programmi, Le variabili d'ambiente
explodepkg, explodepkg

F

FAQ, HOWTO e mini-HOWTO
fdisk, Partizionamento
file
archiviazione, tar
comprimere, gzip
file systems, TARGET, Organizzazione del File System, La struttura del filesystem
journaled, Spegnere correttamente
layout, Organizzazione del File System
network, File System di Rete
SMB, SMB/Samba/CIFS
files
changing ownership, Proprietari di un file
copying, cp
displaying, cat
downloading, wget
editing, Emacs
listing, ls
moving, mv
ownership, Proprietari di un file
permission, I Permessi
removing, rm
timestamps, touch
find, find
firewall, iptables
floppy disk, LILO, mount e umount
floppy disks
copying, Creare i dischi
font, Font, Altri File
free software, Open Source e Free Software
Free Software Foundation, Due parole su GNU, Open Source e Free Software
FTP, File System di Rete
clients, FTP Clients
commands, ftp
FTP clients
NcFTP, ncftp

H

hard disk, Partizionamento
home directory, Utenti e Gruppi, la strada difficile
HOWTO, HOWTO e mini-HOWTO
httpd
see Apache

I

IBM, SMB/Samba/CIFS
ICMP, ping
IDE, Partizionamento
idle process, top
ifconfig, Configurazione TCP/IP
inetd, Disabling Services
init, System Startup, Script di Inizializzazione dei Runlevel, xdm, Spegnere correttamente
init scripts, Disabling Services
installation, Installazione
boot disk, Disco di Avvio
CD-ROM, CD-ROM, SOURCE
floppy, Floppy
low memory, Requisiti di Sistema
NFS, NFS, SOURCE
PLIP,SLIP,PPP, NFS
root disk, Disco di root
supplemental disk, Disco Supplementare
installation methods, INSTALL
installazione
NFS, Requisiti di Sistema
requirements di sistema, Requisiti di Sistema
installpkg, installpkg, explodepkg
IP address, Configurazione TCP/IP, host
static, Indirizzamento IP statico
IP forwarding, iptables
iptables, iptables
ISA, Modem

J

jobs, Foregrounding
journaled file system, Spegnere correttamente

L

LILO, LILO, La fase di boot
configuration, LILO
links, La struttura del filesystem, I link, Aliasing di files con ln
Linux kernel, Due parole su GNU
Linux Loader
see LILO
LISP, Cos'è Slackware?
Loadlin, La fase di boot, LOADLIN
log in
remote, telnet, Secure Shell
login, Il login
login name, Script Forniti
ls, ls

M

MacOS, Panoramica sul Sistema, xwmconfig
mail
spool file, Utenti e Gruppi, la strada difficile
mail folders, pine
makepkg, makepkg
man pages, man
manuals
see man pages
Master Boot Record (MBR), Windows
MD5 checksum, La directory /patches
Meta key, Basic Editing
Microsoft, SMB/Samba/CIFS
modem, Modem
modems, Modem
WinModems, Modem
mount, Il mount dei dispositivi
mouse, Mouse, Altri File, xorgconfig
multitasking, ps
multiuser, La struttura del filesystem

O

open source, Open Source e Free Software
Open Source Initiative, Open Source e Free Software

P

package management, Gestione dei pacchetti Slackware
packages
installing, pkgtool, installpkg
making, Creare Pacchetti
removing, pkgtool, removepkg
upgrading, pkgtool, upgradepkg
packet filtering, iptables
pagers, more
less, less
more, more
most, most
paging, ps
partitioning, Partizionamento
password, Il login
passwords
changing, Cambiare le Password
choosing, Script Forniti
patches, La directory /patches
PATH, Avviare i programmi
PCI, Modem
PCMCIA, System Startup, PCMCIA
ping, ping
pipe, Redirezione dell' Input/Output e Piping
pkgtool, pkgtool
PPP, PPP
setup, pppsetup
process, Controllo dei Processi
suspend, Backgrounding
terminating, kill
programs
installing, Gestione dei pacchetti Slackware
listing, ps
running in background, Backgrounding
suspending, Backgrounding
pwd, pwd

S

Samba, SMB/Samba/CIFS
configuration, SMB/Samba/CIFS
SCP, File System di Rete
screen, Screen
SCSI, Partizionamento
Secure Shell (SSH), Secure Shell, Servizi avviati dagli script di inizializzazione (init scripts)
security, La mailing list dello Slackware Linux Project, Security
patches, La directory /patches
sendmail, Cos'è Linux?
serial ports, System Startup
services
disabling, Disabling Services
setup, Il Programma setup
tagfiles, Creare Tags e Tagfiles (per l'installazione)
shell, La shell
shells, Utenti e Gruppi, la strada difficile
shutdown, Spegnere correttamente
Silicon Graphics, xwmconfig
SlackBuild, SlackBuild Scripts
Slackware Linux
official CDs, Il Set di Dischi e il Box Ufficiale
requisiti minimi, Requisiti di Sistema
software series, Le Serie di Software
store, Il Set di Dischi e il Box Ufficiale
SLIP, PPP
slocate, slocate
SLS Linux, Cos'è Slackware?
SMB, SMB/Samba/CIFS
Solaris, Network File System (NFS)
static IP, Introduzione: netconfig è tuo amico.
su, Root: il superutente
Sun Microsystems, Network File System (NFS), xwmconfig
superutente, Root: il superutente
support
email, Supporto E-mail
mailing lists, La mailing list dello Slackware Linux Project, La mailing list slackware-security
patches, La directory /patches
usenet, Gruppi Usenet (NNTP)
swap partition, Partizionamento, ADDSWAP
symbolic link, I link
system administration, Amministrazione basilare di Sistema
system load, top
system resources, ps
System V, The /etc/rc.d Directory, System Startup
init compatibility, Compatibilità con System V

U

umask, I Permessi
upgradepkg, upgradepkg
URL, wget
USB, Modem
Usenet, Gruppi Usenet (NNTP)
user, Proprietari di un file
users
adding, Utenti e Gruppi
messaging, wall
online chat, talk
passwords, Script Forniti
querying, finger
removing, Script Forniti
utenti, Root: il superutente

V

vi, Due parole su GNU, Vi
aprire file, Aprire i file
avviare, Avviare vi
configurazione, Configurazione di vi
modes, Modes
salvare file, Salvare i file
uscire, Uscire da vi
vim, Vi
virtual terminals, Terminali virtuali
X Window System, Terminali virtuali
Volkdering, Patrick, Cos'è Slackware?

W

web browsers, Browser
links, links
lynx, lynx
text mode, lynx
wget, wget
web server, iptables
WEP, Configurare le impostazioni wireless
whatis, man
whereis, whereis
which, which
window manager, X Window Manager, Configurazione di X, xwmconfig
Windows, Cos'è Slackware?, Panoramica sul Sistema, xwmconfig, Windows, Cos'è ZipSlack?
Windows 2000, SMB/Samba/CIFS
Windows NT, SMB/Samba/CIFS, Trucco deprecato per Windows NT
Windows XP, SMB/Samba/CIFS
WinModems, Modem
wireless networking
hardware, Supporto Hardware
wireless networking, Wireless
configuration, Configurare le impostazioni wireless

X

X Window System, Script di Inizializzazione dei Runlevel
X Window System, X Window Manager, Configurazione di X, Controllo dei Processi
configuration, Configurazione di X
login manager, xdm
monitor configuration, xorgconfig
remote clients, telnet
resolution, xorgconfig
server, Configurazione di X
starting, xinitrc
virtual terminals, Terminali virtuali
xdm, xdm
XEmacs, Emacs
Xorg, Configurazione di X
xterm, xinitrc

Z

zip, zip, Cos'è ZipSlack?, Installazione
ZipSlack, Cos'è ZipSlack?
zombie process, ps, top