Manuale di FreeBSD

The FreeBSD Italian Documentation Project

Benvenuto in FreeBSD! Questo manuale copre l'installazione e l'uso giorno per giorno di FreeBSD 4.11-RELEASE e FreeBSD 5.3-RELEASE. Questo manuale è un progetto in evoluzione ed è il frutto del lavoro di molti singoli. Molte sezioni non esistono ancora e alcune di quelle che esistono devono essere aggiornate. Se sei interessato ad aiutare questo progetto, invia un'email alla mailing list sul progetto di documentazione di FreeBSD. L'ultima versione di questo documento è sempre disponibile sul sito web di FreeBSD. Inoltre può essere scaricata in una varietà di formati e tipi di compressione dal server FTP di FreeBSD o da uno dei numerosi siti mirror. Se preferisci avere una copia rilegata del manuale, puoi comprarne una su FreeBSD Mall. Puoi anche voler cercare nel manuale.

La ridistribuzione e l'uso come sorgente (SGML DocBook) e in forme 'compilate' (SGML, HTML, PDF, PostScript, RTF e cosí via) con o senza modifiche, sono permessi a patto che le seguenti condizioni vengano rispettate:

  1. Le ridistribuzioni del codice sorgente (SGML DocBook) devono mantenere le suddette note sul copyright, questa lista di condizioni e il seguente avviso, non modificati, come prime linee di questo file.

  2. Le ridistribuzioni in forma compilata (trasformazioni in altri DTD, conversioni in PDF, PostScript, RTF e altri formati) devono riportare le suddette note di copyright, questa lista di condizioni e il seguente avviso nella documentazione e/o in altri materiali forniti con la distribuzione.

Importante: QUESTA DOCUMENTAZIONE È FORNITA DAL FREEBSD ITALIAN DOCUMENTATION PROJECT "COSÌ COM'È" E NON VIENE RICONOSCIUTA NESSUNA GARANZIA ESPLICITA O IMPLICITA, INCLUSE, MA NON SOLO, LE GARANZIE IMPLICITE DI COMMERCIABILITÀ E IDONEITÀ PER UNO SCOPO PARTICOLARE. IN NESSUN CASO IL FREEBSD ITALIAN DOCUMENTATION PROJECT POTRÀ ESSERE RITENUTO RESPONSABILE DI QUALSIASI DANNO DIRETTO, INDIRETTO, ACCIDENTALE, SPECIALE, SIMBOLICO, O CONSEGUENTE (INCLUSI, MA NON SOLO, L'ACQUISIZIONE DI BENI O SERVIZI SOSTITUTIVI; LA PERDITA D'USABILITÀ, DI DATI O DI PROFITTI; O L'INTERRUZIONE DEL LAVORO) COMUNQUE CAUSATO E SULLA BASE DI QUALUNQUE TEORIA DI RESPONSABILITÀ, SIA CONTRATTUALE, SIA OGGETTIVA, SIA FONDATA SULL'ILLECITO CIVILE (INCLUSA NEGLIGENZA O QUANT'ALTRO) DERIVANTE IN OGNI MODO DALL'USO DI QUESTA DOCUMENTAZIONE, ANCHE SE AVVISATO DELLA POSSIBILITÀ DI DETTO DANNO.

FreeBSD è un marchio registrato della Wind River Systems, Inc. È previsto che cambi a breve.

3Com e HomeConnect sono marchi registrati della 3Com Corporation.

3ware e Escalade sono marchi registrati della 3ware Inc.

ARM è un marchio registrato della ARM Limited.

Adaptec è un marchio registrato della Adaptec, Inc.

Adobe, Acrobat, Acrobat Reader, e PostScript sono marchi o marchi registrati della Adobe Systems Incorporated negli Stati Uniti e/o in altri paesi.

Apple, FireWire, Mac, Macintosh, Mac OS, Quicktime, e TrueType sono marchi della Apple Computer, Inc., registrati negli Stati Uniti e in altri paesi.

Corel and WordPerfect sono marchi o marchi registrati della Corel Corporation e/o delle sue sussidiarie in Canada, negli Stati Uniti e/o in altri paesi.

Sound Blaster è un marchio della Creative Technology Ltd. negli Stati Uniti e/o in altri paesi.

CVSup è un marchio registrato di John D. Polstra.

Heidelberg, Helvetica, Palatino, e Times Roman sono marchi o marchi registrati della Heidelberger Druckmaschinen AG negli Stati Uniti e in altri paesi.

IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390, e ThinkPad sono marchi della International Business Machines Corporation negli Stati Uniti, in altri paesi, o in entrambi.

IEEE, POSIX, e 802 sono marchi registrati dell'Institute of Electrical and Electronics Engineers, Inc. negli Stati Uniti.

Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, e Xeon sono marchi o marchi registrati della Intel Corporation o delle sue sussidiarie negli Stati Uniti e in altri paesi.

Intuit e Quicken sono marchi registrati e/o marchi di servizi registrati della Intuit Inc., o una delle sue sussidiarie, negli Stati Uniti e in altri paesi.

Linux è un marchio registrato di Linus Torvalds.

LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID e Mylex sono marchi o marchi registrati della LSI Logic Corp.

M-Systems e DiskOnChip sono marchi o marchi registrati della M-Systems Flash Disk Pioneers, Ltd.

Macromedia, Flash, e Shockwave sono marchi o marchi registrati della Macromedia, Inc. negli Stati Uniti e/o in altri paesi.

Microsoft, FrontPage, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media e Windows NT sono marchi o marchi registrati della Microsoft Corporation negli Stati Uniti e/o in altri paesi.

Netscape e Netscape Navigator sono marchi registrati della Netscape Communications Corporation negli Stati Uniti e in altri paesi.

GateD e NextHop sono marchi registrati e non registrati della NextHop negli Stati Uniti e in altri paesi.

Motif, OSF/1, e UNIX sono marchi registrati e IT DialTone e The Open Group sono marchi del The Open Group negli Stati Uniti e in altri paesi.

Oracle è un marchio registrato della Oracle Corporation.

PowerQuest e PartitionMagic sono marchi registrati della PowerQuest Corporation negli Stati Uniti e/o in altri paesi.

RealNetworks, RealPlayer, e RealAudio sono marchi registrati della RealNetworks, Inc.

Red Hat e RPM sono marchi o marchi registrati della Red Hat, Inc. negli Stati Uniti e in altri paesi.

SAP, R/3, e mySAP sono marchi o marchi registrati della SAP AG in Germania e in molti altri paesi in tutto il mondo.

Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JSP, JVM, Netra, Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS, e Ultra sono marchi o marchi registrati della Sun Microsystems, Inc. negli Stati Uniti e in altri paesi.

Symantec e Ghost sono marchi registrati della Symantec Corporation negli Stati Uniti e in altri paesi.

MATLAB è un marchio registrato della The MathWorks, Inc.

SpeedTouch è un marchio di Thomson

U.S. Robotics e Sportster sono marchi registrati della U.S. Robotics Corporation.

VMware è un marchio della VMware, Inc.

Waterloo Maple e Maple sono marchi o marchi registrati della Waterloo Maple Inc.

Mathematica è un marchio registrato della Wolfram Research, Inc.

XFree86 è un marchio della The XFree86 Project, Inc.

Ogg Vorbis e Xiph.Org sono marchi di Xiph.Org.

Molti dei nomi identificativi usati dai produttori e dai venditori per distinguere i loro prodotti sono anche dei marchi. Quando questi nomi appaiono nel libro, e il FreeBSD Project è al corrente del marchio, vengono fatti seguire dal simbolo ``™'' o ``®''.


Sommario
Prefazione
I. Per Cominciare
1 Introduzione
1.1 Sinossi
1.2 Benvenuto in FreeBSD!
1.3 Informazioni sul FreeBSD Project
2 Installazione di FreeBSD
2.1 Sinossi
2.2 Pre-installation Tasks
2.3 Starting the Installation
2.4 Introducing Sysinstall
2.5 Allocating Disk Space
2.6 Choosing What To Install
2.7 Choosing Your Installation Media
2.8 Committing to the Installation
2.9 Post-installation
2.10 Supported Hardware
2.11 Troubleshooting
2.12 Advanced Installation Guide
2.13 Preparing Your Own Installation Media
3 Basi di Unix
3.1 Sinossi
3.2 Console Virtuali e Terminali
3.3 I Permessi
3.4 Struttura delle Directory
3.5 Organizzazione del Disco
3.6 Montaggio e Smontaggio dei File system
3.7 I Processi
3.8 I Demoni, i Segnali, e come Uccidere i Processi
3.9 Le Shell
3.10 Editor di Testo
3.11 Dispositivi e Nodi di Dispositivo
3.12 Formati dei Binari
3.13 Per Maggiori Informazioni
4 Installazione delle Applicazioni: Port e Package
4.1 Sinossi
4.2 Uno Sguardo all'Installazione del Software
4.3 Ricerca della Propria Applicazione
4.4 Utilizzo del Sistema dei Package
4.5 Utilizzo della Collezione dei Port
4.6 Attività del Dopo Installazione
4.7 Avere a che Fare con Port non Funzionanti
5 L'X Window System
5.1 Sinossi
5.2 Capire X
5.3 Installazione di XFree86
5.4 XFree86 Configuration
5.5 Using Fonts in XFree86
5.6 The X Display Manager
5.7 Desktop Environments
II. Compiti Ordinari
6 Applicazioni Desktop
6.1 Sinossi
6.2 Browser
6.3 Produttività
6.4 Document viewers
6.5 Bilancio
6.6 Sommario
7 Multimedia
7.1 Sinossi
7.2 Configurazione della Scheda Audio
7.3 Audio MP3
7.4 Riproduzione Video
7.5 Configurazione delle Schede TV
8 Configurazione del Kernel di FreeBSD
8.1 Sinossi
8.2 Why Build a Custom Kernel?
8.3 Building and Installing a Custom Kernel
8.4 The Configuration File
8.5 Making Device Nodes
8.6 If Something Goes Wrong
9 Stampa
9.1 Sinossi
9.2 Introduction
9.3 Basic Setup
9.4 Advanced Printer Setup
9.5 Using Printers
9.6 Alternatives to the Standard Spooler
9.7 Troubleshooting
10 Compatibilità con i Binari di Linux
10.1 Sinossi
10.2 Installation
10.3 Installing Mathematica
10.4 Installing Maple
10.5 Installing Oracle
10.6 Installing SAP R/3
10.7 Advanced Topics
III. Amministrazione del Sistema
11 Configurazione e Messa a Punto
11.1 Sinossi
11.2 Configurazione Iniziale
11.3 Configurazione Centrale
11.4 Configurazione delle Applicazioni
11.5 Avvio dei Servizi
11.6 Configurazione delle Interfacce di Rete
11.7 Host Virtuali
11.8 File di Configurazione
11.9 Messa a Punto con sysctl
11.10 Messa a Punto dei Dischi
11.11 Messa a Punto dei Limiti del Kernel
11.12 Aggiunta di Spazio di Swap
12 La Procedura di Avvio di FreeBSD
12.1 Sinossi
12.2 Il Problema dell'Avvio
12.3 L'MBR, e gli Stadi di Avvio Uno, Due, e Tre
12.4 Interazione con il Kernel Durante l'Avvio
12.5 Device Hints
12.6 Init: Inizializzazione del Controllo dei Processi
12.7 Sequenza di Spegnimento
13 Gestione degli Utenti e degli Account di Base
13.1 Sinossi
13.2 Introduction
13.3 The Superuser Account
13.4 System Accounts
13.5 User Accounts
13.6 Modifying Accounts
13.7 Limiting Users
13.8 Personalizing Users
13.9 Groups
14 Sicurezza
14.1 Sinossi
14.2 Introduzione
14.3 Securing FreeBSD
14.4 DES, MD5, and Crypt
14.5 S/Key
14.6 Kerberos
14.7 Firewalls
14.8 OpenSSL
14.9 IPsec
14.10 OpenSSH
15 Mandatory Access Control
15.1 Sinossi
15.2 Key Terms in this Chapter
15.3 Explanation of MAC
15.4 Understanding MAC Labels
15.5 Module Configuration
15.6 The MAC bsdextended Module
15.7 The MAC ifoff Module
15.8 The MAC portacl Module
15.9 MAC Policies with Labeling Features
15.10 The MAC partition Module
15.11 The MAC Multi-Level Security Module
15.12 The MAC Biba Module
15.13 The MAC LOMAC Module
15.14 Implementing a Secure Environment with MAC
15.15 Another Example: Using MAC to Constrain A Web Server
15.16 An Example of a MAC Sandbox
15.17 Troubleshooting the MAC Framework
16 Archiviazione dei Dati
16.1 Sinossi
16.2 Device Names
16.3 Adding Disks
16.4 RAID
16.5 Creating and Using Optical Media (CDs & DVDs)
16.6 Creating and Using Floppy Disks
16.7 Creating and Using Data Tapes
16.8 Backups to Floppies
16.9 Backup Basics
16.10 Network, Memory, and File-Based File Systems
16.11 File System Snapshots
16.12 File System Quotas
17 Il Gestore di Volumi Vinum
17.1 Sinossi
17.2 Dischi Troppo Piccoli
17.3 Colli di Bottiglia nell'Accesso
17.4 Integrità dei Dati
17.5 Oggetti Vinum
17.6 Alcuni Esempi
17.7 Nomenclatura degli Oggetti
17.8 Configurare Vinum
17.9 Usare Vinum nel Filesystem Root
18 Localizzazione - Uso e Impostazione dell'I18N/L10N
18.1 Sinossi
18.2 Principi di Base
18.3 Come Utilizzare la Localizzazione
18.4 Compilazione dei Programmi con Supporto I18N
18.5 Localizzazione di FreeBSD con Lingue Particolari
19 Lo Stato dell'Arte
19.1 Sinossi
19.2 FreeBSD-CURRENT vs. FreeBSD-STABLE
19.3 Synchronizing Your Source
19.4 Using make world
19.5 Tracking for multiple machines
IV. Comunicazione di Rete
20 Comunicazioni Seriali
20.1 Sinossi
20.2 Introduzione
20.3 Terminali
20.4 Servizio di Ricezione Chiamate
20.5 Servizio di Effettuazione Chiamate
20.6 Impostazione della Console Seriale
21 PPP e SLIP
21.1 Sinossi
21.2 Using User PPP
21.3 Using Kernel PPP
21.4 Using PPP over Ethernet (PPPoE)
21.5 Using PPP over ATM (PPPoA)
21.6 Using SLIP
22 Posta Elettronica
22.1 Sinossi
22.2 Utilizzo della Posta Elettronica
22.3 Configurazione di sendmail
22.4 Sostituzione del proprio Mail Transfer Agent
22.5 Risoluzione dei Problemi
22.6 Argomenti Avanzati
22.7 SMTP con UUCP
22.8 Configurazione del Sistema di Posta solo per l'Invio
22.9 Uso della Posta con una Connessione Dialup
22.10 Autenticazione SMTP
22.11 Mail User Agent
22.12 Usare fetchmail
22.13 Usare procmail
23 Server di Rete
23.1 Sinossi
23.2 The inetd ``Super-Server''
23.3 Network File System (NFS)
23.4 Network Information System (NIS/YP)
23.5 Automatic Network Configuration (DHCP)
23.6 Domain Name System (DNS)
23.7 Apache HTTP Server
23.8 File Transfer Protocol (FTP)
23.9 File and Print Services for Microsoft® Windows® clients (Samba)
23.10 Clock Synchronization with NTP
24 Networking Avanzato
24.1 Sinossi
24.2 Gateways e Routes
24.3 Wireless
24.4 Bluetooth
24.5 Bridging
24.6 Modalità senza dischi
24.7 ISDN
24.8 NAT
24.9 PLIP
24.10 IPv6
24.11 ATM
V. Appendici
A. Ottenere FreeBSD
A.1 Editori di CDROM e DVD
A.2 Siti FTP
A.3 CVS Anonimo
A.4 Uso di CTM
A.5 Uso di CVSup
A.6 Tag CVS
A.7 Siti AFS
A.8 Siti rsync
B. Bibliografia
B.1 Libri & Riviste Specifiche su FreeBSD
B.2 Guide per gli Utenti
B.3 Guide per gli Amministratori
B.4 Guide per i Programmatori
B.5 Architettura del Sistema Operativo
B.6 Riferimenti sulla Sicurezza
B.7 Riferimenti sull'Hardware
B.8 Storia di UNIX®
B.9 Riviste e Giornali
C. Risorse su Internet
C.1 Mailing Lists
C.2 Newsgroup Usenet
C.3 Server World Wide Web
C.4 Indirizzi Email
C.5 Shell Accounts
D. Chiavi PGP
D.1 Cariche Ufficiali
D.2 Membri del Core Team
D.3 Sviluppatori
Glossario di FreeBSD
Indice
Colophon
Lista delle Tabelle
3-1. Codici dei Dispositivi Disco
17-1. Organizzazione dei Plex Vinum
Lista delle Figure
17-1. Organizzazione Concatenata
17-2. Organizzazione in Striping
17-3. Organizzazione RAID-5
17-4. Un Semplice Volume Vinum
17-5. Un Volume Vinum in Mirroring
17-6. Un Volume Vinum in Striping
17-7. Un Volume Vinum in Mirroring e Striping
Lista degli Esempi
3-1. Esempi di Nomi di Dischi, di Slice, e di Partizioni
3-2. Modello Concettuale di un Disco
4-1. Scaricare un Package Manualmente e Installarlo da Locale
11-1. Creazione di un File di Swap
12-1. Screenshot di boot0
12-2. Screenshot di boot2
12-3. Una Console Insicura in /etc/ttys
20-1. Aggiunta di Voci per Altri Terminali a /etc/ttys
22-1. Configurazione del Database di Accesso di sendmail
22-2. Alias di Posta
22-3. Esempio di Mappatura per la Posta di un Dominio Virtuale
A-1. Estrazione di Qualcosa dalla -CURRENT (ls(1)) e poi Cancellazione della Stessa:
A-2. Estrazione della Versione di ls(1) dal Ramo 3.X-STABLE:
A-3. Creazione di una Lista di Cambiamenti (come Diff Unificate) di ls(1)
A-4. Scoperta di Quali Altri Nomi di Moduli Possono Essere Usati:

Prefazione

A chi si rivolge

Gli utenti alla prime armi con FreeBSD scopriranno che la prima sezione di questo libro guida l'utente attraverso il processo di installazione di FreeBSD e introduce delicatamente i concetti e le convenzioni su cui si basa UNIX®. Affrontare questa sezione richiede poco più che il desiderio di esplorare, e l'abilità di far propri i nuovi concetti appena vengono introdotti.

Una volta superata questa distanza, la seconda sezione, ben più grande, del Manuale è una guida di riferimento completa a tutti i tipi di argomenti di interesse per l'amministratore di un sistema FreeBSD. Alcuni di questi capitoli suggeriscono di effettuare prima la lettura di qualche altro capitolo, e questo è evidenziato nel sommario all'inizio di ogni capitolo.

Per una lista di fonti di informazioni aggiuntive, guarda l'Appendice B.

Note alla Edizione Italiana

La traduzione di questo manuale sta vedendo impegnate numerose persone facenti parte del FreeBSD Italian Documentation Project. Il progetto è partito da una iniziativa del Gruppo Utenti FreeBSD Italia (GUFI) ed è coordinato da Alex Dupre , con l'ausilio della mailing list .

Come puoi vedere, il lavoro di traduzione è ancora in corso ed è portato avanti esclusivamente da volontari. Le persone che hanno contribuito (o stanno contribuendo) alla realizzazione del progetto sono, in ordine sparso:

Organizzazione di Questo Libro

Questo libro è diviso in cinque sezioni distinte logicamente. La prima sezione, Per Cominciare, copre l'installazione e l'uso basilare di FreeBSD. Ci si aspetta che il lettore segua questi capitoli in sequenza, possibilmente saltando i capitoli che trattano argomenti familiari. La seconda sezione, Compiti Comuni copre alcune funzionalità di FreeBSD frequentemente utilizzate. Questa sezione, e tutte le sezioni successive, possono essere lette non in ordine. Ogni capitolo inizia con un succinto sommario che descrive ciò che il capitolo copre e ciò che il lettore dovrebbe aspettarsi di conoscere dopo la lettura dello stesso. Questo ha l'intenzione di permettere al lettore di trovare velocemente i capitoli di proprio interesse. La terza sezione, Amministrazione del Sistema, copre argomentazioni di amministrazione. La quarta sezione Comunicazione di Rete, copre argomenti di rete e relativi servizi. La quinta sezione contiene appendici con informazioni di riferimento.

Capitolo 1, Introduzione

Introduce FreeBSD ai nuovi utenti. Descrive la storia del FreeBSD Project, gli obbiettivi e il modello di sviluppo.

Capitolo 2, Installazione

Segue l'utente attraverso l'intera procedura di installazione. Sono trattati alcuni argomenti avanzati di installazione, come l'installazione attraverso la console seriale.

Capitolo 3, Basi di UNIX

Tratta i comandi e le funzionalità di base del sistema operativo FreeBSD. Se hai familiarità con Linux® o con altri tipi di UNIX allora puoi probabilmente saltare questo capitolo.

Capitolo 4, Installazione delle Applicazioni

Copre l'installazione del software di terze parti sia con l'innovativo ``Ports Collection'' di FreeBSD che con i comuni pacchetti binari.

Capitolo 5, L'X Window System

Descrive X Window System in generale e l'uso di XFree86 su FreeBSD in particolare. Inoltre descrive i comuni ambienti desktop KDE e GNOME.

Capitolo 6, Applicazioni Desktop

Elenca le più comuni applicazioni desktop, come browser web e suite di produttività, e descrive come installarle su FreeBSD.

Capitolo 7, Multimedia

Mostra come configurare il supporto audio/video per il sistema. Inoltre descrive alcune applicazioni di esempio.

Capitolo 8, Configurazione del Kernel di FreeBSD

Spiega perché potresti aver bisogno di configurare un nuovo kernel e fornisce istruzioni dettagliate per la configurazione, la creazione, e l'installazione di un kernel personalizzato.

Capitolo 9, Stampa

Spiega come gestire le stampanti su FreeBSD, incluse informazioni sulle pagine banner, sull'accounting di stampa, e sulla configurazione iniziale.

Capitolo 10, Compatibilità con i Binari di Linux

Descrive le caratteristiche di compatibilità con Linux di FreeBSD. Inoltre fornisce dettagliate istruzioni sull'installazione di molte comuni applicazioni Linux come Oracle®, SAP® R/3®, e Mathematica®.

Capitolo 11, Configurazione e Messa a Punto

Descrive i parametri disponibili agli amministratori di sistema per ottimizzare le performance di un sistema FreeBSD. Inoltre descrive i vari file di configurazione usati in FreeBSD e dove trovarli.

Capitolo 12, La Procedura di Avvio

Descrive la procedura di avvio di FreeBSD e spiega come controllare questo processo con le opzioni di configurazione.

Capitolo 13, Gestione degli Utenti e degli Account di Base

Descrive la creazione e la manipolazione degli account degli utenti. Inoltre parla delle limitazioni delle risorse che possono essere impostate sugli utenti e di altri compiti di gestione degli account.

Capitolo 14, Sicurezza

Elenca vari tool disponibili per aiutarti a mantenere il tuo sistema FreeBSD sicuro, inclusi Kerberos, IPsec, OpenSSH, e firewall di rete.

Capitolo 15, Controllo di Accesso Vincolato

Descrive il Controllo di Accesso Vincolato (MAC) e come questo meccanismo può essere usato per fortificare un sistema FreeBSD.

Capitolo 16, Archiviazione dei Dati

Descrive come gestire i dispositivi di archiviazione e i file system con FreeBSD. Questo include dischi fisici, array RAID, dispositivi ottici e a nastro, dischi di memoria, e file system di rete.

Capitolo 17, Il Gestore di Volumi Vinum

Descrive come usare Vinum, un gestore di volumi che permette di creare dischi logici indipendenti dal dispositivo, con supporto RAID-0, RAID-1 e RAID-5 via software.

Capitolo 18, Localizzazione

Descrive come usare FreeBSD in altre lingue oltre all'inglese. Copre la localizzazione a livello sia del sistema che applicativo.

Capitolo 19, Lo Stato dell'Arte

Spiega le differenze tra FreeBSD-STABLE, FreeBSD-CURRENT, e le release FreeBSD. Descrive quali utenti possano trarre beneficio seguendo un sistema di sviluppo e spiega come effettuare questa procedura.

Capitolo 20, Comunicazioni Seriali

Spiega come connettere terminali e modem al tuo sistema FreeBSD sia per connessioni in ingresso che in uscita.

Capitolo 21, PPP e SLIP

Descrive come usare PPP, SLIP, o PPP over Ethernet per connettersi a sistemi remoti con FreeBSD.

Capitolo 22, Posta Elettronica

Spiega i differenti componenti di un mail server e introduce semplici configurazioni per il mail server più comune: sendmail.

Capitolo 23, Servizi di Rete

Fornisce istruzioni dettagliate e file di configurazione di esempio per erigere la tua macchina FreeBSD come un server NFS (Network File System), un server per la risoluzione dei nomi, un server NIS (Network Information System), o un server per la sincronizzazione dell'ora.

Capitolo 24, Networking Avanzato

Descrive molti argomenti sul networking, incluso come condividere una connessione a Internet con altri computer sulla stessa LAN, argomenti di routing avanzati, rete wireless, bluetooth, ATM, IPv6, e altro ancora.

Appendice A, Ottenere FreeBSD

Elenca varie fonti per ottenere FreeBSD su CD-ROM o DVD così come vari siti su Internet che permettono di scaricare e installare FreeBSD.

Appendice B, Bibliografia

Questo libro tocca svariati argomenti che possono lasciarti desideroso di spiegazioni più dettagliate. La bibliografia elenca molti ottimi libri che sono referenziati nel testo.

Appendice C, Risorse su Internet

Elenca i numerosi forum disponibili per gli utenti FreeBSD dove poter inviare domande e intraprendere conversazioni tecniche su FreeBSD.

Appendice D, Chiavi PGP

Elenca i fingerprint PGP di molti sviluppatori di FreeBSD.

Convenzioni usate in questo libro

Per fornire un testo consistente e facile da leggere, sono state seguite numerose convenzioni in tutto il libro.

Convenzioni Tipografiche

Italico

Un font italico è per i nomi dei file, per gli URL, per il testo enfatizzato, e per il primo utilizzo dei termini tecnici.

Monospazio

Un font monospazio è usato per i messaggi di errore, i comandi, le variabili di ambiente, i nomi dei port, i nomi di host, i nomi degli utenti, i nomi dei gruppi, i nomi dei device, le variabili, e i frammenti di codice.

Grassetto

Un font in grassetto è per le applicazioni, i comandi, e i tasti.

Input dell'Utente

I tasti sono visualizzati in grassetto per differenziarli dal testo normale. Le combinazioni di tasti che devono essere digitate contemporaneamente sono visualizzate con un `+' tra i tasti, come:

Ctrl+Alt+Del

Significa che l'utente deve premete i tasti Ctrl, Alt, e Del nello stesso momento.

I tasti che devono essere digitati in sequenza saranno separati da virgole, come per esempio:

Ctrl+X, Ctrl+S

Vuol dire che l'utente deve digitare i tasti Ctrl e X contemporaneamente e poi i tasti Ctrl e S.

Esempi

Gli esempi che iniziano con E:\> indicano un comando MS-DOS®. A meno di note specifiche, questi comandi possono essere eseguiti da una finestra ``Prompt dei comandi'' in un moderno ambiente Microsoft® Windows®.

E:\> tools\fdimage floppies\kern.flp A:

Gli esempi che iniziano con # indicano un comando che deve essere invocato dal superuser in FreeBSD. Puoi effettuare il login come root per digitare il comando, o loggarti con il tuo normale account e usare su(1) per acquisire i privilegi da superuser.

# dd if=kern.flp of=/dev/fd0

Gli esempi che iniziano con % indicano un comando che deve essere eseguito da un normale utente. Dove non indicato, è usata la sintassi C-shell per impostare variabili di ambiente e altri comandi di shell.

% top

Riconoscimenti

Il libro che stai leggendo rappresenta gli sforzi di molte centinaia di persone in tutto il mondo. Sia che abbiano inviato correzioni per errori di battitura, sia che abbiano inviato interi capitoli, tutti i contributi sono stati utili.

Molte società hanno supportato lo sviluppo di questo documento pagando gli autori per lavorarci sopra a tempo pieno, pagando per la pubblicazione, ecc. In particolare BSDi (successivamente acquisita da Wind River Systems) ha pagato i membri del FreeBSD Documentation Project per lavorare a tempo pieno sul miglioramento di questo libro fino alla pubblicazione della prima edizione inglese stampata nel Marzo 2000 (ISBN 1-57176-241-8). Wind River Systems poi ha pagato numerosi autori aggiuntivi per fare una serie di miglioramenti all'infrastruttura di stampa e per aggiungere altri capitoli al testo. Questo lavoro è culminato nella pubblicazione della seconda edizione inglese stampata nel Novembre 2001 (ISBN 1-57176-303-1). Nel 2003-2004, FreeBSD Mall, Inc, ha pagato diversi contributori per migliorare il Manuale in preparazione per la terza edizione inglese cartacea.

I. Per Cominciare

Questa parte del Manuale di FreeBSD è per gli utenti e gli amministratori che si affacciano a FreeBSD. Questi capitoli:

  • Ti introdurranno a FreeBSD.

  • Ti guideranno attraverso il processo di installazione.

  • Ti insegneranno le basi e i fondamenti di UNIX.

  • Ti mostreranno come installare la varietà delle applicazioni di terze parti disponibili per FreeBSD.

  • Ti introdurranno a X, il sistema a finestre di UNIX, e ti spiegheranno come configurare un ambiente desktop che ti renda più produttivo.

Abbiamo cercato di mantenere il numero di riferimenti in avanti nel testo al minimo così che tu possa leggere questa sezione del Manuale dall'inizio alla fine con il minimo scorrimento di pagine possibile.


Capitolo 1 Introduzione

Ristrutturato, riorganizzato, e in parte riscritto da Jim Mock.

1.1 Sinossi

Grazie per il tuo interesse per FreeBSD! Il seguente capitolo tratta vari aspetti del FreeBSD Project, come la sua storia, gli obiettivi, il modello di sviluppo e così via.

Dopo aver letto questo capitolo, saprai:

  • Come si relazione FreeBSD rispetto agli altri sistemi operativi per computer.

  • La storia del FreeBSD Project.

  • Gli obiettivi del FreeBSD Project.

  • Le basi del modello di sviluppo open source di FreeBSD.

  • E naturalmente: da dove deriva il nome ``FreeBSD''.


1.2 Benvenuto in FreeBSD!

FreeBSD è un sistema operativo basato su 4.4BSD-Lite per computer Intel (x86 e Itanium®), DEC Alpha™, e Sun UltraSPARC®. Port verso altre architetture sono stati avviati. Puoi anche leggere la storia di FreeBSD, o la release corrente. Se sei interessato a contribuire in qualche modo al progetto (codice, hardware, banconote non segnate), leggi l'articolo Contributing to FreeBSD.


1.2.1 Cosa può fare FreeBSD?

FreeBSD ha molte caratteristiche degne di nota. Alcune di queste sono:

  • Multitasking preemptive con adattamento dinamico della priorità per assicurare una condivisione regolare ed equa del computer ad applicazioni e utenti, persino sotto i carichi più pesanti.

  • Facilities multiutente che permettono a molte persone di usare un sistema FreeBSD contemporaneamente per cose diverse. Questo significa, per esempio, che le periferiche di sistema come stampanti e unità a nastro sono correttamente condivise tra tutti gli utenti sul sistema o sulla rete e che possono essere posti limiti individuali ad utenti o gruppi di utenti sulla risorsa, proteggendo le risorse di sistema critiche dall'uso eccessivo.

  • Un solido sistema di rete TCP/IP con supporto a standard industriali quali SLIP, PPP, NFS, DHCP e NIS. Questo significa che la tua macchina FreeBSD può interoperare facilmente con altri sistemi ed anche agire come server aziendale, fornendo funzioni vitali come NFS (accesso remoto ai file) e servizi e-mail oppure mettere la tua organizzazione su Internet con servizi WWW, FTP, routing e firewall (sicurezza).

  • La protezione della memoria assicura che le applicazioni (o gli utenti) non possano interferire l'una con l'altra. Una applicazione che andrà in crash non influirà sulle altre in alcun modo.

  • FreeBSD è un sistema operativo a 32 bit (64 bit su Alpha Itanium, AMD64, e UltraSPARC) ed è stato progettato come tale sin dall'inizio.

  • Lo standard industriale X Window System (X11R6) fornisce una interfaccia grafica utente (GUI) al costo di una comune scheda VGA ed un monitor e viene fornito con i sorgenti.

  • Compatibilità binaria con molti programmi sviluppati per Linux, SCO, SVR4, BSDI e NetBSD.

  • Nella collezione di port e package per FreeBSD sono disponibili migliaia di applicazioni pronte a partire. Perché cercare sulla rete quando puoi trovare qui tutto quello che ti serve?

  • Su Internet sono disponibili migliaia di applicazioni aggiuntive e facili da portare. FreeBSD è compatibile a livello di codice sorgente con la maggior parte dei sistemi UNIX commerciali e così la maggior parte delle applicazioni richiedono poche modifiche per essere compilate, se non nessuna.

  • La memoria virtuale paginata su richiesta e il progetto con ``VM/buffer cache'' integrati soddisfa efficientemente le applicazioni con grandi appetiti di memoria mantenendo ancora la risposta interattiva per altri utenti.

  • Il supporto SMP per macchine con CPU multiple.

  • una dotazione completa di strumenti di sviluppo per C, C++, Fortran, e Perl. Sono inoltre disponibili molti linguaggi aggiuntivi per ricerca avanzata e sviluppo nella collezione di port e package.

  • Avere il codice sorgente dell'intero sistema significa avere un alto grado di controllo sull'ambiente. Perché essere vincolati ad una soluzione proprietaria alla mercé del tuo fornitore quando puoi avere un sistema veramente aperto?

  • Estesa documentazione online.

  • E molto altro!

FreeBSD è basato sulla release 4.4BSD-Lite del Computer Systems Research Group (CSRG) dell'Università della California di Berkeley, e porta avanti l'inconfondibile tradizione di sviluppo dei sistemi BSD. In aggiunta all'ottimo lavoro fornito dal CSRG, il FreeBSD Project ha speso molte centinaia di ore nella fine regolazione del sistema per le massime prestazioni e affidabilità nelle situazioni di carico che si possono trovare nella vita reale. Mentre molti giganti commerciali hanno difficoltà nel campo dei sistemi operativi per PC con queste caratteristiche, prestazioni e affidabilità, FreeBSD le può offrire ora!

Le applicazioni nelle quali FreeBSD può essere impiegato sono veramente limitate solo dalla tua immaginazione. Dallo sviluppo software all'automazione in fabbrica, dal controllo dell'inventario alla correzione dell'azimut delle antenne remote dei satelliti; se può essere fatto con un prodotto UNIX commerciale allora è più che probabile che puoi farlo anche con FreeBSD! FreeBSD beneficia significativamente anche da letteralmente migliaia di applicazioni di alta qualità sviluppate da centri di ricerca e università di tutto il mondo, spesso disponibili a poco prezzo o gratuite. Sono anche disponibili applicazioni commerciali e compaiono in numero maggiore ogni giorno.

Poiché il codice sorgente dello stesso FreeBSD è normalmente disponibile, il sistema può anche essere personalizzato ad un livello inimmaginabile per applicazioni o progetti particolari, e in modi non generalmente possibili con i sistemi operativi della maggior parte dei produttori commerciali. Ecco solo alcuni esempi di alcune delle applicazioni nelle quali attualmente la gente sta usando FreeBSD:

  • Servizi Internet: Il robusto sistema di rete TCP/IP di FreeBSD lo rende una piattaforma ideale per una varietà di servizi Internet quali:

    • server FTP

    • server World Wide Web (standard o sicuri [SSL])

    • Firewall e gateway NAT (``mascheramento dell'IP'').

    • server di Posta Elettronica

    • USENET News o Bulletin Board Systems

    • E altro...

    Con FreeBSD, puoi facilmente partire in piccolo con un PC a buon mercato della classe 386 e aggiornare poi ad un quadriprocessore Xeon con dischi RAID se la tua azienda cresce.

  • Insegnamento: Sei uno studente di informatica o legato al campo dell'ingegneria? Non c'è miglior modo di imparare i sistemi operativi, l'architettura dei computer e il networking che l'esperienza pratica e in profondità che FreeBSD può fornire. Il numero di pacchetti di CAD, di progettazione grafica e matematica disponibili gratuitamente lo rendono anche estremamente utile per coloro il cui interesse principale nei computer è vedere altro lavoro svolto!

  • Ricerca: Con il codice sorgente disponibile per l'intero sistema, FreeBSD è una eccellente piattaforma per la ricerca nei sistemi operativi come pure per altre branche dell'informatica. La natura di libera circolazione di FreeBSD rende anche possibile a gruppi distanti di collaborare sulle idee o condividere lo sviluppo senza aver da preoccuparsi di accordi di licenza speciali o limitazioni su quello che può essere discusso in un forum pubblico.

  • Networking: Ti serve un nuovo router? Un server dei nomi (DNS)? Un firewall per tenere la gente fuori dalla tua rete interna? FreeBSD può facilmente tramutare quel 386 inutilizzato o quel PC 486 che giace nell'angolo in un router avanzato con sofisticate capacità di filtraggio dei pacchetti.

  • Stazione di lavoro con X Window: FreeBSD è un'ottima scelta come soluzione per un terminale X economico, sia usando il server XFree86 liberamente disponibile o uno degli eccellenti server commerciali forniti da Xi Graphics. Diversamente da un terminale X, FreeBSD permette a molte applicazioni di girare localmente se desiderato, sollevando così il carico da un server centrale. FreeBSD può anche partire ``senza disco'', rendendo le stazioni individuali persino più economiche e facili da amministrare.

  • Sviluppo Software: Di base FreeBSD arriva con un pieno complemento di strumenti di sviluppo incluso il rinnovato compilatore GNU C/C++ e il debugger.

FreeBSD è disponibile sia in forma sorgente che binaria su CDROM, DVD e via FTP anonimo. Guarda l'Appendice A per maggiori informazioni su come ottenere FreeBSD.


1.2.2 Chi Usa FreeBSD?

FreeBSD è usato per far funzionare alcuni dei più grossi siti su Internet, inclusi:

e molti altri.


1.3 Informazioni sul FreeBSD Project

La sezione seguente fornisce alcune informazioni relative al progetto, includendo una breve storia, gli obiettivi, e il modello di sviluppo.


1.3.1 Breve storia di FreeBSD

Contributo di Jordan Hubbard.

Il FreeBSD Project ebbe la sua genesi nella prima parte del 1993, come una sorta di crescita oltremisura del ``Patchkit Non Ufficiale di 386BSD'' dagli ultimi tre coordinatori del patchkit: Nate Williams, Rod Grimes e me stesso.

Il nostro obiettivo originario era di produrre uno snapshot intermedio di 386BSD allo scopo di risolvere una serie di problemi che il meccanismo del patchkit non era semplicemente in grado di risolvere. Alcuni di voi potranno ricordare che il primo titolo funzionante per il progetto fu ``386BSD 0.5'' o ``386BSD Interim'' in riferimento a quel fatto.

386BSD era il sistema operativo di Bill Jolitz, che era arrivato a questo punto soffrendo piuttosto pesantemente di quasi un anno di disinteresse. Visto che il patchkit si gonfiava sempre più scomodamente con il passare dei giorni, fummo d'accordo all'unanimità che doveva essere fatto qualcosa e decidemmo di provare ad assistere Bill fornendo questo snapshot ad interim ``ripulito''. Questi piani ebbero un brusco arresto quando Bill Jolitz improvvisamente decise di ritirare la sua approvazione al progetto senza nessuna chiara indicazione di cosa invece doveva essere fatto.

Non ci volle molto per decidere che l'obiettivo rimaneva utile, persino senza il supporto di Bill, e così adottammo il nome ``FreeBSD'', coniato da David Greenman. I nostri obiettivi iniziali furono decisi dopo esserci consultati con gli utenti dell'epoca del sistema e, una volta che divenne chiaro che il progetto era sulla strada giusta e forse stava persino diventando una realtà, contattai la Walnut Creek CDROM con un occhio verso il miglioramento dei canali distributivi di FreeBSD per quei molti sfortunati che non avevano facile accesso a Internet. La Walnut Creek CDROM non solo supportò l'idea di distribuire FreeBSD su CD ma andò anche più lontano fornendo al progetto una macchina per lavorarci su e una connessione ad Internet veloce. Senza il grado di fiducia quasi senza precedenti della Walnut Creek CDROM in quello che era, a quel tempo, un progetto completamente sconosciuto, è abbastanza improbabile che FreeBSD sarebbe andato così lontano, così velocemente, come è oggi.

La prima distribuzione su CDROM (e largamente disponibile sulla rete) fu FreeBSD 1.0, rilasciata nel dicembre del 1993. Questa era basata su un nastro della 4.3BSD-Lite (``Net/2'') della U.C. Berkeley, con molti componenti forniti anche da 386BSD e dalla Free Software Foundation. Fu un successo abbastanza ragionevole per una prima offerta, e lo seguimmo dal grande successo di FreeBSD release 1.1 nel maggio del 1994.

Circa in questo periodo si formarono all'orizzonte alcune nuvole temporalesche piuttosto inaspettate allorché Novell e U.C. Berkeley risolsero la loro lunga causa civile sullo stato legale del nastro di Berkeley Net/2. Una condizione di quell'accordo era la concessione di U.C. Berkeley che vaste parti di Net/2 erano codice ``ingombrante'' e di proprietà di Novell, che lo aveva infine acquistato da AT&T qualche tempo addietro. Quello che Berkeley ottenne in cambio fu la ``benedizione'' di Novell che la release 4.4BSD-Lite, quando fu finalmente rilasciata, fosse dichiarata non ingombrante e che tutti gli utenti Net/2 esistenti fossero fortemente incoraggiati a cambiare. Questo incluse FreeBSD, e al progetto fu dato tempo fino alla fine di luglio 1994 per fermare la spedizione del proprio prodotto basato su Net/2. Sotto i termini di quell'accordo, fu permesso al progetto un ultimo rilascio prima della scadenza, e quella release fu FreeBSD 1.1.5.1

FreeBSD allora si accinse nell'arduo compito di letteralmente reinventare se stesso da un insieme di bit di 4.4BSD-Lite completamente nuovo e piuttosto incompleto. Le release ``Lite'' erano light (leggere) in parte perché il CSRG di Berkeley aveva rimosso grandi sezioni di codice richiesto per costruire effettivamente un sistema funzionante in grado di partire (dovuto a varie richieste legali) e in parte al fatto che il port per Intel della 4.4 era altamente incompleto. Al progetto ci volle fino al novembre del 1994 per fare questa transizione; a quel punto rilasciò FreeBSD 2.0 sulla rete e su CDROM (nel tardo dicembre). A dispetto del fatto di essere ancora più che un po' ruvida ai bordi, la release fu un successo significativo e fu seguita dalla release FreeBSD 2.0.5 più robusta e semplice da installare nel giugno del 1995.

Rilasciammo FreeBSD 2.1.5 nell'agosto del 1996, e parve essere abbastanza popolare tra gli ISP e le comunità commerciali tanto che si meritò un'altra release nel corso del ramo 2.1-STABLE. Questa era FreeBSD 2.1.7.1, rilasciata nel febbraio 1997 e apoteosi dello sviluppo principale sulla 2.1-STABLE. Attualmente in modalità di manutenzione, su questo ramo (RELENG_2_1_0) verranno sviluppati solo miglioramenti della sicurezza e correzioni degli errori.

FreeBSD 2.2 fu derivato dallo sviluppo della linea principale (``-CURRENT'') nel novembre 1996 come ramo RELENG_2_2, e la prima release completa (2.2.1) fu rilasciata nell'aprile 1997. Furono rilasciate ulteriori release del ramo 2.2 nell'estate e nell'autunno del '97, l'ultima delle quali (2.2.8) apparve nel novembre 1998. La prima release 3.0 ufficiale apparve nell'ottobre 1998 e segnò l'inizio della fine per il ramo 2.2.

L'albero si ramificò ancora il 20 gennaio 1999, dividendosi nei rami 4.0-CURRENT e 3.X-STABLE. Dalla 3.X-STABLE, la 3.1 fu rilasciata il 15 febbraio 1999, la 3.2 il 15 maggio 1999, la 3.3 il 16 settembre 1999, la 3.4 il 20 dicembre 1999 e la 3.5 il 24 giugno 2000, seguita pochi giorni dopo da un aggiornamento di punto inferiore alla release 3.5.1 per incorporare alcune correzioni dell'ultimo minuto a Kerberos sulla sicurezza. Questa sarà l'ultima release del ramo 3.X.

Ci fu un'altra ramificazione il 13 marzo 2000, che vide l'apparizione del ramo 4.X-STABLE, ora considerato essere il ``ramo -STABLE corrente''. Ci sono state numerose release da allora: la 4.0-RELEASE fu introdotta nel marzo 2000, e la più recente 4.11-RELEASE venne fuori nel Jan 2005. Ci saranno release aggiuntive lungo il ramo 4.X-STABLE (RELENG_4) per tutto il 2003.

La tanto attesa 5.0-RELEASE è stata annunciata il 19 gennaio 2003. Il culmine di quasi tre anni di lavoro, questa release ha iniziato FreeBSD nel percorso del supporto avanzato al multiprocessore e ai thread nelle applicazioni e ha introdotto il supporto per le piattaforme UltraSPARC e ia64. Questa release è stata seguita dalla 5.1 nel giugno del 2003. A parte un certo numero di nuove funzionalità, le release 5.X contengono anche parecchi sviluppi maggiori sull'architettura di sistema sottostante. Insieme a questi vantaggi, tuttavia, arriva un sistema che incorpora una quantità impressionante di codice nuovo e non completamente testato. Per questa ragione, le release 5.X sono considerate release con ``Nuove Tecnologie'', mentre quelle della serie 4.X come release di ``Produzione''. Col tempo, la 5.X sarà dichiarata stabile e comincerà il lavoro sul prossimo ramo di sviluppo, 6.0-CURRENT.

Per ora, lo sviluppo dei progetti a lungo termine continua ad aver luogo nell'albero 5.X-CURRENT, e release SNAPshot della 5.X su CDROM (e, naturalmente, sulla rete) sono continuamente rese disponibili sul server snapshot mentre il lavoro procede.


1.3.2 Obiettivi del FreeBSD Project

Contributo di Jordan Hubbard.

Gli obiettivi del FreeBSD Project sono di fornire software che può essere usato per qualunque scopo senza vincoli. Molti di noi hanno fatto un investimento significativo nel codice (e nel progetto) e certamente non dovrebbero essere interessati ad un piccolo compenso finanziario qua e là, ma non siamo sicuramente preparati ad insistere su questo. Noi crediamo che la nostra prima e prioritaria ``missione'' sia di fornire codice a tutti i partecipanti, presenti e futuri, e per qualunque scopo, così che il codice abbia un uso il più possibile ampio e fornisca i più ampi benefici. Questo è, io credo, uno degli obiettivi fondamentali del Software Libero (Free Software) e che noi supportiamo entusiasticamente.

Quel codice nel nostro albero dei sorgenti che cade sotto la GNU General Public Licence (GPL) o la GNU Lesser General Public License (LGPL) ha un po' più di vincoli, sebbene almeno dal lato di rafforzare l'accesso piuttosto che l'opposto. Date le complessità aggiuntive che possono risultare dall'uso commerciale di software GPL noi preferiamo, tuttavia, software rilasciato sotto il più rilassato copyright BSD quando è una scelta ragionevole farlo.


1.3.3 Il Modello di Sviluppo di FreeBSD

Contributo di Satoshi Asami.

Lo sviluppo di FreeBSD è un processo molto aperto e flessibile, essendo costruito dal contributo di centinaia di persone di tutto il mondo, come puoi vedere dalla nostra lista dei collaboratori. L'infrastruttura di sviluppo di FreeBSD permette a queste centinaia di sviluppatori di collaborare su Internet. Siamo costantemente alla ricerca di nuovi sviluppatori e idee, e quelli interessati a essere coinvolti maggiormente nel progetto devono semplicemente contattarci sulla mailing list di discussioni tecniche su FreeBSD. La mailing list di annunci su FreeBSD è anche disponibile a quelli che vogliono informare altri utenti FreeBSD delle principali aree di lavoro.

Cose utili da sapere sul FreeBSD Project e il suo processo di sviluppo, sia lavorando in modo indipendente che in stretta cooperazione:

Il repository CVS

L'albero centrale dei sorgenti FreeBSD è mantenuto tramite CVS (Concurrent Versions System, ovvero Sistema di Versioni Concorrenti), uno strumento di controllo dei codici sorgenti liberamente disponibile che viene distribuito con FreeBSD. Il principale repository CVS risiede su una macchina a Santa Clara CA, USA da dove è replicato su numerose macchine speculari in tutto il mondo. L'albero CVS, che contiene gli alberi -CURRENT e -STABLE, possono essere facilmente replicati anche sulla tua macchina. Fai riferimento alla sezione Sincronizzazione dei Tuoi Sorgenti per maggiori informazioni su come fare.

La lista dei committer

I committer sono persone che hanno permesso di scrivere nell'albero CVS, e sono autorizzate ad apportare modifiche ai sorgenti di FreeBSD (il termine ``committer'' viene dal comando commit di cvs(1), che è usato per portare i nuovi cambiamenti al repository CVS). Il modo migliore di sottoporre modifiche alla revisione da parte della lista dei committer è usare il comando send-pr(1). Se qualcosa appare inceppato nel sistema, allora puoi anche raggiungerli mandando un messaggio alla mailing list dei committer di FreeBSD.

Il core team di FreeBSD

Il core team di FreeBSD dovrebbe essere equivalente al consiglio dirigente se il FreeBSD Project fosse una azienda. Il compito principale del core team è assicurarsi che il progetto, nella sua interezza, sia in buona salute e sia diretto nella giusta direzione. Una delle funzioni del core team è invitare sviluppatori responsabili e dedicati a unirsi al nostro gruppo di committer come altri ne escono. L'attuale core team è stato eletto da un insieme di candidati committer nel giugno 2004. Le elezioni vengono tenute ogni 2 anni.

Alcuni membri del core team hanno anche aree specifiche di responsabilità, significando che sono impegnati ad assicurare che grandi porzioni del sistema funzionino come annunciato. Per una lista completa degli sviluppatori di FreeBSD e le loro aree di responsabilità, guarda la Contributors List

Nota: Molti membri del core team sono volontari per quanto riguarda lo sviluppo di FreeBSD e non beneficiano finanziariamente dal progetto, così pure l'``impegno'' non dovrebbe essere frainteso come ``supporto garantito''. Allo stesso modo; l'analogia con il ``consiglio direttivo'' non è molto calzante, e può essere più corretto dire che queste sono persone che hanno rinunciato alle loro vite in favore di FreeBSD, contro il loro senso del giudizio!

Collaboratori esterni

Non da ultimo, il più grande gruppo di sviluppatori sono gli stessi utenti che ci forniscono feedback e correzioni di bug quasi costantemente. Il modo principale di tenersi in contatto con lo sviluppo non centralizzato di FreeBSD è iscriversi alla mailing list di discussioni tecniche su FreeBSD dove queste cose vengono discusse. Guarda il Appendice C per maggiori informazioni sulle varie mailing list di FreeBSD.

La Lista dei Collaboratori di FreeBSD è lunga e cresce continuamente, quindi perché non entri a far parte di essa contribuendo e dando tu qualcosa a FreeBSD?

Fornire codice non è il solo modo di contribuire al progetto, per una lista completa di cose che serve fare, fai riferimento al sito web del FreeBSD Project.

In conclusione, il nostro modello di sviluppo è organizzato come un insieme sciolto di cerchi concentrici. Il modello centralizzato è progettato per agevolare gli utenti di FreeBSD, ai quali viene fornito un modo semplice per tenere traccia di una base di codice centrale, non per tenere fuori potenziali collaboratori! È nostro desiderio presentare un sistema operativo stabile con un ampio insieme di programmi applicativi coerenti che gli utenti possono facilmente installare ed usare -- questo modello funziona molto bene per realizzare ciò.

Tutto quello che chiediamo a quelli che vogliono unirsi a noi come sviluppatori di FreeBSD è un po' della stessa dedizione che hanno le attuali persone al suo continuo successo!


1.3.4 La Release Corrente di FreeBSD

FreeBSD è liberamente disponibile, è basato tutto su sorgenti 4.4BSD-Lite, è rilasciato per computer Intel i386™, i486™, Pentium®, Pentium Pro, Celeron®, Pentium II, Pentium III, Pentium 4 (o compatibili), Xeon™, DEC Alpha e Sun UltraSPARC. È basato principalmente su software del gruppo CSRG della U.C. Berkeley, con alcuni miglioramenti presi da NetBSD, OpenBSD, 386BSD, e dalla Free Software Foundation.

Dalla nostra release di FreeBSD 2.0 nel lontano '94, le prestazioni, l'insieme di caratteristiche, e la stabilità di FreeBSD sono migliorate notevolmente. Il più grande cambiamento è stato la riscrittura del sistema di memoria virtuale con una VM/file buffer cache integrata che non solo incrementa le prestazioni, ma anche riduce la richiesta di memoria di FreeBSD, rendendo una configurazione con 5 MB un minimo accettabile. Altri miglioramenti includono il completo supporto a client e server NIS, il supporto delle transazioni TCP, la chiamata-su-richiesta di PPP, il supporto integrato del DHCP, un sottosistema SCSI migliorato, il supporto ISDN, il supporto per ATM, FDDI, per gli adattatori Fast e Gigabit Ethernet (1000 Mbit), un supporto migliorato degli ultimi controller Adaptec, e molte migliaia di correzioni di bug.

In aggiunta alla distribuzione di base, FreeBSD offre una collezione di software portato con migliaia di programmi comunemente cercati. Alla data di stampa, ci sono oltre 12,300 port! La lista dei port comprende server http (WWW), giochi, linguaggi, editor e quasi tutto quello che sta in mezzo. L'intera collezione dei port richiede approssimativamente 400 MB di spazio, essendo tutti i port espressi come ``delta'' dei loro sorgenti originari. Questo rende più facile per noi aggiornare i port, e riduce di molto la domanda di spazio su disco dalla vecchia collezione 1.0 dei port. Per compilare un port, vai semplicemente nella directory che vuoi installare, digita make install e lascia che il sistema faccia il resto. La distribuzione originale completa per ogni port che compili viene presa dinamicamente dal CDROM o da un sito FTP locale, così hai bisogno solo lo spazio su disco sufficiente per compilare il port che vuoi. Quasi ogni port viene fornito di un ``package'' precompilato che può essere installato con un semplice comando (pkg_add) da coloro che non vogliono compilare i propri port dai sorgenti. Maggiori informazioni sui package e sui port possono essere trovate nel Capitolo 4.

Un numero di documenti aggiuntivi che puoi trovare molto utili nel processo di installazione e di utilizzo di FreeBSD ora può essere trovato anche nella directory /usr/share/doc su ogni recente macchina FreeBSD. Puoi vedere i manuali installati localmente con qualsiasi browser HTML usando i seguenti URL:

Il Manuale di FreeBSD

/usr/share/doc/handbook/index.html

Domande Comuni su FreeBSD

/usr/share/doc/faq/index.html

Puoi vedere anche le copie originali (e aggiornate più frequentemente) su http://www.FreeBSD.org/.


Capitolo 2 Installazione di FreeBSD

2.1 Sinossi

Traduzione in corso


2.2 Pre-installation Tasks

Traduzione in corso


2.3 Starting the Installation

Traduzione in corso


2.4 Introducing Sysinstall

Traduzione in corso


2.5 Allocating Disk Space

Traduzione in corso


2.6 Choosing What To Install

Traduzione in corso


2.7 Choosing Your Installation Media

Traduzione in corso


2.7.1 Configure X Server

Traduzione in corso


2.9 Post-installation

Traduzione in corso


2.10 Supported Hardware

Traduzione in corso


2.11 Troubleshooting

Traduzione in corso


2.12 Advanced Installation Guide

Traduzione in corso


Capitolo 3 Basi di Unix

Riscritto da Chris Shumway.

3.1 Sinossi

Il seguente capitolo tratta i comandi e le funzionalità di base del sistema operativo FreeBSD. Molto di questo materiale è valido anche per altri sistemi operativi UNIX-like. Sentiti libero di leggere velocemente questo capitolo se hai familiarità con questo materiale. Se sei un utente alle prime armi di FreeBSD, allora dovrai di sicuro leggere questo capitolo attentamente.

Dopo aver letto questo capitolo, saprai:

  • Come usare le ``console virtuali'' di FreeBSD.

  • Come funzionano i permessi dei file UNIX.

  • La struttura di default del file system di FreeBSD.

  • L'organizzazione del disco di FreeBSD.

  • Come montare e smontare i file system.

  • Cosa sono i processi, i demoni e i segnali.

  • Cos'è una shell, e come cambiare il proprio ambiente di login di default.

  • I principi di base sull'uso degli editor testuali.

  • Cosa sono i dispositivi e i nodi dei dispositivi.

  • Quali formati dei binari sono usati in FreeBSD.

  • Come leggere le pagine man per ottenere maggiori informazioni.


3.2 Console Virtuali e Terminali

FreeBSD può essere usato in vari modi. Uno di questi è quello di digitare i comandi tramite un terminale testuale. Quando si utilizza FreeBSD in questo modo si ha velocemente nelle proprie mani molta della flessibilità e della potenza di un sistema operativo UNIX. Questa sezione descrive cosa sono i ``terminali'' e le ``console'', e come si possono utilizzare in FreeBSD.


3.2.1 La console

Se non hai configurato FreeBSD in modo tale da avviare in modo automatico l'ambiente grafico durante l'avvio, il sistema ti fornirà un prompt di login dopo la fase di avvio, esattamente dopo che gli script di avvio sono stati eseguiti. Dovresti vedere qualcosa simile a questo:

Additional ABI support:.
Local package initialization:.
Additional TCP options:.

Fri Sep 20 13:01:06 EEST 2002

FreeBSD/i386 (pc3.example.org) (ttyv0)

login:

I messaggi potrebbero essere leggermente diversi sul tuo sistema, tuttavia dovresti vedere qualcosa di analogo. In questo momento ci interessano le ultime due righe. Analizziamo la penultima riga:

FreeBSD/i386 (pc3.example.org) (ttyv0)

Questa riga contiene alcune informazioni sul sistema che hai appena avviato. Sei di fronte a una console ``FreeBSD'', che sta girando su un processore Intel o su un processore compatibile con l'architettura x86[1]. Il nome di questa macchina (tutte le macchine UNIX hanno un nome) è pc3.example.org, e in questo momento sei di fronte alla sua console di sistema--il terminale ttyv0.

Infine, l'ultima riga è sempre:

login:

Qui devi digitare il tuo ``username'' per loggarti in FreeBSD. La prossima sezione descrive come fare ad effettuare il login su FreeBSD.


3.2.2 Loggarsi in FreeBSD

FreeBSD è un sistema multi-utente e multi-processo. Questa è la descrizione formale che viene usualmente attribuita a un sistema che può essere usato da diverse persone, le quali eseguono contemporaneamente molti programmi su una singola macchina.

Ogni sistema multi-utente necessita di qualche metodo che distingua un ``utente'' in modo univoco. In FreeBSD (e in tutti i sistemi operativi UNIX-like), questo viene realizzato richiedendo che ogni utente debba ``loggarsi'' nel sistema prima che possa eseguire qualche programma. Ogni utente ha un nome univoco (lo ``username''), uno personale e una chiave segreta (la ``password''). FreeBSD richiede entrambe queste due cose prima di dare la possibilità ad un utente di eseguire qualche programma.

Giusto dopo la fase di avvio di FreeBSD e quando gli script di avvio sono stati eseguiti[2], ti viene presentato un prompt dove inserire un valido username:

login:

Giusto per questo esempio, assumiamo che il tuo username sia john. Al prompt digita john e premi Invio. Ti verrà presentato un prompt dove inserire la ``password'':

login: john
Password:

Digita la password di john, e premi Invio. La password non viene visualizzata! Non ti devi preoccupare di questo per ora. È sufficiente sapere che è una questione di sicurezza.

Se hai digitato la tua password in modo corretto, dovresti essere loggato in FreeBSD e sei quindi pronto per provare tutti i comandi disponibili.

Dovresti inoltre vedere il messaggio del giorno (MOTD) seguito da un prompt dei comandi (un carattere #, $, o %). Ciò indica che sei a tutti gli effetti loggato in FreeBSD.


3.2.3 Console Multiple

Eseguire comandi UNIX in una sola console va bene, tuttavia FreeBSD può eseguire più programmi alla volta. Avere una sola console dove poter digitare i comandi può essere un pò uno spreco quando un sistema operativo come FreeBSD è in grado di eseguire dozzine di programmi contemporaneamente. È in questo caso che le ``console virtuali'' possono essere molto utili.

FreeBSD può essere configurato in modo tale da poter utilizzare differenti console virtuali. Puoi passare da una console virtuale ad un'altra digitando un paio di tasti sulla tastiera. Ogni console ha il proprio canale di output indipendente, e FreeBSD si occupa di redirigere correttamente l'input della tastiera e l'output del monitor quando passi da una console virtuale in un'altra.

In FreeBSD alcune combinazioni speciali di tasti sono state riservate per il passaggio tra le console[3]. Puoi usare Alt-F1, Alt-F2, fino a Alt-F8 per cambiare console su FreeBSD.

Quando passi da una console ad un'altra, FreeBSD si preoccupa di salvare e ripristinare l'output a video. Il risultato è l'``illusione'' di avere più schermi e più tastiere ``virtuali'' che puoi utilizzare per dare in pasto a FreeBSD dei comandi. I programmi che lanci su una console virtuale rimarranno in esecuzione anche quando la console non è visibile. L'esecuzione di questi programmi continua quando passi in un'altra console virtuale.


3.2.4 Il File /etc/ttys

La configurazione di default di FreeBSD prevede l'avvio del sistema con otto console virtuali. Comunque questo non è un settaggio obbligatorio, e puoi facilmente personalizzare la tua installazione in modo tale da avviare il sistema con qualche console virtuale in più. Il numero e i settaggi delle console virtuali sono configurati nel file /etc/ttys.

Puoi usare il file /etc/ttys per configurare le console virtuali di FreeBSD. In questo file ogni riga non commentata (le righe che non iniziano con il carattere #) contiene i settaggi di un singolo terminale o di una singola console virtuale. La versione di default di questo file contenuta in FreeBSD configura nove console virtuale, e ne abilita otto di queste. Si tratta delle righe che iniziano con ttyv:

# name  getty                           type    status          comments
#
ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
# Terminali virtuali
ttyv1   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv2   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv3   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv4   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv5   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv6   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv7   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure

Per una descrizione più dettagliata su ogni colonna di questo file e per tutte le opzioni che puoi utilizzare per settare le console virtuali, consulta la pagina man ttys(5).


3.2.5 Console in Modalità Single User

Una descrizione dettagliata del significato della ``modalità single user'' può essere trovata nella Sezione 12.6.2. È bene notare che c'è un'unica console quando avvii FreeBSD in modalità single user. Le console virtuali non sono disponibili. Anche i settaggi della console in modalità single user possono essere trovati nel file /etc/ttys. Guarda la riga che inizia con console:

# name  getty                           type    status          comments
#
# Se la console è definita "insecure", allora il processo init richiederà la password di root
# quando entrerai in modalità single-user.
console none                            unknown off secure

Nota: Come riportato nel commento sopra la riga console, puoi modificare questa riga cambiando secure in insecure. Se lo fai, quando FreeBSD viene avviato in modalità single user, verrà chiesta la password di root.

Pensaci comunque due volte a settare il parametro insecure. Se non ricordi più la password di root, riuscire ad avviare il sistema in modalità single user sarà molto complesso. È ancora possibile, ma potrebbe essere molto difficile per chi non conosce molto bene il meccanismo di avvio di FreeBSD e i relativi programmi.


3.3 I Permessi

FreeBSD, essendo un discendente diretto dello UNIX BSD, si basa su molti concetti chiave di UNIX. Il primo e il più affermato è che FreeBSD è un sistema operativo multi-utente. Il sistema può gestire diversi utenti che lavorano contemporaneamente su lavori indipendenti. Il sistema è responsabile della gestione e della suddivisione appropiata delle richieste di utilizzo dei dispositivi hardware, delle periferiche, della memoria, e del tempo di CPU in modo equo per ogni utente.

Poichè il sistema è in grado di supportare più utenti, tutto ciò che il sistema gestisce possiede un'insieme di permessi che determinano chi può leggere, scrivere, ed eseguire la risorsa. Questi permessi sono memorizzati mediante tre ottetti suddivisi in tre parti, una per il proprietario del file, una per il gruppo al quale il file appartiene, e una per tutti gli altri. Questa rappresentazione numerica funziona in questo modo:

Valore Permessi Listato nella Directory
0 Lettura no, scrittura no, esecuzione no ---
1 Lettura no, scrittura no, esecuzione --x
2 Lettura no, scrittura, esecuzione no -w-
3 Lettura no, scrittura, esecuzione -wx
4 Lettura, scrittura no, esecuzione no r--
5 Lettura, scrittura no, esecuzione r-x
6 Lettura, scrittura, esecuzione no rw-
7 Lettura, scrittura, esecuzione rwx

Puoi usare l'opzione -l del comando ls(1) per visualizzare un lungo listato della directory che include una colonna contenente le informazioni sui permessi del file per il proprietario, per il gruppo, e per gli altri. Per esempio, digitando ls -l in una arbitraria directory:

% ls -l
total 530
-rw-r--r--  1 root  wheel     512 Sep  5 12:31 myfile
-rw-r--r--  1 root  wheel     512 Sep  5 12:31 otherfile
-rw-r--r--  1 root  wheel    7680 Sep  5 12:31 email.txt
...

Ecco come è suddivisa la prima colonna dell'output del comando ls -l:

-rw-r--r--

Il primo carattere (partendo da sinistra) indica se il file in questione è un file regolare, una directory, un file speciale per dispositivi a caratteri, una socket, o un file speciale per altri dispositivi. Nel nostro caso, il - indica un file regolare. I tre caratteri successivi, che in questo esempio sono rw-, indicano i permessi per il proprietario del file. Seguono altri tre caratteri, r--, che indicano i permessi del gruppo al quale il file appartiene. Gli ultimi tre caratteri, r--, indicano i permessi per il resto del mondo. Un trattino significa che il permesso non viene concesso. Nel caso di questo file, i permessi sono settati affinchè il proprietario possa leggere e scrivere il file, il gruppo possa leggere il file, e il resto del mondo possa solamente leggere il file. In accordo con la precedente tabella, i permessi per questo file sono 644, dove ogni cifra rappresenta una delle tre parti che costituiscono i permessi del file.

D'accordo, ma il sistema come controlla i permessi sui dispositivi? FreeBSD tratta molti dispositivi hardware esattamente come un file che i programmi possono aprire, leggere, e scrivere dei dati proprio come avviene con gli altri file. Questi file speciali per i dispositivi sono memorizzati nella directory /dev.

Anche le directory sono trattate come file. Queste hanno permessi di lettura, scrittura e di esecuzione. Il bit riferito al permesso di esecuzione per una directory ha un significato leggermente differente rispetto a quello dei file. Quando una directory ha il permesso di esecuzione abilitato, significa che si ha accesso alla directory, ossia è possibile eseguire il comando ``cd'' (cambio di directory) per entrarci. Inoltre questo significa che all'interno della directory è possibile accedere ai file dei quali si conosce il nome (naturalmente a condizione dei permessi degli stessi file).

In particolare, per visualizzare il contenuto di una directory, deve essere abilitato il permesso di lettura sulla stessa, mentre per eliminare un file di cui si conosce il nome, è necessario che la directory contenente il file abbia i permessi di scrittura e di esecuzione abilitati.

Ci sono altri bit per permessi particolari, ma sono in genere usati in circostanze speciali come il permesso di setuid per i binari e quello di sticky per le directory. Se vuoi avere più informazioni sui permessi dei file e su come settarli, guarda la pagina man di chmod(1).


3.3.1 Permessi Simbolici

Contributo di Tom Rhodes.

I permessi simbolici, qualche volta chiamati espressioni simboliche, usano caratteri al posto dei numeri ottali per assegnare i permessi a file o directory. Le espressioni simboliche usano la sintassi (chi) (azione) (permessi), con i seguenti valori:

Opzione Lettera Cosa rappresenta/Cosa fa
(chi) u Utente
(chi) g Gruppo di appartenenza
(chi) o Altri
(chi) a Tutti (tutto il ``mondo'')
(azione) + Aggiunge i permessi
(azione) - Rimuove i permessi
(azione) = Setta esplicitamente i permessi
(permessi) r Lettura
(permessi) w Scrittura
(permessi) x Esecuzione
(permessi) t Bit sticky
(permessi) s Setta UID o GID

Questi valori sono usati con il comando chmod(1) in modo simile a prima, ma con le lettere. Per esempio, puoi usare il seguente comando per impedire agli altri utenti l'accesso a FILE:

% chmod go= FILE

Se si ha la necessità di realizzare più di una modifica ai settaggi di un file si può usare una lista di settaggi separati da virgola. Per esempio il seguente comando rimuoverà il permesso di scrittura su FILE al gruppo di appartenenza del file e al resto del ``mondo'', e inoltre aggiungerà il permesso di esecuzione per tutti:

% chmod go-w,a+x FILE

3.4 Struttura delle Directory

La gerarchia delle directory di FreeBSD è fondamentale per ottenere una comprensione globale del sistema. Il concetto più importante da cogliere al volo è quello relativo alla directory root, ``/''. Questa directory è la prima ad essere montata all'avvio e contiene gli elementi fondamentali del sistema necessari per predisporre il sistema operativo al funzionamento multi-utente. Inoltre la directory root contiene i punti di mount per gli altri file system che potresti voler montare.

Un punto di mount è una directory dove dei file system aggiuntivi possono essere innestati sul file system root. Alcuni punti di mount standard sono /usr, /var, /mnt, e /cdrom. Queste directory compaiono in genere negli elementi del file /etc/fstab. Il file /etc/fstab è una tabella di file system e punti di mount che viene consultata dal sistema. Molti dei file system riferiti nel file /etc/fstab sono montati in modo automatico all'avvio tramite lo script rc(8) a meno che essi sia stati dichiarati con l'opzione noauto. Consulta la pagina man di fstab(5) per maggiori informazioni sul formato del file /etc/fstab e per le opzioni che può contenere.

Una descrizione completa della gerarchia del file system è disponibile nella pagina man hier(7). Per ora, è sufficiente una breve panoramica generale delle directory più comuni.

Directory Descrizione
/ Directory root del file system.
/bin/ Utilità fondamentali per l'utente sia in ambiente mono-utente sia in ambiente multi-utente.
/boot/ Programmi e file di configurazione utilizzati durante la fase di avvio del sistema operativo.
/boot/defaults/ File di configurazione di avvio di default; consultare loader.conf(5).
/dev/ Nodi di dispositivo; consultare intro(4).
/etc/ Script e file di configurazione del sistema.
/etc/defaults/ File di configurazione di default del sistema; consultare rc(8).
/etc/mail/ File di configurazione per gli MTA (Mail Transfer Agent, agente di trasferimento della posta elettronica) come sendmail(8).
/etc/namedb/ File di configurazione di named; consultare named(8).
/etc/periodic/ Script che sono eseguiti giornalmente, settimanalmente, e mensilmente tramite cron(8); consultare periodic(8).
/etc/ppp/ File di configurazione di ppp; consultare ppp(8).
/mnt/ Directory vuota usata comunemente dagli amministratori di sistema come punto di mount temporaneo.
/proc/ File system dedicato ai processi; consultare procfs(5), mount_procfs(8).
/root/ Directory home per l'account root.
/sbin/ Programmi di sistema e utilità di amministrazione fondamentali sia in ambiente mono-utente sia in ambiente multi-utente.
/stand/ Programmi usati in un ambiente standalone.
/tmp/ File temporanei, di solito un file system basato sulla memoria come mfs(8) (generalmente il contenuto di /tmp non viene preservato dopo un reboot del sistema).
/usr/ La maggior parte delle applicazioni e delle utilità dell'utente.
/usr/bin/ Utilità, strumenti di programmazione, e applicazioni comuni.
/usr/include/ File include standard del C.
/usr/lib/ Archivio di librerie.
/usr/libdata/ Archivio di dati per utilità varie.
/usr/libexec/ Demoni & utilità di sistema (eseguiti da altri programmi).
/usr/local/ Eseguibili locali, librerie locali, ecc. Usata anche come destinazione di default per la struttura dei port di FreeBSD. All'interno di /usr/local, viene usato lo stesso schema generale descritto in hier(7) per la directory /usr. Le eccezioni sono la directory man, che è posta direttamente sotto /usr/local piuttosto che sotto /usr/local/share, e la documentazione dei port che è in share/doc/port.
/usr/obj/ Albero degli elementi dipendenti dal tipo di architettura dell'elaboratore prodotto dalla costruzione dell'albero /usr/src.
/usr/ports Collezione dei port di FreeBSD (opzionale).
/usr/sbin/ Demoni & utilità di sistema (eseguiti dagli utenti).
/usr/share/ File indipendenti dal tipo di architettura dell'elaboratore.
/usr/src/ File sorgenti di BSD e/o sorgenti proprietari.
/usr/X11R6/ Eseguibili, librerie, ecc. riguardanti la distribuzione X11R6 (opzionale).
/var/ File log di vario genere, file temporanei, file transitori, e file di spool.
/var/log/ File di log del sistema di vario genere.
/var/mail/ File delle caselle di posta degli utenti.
/var/spool/ Directory di spool per stampanti e per la posta elettronica del sistema.
/var/tmp/ File temporanei che sono mantenuti tra i reboot del sistema.
/var/yp Mappe NIS.



3.5 Organizzazione del Disco

La più piccola unità di organizzazione che FreeBSD usa per ricercare file è il nome del file. I nomi dei file sono case-sensitive, ciò significa che readme.txt e README.TXT sono due file distinti. FreeBSD non usa l'estensione (es. .txt) di un file per determinare se il file è un programma, un documento, o qualche altra forma di dati.

I file sono memorizzati in directory. Una directory può contenere centinaia di file o non contenerne affatto. Inoltre una directory può contenere altre directory, consentendo di costruire una gerarchia di directory all'interno di un'altra. Tutto questo rende più facile l'organizzazione dei tuoi dati.

File e directory sono riferiti attraverso il nome del file o della directory, seguito da uno slash in avanti, /, a sua volta seguito da altri nomi di directory che sono necessari. Se hai una directory di nome foo, la quale contiene la directory bar, che a sua volta contiene il file readme.txt, allora il nome completo, chiamato anche il path del file è foo/bar/readme.txt.

Le directory e i file sono memorizzati in un filesystem. Ogni filesystem contiene esattamente una directory al livello più alto, chiamata la directory root di quel filesystem. Questa directory root può contenere altre directory.

Fin qui è probabilmente tutto simile ad altri sistemi operativi che hai usato. Tuttavia ci sono alcune differenze; per esempio, il MS-DOS usa il carattere \ per separare i nomi di file e directory, mentre Mac OS® usa :.

FreeBSD non usa lettere di dispositivi, o altri nomi di dispositivi nel path. In FreeBSD non dovrai mai scrivere c:/foo/bar/readme.txt.

Piuttosto, un filesystem è designato come il filesystem root. La directory root del filesystem root è riferita con /. Ogni altro filesystem è montato sotto il filesystem root. Non importa quanti dischi hai sul tuo sistema FreeBSD, ogni directory è come se fosse parte dello stesso disco.

Supponiamo che tu abbia tre filesystem, chiamati A, B, e C. Ogni filesystem ha una directory root, la quale contiene altre due directory, chiamate A1, A2 (e nello stesso modo B1, B2 e C1, C2).

Sia A il filesystem root. Se usi il comando ls per visualizzare il contenuto di questa directory dovresti vedere due sottodirectory, A1 e A2. L'albero delle directory assomiglia a questo:

Un filesystem deve essere montato su una directory di un altro filesystem. Supponiamo ora che tu monti il filesystem B sulla directory A1. La directory root di B rimpiazza A1, e di conseguenza appariranno le directory di B:

I file contenuti nelle directory B1 o B2 possono essere raggiunti con il path /A1/B1 o /A1/B2. I file che erano in /A1 sono stati temporaneamente nascosti. Questi riappariranno quando B sarà smontato da A.

Se B è stato montato su A2 allora il diagramma assomiglierà a questo:

e i path saranno rispettivamente /A2/B1 e /A2/B2.

I filesystem possono essere montati in cima ad altri filesystem. Continuando con l'ultimo esempio, il filesystem C può essere montato in cima alla directory B1 nel filesystem B, arrivando a questa sistemazione:

Oppure C potrebbe essere montato direttamente sul filesystem A, sotto la directory A1:

Se hai familiarità con MS-DOS, questo è simile, man non identico, al comando join.

Di solito non ti devi occupare direttamente di questi aspetti. Tipicamente quando installi FreeBSD crei i filesystem e decidi dove montarli, e da quel momento non avrai più la necessità di modificarli a meno che installi un nuovo disco.

È possibile avere un unico filesystem root, senza avere la necessità di crearne altri. Esistono alcuni svantaggi utilizzando questo approccio, e un solo vantaggio.

Benefici con Filesystem Multipli

  • Filesystem diversi possono avere opzioni di mount diverse. Per esempio, in una attenta progettazione, il filesystem root potrebbe essere montato in modalità di sola lettura, rendendo impossibile la cancellazione accidentale o la modifica di un file critico. Inoltre, separando i filesystem scrivibili dall'utente, come /home, da altri filesystem permette di montare i primi con l'opzione nosuid; questa opzione non permette il settaggio dei bit suid/guid sui file eseguibili memorizzati sul filesystem che ha tale opzione di mount attivata, migliorando l'aspetto sicurezza.

  • FreeBSD ottimizza in modo automatico la disposizione dei file sul filesystem, a seconda di come è usato il filesystem. Quindi un filesystem che contiene molti file piccoli che sono scritti di frequente avrà un'ottimizzazione diversa rispetto ad un altro filesystem che contiene pochi file di grandi dimensioni. Utilizzando un solo grande filesystem questa ottimizzazione viene a mancare.

  • I filesystem di FreeBSD reagiscono bene ad una violenta perdita di energia elettrica. Tuttavia, una perdita di energia in un punto critico potrebbe sempre danneggiare la struttura del filesystem. Splittando i tuoi dati su filesystem multipli sarà più probabile che il sistema riparta, dandoti la possibilità di ripristinare un precedente backup se necessario.

Benefici di un Filesystem Singolo

  • I filesystem sono a dimensione fissa. Se crei un solo filesystem quando installi FreeBSD e gli assegni una data dimensione, in futuro potresti scoprire che necessiti di creare una partizione più grande. Questo non è facilmente realizzabile se non effettuando un backup dei dati, ricreando il filesystem con la nuova dimensione, e quindi ripristinando il backup di dati.

    Importante: FreeBSD 4.4 e successivi hanno il comando growfs(8), con il quale è possibile incrementare la dimensione del filesystem al volo, rimuovendo questa limitazione.

I filesystem sono contenuti all'interno di partizioni. Qui il significato del termine partizione si discosta dall'uso comune di questo termine (partizioni MS-DOS, per esempio), a causa dell'eredità UNIX di FreeBSD. Ogni partizione è identificata da una lettera partendo dalla a fino alla h. Ogni partizione può contenere solo un filesystem, il che significa che i filesystem sono spesso identificati sia dal loro punto di mount nella gerarchia del filesystem, sia dalla lettera della partizione nella quale sono contenuti.

Inoltre FreeBSD usa parte del disco per lo spazio di swap. Lo spazio di swap fornisce a FreeBSD la funzionalità di memoria virtuale. Questo permette al tuo computer di comportarsi come se avesse più memoria di quella che ha realmente. Quando FreeBSD esaurisce la memoria muove alcuni dati presenti in memoria che non sono utilizzati in quel momento nello spazio di swap, e li riporta in memoria (spostando nello spazio di swap qualche altro dato) non appena necessari.

Alcune partizioni hanno certe convenzioni a loro associate.

Partizione Convenzione
a In genere contiene il filesystem root
b In genere contiene lo spazio di swap
c Di solito rappresenta l'intera dimensione della slice. Questo permette a utility che necessitano di lavorare sull'intera slice (per esempio, uno scanner di blocchi difettosi) di lavorare sulla partizione c. Di norma non dovresti creare un filesystem su questa partizione.
d La partizione d era utilizzata in passato con un significato speciale, sebbene ora non sia più utilizzata. Ai giorni d'oggi, alcuni strumenti operano in modo starno se gli si dice di lavorare sulla partizione d, e per questo motivo sysinstall di norma non la crea.

Ogni partizione-che-contiene-un-filesystem è memorizzata in ciò che FreeBSD chiama slice. Slice è un termine di FreeBSD per identificare ciò che comunemente viene chiamato partizione, e di nuovo, questo è dovuto dal background UNIX di FreeBSD. Le slices sono numerate, partendo da 1 e arrivando fino a 4.

I numeri di slice seguono il nome del dispositivo, preceduti da una s, e partendo da 1. Quindi ``da0s1'' è la prima slice sul primo disco SCSI. Ci possono essere solo quattro slice fisiche su un disco, ma puoi avere slice logiche all'interno di slice fisiche di un appropriato tipo. Queste slice estese sono numerate a partire da 5, quindi ``ad0s5'' è la prima slice estesa sul primo disco IDE. Questi stratagemmi sono usati per i filesystem che si aspettano di occupare una slice.

Le slice, i dispositivi fisici ``pericolosamente dedicati'', e altri dispositivi contengono partizioni, le quali sono rappresentate tramite lettere dalla a fino alla h. Queste lettere seguono il nome del dispositivo, quindi ``da0a'' è la partizione a sul primo dispositivo da, il quale è ``pericolosamente dedicato''. ``ad1s3e'' è la quinta partizione nel terza slice del secondo disco IDE.

In fine, ogni disco sul sistema è identificato. Un nome di un disco incomincia con un codice che indica il tipo di disco, seguito da un numero, che indica quale disco esso sia. A differenza delle slice, i numeri riferiti al disco incominciano da 0. Puoi vedere dei codici generici in Tabella 3-1.

Quando fai riferimento a una partizione di FreeBSD devi specificare anche il nome della slice e del disco che contengono la partizione, e quando fai riferimento a una slice dovresti specificare anche il nome del disco. Specifica quindi il nome del disco, il carattere s, il numero di slice, e infine la lettera della partizione. Alcuni esempi sono mostrati nell'Esempio 3-1.

L'Esempio 3-2 mostra un modello concettuale di struttura di un disco che dovrebbe aiutare a chiare le cose.

Per installare FreeBSD devi prima configurare le slice del disco, creare le partizioni all'interno della slice che vuoi usare per FreeBSD, e quindi creare un filesystem (o spazio di swap) in ogni partizione, e decidere dove il filesystem deve essere montato.

Tabella 3-1. Codici dei Dispositivi Disco

Codice Significato
ad disco ATAPI (IDE)
da disco ad accesso diretto SCSI
acd CDROM ATAPI (IDE)
cd CDROM SCSI
fd Disco floppy

Esempio 3-1. Esempi di Nomi di Dischi, di Slice, e di Partizioni

Nome Significato
ad0s1a La prima partizione (a) sulla prima slice (s1) sul primo disco IDE (ad0).
da1s2e La quinta partizione (e) sulla seconda slice (s2) sul secondo disco SCSI (da1).

Esempio 3-2. Modello Concettuale di un Disco

Questo diagramma mostra come FreeBSD vede il primo disco IDE attaccato al sistema. Si assuma che il disco sia di 4 GB, e che contenga due slice da 2 GB (equivalenti come significato a due partizioni MS-DOS). La prima slice contiene un disco MS-DOS, C:, e la seconda slice contiene un'installazione di FreeBSD. In questo esempio l'installazione di FreeBSD ha tre partizioni standard più una di swap.

Le tre partizioni conterranno ognuna un filesystem. La partizione a sarà usata per il filesystem root, la e per la gerarchia di directory /var, e la partizione f per la gerarchia di directory /usr.


3.6 Montaggio e Smontaggio dei File system

Il file system è raffigurato in maniera ottimale da un albero, radicato, per così dire, in /. Le directory /dev, /usr, e le altre directory che stanno all'interno della directory root sono i rami, i quali possono essere a loro volta ramificati, come in /usr/local, e così via.

Esistono varie ragioni per mantenere alcune di queste directory su file system separati. La directory /var contiene le directory log/, spool/, e vari tipi di file temporanei, e come tale, può riempirsi. Riempire il file system root non è una buona idea, quindi scindere la directory /var da / è spesso vantaggioso.

Un'altra motivazione per mantenere certi alberi di directory su altri file system è quando questi alberi sono alloggiati su dischi fisici separati, o sono dischi virtuali separati, come avviene per i mount del Network File System, o dei dispositivi CDROM.


3.6.1 Il File fstab

Durante la fase di avvio, i file system elencati nel file /etc/fstab sono montati in modo automatico (a meno che siano specificati con l'opzione noauto).

Il file /etc/fstab contiene una serie di righe il cui formato è il seguente:

device       /mount-point fstype     options      dumpfreq     passno
device

Il nome del dispositivo (che deve esistere), come spiegato nella Sezione 16.2.

mount-point

La directory (che deve esistere), sulla quale montare il file system.

fstype

Il tipo di file system da passare a mount(8). Il file system di default di FreeBSD è ufs.

options

rw per file system leggibili-scrivibili, oppure ro per file system solamente leggibili, seguite da altre opzioni che potrebbero essere necessarie. Un'opzione comune è noauto per i file system che normalmente non sono montati durante la sequenza di avvio. Altre opzioni sono elencate nella pagina man di mount(8).

dumpfreq

Viene usato da dump(8) per determinare quali file system richiedono un dump. Se non si specifica nulla, viene assunto il valore zero.

passno

Determina l'ordine secondo il quale i file system vengono controllati. I file system che devono saltare il controllo devono avere i loro passno settati a zero. Il file system root (che deve essere controllato prima di qualsiasi altra cosa) deve avere il suo passno settato a uno, e i passno degli altri file system devono essere settati a valori maggiori di uno. Se più di un file system ha lo stesso passno allora fsck(8) tenterà di controllare i file system in parallelo.


3.6.2 Il Comando mount

Il comando mount(8) è ciò che in definitiva viene usato per montare i file system.

La sua forma di utilizzo elementare è:

# mount device mountpoint

Esistono molte opzioni, come spiegato nella pagina man di mount(8), ma le più comuni sono:

Opzioni di Mount

-a

Monta tutti i file system elencati nel file /etc/fstab. Le eccezioni sono quei file system specificati come ``noauto'', quelli esclusi dalla flag -t, o quei file system che sono già montati.

-d

Fà tutto ad eccezione della attuale system call di mount. Questa opzione risulta utile in congiunzione con la flag -v per determinare quale mount(8) si stia effettivamente tentando di realizzare.

-f

Forza il mount di un file system impuro (pericoloso), o forza la revoca di accesso in scrittura quando si declassa lo stato di mount di un file system da lettura-scrittura a lettura solamente.

-r

Monta il file system in sola lettura. Questo è identico ad usare l'argomento rdonly con l'opzione -o.

-t fstype

Monta il dato file system secondo il tipo di file system specificato, oppure, se affiancato dall'opzione -a, monta solamente i file system di un dato tipo.

``ufs'' è il tipo di file system di default.

-u

Aggiorna le opzioni di mount sul file system.

-v

Modalità verbose.

-w

Monta il file system in lettura-scrittura.

L'opzione -o accetta una lista di argomenti separati da una virgola, inclusi i seguenti:

nodev

Non permette l'interpretazione di dispositivi speciali sul file system. Questa è un'utile opzione di sicurezza.

noexec

Non permette l'esecuzione di binari su questo file system. Questa è un'altra utile opzione di sicurezza.

nosuid

Non permette l'interpretazione delle flag setuid o setgid sul file system. Anche questa è un'utile opzione di sicurezza.


3.6.3 Il Comando umount

Il comando umount(8) accetta, come unico parametro, un punto di mount, un nome di dispositivo, l'opzione -a o l'opzione -A.

Tutte queste modalità accettano l'opzione -f per forzare la smontatura, e l'opzione -v per la modalità verbose. Sei avvisato che l'opzione -f non è in generale un buona idea. Smontare in modo violento i file system può mandare in crash il computer o danneggiare i dati sul file system.

Le opzioni -a e -A sono usate per smontare tutti i file system, con la possibilità di specificare i tipi di file system elencandoli dopo la flag -t. Tuttavia, l'opzione -A non tenta di smontare il file system root.


3.7 I Processi

FreeBSD è un sistema operativo multi-tasking. Con questa capacità il sistema è come se potesse eseguire più di un programma alla volta. Ogni programma in esecuzione in un dato istante è chiamato processo. Ogni volta che esegui un comando fai partire almeno un nuovo processo, e ci sono molti processi di sistema che sono sempre in esecuzione, che permettono il corretto funzionamento del sistema.

Ogni processo è identificato in modo univoco da un numero chiamato process ID, o PID, e, come avviene per i file, ogni processo ha un proprietario e un gruppo. Le informazioni sul proprietario e sul gruppo sono usate per determinare, tramite il meccanismo dei permessi dei file discusso precedentemente, quali file e quali dispositivi il processo può aprire. Inoltre molti processi hanno un processo padre. Tale processo è il processo che li ha generati. Per esempio, se stai digitando dei comandi in shell allora la shell è un processo, così come lo sono i comandi che esegui. Ogni processo che esegui in questo modo avrà come suo processo padre la tua shell. L'eccezione a questo meccanismo è un processo speciale chiamato init(8). Il processo init è sempre il primo processo, quindi il suo PID è sempre 1. init viene avviato in modo automatico dal kernel quando si avvia FreeBSD.

Due comandi sono particolarmente utili per monitorare i processi sul sistema, ps(1) e top(1). Il comando ps è usato per mostrare una lista statica dei processi che sono in esecuzione in quel momento, e può mostrare i loro PID, quanta memoria stanno usando, la linea di comando che li ha avviati, e altro ancora. Il comando top visualizza tutti i processi in esecuzione, e aggiorna queste informazioni ogni qualche secondo, in modo che puoi vedere interattivamente cosa sta facendo il tuo computer.

Di default, ps mostra solo i tuoi comandi che sono in quel momento in esecuzione. Per esempio:

% ps
  PID  TT  STAT      TIME COMMAND
  298  p0  Ss     0:01.10 tcsh
 7078  p0  S      2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
37393  p0  I      0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
48630  p0  S      2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi
48730  p0  IW     0:00.00 (dns helper) (navigator-linux-)
72210  p0  R+     0:00.00 ps
  390  p1  Is     0:01.14 tcsh
 7059  p2  Is+    1:36.18 /usr/local/bin/mutt -y
 6688  p3  IWs    0:00.00 tcsh
10735  p4  IWs    0:00.00 tcsh
20256  p5  IWs    0:00.00 tcsh
  262  v0  IWs    0:00.00 -tcsh (tcsh)
  270  v0  IW+    0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
  280  v0  IW+    0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
  284  v0  IW     0:00.00 /bin/sh /home/nik/.xinitrc
  285  v0  S      0:38.45 /usr/X11R6/bin/sawfish

Come puoi vedere in questo esempio, l'output di ps(1) è organizzato in molte colonne. La colonna PID si riferisce al process ID discusso poco fà. I PID sono assegnati partendo dal numero 1, andando fino al 99999, e ricominciando dall'inizio una volta esauriti (se disponibili). La colonna TT mostra su quale tty il programma è in esecuzione, e può essere benissimo ignorata per il momento. La colonna STAT mostra lo stato del programma, e di nuovo, può essere benissimo ignorata. La colonna TIME indica per quanto tempo il programma è stato in esecuzione sulla CPU--di solito non indica il tempo trascorso da quando hai avviato il programma, poichè la maggior parte dei programmi trascorrono molto tempo in attesa per faccende che accadono prima che questi possano trascorrere del tempo in CPU. Infine, la colonna COMMAND indica la riga di comando che è stata utilizzata per eseguire il programma.

Il comando ps(1) supporta varie opzioni per cambiare le informazioni da visualizzare. Uno dei gruppi di opzioni più utili è auxww. L'opzione a mostra le informazioni riguardo a tutti i processi in esecuzione, non solo quelli che ti appartengono. L'opzione u mostra il nome utente del proprietario del processo, come pure la memoria utilizzata dal processo. L'opzione x mostra le informazioni riguardo ai processi demoni, e l'opzione ww indica a ps(1) di visualizzare la linea di comando completa che ha avviato il processo, piuttosto che troncarla quando è troppo lunga per essere adattata sullo schermo.

L'output di top(1) è simile. Un esempio di esecuzione assomiglia a questo:

% top
last pid: 72257;  load averages:  0.13,  0.09,  0.03    up 0+13:38:33  22:39:10
47 processes:  1 running, 46 sleeping
CPU states: 12.6% user,  0.0% nice,  7.8% system,  0.0% interrupt, 79.7% idle
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse

  PID USERNAME PRI NICE  SIZE    RES STATE    TIME   WCPU    CPU COMMAND
72257 nik       28   0  1960K  1044K RUN      0:00 14.86%  1.42% top
 7078 nik        2   0 15280K 10960K select   2:54  0.88%  0.88% xemacs-21.1.14
  281 nik        2   0 18636K  7112K select   5:36  0.73%  0.73% XF86_SVGA
  296 nik        2   0  3240K  1644K select   0:12  0.05%  0.05% xterm
48630 nik        2   0 29816K  9148K select   3:18  0.00%  0.00% navigator-linu
  175 root       2   0   924K   252K select   1:41  0.00%  0.00% syslogd
 7059 nik        2   0  7260K  4644K poll     1:38  0.00%  0.00% mutt
...

L'output è diviso in due sezioni. La parte superiore (le prime cinque linee) mostra il PID dell'ultimo processo eseguito, il carico medio del sistema (che è un indice di come il sistema sia impegnato), il tempo di vita del sistema (il tempo passato dall'ultimo reboot) e l'ora corrente. I restanti numeri nella parte superiore riportano quanti processi sono in esecuzione (47 in questo caso), quanta memoria di sistema e quanta memoria di swap è stata utilizzata, e quanto tempo il sistema sta trascorrendo nei vari stati di CPU.

Sotto ci sono una serie di colonne che contengono simili informazioni a quelle contenute nell'output di ps(1). Come prima puoi vedere il PID, il nome utente, quanto tempo di CPU è stato utilizzato, e il comando che era stato eseguito. Inoltre il comando top(1) di default ti mostra quanta memoria è stata concessa al processo. Questa informazione è suddivisa in due colonne, una per la dimensione totale, e l'altra per la dimensione attuale--la dimensione totale è la quantità di memoria che l'applicazione ha richiesto, e la dimensione attuale è la quantità di memoria che sta utilizzando in quel momento. In questo esempio puoi vedere che Netscape ha richiesto quasi 30 MB di RAM, ma al momento ne sta usando solo 9 MB.

Il comando top(1) aggiorna in modo automatico queste informazioni ogni due secondi; questo lasso temporale può essere modificato con l'opzione s.


3.8 I Demoni, i Segnali, e come Uccidere i Processi

Quando esegui un'editor risulta semplice averne il controllo, dirgli di caricare file, e così via. Tutto questo può essere fatto poichè l'editor fornisce delle agevolazioni in questo senso, e anche perchè l'editor è collegato a un terminale. Alcuni programmi non sono stati progettati per essere eseguiti con un continuo input dell'utente, e perciò questi programmi si sconnettono dal terminale alla prima occasione. Per esempio, un server web trascorre tutto il giorno rispondendo a richieste web, e normalmente non necessita di alcun input da parte tua. I programmi che trasportano la posta elettronica da un sito a un'altro sito sono un'altro esempio di questa classe di applicazioni.

Chiamiamo questi programmi demoni. I demoni erano dei personaggi della mitologia greca; nè buoni nè cattivi, erano piccoli custodi degli spiriti che, nel complesso, risultavano essere utili per l'umanità. Molto similmente i server web e quelli di posta elettronica di oggi fanno cose utili. Ecco il motivo per cui la mascot di BSD è stata per molto tempo, e lo è ancora, l'allegro demone con le scarpe da tennis e con il forcone.

Esiste la convenzione di chiamare i programmi che normalmente sono eseguiti come demoni con una ``d'' finale. BIND sta per Berkeley Internet Name Daemon (e il nome effettivo del programma che viene eseguito è named), il nome del programma Apache, un server web, è httpd, il demone dello spool di stampa è lpd e così via. Questa è una convenzione, non è una regola ferrea; per esempio, il principale demone di posta elettronica per l'applicazione Sendmail è chiamato sendmail, e non maild, come potresti aspettarti.

A volte puoi aver bisogno di comunicare con un processo demone. Queste comunicazioni sono chiamate segnali, e puoi comunicare con i demoni (o con altri processi in esecuzione) mandandogli un segnale. Esistono svariati segnali che puoi inviare--alcuni di questi hanno un significato specifico, altri sono interpretabili dall'applicazione, e la documentazione dell'applicazione ti dirà come l'applicazione stessa interpreta i segnali. Puoi mandare un segnale solo ai processi che ti appartengono. Se mandi un segnale a un processo che non ti appartiene con il comando kill(1) o kill(2) il permesso ti sarà negato. L'eccezione a questa regola riguarda l'utente root, che può mandare segnali a processi di chiunque.

Inoltre in alcune circostanze FreeBSD invia segnali alle applicazioni. Se un'applicazione è stata scritta malamente, e tenta di accedere alla memoria che non gli compete, FreeBSD manda al processo il segnale di Violazione della Segmentazione (SIGSEGV). Se un'applicazione ha utilizzato la system call alarm(3) in modo tale da essere avvisata dopo un certo periodo di tempo trascorso allora FreeBSD invierà a questa applicazione il segnale di Allarme (SIGALRM), e così via.

Per fermare un processo possono essere utilizzati due segnali, SIGTERM e SIGKILL. SIGTERM è il modo cortese di terminare un processo; il processo può catturare il segnale, capire che vuoi abbatterlo, chiudere i file di log che potrebbe avere aperto, e in genere terminare qualunque cosa che stava facendo prima dell'interruzione. Nei casi in cui un processo sia coinvolto in qualche compito che non può essere interrotto allora questo processo può persino ignorare SIGTERM.

Il segnale SIGKILL non può essere ignorato da un processo. Questo è il segnale che dice ``Non mi interessa cosa stai facendo, fermati subito''. Se mandi il segnale SIGKILL a un processo allora FreeBSD fermerà subito il processo[4].

Altri segnali che potresti aver bisogno di usare sono SIGHUP, SIGUSR1, e SIGUSR2. Questi sono segnali a scopo generico, e differenti applicazioni possono fare cose diverse quando catturano questi segnali.

Supponiamo che hai cambiato il file di configurazione del tuo server web--hai bisogno di dire al server web di rileggere la sua configurazione. Potresti fermare e riavviare httpd, ma questo porterebbe a un breve periodo di interruzione del tuo server web, che potrebbe non essere gradito. Molti demoni sono stati scritti per rispondere al segnale SIGHUP tramite la rilettura dei loro file di configurazione. In questo modo invece di terminare e riavviare httpd potresti inviare il segnale SIGHUP. Poichè non esiste un modo standard di trattare questi segnali, differenti demoni potrebbero avere un comportamento diverso, quindi assicurati di leggere la documentazione per il demone in questione.

I segnali sono inviati utilizzando il comando kill(1), come mostra questo esempio.

Inviare un Segnale a un Processo

Questo esempio mostra come inviare un segnale a inetd(8). Il file di configurazione di inetd è /etc/inetd.conf, e inetd rilegge questo file di configurazione quando riceve il segnale SIGHUP.

  1. Cerca il process ID del processo a cui vuoi mandare il segnale. Puoi utilizzare ps(1) e grep(1) per farlo. Il comando grep(1) viene utilizzato per perlustrare attraverso l'output, cercando la stringa da te specificata. Questo comando viene eseguito in modalità utente, e inetd(8) viene eseguito in modalità root, quindi le opzioni da dare a ps(1) sono ax.

    % ps -ax | grep inetd
      198  ??  IWs    0:00.00 inetd -wW
    

    Come puoi vedere il PID di inetd(8) è 198. In alcuni casi potrebbe apparire nel risultato anche il comando grep inetd. Questo dipende dal modo utilizzato da ps(1) nell'elencare la lista dei processi in esecuzione.

  2. Usa il comando kill(1) per inviare il segnale. Poichè inetd(8) viene eseguito in modalità root prima devi usare il comando su(1) per diventare root.

    % su
    Password:
    # /bin/kill -s HUP 198
    

    Come avviene per la maggior parte dei comandi UNIX, il comando kill(1) non stampa il risultato dell'operazione se questa ha avuto successo. Se mandi un segnale a un processo del quale non sei il proprietario allora vedrai il messaggio ``kill: PID: Operazione non permessa''. Se sbagli il PID invierai il segnale al processo sbagliato, il che potrebbe essere dannoso, o, se hai fortuna, manderai il segnale a un PID che in quel momento non è in uso, e in questo caso vedrai il messaggio ``kill: PID: Nessun processo''.

    Perchè Usare /bin/kill?: Molte shell forniscono il comando kill come comando built-in; ossia, la shell invia il segnale in modo diretto, senza dover eseguire /bin/kill. Tutto ciò può essere molto utile, ma le diverse shell hanno una sintassi diversa per specificare il nome del segnale da inviare. Invece di cercare di imparare tutte queste sintassi, può essere più semplice usare direttamente il comando /bin/kill ....

L'invio di altri segnali è analogo, basta sostituire all'occorrenza TERM o KILL nella linea di comando.

Importante: Terminare processi in modo random su un sistema può essere una cattiva idea. In particolare, il processo init(8), con process ID 1, è un caso molto speciale. Eseguire /bin/kill -s KILL 1 è un modo veloce per arrestare il tuo sistema. Controlla sempre due volte gli argomenti quando esegui kill(1) prima di premere Invio.


3.9 Le Shell

In FreeBSD, la maggior parte del lavoro di tutti i giorni viene svolto tramite un'interfaccia a riga di comando chiamata shell. Uno dei compiti principali di una shell è quello di prendere in input dei comandi ed eseguirli. Inoltre molte shell hanno delle funzioni built-in (incorporate) utili nei lavori ordinari come la gestione dei file, la sostituzione dei nomi dei file, la modifica della riga di comando, la creazione di macro di comandi, e la gestione delle variabili d'ambiente. FreeBSD si propone con una serie di shell, come la Shell Bourne, sh, e la versione successiva della C-shell, tcsh. Molte altre shell sono disponibili nella FreeBSD Ports Collection, come le shell zsh e bash.

Quale shell devi usare? È veramente una questione di gusti. Se sei un programmatore di C potresti sentirti a tuo agio con una shell C-like come la tcsh. Se vieni da Linux o non sei pratico dell'interfaccia a riga di comando di UNIX potresti provare la bash. Il fatto è che ogni shell ha delle caratteristiche che possono o meno combaciare con il tuo ambiente di lavoro preferito, e quindi devi scegliere tu stesso quale shell utilizzare.

Una caratteristica comune in una shell è il completamento dei nomi dei file. Dopo aver digitato alcuni dei primi caratteri di un comando o di un nome di file, la shell di solito può completare in modo automatico il resto del comando o del nome del file tramite la pressione del tasto Tab sulla tastiera. Ecco un'esempio. Supponiamo che hai due file chiamati foobar e foo.bar. Vuoi cancellare foo.bar. Quello che dovresti digitare sulla tastiera è: rm fo[Tab].[Tab].

La shell dovrebbe visualizzare rm foo[BEEP].bar.

Il [BEEP] è la campanella della console, che mi segnala che la shell è incapace di completare interamente il nome del file poichè esiste più di una sola corrispondenza. Sia foobar che foo.bar iniziano con fo, tuttavia la shell è riuscita a completarlo in foo. A questo punto premendo ., e poi di nuovo Tab, la shell sarà in grado di completare da sola il resto del nome del file.

Un'altro aspetto di una shell è l'uso delle variabili d'ambiente. Le variabili d'ambiente sono una coppia di valori mutevoli memorizzati nello spazio dell'ambiente della shell. Questo spazio può essere letto dai programmi invocati dalla shell, e di conseguenza questo spazio può contenere le configurazioni di molti programmi. Qui sotto c'è una lista delle variabili d'ambiente più comuni con il loro rispettivo significato:

Variabile Descrizione
USER Il nome dell'utente attualmente loggato.
PATH Lista di directory separate da due punti utilizzate per la ricerca dei binari.
DISPLAY Nome di rete del display X11 a cui connettersi, se disponibile.
SHELL La shell corrente.
TERM Il nome del terminale dell'utente. Usato per determinare le capacità del terminale.
TERMCAP Serie di elementi di codici di escape del terminale utilizzati per realizzare svariate funzioni del terminale.
OSTYPE Il tipo di sistema operativo. FreeBSD, ad esempio.
MACHTYPE L'architettura della CPU su cui il sistema gira.
EDITOR L'editor di testo preferito dall'utente.
PAGER L'impaginatore di testo preferito dall'utente.
MANPATH Lista di directory separate da due punti utilizzate nella ricerca delle pagine man.

Il modo di settare una variabile d'ambiente varia leggermente a seconda della shell utilizzata. Per esempio, nelle shell C-Style come tcsh e csh, puoi usare setenv per settare le variabili d'ambiente. Sotto le shell Bourne come sh e bash, puoi usare export per settare le tue variabili d'ambiente correnti. Per esempio, per settare o modificare la variabile d'ambiente EDITOR a /usr/local/bin/emacs, sotto csh o tcsh si può utilizzare il comando:

% setenv EDITOR /usr/local/bin/emacs

Sotto le shell Bourne:

% export EDITOR="/usr/local/bin/emacs"

Con la maggior parte delle shell puoi inoltre creare un'espansione di una variabile d'ambiente mettendo sulla riga di comando il simbolo $ davanti al nome della variabile stessa. Per esempio, echo $TERM visualizzerà ciò che corrisponde a $TERM, poichè la shell espande $TERM e passa il risultato a echo.

Le shell trattano molti caratteri speciali, chiamati meta-caratteri come rappresentazioni speciali di dati. Il più comune di questi è il simbolo *, che rappresenta diverse istanze di caratteri in un nome di file. Questi meta-caratteri possono essere usati per la sostituzione dei nomi di file. Per esempio, digitando echo * è quasi come aver digitato ls poichè la shell prende tutti i file che corrispondono a * e li mette sulla riga di comando con echo che quindi li visualizza.

Per impedire alla shell di interpretare questi caratteri speciali, questi possono essere messi in escape mettendo subito prima di essi un backslash (\). echo $TERM visualizza il tipo del tuo terminale. echo \$TERM visualizza $TERM così com'è.


3.9.1 Cambiare la Propria Shell

Il modo più semplice per cambiare la propria shell è quello di usare il comando chsh. Eseguendo chsh verrà invocato l'editor definito nella tua variabile d'ambiente EDITOR; nel caso in cui questa non sia stata settata, verrà invocato vi. Modifica la riga ``Shell:'' in base alle tue esigenze.

Puoi anche eseguire chsh con l'opzione -s; in questo modo verrà settata la shell in modo diretto, senza che sia necessario invocare l'editor. Per esempio, se vuoi cambiare la tua shell in bash, potresti digitare il seguente comando:

% chsh -s /usr/local/bin/bash

Comunque eseguendo chsh con nessun parametro e modificando la shell all'interno dell'editor funzionerà lo stesso.

Nota: La shell che desideri utilizzare deve essere presente nel file /etc/shells. Se hai installato una shell dalla collezione dei port, allora la nuova shell dovrebbe essere già stata inserita nel suddetto file in modo automatico. Se installi una shell manualmente, questo lavoro lo devi fare tu.

Per esempio, se installi bash a mano e la metti sotto /usr/local/bin, dovresti fare questo:

# echo "/usr/local/bin/bash" >> /etc/shells

Dopo averlo fatto riavvia chsh.


3.10 Editor di Testo

La maggior parte del lavoro di configurazione in FreeBSD viene fatto tramite la modifica di file di testo. Perciò, è una buona idea familiarizzare con un editor di testo. FreeBSD si presenta con alcuni editor come parte base del sistema, e molti altri sono disponibili nella collezione dei port.

L'editor più semplice e più facile da imparare si chiama ee, che sta per easy editor. Per avviare ee, puoi digitare sulla riga di comando ee filename dove filename è il nome del file che deve essere modificato. Per esempio, per modificare /etc/rc.conf, devi digitare ee /etc/rc.conf. Una volta all'interno di ee, tutti i comandi per azionare le funzioni dell'editor sono elencati nella parte superiore del video. Il carattere ^ è il tasto Ctrl della tastiera, quindi ^e si riferisce alla combinazione di tasti Ctrl+e. Per uscire da ee, premi il tasto Esc, quindi conferma l'uscita dall'editor. Se il file ha subito delle modifiche ti verrà chiesto se le vuoi salvare.

FreeBSD ha come parte base del sistema anche editor di testo più potenti come vi, mentre altri editor, come Emacs e vim, sono inclusi nella FreeBSD Ports Collection (editors/emacs e editors/vim). Questi editor offrono molte più funzionalità e molta più potenza a costo di essere un poco più complicati da imparare ad utilizzare. Comunque se intendi utilizzare in modo intensivo un editor, imparando ad utilizzare un editor potente come vim o Emacs risparmierai a lungo andare un sacco di tempo.


3.11 Dispositivi e Nodi di Dispositivo

Il termine dispositivo viene usato prevalentemente per specificare le unità hardware all'interno di un sistema, come i dischi, le stampanti, le schede grafiche, e le tastiere. Durante la fase di avvio di FreeBSD, la maggior parte delle cose che vengono visualizzate da FreeBSD riguardano i dispositivi che sono stati rilevati. Puoi riesaminare questi messaggi di avvio guardando il file /var/run/dmesg.boot.

Per esempio, acd0 è il primo drive CDROM IDE, mentre kbd0 rappresenta la tastiera.

In un sistema operativo UNIX la maggior parte di questi dispositivi sono accessibili tramite dei file speciali chiamati nodi di dispositivo, i quali sono posti nella directory /dev.


3.11.1 Creare i Nodi di Dispositivo

Quando aggiungi un nuovo dispositivo al tuo sistema, o ricompili il kernel per supportare dispositivi aggiuntivi, hai bisogno di creare per questi nuovi dispositivi uno o più nodi di dispositivo.


3.11.1.1 Script MAKEDEV

Sui sistemi senza il DEVFS (tutte le versioni di FreeBSD antecedenti la 5.0), i nodi di dispositivo sono creati usando lo script MAKEDEV(8) come mostrato qui sotto:

# cd /dev
# sh MAKEDEV ad1

Questo esempio creerà gli opportuni nodi di dispositivo per il secondo drive IDE.


3.11.1.2 DEVFS (DEVice File System)

Il file system device, o DEVFS, fornisce la disponibilità dello spazio dei nomi dei dispositivi del kernel allo spazio dei nomi globale del file system. Invece di dover creare o modificare i nodi di dispositivo, DEVFS mantiene in modo automatico questo particolare file system.

Guarda la pagina man di devfs(5) per maggiori informazioni.

DEVFS viene usato di default su FreeBSD 5.0 e successive.


3.12 Formati dei Binari

Per comprendere il motivo per cui FreeBSD usa il formato elf(5), devi prima conoscere un pò i tre attuali formati eseguibili ``dominanti'' per UNIX:

  • a.out(5)

    Il più vecchio e ``classico'' formato oggetto di UNIX. Usa un'intestazione corta e compatta con un numero magico all'inizio che è spesso usato per caratterizzare il formato (vedere a.out(5) per maggiori dettagli). Contiene tre segmenti caricabili: .text, .data, e .bss più una tabella di simboli e una di stringhe.

  • COFF

    Il formato oggetto di SVR3. Poichè l'intestazione include una porzione di tabella, puoi avere molto di più delle sole sezioni .text, .data, e .bss.

  • elf(5)

    Il successore di COFF, caratterizzato da sezioni multiple e da possibili valori a 32-bit o 64-bit. Uno dei maggiori svantaggi: ELF fù progettato con l'assunzione che ci doveva essere solo un ABI per ogni tipo di architettura dei sistemi. Tale assunzione è in realtà piuttosto sbagliata, e non è vera nemmeno nel mondo commerciale di SYSV (che ha almeno tre ABI: SVR4, Solaris, SCO).

    FreeBSD tenta di aggirare questo problema fornendo un utility per marchiare un eseguibile ELF con informazioni sull'ABI per il quale è stato costruito. Guarda la pagina man brandelf(1) per maggiori informazioni.

FreeBSD proviene dalla scuola ``classica'' e ha usato il formato a.out(5), una tecnologia sperimentata ed utilizzata attraverso molte generazioni delle release BSD, fino agli inizi del ramo 3.X. Sebbene fino ad allora era possibile costruire ed eseguire su un sistema FreeBSD binari (e kernel) del formato ELF, inizialmente FreeBSD si oppose al ``salto'' di cambiamento al formato ELF come formato di default. Per quale motivo? Dunque, quando la scuola Linux fece il suo doloroso passaggio a ELF, questo non era sufficiente per abbandonare il formato eseguibile a.out a causa del loro rigido meccanismo a salto-di-tabella basato sulla libreria condivisa, il quale rendeva la costruzione di librerie condivise un compito molto difficile tanto per i venditori che per gli sviluppatori. Tuttavia, quando gli strumenti di ELF furono in grado di offrire una soluzione al problema della libreria condivisa e quando furono visti come ``la strada imminente'', il costo della migrazione fù accettato poichè necessario e avvenne così la transizione. Il meccanismo di libreria condivisa di FreeBSD è basato sullo stile più restrittivo del maccanismo di libreria condivisa degli SunOS™ di Sun, e come tale, è molto facile da utilizzare.

Quindi, perchè ci sono così tanti formati differenti?

In passato l'hardware era semplice. Questo hardware semplice sosteneva un sistema semplice e piccolo. Il formato a.out era del tutto adatto per rappresentare i binari su questo semplice sistema (un PDP-11). Nonostante le persone fecero il port di UNIX da questo semplice sistema, esse mantennero il formato a.out poichè era sufficiente per un primo port di UNIX verso architetture come Motorola 68k, VAXen, ecc.

All'epoca alcuni ingegneri hardware di spicco stabilirono che se tale formato poteva forzare il software a fare alcuni trucchi sporchi, allora esso sarebbe stato in grado di abbattere alcune barriere di progettazione e permettere al core della CPU di andare più veloce. Benchè il formato a.out fù progettato per lavorare con questo nuovo tipo di hardware (conosciuto ai giorni d'oggi come RISC), esso fù appena sufficiente per questo hardware, quindi furono sviluppati altri formati per ottenere delle prestazioni da questo hardware migliori di quelle che il limitato e semplice formato a.out era in grado di offrire. Furono inventati formati come il COFF, l'ECOFF, e alcuni altri e furono esaminate le loro limitazioni prima che fù prodotto l'ELF.

Per di più, le dimensioni dei programmi stavano diventando enormi e i dischi (e la memoria fisica) erano ancora relativamente piccoli, e quindi il concetto di libreria condivisa prese piede. Inoltre il sistema di VM (Memoria Virtuale) divenne più sofisticato. Benchè ognuno di questi miglioramenti fù fatto utilizzando il formato a.out, la sua utilità si distese sempre più con ogni nuova caratteristica. In aggiunta, la gente voleva caricare alcune cose in modo dinamico al tempo di esecuzione, o anche scartare parte dei loro programmi dopo l'esecuzione del codice iniziale al fine di salvare memoria e spazio di swap. I linguaggi divennero più sofisticati e le persone desideravano che il codice venisse chiamato dopo il main in modo automatico. Furono apportati molte migliorie al formato a.out per permettere tutte queste cose, e sostanzialmente tutto funzionò per un dato periodo. Col passare del tempo, il formato a.out non fù più in grado di gestire tutti questi problemi senza apportare dei miglioramenti al codice con un conseguente aumento della complessità. Benchè il formato ELF risolveva molti di questi problemi, era doloroso migrare da un sistema che tutto sommato funzionava. Quindi il formato ELF attese fino a quando fù meno doloroso rimanere con il formato a.out piuttosto che migrare al formato ELF.

Tuttavia, il tempo passò, e gli strumenti di costruzione che FreeBSD derivò dai loro strumenti di costruzione (in particolare l'assemblatore ed il loader) evolsero in due tronconi paralleli. L'albero di FreeBSD aggiunse le librerie condivise e sistemò alcuni bug. Il popolo di GNU che in origine aveva scritto questi programmi li riscrisse e aggiunse un semplice supporto per la costruzione di compilatori cross, la possibilità di produrre formati diversi a piacimento, e così via. Da quando molte persone vollero costruire compilatori cross per FreeBSD, questi furono delusi poichè i vecchi sorgenti che FreeBSD aveva per as e ld non erano pronti per questo lavoro. La nuova serie di strumenti di GNU (binutils) supportavano la compilazione cross, ELF, le librerie condivise, le estensioni C++, ecc. Inoltre molti venditori stanno rilasciando binari ELF, ed è una buona cosa per FreeBSD eseguirli.

Il formato ELF è più espressivo di quello a.out e permette una maggiore estensibilità nel sistema base. Gli strumenti di ELF sono meglio mantenuti, e offrono un supporto alla compilazione cross, che sta a cuore a molte persone. ELF può essere un pò meno veloce di a.out, ma tentare di misurarne le prestazioni non è molto semplice. Ci sono anche numerosi dettagli che sono diversi tra i due formati nel modo in cui essi mappano le pagine, gestiscono il codice iniziale, ecc. Questi dettagli non sono molto importanti, ma tra i due esistono delle differenze. Nel tempo il supporto per il formato a.out verrà rimosso dal kernel GENERIC, ed eventualmente sarà rimosso completamente dal kernel non appena non ci sarà più la necessità di eseguire programmi con il formato a.out.


3.13 Per Maggiori Informazioni

3.13.1 Le Pagine Man

La documentazione più esauriente su FreeBSD è costituita dalle pagine man. Quasi tutti i programmi sul sistema hanno un piccolo manuale di riferimento che spiega il funzionamento di base e i vari argomenti del programma stesso. Questi manuali possono essere visualizzati con il comando man. L'uso del comando man è semplice:

% man comando

comando è il nome del comando di cui desideri maggiori informazioni. Per esempio, per sapere di più circa il comando ls digita:

% man ls

Il manuale in linea è diviso in sezione numerate:

  1. Comandi utente.

  2. System call e codici di errore.

  3. Funzioni della libreria C.

  4. Driver dei dispositivi.

  5. Formati di file.

  6. Giochi e altri passatempo.

  7. Informazioni varie.

  8. Comandi di mantenimento e di funzionamento del sistema.

  9. Sviluppo del kernel.

In qualche caso, lo stesso soggetto può apparire in più di una sezione del manuale in linea. Per esempio, esiste un comando utente chmod e una system call chmod(). In questo caso, puoi dire al comando man quale vuoi specificando la sezione:

% man 1 chmod

In questo caso verrà visualizzata la pagina man del comando utente chmod. I riferimenti di una sezione particolare del manuale in linea sono tradizionalmente posti tra parentesi all'interno della documentazione, quindi chmod(1) fa riferimento al comando utente chmod e chmod(2) fa riferimento alla system call.

Tutto questo va bene se conosci il nome del comando e desideri semplicemente sapere come usarlo, ma cosa succede se non ricordi il nome del comando? Puoi usare man con l'opzione -k per ricercare tramite parole chiavi nelle descrizioni dei comandi:

% man -k mail

Con questo comando ti verrà presentata una lista di comandi che hanno la parola chiave ``mail'' nella loro descrizione. Di fatto questo meccanismo funziona proprio come il comando apropos.

Stai dando un'occhiata a tutti quei comandi fantastici che si trovano in /usr/bin ma non hai la più pallida idea di cosa fanno la maggior parte di essi? Semplicemente digita:

% cd /usr/bin
% man -f *

oppure

% cd /usr/bin
% whatis *

che è la stessa cosa.


3.13.2 I File Info di GNU

FreeBSD include molte applicazioni e utility prodotti dalla Free Software Foundation (FSF). Oltre alle pagine man, questi programmi hanno dei più ampi documenti in ipertesto chiamati file info che possono essere visualizzati con il comando info, o se hai installato emacs, con la modalità info di emacs.

Per usare il comando info(1), digita semplicemente:

% info

Per una breve introduzione, digita h. Per un rapido riferimento dei comandi, digita ?.


Capitolo 4 Installazione delle Applicazioni: Port e Package

4.1 Sinossi

FreeBSD è distribuito con una ricca collezione di strumenti di sistema come parte base del sistema. Comunque, c'è molto che si può fare prima che sia necessario installare un'applicazione aggiuntiva di terze parti. FreeBSD fornisce due tecnologie complementari per installare software di terze parti sul tuo sistema: la FreeBSD Port Collection, ed i packages contenenti i binari del software. Puoi usare entrambi questi sistemi per installare l'ultima versione della tua applicazione preferita dai dispositivi locali o direttamente dalla rete.

Dopo aver letto questo capitolo, saprai:

  • Come installare i package contenenti i binari delle applicazioni di terze parti.

  • Come compilare le applicazioni di terze parti dalla collezione dei port.

  • Come rimuovere i package o i port installati in precedenza.

  • Come modificare i valori di default utilizzati dalla collezione dei port.

  • Come trovare un package specifico.

  • Come aggiornare i tuoi port.


4.2 Uno Sguardo all'Installazione del Software

Se hai già usato un sistema UNIX prima d'ora saprai che la procedura tipica per installare software di terze parti è simile a questa:

  1. Scaricare il software, che potrebbe essere distribuito sotto forma di codice sorgente, o come binario.

  2. Scompattare il software dal suo formato di distribuzione (tipicamente un tarball compresso con compress(1), gzip(1), o con bzip2(1)).

  3. Individuare la documentazione (probabilmente un file INSTALL o un file README, o qualche file nella sottodirectory doc/) e leggere come installare il software.

  4. Se il software è stato distribuito sotto forma di sorgente, compilarlo. Questa fase può coinvolgere la modifica di un Makefile, oppure l'esecuzione di uno script configure, e qualche altro lavoro.

  5. Installare e testare il software.

E questo se tutto va bene. Se stai installando del software di cui non è stato deliberatamente effettuato il porting in FreeBSD potresti perfino dover modificare il codice per farlo funzionare correttamente.

Se vuoi, puoi continuare ad installare il software su FreeBSD nel modo ``tradizionale''. Comunque, FreeBSD fornisce due tecnologie che possono farti risparmiare molti sforzi: i package e i port. Nel momento in cui scrivo, sono disponibili più di 12,300 applicazioni di terze parti tramite questi due metodi.

Per ogni applicazione, il package di FreeBSD per quella applicazione consiste in un singolo file che devi scaricare. Il package contiene una copia pre-compilata di tutti i comandi dell'applicazione, così come i file di configurazione e di documentazione. Una volta scaricato il package, questo può essere manipolato con i comandi di gestione dei package di FreeBSD, come pkg_add(1), pkg_delete(1), pkg_info(1), e così via. L'installazione di una nuova applicazione può essere fatta con un singolo comando.

In FreeBSD un port di un'applicazione è un insieme di file predisposti per automatizzare il processo di compilazione dell'applicazione partendo dal codice sorgente.

Ricorda che ci sono molte fasi che normalmente devi eseguire se vuoi compilare un programma autonomamente (scaricare, scompattare, correggere, compilare, installare). I file che costituiscono un port contengono tutte le informazioni necessarie per permettere al sistema di fare questo lavoro al posto tuo. Tu esegui una manciata di semplici comandi e il codice sorgente dell'applicazione viene automaticamente scaricato, estratto, corretto, compilato, ed installato.

Di fatto, il sistema dei port può anche essere usato per generare package che possono essere successivamente manipolati con pkg_add ed altri comandi di gestione dei package che saranno presentati tra poco.

Sia i package che i port comprendono il meccanismo delle dipendenze. Supponiamo che tu voglia installare un'applicazione che dipende da un specifica libreria. Sia l'applicazione che la libreria sono disponibili in FreeBSD come port o come package. Se usi il comando pkg_add o il sistema dei port per installare l'applicazione, entrambi noteranno che la libreria non è installata, e automaticamente la installeranno per prima.

Dato che le due tecnologie sono abbastanza simili, probabilmente vorrai sapere perché FreeBSD le usa entrambe. I package e i port hanno i loro punti forte, e l'utilizzo dell'uno o dell'altro dipende dalle proprie preferenze personali.

Benefici dei Package

  • Il tarball compresso di un package è tipicamente più piccolo del tarball compresso contenente il codice sorgente della stessa applicazione.

  • I package non richiedono alcuna compilazione aggiuntiva. Per grandi applicazioni, come Mozilla, KDE, oppure GNOME questo può essere importante, sopra tutto se usi un sistema lento.

  • I package non richiedono la conoscenza del processo di compilazione del software su FreeBSD.

Benefici dei Port

  • I package sono normalmente compilati con opzioni conservative, poiché devono poter funzionare su un parco macchine il più ampio possibile. Con l'installazione dai port, puoi aggiustare le opzioni di compilazione per produrre (per esempio) del codice che sia specifico per un Pentium IV o un processore Athlon.

  • Alcune applicazioni hanno delle opzioni attivabili al tempo di compilazione che permettono di modificare il comportamento delle applicazioni stesse. Per esempio, Apache può essere configurato con un'ampia varietà di differenti opzioni built-in. Effettuando la compilazione dal port non sei costretto ad accettare le opzioni di default, e puoi settarle tu stesso.

    In alcuni casi, ci possono essere più package per la stessa applicazione a seconda dei settaggi ivi contenuti. Per esempio, Ghostscript è disponibile come package ghostscript e come package ghostscript-nox11, a seconda che tu abbia o meno installato un server X11. Questa sorta di adattamento è possibile con i package, ma diviene impossibile nel caso in cui un'applicazione ha più di una o due diverse opzioni che si possono dare al tempo di compilazione.

  • Le condizioni di licenza di alcune distribuzioni di software proibiscono la distribuzione dei binari. Tali software devono essere distribuiti come codice sorgente.

  • Alcune persone non si fidano della distribuzione dei binari. Con il codice sorgente, puoi (in teoria) controllare il codice e cercare i suoi potenziali problemi.

  • Se hai delle patch, hai bisogno del sorgente per applicarle.

  • Ad alcune persone piace avere il codice sorgente, in modo tale da poterlo leggerlo se sono annoiati, hackerarlo, prenderne in prestito delle parti (licenza permettendo, naturalmente), e così via.

Per tenersi al corrente sugli aggiornamenti dei port, iscriviti alla mailing list sui port di FreeBSD e alla mailing list sui bug dei port di FreeBSD.

Avvertimento: Prima di installare qualche applicazione, dovresti verificare http://vuxml.freebsd.org/ per eventuali problemi di sicurezza relativi alla tua applicazione.

Inoltre puoi installare il port security/portaudit che verificherà in modo automatico tutte le applicazioni installate a caccia di vulnerabilità note, e verrà fatta una verifica anche prima della compilazione dei port. Puoi usare il comando portaudit -F -a dopo che hai installato qualche package.

Il resto del capitolo spiegherà come usare i package ed i port per installare e gestire il software di terze parti su FreeBSD.


4.3 Ricerca della Propria Applicazione

Prima di poter installare delle applicazioni devi sapere quale applicazione ti serve, e come viene chiamata.

La lista delle applicazioni disponibili su FreeBSD cresce continuamente. Fortunatamente, ci sono diversi sistemi per trovare quello che ti serve:

  • Il sito web di FreeBSD mantiene all'indirizzo http://www.FreeBSD.org/ports/ una lista aggiornata in cui puoi cercare tutte le applicazioni correntemente disponibili. I port sono divisi in categorie, e puoi sia cercare un'applicazione in base al nome (se lo conosci), sia visionare tutte le applicazioni disponibili in una data categoria.

  • Dan Langille mantiene FreshPort, all'indirizzo http://www.FreshPorts.org/. FreshPort segue in tempo reale i cambiamenti delle applicazioni nell'albero dei port, permettendoti di ``controllare'' uno o più port, e dandoti la possibilità di essere avvisato tramite email quando questi vengono aggiornati.

  • Se non conosci il nome dell'applicazione che desideri, prova ad usare un sito come FreshMeat (http://www.freshmeat.net/) per trovare l'applicazione, quindi controlla sul sito di FreeBSD per vedere se è già stato effettuato il porting.

  • Se sei a conoscenza del nome esatto del port, ma non sai in quale categoria esso sia, puoi usare il comando whereis(1) Semplicemente digita whereis file, dove file è il programma che vuoi installare. Se viene trovato sul tuo sistema, ti verrà indicato dove si trova, in modo simile a quanto segue:

    # whereis lsof
    lsof: /usr/ports/sysutils/lsof
    

    Questo ci dice che lsof (un'utility di sistema) si trova nella directory /usr/ports/sysutils/lsof.

  • Un altro modo per trovare un determinato port è quello di usare il meccanismo di ricerca contenuto nella collezione dei port. Per usare questo servizio di ricerca, devi posizionarti nella directory /usr/ports. Una volta in quella directory, lancia make search name=nome-programma dove nome-programma è il nome del programma che vuoi cercare. Per esempio, se vuoi cercare lsof:

    # cd /usr/ports
    # make search name=lsof
    Port:   lsof-4.56.4
    Path:   /usr/ports/sysutils/lsof
    Info:   Elenca informazioni sui file aperti (simile a fstat(1))
    Maint:  obrien@FreeBSD.org
    Index:  sysutils
    B-deps:
    R-deps:
    

    La parte di output sulla quale devi porre particolare attenzione è la riga ``Path:'', che ti dice dove puoi trovare il port. Le altre informazioni riportate non sono necessarie per installare il port, e quindi non saranno trattate in questa sede.

    Inoltre per una ricerca più complessa puoi usare make search key=stringa dove stringa fa parte del testo da cercare. Questo ricerca nei nomi dei port, nei commenti, nelle descrizioni e nelle dipendenze e può essere usato per cercare port che si riferiscono ad un argomento particolare anche se non conosci il nome del programma che stai cercando.

    In entrambi i casi, la stringa di ricerca è case-insensitive. La ricerca per ``LSOF'' produrrà gli stessi risultati della ricerca per ``lsof''.


4.4 Utilizzo del Sistema dei Package

Contributo diChern Lee.

4.4.1 Installazione di un Package

Puoi usare l'utility pkg_add(1) per installare un package di FreeBSD da un file locale o da un server sulla rete.

Esempio 4-1. Scaricare un Package Manualmente e Installarlo da Locale

# ftp -a ftp2.FreeBSD.org
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230-     This machine is in Vienna, VA, USA, hosted by Verio.
230-         Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp> get lsof-4.56.4.tgz
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375       00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp> exit
# pkg_add lsof-4.56.4.tgz

Se non hai una raccolta di package locale (per esempio il set dei CDROM di FreeBSD) allora probabilmente ti risulterà più facile usare pkg_add(1) con l'opzione -r. In questo modo pkg_add(1) determina automaticamente la corretta release e il giusto formato dell'oggetto, quindi scarica il package da un sito FTP e lo installa.

# pkg_add -r lsof

L'esempio qui sopra scarica il giusto package e lo installa senza nessun ulteriore intervento. Se vuoi specificare un sito mirror dei package di FreeBSD alternativo, invece del sito di distibuzione principale, devi settare la variabile PACKAGESITE come desiderato, in modo tale da sovrascrivere i settaggi di default. pkg_add(1) usa fetch(3) per scaricare i file, il quale rispetta varie variabili d'ambiente, incluse FTP_PASSIVE_MODE, FTP_PROXY, e FTP_PASSWORD. Puoi aver bisogno di settarne qualcuna se la tua macchina è dietro un firewall, o se utilizzi un proxy FTP/HTTP. Leggi fetch(3) per la lista completa. Nell'esempio precedente si può anche notare che viene usato lsof al posto di lsof-4.56.4. Quando viene usata la modalità di prelevamento da remoto, il numero di versione del package non deve essere specificato. pkg_add(1) prenderà automaticamente l'ultima versione dell'applicazione.

Nota: pkg_add(1) scaricherà la versione più recente della tua applicazione solo se stai usando FreeBSD-CURRENT o FreeBSD-STABLE. Se stai utilizzando una versione -RELEASE, allora verrà scaricata la versione del package che è stato costruito per la tua release. Tuttavia è possibile cambiare questo comportamento modificando la variabile di ambiente PACKAGESITE in modo opportuno.

I file dei package sono distribuiti nel formato .tgz. Puoi trovarli in ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/, oppure sui CDROM della distribuzione di FreeBSD. Ogni CD contenuto nel set dei quattro CD (e nel PowerPak, ecc.) contiene i package nella directory /packages. La disposizione dei package è simile a quella dell'albero /usr/ports. Ogni categoria ha la propria directory, ed ogni package può essere trovato dentro la directory All.

La struttura delle directory del sistema dei package eguaglia quella dei port; questi due sistemi lavorano l'uno con l'altro per formare l'intero sistema dei package/port.


4.4.2 Gestione dei Package

L'utility pkg_info(1) elenca e descrive i vari package installati.

# pkg_info
cvsup-16.1          Un comune sistema di distribuzione dei file in rete ottimizzato per CVS
docbook-1.2         Meta-port delle varie versioni del DTD DocBook
...

L'utility pkg_version(1) riassume le versioni di tutti i package installati. Paragona le versioni dei package con le versioni correnti trovate nell'albero dei port.

# pkg_version
cvsup                       =
docbook                     =
...

I simboli nella seconda colonna indicano il risultato del confronto tra la versione installata e quella disponibile in locale nell'albero dei port.

Simbolo Significato
= Le versioni del package installato e di quello disponibile in locale nell'albero dei port sono uguali.
< La versione installata è precedente a quella disponibile nell'albero dei port.
> La versione installata è più aggiornata di quella trovata in locale nell'albero dei port. (L'albero dei port locale è probabilmente da aggiornare)
? Il package installato non può essere trovato nell'indice dei port. (Questo può succedere, per esempio, se un port installato viene rimosso dalla collezione dei port oppure viene rinominato.)
* Ci sono più versioni del package.

4.4.3 Cancellazione di un Package

Per rimuovere un package installato in precedenza, usa l'utility pkg_delete(1).

# pkg_delete xchat-1.7.1

4.4.4 Miscellanea

Tutte le informazioni sui package sono memorizzate nella directory /var/db/pkg. La lista dei file installati e le descrizioni di ogni package possono essere trovate all'interno dei file di questa directory.


4.5 Utilizzo della Collezione dei Port

Le sezioni seguenti forniscono le istruzioni basilari sull'uso della collezione dei port per installare e rimuovere programmi dal tuo sistema.


4.5.1 Ottenimento della Collezione dei Port

Prima che tu possa installare i port, devi procurarti la collezione dei port--che essenzialmente è un set di Makefiles, patch, e file di descrizione collocati in /usr/ports.

Durante l'installazione del tuo sistema FreeBSD, sysinstall ti ha chiesto se volevi installare la collezione dei port. Se hai rifiutato, puoi seguire queste istruzioni per ottenerla:

Il Metodo Sysinstall

Questo metodo richiede ancora l'uso di sysinstall per installare manualmente la collezione dei port.

  1. Esegui da root /stand/sysinstall come mostrato qui sotto:

    # /stand/sysinstall
    
  2. Scorri verso il basso e seleziona Configure, premi Invio.

  3. Scorri verso il basso e seleziona Distributions, premi Invio.

  4. Scorri verso il basso fino a ports, premi Spazio.

  5. Scorri verso l'alto fino a Exit, premi Invio.

  6. Seleziona il modo di installazione desiderato, come CDROM, FTP, e così via.

  7. Scorri verso l'alto fino a Exit e premi Invio.

  8. Premi X per uscire da sysinstall.

Un altro metodo per ottenere la tua collezione dei port e per mantenerla aggiornata consiste nell'utilizzo di CVSup. Dai un'occhiata al file di CVSup riguardante i port, /usr/share/examples/cvsup/ports-supfile. Guarda Usare CVSup (Sezione A.5) per maggiori informazioni sull'uso di CVSup e del file menzionato.

Il Metodo CVSup

Questo è un rapido metodo che utilizza CVSup per ottenere la collezione dei port. Se vuoi mantenere il tuo albero dei port aggiornato, o imparare di più su CVSup, leggi la sezione menzionata in precedenza.

  1. Installa il port net/cvsup. Guarda Installazione di CVSup (Sezione A.5.2) per maggiori dettagli.

  2. Da root, copia il file /usr/share/examples/cvsup/ports-supfile in un nuovo posto, come in /root o nella tua directory home.

  3. Edita ports-supfile.

  4. Cambia CHANGE_THIS.FreeBSD.org in un server CVSup vicino a te. Guarda Mirror CVSup (Sezione A.5.7) per una lista completa dei siti mirror.

  5. Esegui cvsup:

    # cvsup -g -L 2 /root/ports-supfile
    
  6. Poco dopo aver eseguito questo comando verranno scaricate e applicate alla tua collezione dei port tutte le modifiche recenti, anche se di fatto i port già compilati sul tuo sistema non verranno aggiornati.


4.5.2 Installazione dei Port

La prima cosa che dovrebbe essere chiara quando si ha a che fare con la collezione dei port è l'effettivo significato di ``scheletro'' di un port. Brevemente, lo scheletro di un port è un insieme minimo di file che dice al tuo sistema FreeBSD come compilare ed installare un programma in modo pulito. Ogni scheletro di un port include:

  • Un Makefile. Il Makefile contiene varie espressioni che specificano come l'applicazione deve essere compilata e dove deve essere installata sul tuo sistema.

  • Un file distinfo. Questo file contiene informazioni sui file che devono essere scaricati per la compilazione del port e sui loro checksum (somme di controllo), utilizzati per verificare che quei file non siano stati corrotti durante il download.

  • Una directory files. Questa directory contiene le patch utilizzate per la compilazione e per l'installazione del programma sul tuo sistema FreeBSD. Le patch sono sostanzialmente piccoli file che specificano come modificare alcuni file. Sono in puro formato di testo, e in modo grossolano dicono ``Rimuovi la riga 10'' o ``Cambia la riga 26 in ...''. Le patch sono anche conosciute con il termine ``diff'' poichè sono generate dal programma diff(1).

    Questa directory può anche contenere altri file utilizzati per la costruzione del port.

  • Un file pkg-descr. Questo file contiene una descrizione del programma più dettagliata, spesso su più righe di testo.

  • Un file pkg-plist. Questo file contiene l'elenco di tutti i file che saranno installati dal port. Dice anche al sistema dei port quale file rimuovere durante la disinstallazione.

Alcuni port hanno altri file, come pkg-message. Il sistema dei port li usa per affrontare speciali situazioni. Se vuoi maggiori dettagli su questi file, e sui port in generale, leggi attentamente il Manuale del Porter di FreeBSD.

Il port include istruzioni su come compilare il codice sorgente, ma non include il codice sorgente stesso. Devi prendere il codice sorgente da un CDROM o da Internet. L'autore del codice sorgente può distribuirlo come desidera. Quasi sempre è un file di archivio tar compresso con gzip, ma potrebbe essere stato compresso con un altro tool o perfino potrebbe essere non compresso. Il codice sorgente del programma, in qualsiasi forma sia, è chiamato con il termine ``distfile''. I due metodi per installare un port di FreeBSD sono descritti qui sotto.

Nota: Devi essere root per installare i port.

Avvertimento: Prima di installare qualche port, dovresti assicurarti di avere l'albero della collezione dei port aggiornato e dovresti verificare http://vuxml.freebsd.org/ per eventuali problemi di sicurezza relativi alla tua applicazione.

Una verifica delle vulnerabilità di sicurezza può essere fatta in modo automatico con portaudit prima dell'installazione di nuove aplicazioni. Questo strumento può essere trovato nella collezione dei port (security/portaudit). Esegui portaudit -F prima di installare un nuovo port, per aggiornare la base di dati delle vulnerabilità. Durante la verifica giornaliera del sistema verrà fatto un controllo di integrità e un aggiornamento della base di dati delle vulnerabilità. Per maggiori informazioni leggi le pagine man portaudit(1) e periodic(8).


4.5.2.1 Installazione dei Port dal CDROM

Le immagini ufficiali su CDROM del progetto FreeBSD non includono più i distfile. Occupano molto spazio che è meglio utilizzato per i package precompilati. I prodotti su CDROM come il FreeBSD PowerPak includono i distfile, e puoi ordinare questi set da un venditore come FreeBSD Mall. Questa sezione presuppone che tu abbia un simile set di CDROM di FreeBSD.

Metti il tuo CDROM di FreeBSD nell'apposito lettore. Montalo su /cdrom. (Se usi un punto di mount differente, l'installazione non funzionerà.) Per prima cosa, vai nella directory del port che vuoi installare:

# cd /usr/ports/sysutils/lsof

Una volta dentro la directory lsof, vedrai lo scheletro del port. Il prossimo passo riguarda la compilazione, o ``costruzione'', del port. Questo viene fatto semplicemente digitando make al prompt. Una volta che hai fatto questo, dovresti vedere qualcosa simile a quanto segue:

# make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from file:/cdrom/ports/distfiles/.
===>  Extracting for lsof-4.57
...
[l'output dell'estrazione è stato tagliato]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===>  Patching for lsof-4.57
===>  Applying FreeBSD patches for lsof-4.57
===>  Configuring for lsof-4.57
...
[l'output della configurazione è stato tagliato]
...
===>  Building for lsof-4.57
...
[l'output della compilazione è stato tagliato]
...
#

Nota che una volta terminata la compilazione ritornerai al tuo prompt. Il prossimo passo riguarda l'installazione del port. Per installarlo, devi semplicemente affiancare una parola al comando make, e questa parola è install:

# make install
===>  Installing for lsof-4.57
...
[l'output dell'installazione è stato tagliato]
...
===>   Generating temporary packing list
===>   Compressing manual pages for lsof-4.57
===>   Registering installation for lsof-4.57
===>  SECURITY NOTE:
      I binari di questo port richiedono l'esecuzione con alti privilegi.
#

Quando ritornerai al tuo prompt, dovresti essere in grado di eseguire l'applicazione che hai appena installato. Siccome lsof è un programma che lavora con alti privilegi, viene mostrato un avvertimento di sicurezza. Durante la compilazione e l'installazione dei port, dovresti fare attenzione ad ogni avvertimento che appare.

Nota: Potresti anche evitare un passaggio lanciando solamente make install invece dei due passi separati make e make install.

Nota: Alcune shell mantengono una cache dei comandi che sono disponibili nelle directory elencate nella variabile d'ambiente PATH, per velocizzare le operazioni di ricerca dei file eseguibili di questi comandi. Se stai usando una di queste shell, potresti dover usare il comando rehash dopo l'installazione di un port, prima di poter usare il nuovo comando. Questo succede sia per le shell che fanno parte del sistema base (come tcsh) sia per le shell che sono disponibili dai port (per esempio, shells/zsh).

Nota: Per cortesia sii consapevole che le licenze di alcuni port non permettono l'inclusione degli stessi sul CDROM. Questa limitazione potrebbe essere dovuta dalla necessità di compilare un form di registrazione prima di scaricare il software, o perché la ridistribuzione non è permessa, o per altre ragioni. Se desideri installare un port non incluso nel CDROM, dovrai essere collegato ad Internet per farlo (vedi la prossima sezione).


4.5.2.2 Installazione dei Port da Internet

Questa sezione presuppone che tu abbia una connessione ad Internet funzionante. Se non ce l'hai, dovrai utilizzare l'installazione da CDROM, oppure dovrai copiare manualmente il distfile in /usr/ports/distfiles.

L'installazione di un port da Internet viene fatta nello stesso modo con cui viene fatta l'installazione da CDROM. L'unica differenza tra i due modi è che il distfile del port viene preso da Internet invece che dal CDROM.

I passi richiesti sono gli stessi:

# make install
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
439860 bytes transferred in 18.0 seconds (23.90 kBps)
===>  Extracting for lsof-4.57
...
[l'output dell'estrazione è stato tagliato]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===>  Patching for lsof-4.57
===>  Applying FreeBSD patches for lsof-4.57
===>  Configuring for lsof-4.57
...
[l'output della configurazione è stato tagliato]
...
===>  Building for lsof-4.57
...
[l'output della compilazione è stato tagliato]
...
===>  Installing for lsof-4.57
...
[l'output dell'installazione è stato tagliato]
...
===>   Generating temporary packing list
===>   Compressing manual pages for lsof-4.57
===>   Registering installation for lsof-4.57
===>  SECURITY NOTE:
      I binari di questo port richiedono l'esecuzione con alti privilegi.
#

Come puoi vedere, la sola differenza sta nella riga che dice da dove il sistema sta ottenendo il distfile del port.

Il sistema dei port usa fetch(1) per scaricare i file, il quale rispetta varie variabili d'ambiente, incluse FTP_PASSIVE_MODE, FTP_PROXY, e FTP_PASSWORD. Puoi aver bisogno di settarne qualcuna se sei dietro a un firewall, o se usi un proxy FTP/HTTP. Guarda fetch(3) per la lista completa.

Gli utenti che non possono essere sempre connessi ad Internet possono usare l'opzione make fetch. Esegui tale comando in cima alla directory (/usr/ports) e i file richiesti saranno scaricati. Questo comando funziona anche nelle categorie di livello inferiore, per esempio: /usr/ports/net. Nota che se un port dipende da una libreria o da altri port, quel comando non preleverà anche i distfile di questi port. Sostituisci fetch con fetch-recursive se vuoi prelevare anche tutte le dipendenze di un port.

Nota: Puoi compilare tutti i port di una categoria o perfino tutti i port eseguendo make in cima alla directory, in modo simile a quanto fatto per il suddetto metodo make fetch. Comunque, questo è rischioso poichè alcuni port non possono coesistere. Inoltre, alcuni port potrebbero richiedere di installare due diversi file con lo stesso nome.

In alcuni casi rari, gli utenti potrebbero voler acquisire i tarball da un sito diverso dal MASTER_SITES (la locazione di default dove i file sono scaricati). Puoi sovrascrivere l'opzione MASTER_SITES con il comando seguente:

# cd /usr/ports/directory
# make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

In questo esempio abbiamo settato MASTER_SITES a ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.

Nota: Alcuni port permettono (o perfino richiedono) l'impostazione di alcune opzioni di compilazione che abilitano/disabilitano parti dell'applicazione opzionali, settaggi di sicurezza, e altre personalizzazioni. Alcune applicazioni che mi vengono in mente sono www/mozilla, security/gpgme, e mail/sylpheed-claws. Quando sono disponibili simili opzioni viene visualizzato un messaggio.


4.5.2.3 Cambiare le Directory dei Port di Default

Qualche volta è utile (o necessario) utilizzare directory per i distfile e i port diverse da quelle di default. Le variabili PORTSDIR e PREFIX possono sovrascrivere le directory di default. Per esempio:

# make PORTSDIR=/usr/home/example/ports install

compilerà il port in /usr/home/example/ports e installerà ogni cosa sotto /usr/local.

# make PREFIX=/usr/home/example/local install

compilerà in /usr/ports ed installerà in /usr/home/example/local.

E naturalmente,

# make PORTSDIR=../ports PREFIX=../local install

è una combinazione dei due (è troppo lungo da scrivere per intero su questa pagina, ma dovrebbe darti lo stesso un'idea generale).

Alternativamente, queste variabili potrebbero essere settate nel tuo ambiente. Leggi la pagina man della tua shell per sapere come fare.


4.5.2.4 Avere a che Fare con imake

Alcuni port che usano imake (una parte dell'X Window System) non funzionano bene con PREFIX, e si ostinano ad installarsi sotto /usr/X11R6. In modo analogo, alcuni port di Perl ignorano PREFIX e si installano nell'albero del Perl. Far rispettare a questi port PREFIX è spesso un lavoro difficile o persino impossibile.


4.5.3 Rimozione dei Port Installati

Ora che sai come installare i port, probabilmente ti chiederai come rimuoverli, caso mai ne installassi uno e successivamente ti accorgessi che hai installato il port sbagliato. Rimuoveremo il port utilizzato nel nostro esempio precedente (che era lsof se non sei stato attento). Come con l'installazione dei port, la prima cosa che devi fare è andare nella directory del port, /usr/ports/sysutils/lsof. Dopo aver cambiato directory, sei pronto per disinstallare lsof. Questo viene fatto con il comando make deinstall:

# cd /usr/ports/sysutils/lsof
# make deinstall
===>  Deinstalling for lsof-4.57

È stato abbastanza facile. In questo modo hai rimosso lsof dal tuo sistema. Se volessi reinstallarlo, puoi farlo lanciando make reinstall dalla directory /usr/ports/sysutils/lsof.

Le sequenze make deinstall e make reinstall non funzionano più una volta che hai dato un make clean. Se vuoi disinstallare un port dopo un make clean, usa pkg_delete(1) come discusso nella sezione del Manuale riguardante i Package.


4.5.4 Port e Spazio su Disco

Usando la collezione dei port puoi facilmente esaurire lo spazio del tuo disco. Per questa ragione dovresti sempre ricordarti di ripulire le directory di lavoro dei port usando l'opzione make clean. Questo rimuoverà la directory work usata per la compilazione ed l'installazione del port. Inoltre puoi rimuovere i file tar dalla directory distfiles, e rimuovere i port installati che non sono più utilizzati.

Alcuni utenti limitano le categorie dei port mettendo un elemento nel file refuse. In questo modo, quando viene eseguita l'applicazione CVSup, questa non scaricherà i file delle categorie specificate nel file refuse.


4.5.5 Aggiornamento dei Port

Nota: Dopo che hai aggiornato la tua collezione dei port, prima di tentare di aggiornare un port, dovresti verificare il file /usr/ports/UPDATING. Questo file riporta alcuni problemi che gli utenti potrebbero incontrare durante l'aggiornamento di un port con le relative soluzioni.

Mantenere i tuoi port aggiornati può essere un lavoro noioso. Per esempio, per aggiornare dovresti andare nella directory del port, compilare il port, disinstallare il vecchio port, installare quello nuovo, e quindi ripulire la directory di lavoro. Immagina di fare tutto ciò per cinque port, noioso vero? Questo era uno dei maggiori problemi per gli amministratori di sistema, e ora abbiamo strumenti che fanno questo lavoro per noi. Per esempio l'utility sysutils/portupgrade fa tutto questo! Installalo come qualsiasi altro port, usando il comando make install clean.

Ora crea un database con il comando pkgdb -F. Verrà letta la lista dei port installati e verrà creato un file database nella directory /var/db/pkg. D'ora in avanti, quando esegui portupgrade -a, questo leggerà il database e il file dei port INDEX. Infine, portupgrade incomincerà a scaricare, compilare, effettuare backup, installare, e ripulire i port che devono essere aggiornati. portupgrade è fornito di molte opzioni a seconda dei casi di utilizzo, tra i quali uno è particolarmente importante.

Se vuoi aggiornare solo una determinata applicazione, e non il database completo, usa portupgrade pkgname, con l'opzione -r se portupgrade dovrebbe agire anche su tutti i package che dipendono dal dato package, o con l'opzione -R per agire su tutti i package richiesti dal dato package. Se vuoi usare i package invece dei port per l'installazione, usa l'opzione -P e se vuoi scaricare solo i distfile senza compilare o installare nulla, allora usa l'opzione -F. Per maggiori informazioni guarda la pagina man di portupgrade(1).

Nota: È importante aggiornare in modo regolare il database dei package usando il comando pkgdb -F per rattoppare eventuali incoerenze, specialmente quando portupgrade te lo chiede. Non interrompere portupgrade mentre sta aggiornando il database dei package, poichè ciò comporterà un database inconsistente.

Esistono altre utility che fanno simili lavori, controlla la directory ports/sysutils e guarda se ti viene qualche idea.


4.6 Attività del Dopo Installazione

Di solito dopo aver installato una nuova applicazione dovresti leggere la documentazione che potrebbe essere stata inclusa, modificare qualche file di configurazione, assicurarti che l'applicazione parta nella fase di avvio (se è un demone), e così via;.

I passi precisi che devi seguire per configurare un'applicazione sono ovviamente diversi da applicazione a applicazione. Comunque, se hai appena installato una nuova applicazione e ti stai chiedendo ``Cosa faccio ora?'' questi consigli potrebbero aiutarti:

  • Usa pkg_info(1) per scoprire quali file sono stati installati, e dove sono stati installati. Per esempio, se hai appena installato la versione 1.0.0 di FooPackage, allora questo comando

    # pkg_info -L foopackage-1.0.0 | less
    

    mostrerà tutti i file installati dal package. Fai molta attenzione ai file nelle directory man/, che sono le pagine man, a quelli nella directory etc/, che sono i file di configurazione, e a quelli in doc/, che forniscono una documentazione più esauriente.

    Se non sei sicuro della versione dell'applicazione che hai appena installato, questo comando

    # pkg_info | grep foopackage
    

    troverà tutti i package installati che contengono nel nome foopackage. Rimpiazza foopackage nella tua riga di comando a seconda delle tue necessità.

  • Una volta che hai scoperto dove sono state posizionate le pagine man dell'applicazione, esaminale usando man(1). Analogamente, esamina i file di configurazione d'esempio, ed ogni ulteriore documentazione che può essere stata fornita.

  • Se l'applicazione ha un sito web, cerca della documentazione aggiuntiva, le domande più frequenti (FAQ), ed altro ancora. Se non sei sicuro dell'indirizzo del sito web questo potrebbe essere presente nell'output di

    # pkg_info foopackage-1.0.0
    

    Una riga contenete WWW:, se presente, dovrebbe fornire l'URL del sito dell'applicazione.

  • I port che dovrebbero avviarsi in fase di avvio (come i server Internet) di solito installano uno script di esempio in /usr/local/etc/rc.d. Dovresti verificare questo script ed eventualmente modificarlo o rinominarlo. Vedi la sezione Avvio dei Servizi per maggiori informazioni.


4.7 Avere a che Fare con Port non Funzionanti

Se ti dovessi imbattere in un port che per te non funziona, ci sono alcune cose che puoi fare, tra le quali:

  1. Aggiustarlo! Il Manuale del Porter contiene informazioni dettagliate sull'infrastruttura dei ``Ports'' affinchè tu possa aggiustare quel port che occasionalmente non funziona o perfino proporne uno tutto tuo!

  2. Brontolare--solo attraverso email! Prima manda una email a colui che mantiene il port. Digita make maintainer o leggi il Makefile per trovare il suo indirizzo email. Ricorda di includere nel messaggio il nome e la versione del port (manda la riga $FreeBSD: del Makefile) e l'output che descrive l'errore. Se non ottieni risposta dal maintainer, puoi usare send-pr(1) per inoltrare il report del bug.

  3. Prendi il package da un sito FTP vicino a te. La ``principale'' collezione dei package è su ftp.FreeBSD.org nella directory dei package, ma prima assicurati di controllare il tuo mirror locale! È più probabile che funzionino i package rispetto alla compilazione dal sorgente e sono anche molto più sbrigativi. Usa il programma pkg_add(1) per installare i package sul tuo sistema.


Capitolo 5 L'X Window System

5.1 Sinossi

FreeBSD usa XFree86 per fornire agli utenti una potente interfaccia grafica. XFree86 è una implementazione gratuita dell'X Window System. Questo capitolo copre l'installazione e la configurazione di XFree86 su un sistema FreeBSD. Per ulteriori informazioni su XFree86 e sull'hardware che supporta, controlla il sito web di XFree86.

Dopo aver letto questo capitolo, conoscerai:

  • I diversi componenti dell'X Window system, e come questi cooperano.

  • Come installare e configurare XFree86.

  • Come installare ed usare diversi window manager.

  • Come usare i font TrueType in XFree86.

  • Come impostare il sistema per il login grafico (XDM).

Prima di leggere questo capitolo, dovresti:

  • Sapere come installare del software di terze parti (Capitolo 4).


5.2 Capire X

Usare X per la prima volta può essere talvolta scioccante per quelli che hanno familiarità con altri ambienti grafici, come Microsoft Windows o MacOS

Non é necessario capire tutti i dettagli dei diversi componenti di X e come interagiscono; in ogni caso, una piccola conoscenza di base rende possibile avvantaggiarsi delle funzionalità di X.


5.2.1 Perchè X?

X non è il primo window manager scritto per Unix, ma è il più popolare. Il gruppo di sviluppo di X aveva già lavorato ad un altro sistema grafico prima di scrivere X. Il nome di quel sistema era ``W'' (per ``Window''). X è semplicemente la lettera seguente nell'alfabeto Romano.

X può essere chiamato ``X'', ``X Window System'', ``X11'', e in altri modi. Chiamare X11 ``X Windows'' potrebbe dare fastidio a della gente; dà un'occhiata a X(1) per ulteriori informazioni su questo.


5.2.2 Il modello client/server di X

X è stato progettato fin dall'inizio per essere usato in rete, e adotta un modello ``client-server''. Nel modello di X, il ``server X'' funziona sul computer che ha tastiera, monitor e mouse attaccati. Il server è responsabile del controllo del display, del trattamento dell'input dalla tastiera e dal mouse, e così via. Ogni applicazione X (come XTerm, o Netscape) è un ``client''. Un client spedisce messaggi al server come ``Per favore disegna una finestra a queste coordinate'', e il server risponde con messaggi quali ``L'utente ha appena premuto il bottone OK''.

Se si tratta solo di un computer, come in una casa o in un piccolo ufficio, il server X e i client X funzioneranno sullo stesso computer. Ad ogni modo, è perfettamente possibile far funzionare il server X su una macchina meno potente, e far funzionare le applicazioni (i client) su di una macchina che serve l'ufficio. In questo scenario le comunicazioni tra il client X e il server hanno luogo attraverso la rete.

Questo confonde certa gente, perchè la terminologia di X è proprio l'opposto di come ci si possa aspettare di solito. Normalmente ci si aspetta che il ``server X'' sia la grossa e potente macchina in fondo alla sala, e il ``client X'' sia la macchina sulla propria scrivania.

Ricorda che il server X è la macchina con il monitor e la tastiera, e i client X sono i programmi che mostrano le finestre.

Non c'è nulla nel protocollo che obbliga la macchina client e quella server ad utilizzare lo stesso sistema operativo, oppure a funzionare sullo stesso tipo di computer. È certamente possibile far funzionare un server X su Microsoft Windows o MacOS, e ci sono diverse applicazioni free o commerciali che fanno esattamente quello.

Il server X che viene fornito con FreeBSD è chiamato XFree86, ed è disponibile gratuitamente, sotto una licenza molto simile a quella di FreeBSD. Server X commerciali per FreeBSD sono comunque disponibili.


5.2.3 Il Window Manager

La filosofia di design di X è molto simile a quella di Unix, ``strumenti, non regole''. Questo significa che X non prova a dire come una azione debba essere compiuta. Invece, vengono forniti degli strumenti all'utente, ed è quindi esponsabilitè dell'utente decidere come usare questi strumenti.

Questa filosofia si estende al fatto che X non dice come le finestre debbano comparire sullo schermo, né come queste debbano essere spostate con il mouse, né quali tasti servano per muoversi attraverso le finestre (ad esempio, Alt+Tab, nel caso di Windows), né che aspetto devono avere le barre sopra ogni finestra, se queste hanno o meno bottoni di chiusura, e così via.

Invece X delega questa responsabilitè ad una applicazione chiamata ``Window Manager''. Ci sono dozzine di window manager disponibili per X; AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker, ed altri. Ciascuno di questi window manager fornisce un diverso aspetto ed ambiente; alcuni di questi supportano i ``virtual desktop''; alcuni consentono di avere delle combinazioni di tasti predefinite per gestire il desktop; altri hanno un pulsante ``Start'' o simile; altri possono avere dei ``temi'', permettendo un cambio completo di look-and-feel applicando un nuovo tema. Questi window manager, e molti altri, sono disponibili nella categoria x11-wm dei Port.

Inoltre, i desktop environments KDE e GNOME hanno tutti e due il proprio window manager che si integra con il desktop.

Ciascun window manager inoltre ha a un proprio meccanismo di configurazione; alcuni si aspettano di avere un file di configurazione scritto a mano, altri hanno delle interfacce grafiche per molti dei compiti di configurazione; almeno uno (sawfish) ha un file di configurazione scritto in un dialetto del linguaggio Lisp.

Regole di fuoco: Un'altra capacità che il window manager deve avere è la cosiddetta ``focus policy'', o Regola di fuoco. Ogni sistema a finestre necessita di un modo per scegliere la finestra che deve essere attiva e che deve ricevere le comunicazioni da tastiera, e deve indicare univocamente quale finestra è attiva in un determinato momento.

Una Focus policy familiare è chiamata ``click-to-focus''. Questo è il modello utilizzato da Microsoft Windows, nel quale una finestra diventa attiva dopo aver ricevuto un click del mouse.

X non supporta alcuna focus policy particolare. Invece il Window Manager controlla quale finestra è attiva in un determinato momento. Diversi Window manager supporteranno diversi metodi di focus. Tutti supportano il click-to-focus, e la maggioranza di questi ne supporta molti altri.

Le regole di fuoco più popolari sono:

focus-follows-mouse (o fuoco-segue-mouse)

La finestra su cui si trova il puntatore è quella che riceve il fuoco. Questa potrebbe non essere necesariamente la finestra che si trova davanti a tutte le altre. Il fuoco cambia se si punta un'altra finestra, e non c'è modo di fare click con il mouse.

sloppy-focus

Questa policy è una piccola estensione della focus-follows-mouse. Con focus-follows-mouse, se il mouse viene mosso sulla finestra principale (o sullo sfondo), allora nessuna finestra avrà il fuoco, e la pressione di un tasto verrà semplicemente ignorata. Con Sloppy-focus, il fuoco è solamente cambiato quando il cursore entra in una nuova finestra, e non quando si esce dalla finestra corrente.

click-to-focus

La finestra attiva è scelta dal click del mouse. La finestra potrebbe essere allora ``alzata'', ed apparire davanti alle altre finestre. Tutte le pressioni dei tasti saranno da quel momento dirette a questa finestra, anche se il cursore viene spostato su un'altra finestra.

Molti window manager supportano altre policy, come possono avere variazioni sul tema. Per maggiori informazioni vi preghiamo di consultare la documentazione stessa del window manager.


5.2.4 I Widget

L'approccio di X di fornire strumenti e non regole si estende anche ai widget, cioè ai contenitori contenenti, sullo schermo, le applicazioni.

``Widget'' è un termine usato per tutte quelle parti nell'interfaccia utente che possono essere cliccate o manipolate in un certo modo; bottoni, checkboxes, radio buttons, icone, liste, e così via. Windows li chiama invece ``controlli''.

Sia Microsoft Windows che Apple MacOS hanno delle regole strette per i widget. Gli sviluppatori devono assicurarsi che tutte le loro applicazioni condividano lo stesso stile. Con X, non si è sentito un particolare bisogno di obbligare ad avere un particolare stile grafico, o settare widgets a cui aderire.

Come risultato, non aspettatevi applicazioni per X che abbiano lo stesso stile. Ci sono alcuni widgets popolari e le loro variazioni, come l'originale Athena sviluppato dall'MIT, Motif (dal quale è stato modellato il widget presente su Microsoft windows, tutti angoli a doppio livello e tre sfumature di grigio), OpenLook, ed altri.

Molte applicazioni nuove di X di oggi usano un widget con sembianze moderne, probabilmente Qt, usato da KDE, o GTK, usato da GNOME. Nel rispetto di questo, c'è un accenno di convergenza nell'aspetto dei desktop UNIX, il che facilita le cose ai nuovi utenti.


5.3 Installazione di XFree86

Prima di installare XFree86, decidi quale versione utilizzare. XFree86 3.X è un ramo di mantenimento dello sviluppo di XFree86. È molto stabile, e supporta un grande numero di schede grafiche. Ad ogni modo, non vi è alcuno sviluppo ulteriore effettuato su questo software. XFree86 4.X è un redesign completo del sistema con molte nuove features come un miglior supporto per i font e l'antialiasing. Sfortunatamente questa nuova architettura fa sì che i driver per le schede video debbano essere riscritti, e alcune delle schede video meno recenti che erano supportate nella 3.X è possibile che non siano ancora supportate nella 4.X

Il programma di installazione di FreeBSD offre l'opportunità di installare e configurare XFree86 3.3.6 durante l'installazione (trattato in Sezione 2.7.1). Per utilizzare XFree86 4.X, aspetta finché il sistema base è stato installato, quindi installa XFree86. Per esempio, per compilare ed installare XFree86 4.X dai port:

# cd /usr/ports/x11/XFree86-4
# make all install clean


Alternativamente, XFree86 4.X può essere installato da package binario con il comando pkg_add direttamente dai binari FreeBSD forniti sul sito di XFree86.

Il resto del capitolo spiegherà come configurare XFree86, e come settare un ambiente desktop produttivo.


5.4 XFree86 Configuration

Traduzione in corso


5.5 Using Fonts in XFree86

Traduzione in corso


5.6 The X Display Manager

Traduzione in corso


5.7 Desktop Environments

Traduzione in corso

II. Compiti Ordinari

Ora che sono stati trattati gli elementi di base, questa parte del Manuale di FreeBSD verterà su alcune funzionalità di FreeBSD che sono usate di frequente. Questi capitoli:

  • Ti introdurranno utili e conosciute applicazioni desktop: browser, strumenti produttivi, visualizzatori di documenti, ecc.

  • Ti mostreranno vari strumenti multimediali disponibili per FreeBSD.

  • Ti spiegheranno il processo di costruzione e di personalizzazione del kernel di FreeBSD, al fine di abilitare funzionalità extra sul tuo sistema.

  • Ti descriveranno in dettaglio il sistema di stampa, sia per setup di stampanti desktop che per quelle in rete.

  • Ti mostreranno come eseguire applicazioni Linux sul tuo sistema FreeBSD.

Alcuni di questi capitoli raccomandano di leggere prima altri capitoli per una migliore comprensione degli stessi, e questo è segnalato nella sinossi all'inizio di ogni capitolo.


Capitolo 6 Applicazioni Desktop

Contributo di Christophe Juniet.

6.1 Sinossi

FreeBSD può far girare una gran varietà di applicazioni desktop, come ad esempio browser per la navigazione e editor di testi. La maggior parte di questi sono disponibili in pacchetti o possono essere automaticamente installati dalla collezione di port. Molti nuovi utenti si aspettano di trovare questo tipo di applicazioni nei loro desktop. Questo capitolo ti mostrerà come installare alcune popolari applicazioni desktop, sia dai package che dalla collezione dei port.

Da notare che quando installiamo programmi dalla collezione dei port, questi sono compilati dai sorgenti. Questa operazione potrebbe durare molto tempo, dipende da cosa stai compilando e dalla potenza della tua macchina. Se per te compilare i sorgenti occupa un arco di tempo proibitivamente lungo, puoi installare la maggior parte dei programmi della collezione dei port da pacchetti precompilati.

Visto che FreeBSD è compatibile con i binari di Linux, molte applicazione originariamente scritte per Linux sono disponibili per il tuo desktop. È fortemente raccomandata la lettura del Capitolo 10 prima di installare qualsiasi applicazione per Linux. La maggior parte dei port che sfruttano la compatibilità con Linux iniziano con ``linux-''. Ricordatelo quando cerchi un port in particolare, per esempio con whereis(1). Nella parte seguente, si presuppone che tu abbia installato il supporto per la compatibilità con i binari di Linux prima di installare qualsiasi applicazione per Linux.

Queste sono le categorie software trattate in questo capitolo:

  • Browser (come ad es. Mozilla, Netscape®, Opera, Firefox, Konqueror)

  • Produttività (come ad es. KOffice, AbiWord, The GIMP, OpenOffice.org)

  • Visualizzatori di documenti (come ad es. Acrobat Reader®, gv, Xpdf, GQview)

  • Finance (come ad es. GnuCash, Gnumeric, Abacus)

Prima di leggere questo capitolo, dovresti:

  • Essere in grado di installare altro software di terze parti (Capitolo 4).

  • Essere in grado di installare altro software per Linux (Capitolo 10).

Per informazioni su come avere un ambiente multimediale, leggi il Capitolo 7. Se vuoi installare e usare l'e-mail, sono presenti riferimenti nel Capitolo 22.


6.2 Browser

In FreeBSD non viene preinstallato nessun browser in particolare. Invece, la directory www della collezione dei port contiene molti browsers pronti per essere installati. Se non hai il tempo di compilare tutto (in alcuni casi potrebbe occupare molto tempo) molti di questi sono disponibili come package.

KDE e anche GNOME hanno dei browsers HTML. Guarda la Sezione 5.7 per avere informazioni su come installare questi ambienti desktop.

Se stai cercando dei browser leggeri, dovresti controllare la collezione dei port per www/dillo, www/links, oppure www/w3m.

Questa sezione riguarda le seguenti applicazioni:

Nome dell'applicazione Livello di risorse necessarie Installazione dai port Principali dipendenze
Mozilla pesante pesante Gtk+
Netscape pesante leggero Compatibilità binaria con Linux
Opera leggero leggero Versione FreeBSD e versione per Linux. La versione per Linux ha come dipendenze la Compatibilità binaria con Linux e linux-openmotif
Firefox medio pesante Gtk+
Konqueror medio pesante Librerie KDE

6.2.1 Mozilla

Mozilla è probabilmente il browser più indicato per il tuo desktop FreeBSD. È moderno, stabile, e completamente supportato da FreeBSD. Tra le caratteristiche un motore di visualizzazione di pagine che segue completamente lo standard HTML. Ha inoltre un lettore di mail e news. Presenta anche un editor HTML se vuoi comporre della pagine web. Gli utenti di Netscape riconosceranno le somiglianze con la suite Communicator in quanto basati sullo stesso codice.

Su macchine lente, con una velocita di CPU minore di 233MHz o con meno di 64MB di RAM, Mozilla potrebbe utilizzare troppe risorse per essere eseguito al meglio. Potresti invece dare un'occhiata al browser Opera descritto poco più giù in questo capitolo.

Se non puoi o non vuoi compilare Mozilla per qualsiasi ragione, il FreeBSD GNOME team l'ha già fatto per te. Devi solo installare il pacchetto dalla rete con:

# pkg_add -r mozilla

Se il pacchetto non è disponibile, e hai abbastanza tempo e spazio su disco, puoi prelevare i sorgenti di Mozilla, compilarli e installarli sul tuo sistema. Questo può essere fatto con:

# cd /usr/ports/www/mozilla
# make install clean

Puoi assicurarti una corretta inizializzazione del port di Mozilla attraverso l'esecuzione dell'utility chrome registry setup con i privilegi di root. In ogni caso se vuoi prelevare alcuni add-ons come ad esempio gestori del mouse, dovresti eseguire Mozilla come root per installarli correttamente.

Una volta completata l'installazione di Mozilla, non necessiti di essere ancora root. Puoi avviare Mozilla come browser digitando:

% mozilla

Puoi avviarlo direttamente come lettore di mail e news come mostrato qui sotto:

% mozilla -mail

6.2.2 Mozilla, Java™, e Macromedia® Flash

Contributo di Tom Rhodes.

Installare Mozilla è semplice, ma sfortunatamente installare Mozilla con il supporto per add-on come Java™ e Macromedia® Flash™ consuma sia spazio su disco che tempo.

La prima cosa da fare è scaricare i files che verranno usati poi con Mozilla. Raggiungi con il tuo browser la pagina presente al seguente link http://www.sun.com/software/java2/download.html e creati un account sul loro sito. Ricordati di salvare il nome utente e la password visto che potresti averne bisogno in fututo. Scarica una copia del file j2sdk-1_3_1-src.tar.gz e salvalo in /usr/ports/distfiles/ perchè il port non è in grado di prelevarlo automaticamente. Questo a causa delle limitazioni dovute alla licenza. Nel frattempo scarica il ``java environment'' da http://java.sun.com/webapps/download/Display?BundleId=7905. Il file è j2sdk-1_3_1_08-linux-i586.bin ed è abbastanza grande (circa 25 megabyte!). Esattamente come prima, questo file deve essere salvato in /usr/ports/distfiles/. Alla fine scarica una copia del ``java patchkit'' da http://www.eyesbeyond.com/freebsddom/java/ e salvalo nella directory /usr/ports/distfiles/.

Installiamo il port java/jdk13 con il classico make install clean e dopo installiamo il port www/flashpluginwrapper. Questo port necessita di emulators/linux_base che è un port abbastanza grande. Anche se esistono altri plug-in Flash, questi hanno dato dei problemi e non hanno funzionato da me.

Installa il port www/mozilla, se Mozilla non è ancora installato.

Ora copiamo il plug-in Flash con:

# cp /usr/local/lib/flash/libflashplayer.so \
        /usr/X11R6/lib/browser_plugins/libflashplayer_linux.so
# cp /usr/local/lib/flash/ShockwaveFlash.class \
        /usr/X11R6/lib/browser_plugins/

Ora aggiungere le seguenti righe all'inizio (ma ovviamante sotto #!/bin/sh) dello script di avvio di Mozilla: /usr/X11R6/bin/mozilla.

LD_PRELOAD=/usr/local/lib/libflashplayer.so.1
export LD_PRELOAD

Questo farà funzionare il plug-in di Flash.

Ora avvia Mozilla solo con:

% mozilla &

Aprire il menu di opzioni About Plug-ins dal menù Help. Una lista con tutte i plug-in disponibili dovrebbe apparire. Java e Shockwave® Flash dovrebbero essere elencate.


6.2.3 Netscape®

Nella collezione dei port sono presenti diverse versioni del browser Netscape. Sin dalla prima versione scritta per FreeBSD Netscape contiene un grave bug di sicurezza, è fortemente scoraggiata l'installazione. Invece, puoi usare una versione più recente per Linux o per DIGITAL UNIX.

L'ultima release stabile del browser Netscape è Netscape 7. Questa può essere installata dalla collezione dei port con:

# cd /usr/ports/www/netscape7
# make install clean

Ci sono delle versioni localizzate nelle categorie French, German, e Japanese.

Attenzione: Le versioni Netscape 4.x non sono raccomandate perchè non sono conformi agli standard attuali. Tuttavia, Netscape 7.x e le altre versioni più recenti sono disponibili solo per architetture i386.


6.2.4 Opera

Opera è un browser molto veloce, pieno di funzionalità, e basato sugli standard attuali. È disponibile in due versioni: una ``nativa'' per FreeBSD e una che gira sotto emulazione Linux. Per tutte e due i casi È disponibile una versione gratuita che visualizza banner pubblicitari e una che è a pagamento. Puoi comprare una versione senza avvisi pubblicitari dal sito web di Opera. Questa è una release per Linux ma gira senza problemi anche sotto FreeBSD.

Per navigare nel web con la versione per FreeBSD di Opera, installa il package:

# pkg_add -r opera

Alcuni siti FTP non hanno tutti i pacchetti, ma è possibile ottenere lo stesso risultato con la collezione dei port digitando:

# cd /usr/port/www/opera
# make install clean

Per installare la versione Linux di Opera, sustituire linux-opera al posto di opera nell'esempio sopra. La versione Linux È utile in situazioni che richiedono l'uso di plug-ins che sono disponibili solo per Linux, come ad esempio Adobe Acrobat Reader. In tutti gli altri casi, le versioni per FreeBSD e Linux funzioneranno esattamente alla stessa maniera.


6.2.5 Firefox

Firefox è il browser di nuova generazione basato sul codice di Mozilla. Mozilla è una suite completa di applicazioni, inclusi un browser, un client di posta elettronica, un client per chat e altro ancora. Firefox è solo un browser, piccolo e veloce.

Installa il package con:

# pkg_add -r firefox

Inoltre puoi usare la collezione dei port se preferisci compilare il codice sorgente:

# cd /usr/ports/www/firefox
# make install clean

6.2.6 Konqueror

Konqueror fa parte di KDE ma è anche possibile usarlo senza KDE installando x11/kdebase3. Konqueror è molto più che un browser, è anche un file manager e un lettore multimediale.

Inoltre Konqueror ha alcuni plugin, disponibili in misc/konq-plugins.

Konqueror supporta Flash e un How To è disponibile al link http://freebsd.kde.org/howto.php.


6.3 Produttività

Quando si parla di produttività, i nuovi utenti spesso cercano un buon pacchetto office o un facile e completo editor di testi. Non ci sono applicativi di default, mentre alcuni ambienti desktop come KDE sono muniti di un pacchetto office. FreeBSD dispone di tutto ciò di cui hai necessità indipendentemente dal tuo ambiente desktop.

Questa sezione riguarda le seguenti applicazioni:

Nome dell'applicazione Livello di risorse necessarie Installazione dai port Principali dipendenze
KOffice leggero pesante KDE
AbiWord leggero leggero Gtk+ o GNOME
The Gimp leggero pesante Gtk+
OpenOffice.org pesante molto pesante GCC 3.1, JDK™ 1.3, Mozilla

6.3.1 KOffice

La comunità KDE distribuisce il suo ambiente desktop insieme a un pacchetto office che può essere usato all'esterno dell'ambiente KDE. Questo include le 4 principali componenti che sono presenti nelle altre principale suite di office. KWord è l'editor di testi, KSpread è il foglio di calcolo elettronico, KPresenter gestisce presentazioni a slide e Kontour ti permette di disegnare documenti grafici.

Prima di installare l'ultima release di KOffice, assicurati di avere una versione aggiornata di KDE.

Per installare KOffice come pacchetto, inserisci il seguente comando:

# pkg_add -r koffice

se il pacchetto non è disponibile puoi usare la collezione dei ports. Per esempio, per installare KOffice per KDE3, fai:

# cd /usr/ports/editors/koffice-kde3
# make install clean

6.3.2 AbiWord

AbiWord è un editor di testi gratuito simile in aspetto e non solo a Microsoft Word. È adatto per la digitazione di documenti, lettere, reports, appunti e così via. È molto veloce, contiene molte funzioni, ed è molto facile da usare.

AbiWord può importare ed esportare file di molti tipi, compreso alcuni formati proprietari come Microsoft .doc.

AbiWord è disponibile come package. Puoi installarlo digitando:

# pkg_add -r AbiWord2

Se il pacchetto non è disponibile puoi recuperarlo dalla collezione dei port. La collezione dei port dovrebbe essere molto più aggiornata. Puoi fare come segue:

# cd /usr/ports/editors/AbiWord2
# make install clean

6.3.3 The GIMP

Per il disegno o il ritocco delle immagini, The GIMP è un programa di manipolazione immagini molto sofisticato. Può essere usato come un semplice programma di disegno o come un programma di fotoritocco professionale. Supporta un grande numero di plug-in, funzioni e un'interfaccia di scripting. The GIMP può leggere e scrivere una enorme quantità di formati di file. Supporto di interfacce per scanner o tavolette.

Puoi installare il pacchetto inserendo il seguente comando:

# pkg_add -r gimp

Se il tuo sito FTP non ha il pacchetto, puoi usare la collezione dei ports. La directory graphics della collezione dei ports contiene anche The Gimp Manual. È riportato qui di seguito come installarli:

# cd /usr/ports/graphics/gimp1
# make install clean
# cd /usr/ports/graphics/gimp-manual-pdf
# make install clean

Nota: La directorygraphics della collezione dei ports contiene la versione development di The GIMP in graphics/gimp-devel. Le versioni in formato HTML e PostScript® di The Gimp Manual sono in graphics/gimp-manual-html e graphics/gimp-manual-ps.


6.3.4 OpenOffice.org

OpenOffice.org unisce tutte le applicazioni necessarie in un completo pacchetto office di produttività personale: un editor di testi, un foglio di calcolo, un software per le presentazioni e uno di disegno. La sua interfaccia utente è molto simile alle altre suiti di office, può inoltre importare ed esportare file in diversi popolari formati. È disponibile in un gran numero di differenti lingue comprendenti interfaccia, correttore ortografico, e dizionario.

L'editor di testi di OpenOffice.org usa come formato di file nativo il formato XML per incrementare la portabilità e la flessibilità. Il foglio di calcolo elettronico incorpora un linguaggio per le macro che può essere interfacciato con un database esterno. OpenOffice.org è stabile e e gira nativamente sotto Windows, Solaris™, Linux, FreeBSD, e Mac OS X. Altre informazioni riguardo OpenOffice.org possono essere trovate sul sito web di OpenOffice. Per informazioni specifiche su FreeBSD, e per scaricare direttamente i package usa il sito web del FreeBSD OpenOffice Porting Team.

Per installare OpenOffice.org, do:

# pkg_add -r openoffice

Una volta installato il pacchetto, devi avviare il programma di setup e scegliere una standard workstation installation. Eseguire questo comando come utente che userà OpenOffice.org OpenOffice.org:

% openoffice-setup

Se il pacchetto OpenOffice.org non è disponibile hai ancora la possibilità di compilare il port. Come sempre, devi tenere presente che necessiterai di molto spazio nel tuo hard disk e di molto tempo per la compilazione.

# cd /usr/ports/editors/openoffice
# make install clean

Una volta installato il pacchetto, devi avviare il programma di setup di OpenOffice.org e scegliere standard workstation installation con:

% cd /usr/ports/editors/openoffice
% make install-user

Se vuoi usare una versione in una lingua differente qui di seguito sono presenti i ports disponibili:


6.4 Document viewers

Alcuni nuovi formati di documenti hanno recentemente guadagnato popolarità. I visualizzatori standard che richiedono potrebbero non essere inclusi nel sistema base. Vedremo come installarli in questa sezione.

Questa sezione riguarda le seguenti applicazioni:

Nome dell'applicazone Livello di risorse necessarie Installazione dai ports Maggiori dipendenze
Acrobat Reader leggero leggero Supporto per la compatibilità per i binari Linux
gv leggero leggero Xaw3d
Xpdf leggero leggero FreeType
GQview leggero leggero Gtk+ o GNOME

6.4.1 Acrobat Reader®

Molti documenti sono ora distribuiti come documenti in PDF, che stà per ``Portable Document Format''. Uno dei visualizzatori raccomandati per files di questo tipo è Acrobat Reader, rilasciato da Adobe per Linux. Visto che FreeBSD può eseguire binari per Linux, è disponibile anche per FreeBSD.

Per installare il pacchetto Acrobat Reader 5 fare:

# pkg_add -r acroread5

Come sempre se il pacchetto non è disponibilie o se vuoi l'ultima versione, anche puoi utilizzare la collezione dei ports:

# cd /usr/ports/print/acroread5
# make install clean

Nota: Acrobat Reader è disponibile in molte versioni differenti. Al momento della scrittura di questo documento, sono presenti: print/acroread (versione 3.0.2), print/acroread4 (versione 4.0.5), e print/acroread5 (versione 5.0.6). Potrebbero non essere disponibili tutti i pacchetti per la tua versione di FreeBSD. La collezione dei port conterrà in ogni caso l'ultima versione.


6.4.2 gv

gv è un visualizzatore per file PostScript e PDF. Era origibariamente basato su ghostview ma ha un look più gradevole grazie alle librerie Xaw3d. È veloce e l'interfaccia è pulita. gv ha molte funzioni come: orientamento, dimensione del foglio, scala, o antialias. Molte possono essere esuguite sia dalla tastiera che dal mouse.

Per installare gv come un pacchetto, fare:

# pkg_add -r gv

Se non puoi ricevere il pacchetto puoi utilizzare la collezione dei ports:

# cd /usr/ports/print/gv
# make install clean

6.4.3 Xpdf

Se vuoi un piccolo visualizzatore di PDF per FreeBSD, Xpdf è un leggero ed efficente visualizzatore. Ha bisogno di veramente poche risorse ed è molto stabile. Usa i font standard di X e non ha bisogno di Motif® o di altri toolkit di X.

Per installare il pacchetto Xpdf inserire questo comando:

# pkg_add -r xpdf

Se il pacchetto non è disponibile o preferisci usare la collezione dei ports fai:

# cd /usr/ports/graphics/xpdf
# make install clean

Una volta completata l'installazione, puoi avviare Xpdf e puoi usare il tasto destro del mouse per visualizzare il menù.


6.4.4 GQview

GQview è un manager di immagini. Puoi visualizzare un file con un solo click, avviare un editor esterno, visualizzare l'anteprima e molto altro. Consente inoltre di visualizzare l'anteprima delle immagini come diapositive. Puoi gestire le tue collezioni di immagini e trovare facilmente i duplicati. GQview può lavorare in modalità full-screen e ha il supporto internazionale.

Se vuoi installare il pacchetto GQviewfai:

# pkg_add -r gqview

Se il pacchetto non è disponibile o preferisci usare la collezione di port fai:

# cd /usr/ports/graphics/gqview
# make install clean

6.5 Bilancio

Se per qualsiasi ragione vorresti gestire il tuo bilancio personale sul tuo desktop FreeBSD, ci sono alcune applicazioni potenti e facili da usare pronti per essere installati. Alcuni di questi sono compatibili con i formati di file più utilizzati come ad esempio i documenti di Quicken® o Excel.

Questa sezione riguarda le seguenti applicazioni:

Nome dell'applicazione Livello di risorse necessarie Installazione dai ports Maggiori dipendenze
GnuCash leggero pesante GNOME
Gnumeric leggero pesante GNOME
Abacus leggero leggero Tcl/Tk

6.5.1 GnuCash

GnuCash è prodotto dagli sforzi da parte degli sviluppatori di GNOME per mettere a disposizione degli utenti finali applicazioni facili da usare e potenti. Con GnuCash, puoi tenere traccie delle tue spese e dei tuoi guadagni, del conto bancario, o della tua attività. Dispone di una interfaccia intuitiva pur rimanendo molto professionale.

GnuCash Dispone di un ottimo registro, un sistema di accounts gerarchico, molte combinazioni di scelta rapida e tecniche di autocompletamento. Può dividere una transazione singola in molte parti più dettagliate. GnuCash può importare e unire i file QIF di Quicken. Gestisce inoltre diversi formati esteri di valuta e data.

Per installare GnuCash nel tuo sistema, fai:

# pkg_add -r gnucash

Se il pacchetto non è disponibile, puoi usare la collezione dei ports:

# cd /usr/ports/finance/gnucash
# make install clean

6.5.2 Gnumeric

Gnumeric è un foglio di calcolo elettronico, fa parte dell'ambiente desktop GNOME. Dispone di molti automatismi utili, ``aucompletamento'' in base al formato della cella e un sistema di formattazione automatica per molte operazioni. Può esportare i files in un gran numero di formati popolari come quelli di Excel, Lotus 1-2-3, o Quattro Pro. Gnumeric supporta l'utilizzo di grafici attraverso il programma di grafica math/guppi. Ha un gran numero di funzioni e permette l'utilizzo di celle formattate come ad esempio nel formato data, valuta, numero, ora, e molti altri.

Per installare Gnumeric come un un pacchetto, digitare:

# pkg_add -r gnumeric

Se il pacchetto non risulta disponibile puoi usare la collezione dei ports con:

# cd /usr/ports/math/gnumeric
# make install clean

6.5.3 Abacus

Abacus è un foglio di calcolo leggero e facile da usare. Include molte funzioni utili in molti campi diversi come ad esempio in statistica, finanza, e matematica. Può importare ed esportare i file in formato Excel. Abacus può esportare anche in formato PostScript.

Per installare Abacus dal pacchetto digitare:

# pkg_add -r abacus

Se il pacchetto non è disponibile puoi utilizzare la collezione dei ports digitando:

# cd /usr/ports/deskutils/abacus
# make install clean

6.6 Sommario

Anche se FreeBSD è molto popolare tra gli ISP per le sue performance e la sua stabilità, FreeBSD è completamente pronto ad essere usato come desktop per l'utilizzo quotidiano. Con diverse migliaia di applicazioni disponibili sotto forma di pacchetti o ports, puoi avere un desktop perfetto che soddisfi tutte le tue necessità.

Una volta completata l'installazione del tuo desktop, potresti volere fare un passo in più con misc/instant-workstation. Questo ``meta-port'' ti permette di creare un insieme tipico di di ports per una workstation. Puoi personalizzarlo editando il file /usr/ports/misc/instant-workstation/Makefile. Segui la sintassi di default per aggiungere o rimuovere ports, e poi utilizza la procedura indicata per creare l'insieme. Così facendo sarai capace di creare un grosso pacchetto che corrisponde al tuo desktop personale e di installarlo nelle altre workstation!

Qui di seguito un piccolo riassunto delle applicazioni trattate in questo capitolo:

Nome dell'applicazione Nome del pacchetto Nome del ports
Mozilla mozilla www/mozilla
Netscape linux-netscape7 www/linux-netscape7
Opera linux-opera www/linux-opera
Firefox firefox www/firefox
KOffice koffice-kde3 editors/koffice-kde3
AbiWord AbiWord-gnome editors/AbiWord
The GIMP gimp graphics/gimp1
OpenOffice.org openoffice editors/openoffice
Acrobat Reader acroread5 print/acroread5
gv gv print/gv
Xpdf xpdf graphics/xpdf
GQview gqview graphics/gqview
GnuCash gnucash finance/gnucash
Gnumeric gnumeric math/gnumeric
Abacus abacus deskutils/abacus

Capitolo 7 Multimedia

Scritto da Ross Lippert.

7.1 Sinossi

FreeBSD supporta una grande varietà di schede audio, permettendoti di apprezzare un output di alta fedeltà dal tuo computer. Questo include l'abilità di registrare e riprodurre suoni nei formati MPEG Audio Layer 3 (MP3), WAV, ed Ogg Vorbis così come in molti altri formati. La FreeBSD Ports Collection contiene inoltre applicazioni che ti permettono di modificare l'audio registrato, aggiungere effetti sonori, e controllare i dispositivi MIDI collegati.

Con un po' di buona volontà nello sperimentare, FreeBSD può supportare la riproduzione di file video e DVD. Il numero di applicazioni per codificare, convertire, e riprodurre i vari formati video è più limitato del numero delle applicazioni audio. Per esempio nel momento in cui sto scrivendo, non esiste nella FreeBSD Ports Collection una buona applicazione per ricodificare, che potrebbe essere usata per la conversione tra diversi formati, come c'è con audio/sox. Tuttavia, il panorama software in quest'area sta rapidamente cambiando.

Questo capitolo descriverà i passi necessari per configurare la tua scheda audio. La configurazione e l'installazione di XFree86 (Capitolo 5) si sono già prese cura dei problemi hardware della tua scheda video, sebbene ci possano essere delle ottimizzazioni da applicare per una migliore riproduzione.

Dopo aver letto questo capitolo, saprai:

  • Come configurare il sistema in modo che la scheda audio venga riconosciuta.

  • Metodi per verificare che la tua scheda funzioni, usando applicazioni di esempio.

  • Come risolvere i problemi di configurazione audio.

  • Come riprodurre e codificare file MP3.

  • Come sono supportate le applicazioni video da XFree86.

  • Alcuni port per riprodurre/codificare filmati che danno buoni risultati.

  • Come riprodurre i DVD e i file .mpg e .avi.

  • Come estrarre le informazioni da CD e DVD su file.

  • Come configurare una scheda TV.

Prima di leggere questo capitolo, dovresti:

  • Sapere come configurare e installare un nuovo kernel (Capitolo 8).

Per le sezioni sul video, si assume che XFree86 4.X (x11/XFree86-4) sia stato installato. XFree86 3.X può funzionare, ma non è stato testato con quello che è descritto in questo capitolo. Se scopri che qualcosa descritto qui non funziona con XFree86 3.X faccelo sapere.

Avvertimento: Provare a montare CD audio con il comando mount(8) produrrà un errore, come minimo, o un kernel panic, alla peggio. Questi formati hanno codifiche particolari che differiscono dal comune file system ISO.


7.2 Configurazione della Scheda Audio

Contributo di Moses Moore.

7.2.1 Riconoscimento del Proprio Dispositivo

Prima di iniziare, dovresti conoscere il modello della scheda che possiedi, il chip che utilizza, e se è una scheda PCI o ISA. FreeBSD supporta una grande varietà di schede sia PCI che ISA. Se non vedi la tua scheda nella lista seguente, controlla la pagina man di pcm(4). Questa non è una lista completa; tuttavia, comprende le schede più comuni.

  • Crystal 4237, 4236, 4232, 4231

  • Yamaha OPL-SAx

  • OPTi931

  • Ensoniq AudioPCI 1370/1371

  • ESS Solo-1/1E

  • NeoMagic 256AV/ZX

  • SoundBlaster® Pro, 16, 32, AWE64, AWE128, Live

  • Creative ViBRA16

  • Advance Asound 100, 110, e Logic ALS120

  • ES 1868, 1869, 1879, 1888

  • Gravis UltraSound

  • Aureal Vortex 1 o 2

Per usare il tuo dispositivo audio, dovrai caricare i driver corretti. Il caricamento del driver del dispositivo può essere fatto in due modi. Il metodo più semplice consiste semplicemente nel caricare un modulo nel kernel per la tua scheda audio con kldload(8) che può essere fatto sia da linea di comando:

# kldload snd_emu10k1.ko

sia aggiungendo la riga appropriata al file /boot/defaults/loader.conf come questa:

snd_emu10k1_load="YES"

Questi esempi sono per la scheda audio Creative SoundBlaster Live!. Altri moduli sonori disponibili sono elencati in /boot/loader.conf. Se hai dei dubbi su quale driver usare, potresti provare a caricare snd_driver, un metadriver che carica i driver più comuni in una sola volta, velocizzando la ricerca per il driver corretto.

Alternativamente, puoi compilare staticamente il supporto per la tua scheda audio nel kernel. Le sezioni seguenti forniscono le informazioni di cui hai bisogno per aggiungere il supporto al tuo hardware con questo metodo. Per informazioni aggiuntive su come ricompilare il kernel, guarda il Capitolo 8.


7.2.1.1 Schede Audio Creative, Advance, e ESS

Se hai una delle suddette schede, dovrai aggiungere:

device pcm

al file di configurazione del kernel. Se hai una scheda ISA PnP, dovrai aggiungere inoltre:

device sbc

Per una scheda ISA non PnP, aggiungi:

device pcm
device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15

al file di configurazione del kernel. Le impostazioni appena viste sono quelle di default. Potresti aver bisogno di cambiare IRQ o altre impostazioni per identificare la tua scheda. Guarda la pagina man di sbc(4) per ulteriori informazioni.

Nota: La Sound Blaster Live non è supportata sotto FreeBSD 4.0 senza l'uso di una patch, di cui questa sezione non si occuperà. È consigliato l'aggiornamento all'ultima -STABLE prima di provare ad usare questa scheda.


7.2.1.2 Schede Gravis UltraSound

Per una scheda ISA PnP, dovrai aggiungere:

device pcm
device gusc

al file di configurazione del kernel. Se hai una scheda ISA non PnP, dovrai aggiungere:

device pcm
device gus0 at isa? port 0x220 irq 5 drq 1 flags 0x13

al file di configurazione del kernel. Potresti aver bisogno di cambiare IRQ o altre impostazioni per identificare la tua scheda. Guarda la pagina man di gusc(4) per ulteriori informazioni.


7.2.1.3 Schede Crystal Sound

Per le schede Crystal, dovrai aggiungere:

device pcm
device csa

al file di configurazione del kernel.


7.2.1.4 Supporto Generico

Per schede ISA o PCI PnP, dovrai aggiungere:

device pcm

al file di configurazione del kernel. Se hai una scheda audio ISA non PnP che non ha un driver bridge, dovrai aggiungere:

device pcm0 at isa? irq 10 drq 1 flags 0x0

al file di configurazione del kernel. Potresti aver bisogno di cambiare IRQ o altre impostazioni per identificare la tua scheda.


7.2.1.5 Sonoro Integrato

Qualche sistema con dispositivi audio integrati nella scheda madre può richiedere l'opzione seguente nella configurazione del kernel:

options PNPBIOS

Nota: Se stai usando FreeBSD 5.0 o successivi l'opzione PNPBIOS non è necessaria. L'opzione è stata rimossa e la funzionalità è ora sempre abilitata.


7.2.2 Creazione e Test dei Dispositivi

Dopo aver riavviato, loggati e cerca il dispositivo nel file /var/run/dmesg.boot, come mostrato qui sotto:

# grep pcm /var/run/dmesg.boot
pcm0: <SB16 DSP 4.11> on sbc0

L'output del tuo sistema può essere differente. Se non appare nessun dispositivo pcm, qualcosa è andato storto in precedenza. Se questo accade, riguarda il file di configurazione del kernel e assicurati di aver scelto il dispositivo corretto. I problemi più comuni sono elencati nella Sezione 7.2.2.1.

Nota: Se stai usando FreeBSD 5.0 o seguenti, puoi tranquillamente saltare il resto di questa sezione. Queste versioni usano devfs(5) per creare automaticamente i dispositivi.

Se il precedente comando ha restituito pcm0, dovrai eseguire il seguente come root:

# cd /dev
# sh MAKEDEV snd0

Se il comando ha restituito pcm1, segui gli stessi passi mostrati qui sopra, sostituendo snd0 con snd1.

Nota: I suddetti comandi non creeranno un dispositivo /dev/snd!

MAKEDEV creerà un gruppo di dispositivi, comprendente:

Dispositivo Descrizione
/dev/audio Dispositivo audio compatibile Sparc®
/dev/dsp Dispositivo per la voce digitalizzata
/dev/dspW Come /dev/dsp, ma con 16 bit per canale
/dev/midi Dispositivo per l'accesso midi in modalità diretta
/dev/mixer Dispositivo per il controllo del mixer
/dev/music Interfaccia di secondo livello al sequenziatore
/dev/sequencer Sequenziatore
/dev/pss Interfaccia di dispositivo programmabile

Se tutto va bene, ora dovresti avere una scheda audio funzionante. Se il tuo drive CD-ROM o DVD-ROM è collegato correttamente alla scheda audio, puoi inserire un CD nel drive e riprodurlo con cdcontrol(1):

% cdcontrol -f /dev/acd0c play 1

Varie applicazioni, come audio/workman offrono una migliore interfaccia. Potresti voler installare una applicazione come audio/mpg123 per ascoltare i file audio MP3.


7.2.2.1 Problemi Comuni

Errore Soluzione
``unsupported subdevice XX''

Non è stato creato correttamente qualche dispositivo. Ripeti i precedenti passi.

``sb_dspwr(XX) timed out''

Non è stata impostata correttamente la porta di I/O.

``bad irq XX''

È stato configurato erroneamente l'IRQ. Assicurati che l'IRQ impostato e quello della scheda siano gli stessi.

``xxx: gus pcm not attached, out of memory''

Non c'è abbastanza memoria disponibile per usare il dispositivo.

``xxx: can't open /dev/dsp!''

Controlla con fstat | grep dsp se un'altra applicazione sta usando il dispositivo. Esound e il supporto audio di KDE sono famosi per creare problemi.


7.2.3 Utilizzo di Sorgenti Audio Multiple

Contributo di Munish Chopra.

È spesso desiderabile avere più sorgenti di audio che siano in grado di suonare contemporaneamente, per esempio quando esound o artsd non supportano la condivisione del dispositivo audio con una certa applicazione.

FreeBSD ti permette di fare questo attraverso i Virtual Sound Channels, che possono essere impostati con sysctl(8). I canali virtuali permettono di multiplexare i canali di riproduzione della tua scheda audio mixando l'audio nel kernel.

Per impostare il numero dei canali virtuali, ci sono due variabili sysctl che, se sei l'utente root, possono essere impostate così:

# sysctl hw.snd.pcm0.vchans=4
# sysctl hw.snd.maxautovchans=4

L'esempio qui sopra alloca quattro canali viruali, che è un numero adatto all'uso di ogni giorno. hw.snd.pcm0.vchans è il numero dei canali virtuali che ha pcm0, ed è configurabile una volta che il dispositivo è collegato. hw.snd.maxautovchans è il numero dei canali virtuali che vengono dati a un nuovo dispositivo audio quando viene collegato tramite kldload(8). Visto che il modulo pcm può essere caricato indipendentemente dai driver dell'hardware, hw.snd.maxautovchans può contenere tanti canali virtuali quanti ne verranno allocati successivamente ad ogni dispositivo collegato.

Se non stai usando devfs(5), dovrai indirizzare la tua applicazione su /dev/dsp0.x, dove x va da 0 a 3 se hw.snd.pcm.0.vchans è impostato a 4 come nel precedente esempio. Su un sistema che usa devfs(5), questo verrà fatto automaticamente in modo trasparente per l'utente.


7.2.4 Settare i Valori di Default per i Canali del Mixer

Contributo di Josef El-Rayes.

I valori di default per i diversi canali del mixer sono rigidamente codificati nel codice sorgente del driver pcm(4). Ci sono svariate applicazioni e demoni che permettono in automatico di settare il mixer a valori prestabili, ma questa non è una soluzione pulita, noi vogliamo avere dei valori di default a livello del driver. Questo è realizzabile definendo i valori desiderati nel file /boot/device.hints. Ad esempio:

hint.pcm.0.vol="100"

Questo imposterà il canale volume a un valore di default di 100, non appena il modulo pcm(4) sarà caricato.

Nota: Supportato solo da FreeBSD 5.3 e superiori.


7.3 Audio MP3

Contributo di Chern Lee.

Il formato MP3 (Audio MPEG Livello 3) raggiunge una qualità audio vicina a quella dei CD, non lasciandoti motivi per non utilizzarlo sulla tua workstation FreeBSD.


7.3.1 Lettori MP3

Da tempo, il più famoso lettore MP3 per XFree86 MP3 è XMMS (X Multimedia System). Le skin per Winamp possono essere usate con XMMS visto che la GUI è praticamente identica a quella di Winamp della Nullsoft. XMMS ha inoltre supporto nativo ai plug-in.

XMMS può essere installato dal port o dal package multimedia/xmms.

L'interfaccia di XMMS è intuitiva, comprende una lista di brani da eseguire, un equalizzatore grafico, ed altro. Coloro che sono familiari con Winamp troveranno XMMS semplice da usare.

Il port audio/mpg123 è un lettore MP3 alternativo, da riga di comando.

mpg123 può essere eseguito specificando il dispositivo audio e il nome del file MP3 sulla riga di comando, come mostrato qui sotto:

# mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!





Playing MPEG stream from Foobar-GreatestHits.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

/dev/dsp1.0 deve essere sostituito con il dispositivo dsp presente sul tuo sistema.


7.3.2 Estrazione delle Tracce Audio dei CD

Prima di codificare un CD o una traccia di CD in MP3, i dati audio sul CD devono essere estratti sul disco fisso. Questo avviene copiando direttamente i dati CDDA (CD Digital Audio) in file WAV.

Il tool cdda2wav, che fa parte della suite sysutils/cdrtools, viene usato per estrarre le informazioni audio dai CD e i dati associati.

Mentre il CD audio è nel lettore, può essere eseguito il seguente comando (come root) per estrarre un intero CD in singoli (per traccia) file WAV:

# cdda2wav -D 0,1,0 -B

cdda2wav supporta anche i lettori CDROM ATAPI (IDE). Per estrarre da un lettore IDE, specifica il nome del dispositivo al posto nel numero dell'unità SCSI. Ad esempio, per estrarre la traccia 7 dal lettore IDE:

# cdda2wav -D /dev/acd0a -t 7

Il -D 0,1,0 indica il dispositivo SCSI 0,1,0, che corrisponde all'output di cdrecord -scanbus.

Per estrarre tracce singole, usa l'opzione -t come mostrato:

# cdda2wav -D 0,1,0 -t 7

Questo esempio estrae la settima traccia del CD audio. Per estrarre una serie di tracce, per esempio dalla traccia uno alla sette, specifica un intervallo:

# cdda2wav -D 0,1,0 -t 1+7

L'utility dd(1) può anche essere usata per estrarre le tracce audio dai drive ATAPI, leggi Sezione 16.5.3 per maggiori informazioni su questa possibilità.


7.3.3 Codifica in MP3

Al giorno d'oggi, il programma di codifica in mp3 da scegliere è lame. Lame può essere trovato in audio/lame nell'albero dei port.

Usando i file WAV estratti, il seguente comando convertirà audio01.wav in audio01.mp3:

# lame -h -b 128 \
--tt "Titolo" \
--ta "Artista" \
--tl "Album" \
--ty "2002" \
--tc "Estratto e codificato da Blah" \
--tg "Genere" \
audio01.wav audio01.mp3

128 kbits sembra essere il bitrate standard in uso per gli MP3. Molti preferiscono la qualità maggiore dei 160, o 192. Più alto è il bitrate, più spazio consumerà l'MP3 risultante--ma la qualità sarà maggiore. L'opzione -h attiva il modo ``qualità migliore ma un po' più lento"''. Le opzioni che iniziano con --t indicano i tag ID3, che solitamente contengono le informazioni sulla canzone, da inserire all'interno del file MP3. Ulteriori opzioni di codifica possono essere trovate consultando la pagina man di lame.


7.3.4 Decodifica da MP3

Per masterizzare un CD audio partendo dagli MP3, questi ultimi devono essere convertiti in un formato WAV non compresso. Sia XMMS che mpg123 supportano l'output di un MP3 in un formato non compresso.

Scrittura su Disco con XMMS:

  1. Avvia XMMS.

  2. Clicca con il tasto destro sulla finestra per far comparire il menu di XMMS.

  3. Seleziona Preference sotto Options.

  4. Cambia l'Output Plugin in ``Disk Writer Plugin''.

  5. Premi Configure.

  6. Inserisci (o scegli browse) la directory in cui salvare i file decompressi.

  7. Carica il file MP3 in XMMS come al solito, con il volume al 100% e le impostazioni dell'equalizzatore disattivate.

  8. Premi Play -- XMMS apparirà come se stesse riproducendo l'MP3, ma non si sentirà nessuna musica. Sta riproducendo la musica su un file.

  9. Assicurati di reimpostare l'Output Plugin di default come prima per ascoltare nuovamente gli MP3.

Scrittura su stdout con mpg123:

  1. Esegui mpg123 -s audio01.mp3 > audio01.pcm

XMMS scrive un file nel formato WAV, mentre mpg123 converte l'MP3 direttamente in dati audio PCM. Entrambi questi formati possono essere usati con cdrecord per creare CD audio. Devi utilizzare PCM con burncd(8). Se usi file WAV, noterai un breve ticchettio all'inizio di ogni traccia, questo suono è l'intestazione del file WAV. Puoi semplicemente rimuovere l'intestazione del file WAV con l'utility SoX (può essere installata dal port o dal package audio/sox):

% sox -t wav -r 44100 -s -w -c 2 track.wav track.raw

Leggi Sezione 16.5 per ulteriori informazioni su come usare un masterizzatore con FreeBSD.


7.4 Riproduzione Video

Contributo di Ross Lippert.

La riproduzione video è un'area applicativa molto recente e in rapido sviluppo. Sii paziente. Non tutto funzionerà così facilmente come è stato per l'audio.

Prima di iniziare, dovresti conoscere il modello della scheda video che possiedi e il chip che usa. Sebbene XFree86 supporti una vasta varietà di schede video, poche offrono buone prestazioni in riproduzione. Per ottenere una lista di estensioni supportate dall'X server con la tua scheda usa il comando xdpyinfo(1) mentre X11 sta girando.

È una buona idea avere un piccolo file MPEG che possa essere trattato come un file di test per la valutazione di vari riproduttori e opzioni. Visto che alcuni riproduttori di DVD cercheranno di default i DVD in /dev/dvd, o hanno questo nome di dispositivo codificato permanentemente al loro interno, potresti trovare utile creare dei link simbolici al dispositivo corretto:

# ln -sf /dev/acd0 /dev/dvd
# ln -sf /dev/acd0 /dev/rdvd

Nota che, data la natura del devfs(5), i collegamenti creati a mano come questi non rimarranno se riavvii il sistema. Per creare i collegamenti simbolici automaticamente quando avvii il sistema, aggiungi le seguenti righe in /etc/devfs.conf:

link acd0 dvd
link acd0 rdvd

Su FreeBSD 5.X, che usa devfs(5) c'è un insieme di link raccomandati leggermente diverso:

# ln -sf /dev/acd0c /dev/dvd
# ln -sf /dev/acd0c /dev/rdvd

In aggiunta, la decrittazione dei DVD, che richiede l'invocazione di speciali funzioni dei DVD-ROM, richiede il permesso in scrittura sui dispositivi DVD.

Alcuni dei port discussi si basano sulle seguenti opzioni del kernel per compilarsi correttamente. Prima di provare a compilarli, aggiungi queste opzioni al file di configurazione del kernel, compila un nuovo kernel, e riavvia:

option CPU_ENABLE_SSE
option USER_LDT

Nota: option USER_LDT non esiste su FreeBSD 5.X.

Per migliorare l'interfaccia della memoria condivisa di X11, è consigliabile incrementare i valori di alcune variabili sysctl(8):

kern.ipc.shmmax=67108864
kern.ipc.shmall=32768

7.4.1 Determinazione delle Capacità Video

Ci sono molti modi possibili per visualizzare immagini e filmati con X11. Quello che funzionerà meglio in pratica dipende in gran parte dal tuo hardware. Ogni metodo descritto qui sotto avrà una qualità variabile su hardware differente. In secondo luogo, il rendering video in X11 è un argomento che sta ricevendo un sacco di attenzione ultimamente, e con ogni nuova versione di XFree86 ci possono essere notevoli miglioramenti.

Una lista di interfacce video comuni:

  1. X11: normale output di X11 che usa la memoria condivisa.

  2. XVideo: un'estensione all'interfaccia X11 che supporta grafica e filmati in ogni oggetto X11 disegnabile.

  3. SDL: Simple Directmedia Layer.

  4. DGA: Direct Graphics Access.

  5. SVGAlib: interfaccia di basso livello per la grafica da console.


7.4.1.1 XVideo

XFree86 4.X ha un'estensione chiamata XVideo (aka Xvideo, aka Xv, aka xv) che permette di visualizzare grafica e filmati direttamente negli oggetti disegnabili attraverso una speciale accelerazione. Questa estensione fornisce una riproduzione di ottima qualità anche su macchine poco potenti (per esempio sul mio portatile PIII 400 Mhz). Sfortunatamente, la lista di schede che supportano questa caratteristica ``out of the box'' è attualmente:

  1. 3DFX Voodoo 3

  2. Intel® i810 e i815

  3. alcuni chip S3 (come il Savage/IX e il Savage/MX)

Se la tua scheda non è fra queste, non disperarti ancora. XFree86 4.X aggiunge il supporto a nuove schede con ogni release [5]. Per controllare se l'estensione sta girando, usa xvinfo:

% xvinfo

XVideo è supportato dalla tua scheda se il risultato è simile a:

X-Video Extension version 2.2
screen #0
  Adaptor #0: "Savage Streams Engine"
    number of ports: 1
    port base: 43
    operations supported: PutImage
    supported visuals:
      depth 16, visualID 0x22
      depth 16, visualID 0x23
    number of attributes: 5
      "XV_COLORKEY" (range 0 to 16777215)
              client settable attribute
              client gettable attribute (current value is 2110)
      "XV_BRIGHTNESS" (range -128 to 127)
              client settable attribute
              client gettable attribute (current value is 0)
      "XV_CONTRAST" (range 0 to 255)
              client settable attribute
              client gettable attribute (current value is 128)
      "XV_SATURATION" (range 0 to 255)
              client settable attribute
              client gettable attribute (current value is 128)
      "XV_HUE" (range -180 to 180)
              client settable attribute
              client gettable attribute (current value is 0)
    maximum XvImage size: 1024 x 1024
    Number of image formats: 7
      id: 0x32595559 (YUY2)
        guid: 59555932-0000-0010-8000-00aa00389b71
        bits per pixel: 16
        number of planes: 1
        type: YUV (packed)
      id: 0x32315659 (YV12)
        guid: 59563132-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x30323449 (I420)
        guid: 49343230-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x36315652 (RV16)
        guid: 52563135-0000-0000-0000-000000000000
        bits per pixel: 16
        number of planes: 1
        type: RGB (packed)
        depth: 0
        red, green, blue masks: 0x1f, 0x3e0, 0x7c00
      id: 0x35315652 (RV15)
        guid: 52563136-0000-0000-0000-000000000000
        bits per pixel: 16
        number of planes: 1
        type: RGB (packed)
        depth: 0
        red, green, blue masks: 0x1f, 0x7e0, 0xf800
      id: 0x31313259 (Y211)
        guid: 59323131-0000-0010-8000-00aa00389b71
        bits per pixel: 6
        number of planes: 3
        type: YUV (packed)
      id: 0x0
        guid: 00000000-0000-0000-0000-000000000000
        bits per pixel: 0
        number of planes: 0
        type: RGB (packed)
        depth: 1
        red, green, blue masks: 0x0, 0x0, 0x0

Inoltre tieni presente che i formati elencati (YUV2, YUV12, ecc) non sono presenti in tutte le implementazioni di XVideo e la loro assenza può ostacolare alcuni programmi.

Se il risultato è:

X-Video Extension version 2.2
screen #0
no adaptors present

Allora XVideo probabilmente non è supportato per la tua scheda.

Se XVideo non è supportato per la tua scheda, questo vuol dire solamente che sarà più difficile soddisfare le richieste computazionali per il rendering video. A seconda della tua scheda video e del tuo processore, comunque, potresti essere ancora in grado di avere un'esperienza soddisfacente. Dovrai probabilmente dare un occhio ai modi per migliorare le prestazioni nella lettura avanzata Sezione 7.4.3.


7.4.1.2 Simple Directmedia Layer

Il Simple Directmedia Layer, SDL, vuole essere un'interfaccia di portabilità tra Microsoft Windows, BeOS, e UNIX, che possa permettere di sviluppare applicazioni multi-piattaforma che facciano buon uso di suoni e grafica. L'interfaccia SDL fornisce una astrazione di basso livello all'hardware che può a volte essere più efficiente dell'interfaccia X11.

L'SDL può essere trovata in devel/sdl12.


7.4.1.3 Direct Graphics Access

Direct Graphics Access è un'estensione XFree86 che permette a un programma di evitare il server X ed alterare direttamente il buffer video. Siccome si basa su una mappatura di memoria a basso livello per effettuare questa condivisione, i programmi che la usano devono essere avviati da root.

L'estensione DGA può essere testata con dga(1). Quando dga è in esecuzione, cambia i colori del display ogni volta che viene premuto un tasto. Per uscire, premi q.


7.4.2 Port e Package che Riguardano il Video

In questa sezione si discuterà del software disponibile nella FreeBSD Port Collection che possono essere usati per la riproduzione video. La sezione software sulla riproduzione video è in continuo sviluppo, per cui le caratteristiche delle varie applicazioni sono destinate a differire dalla descrizione che segue.

In primo luogo, è importante sapere che molte delle applicazioni video che girano su FreeBSD sono stati sviluppate come applicazioni Linux. Molte di queste applicazioni sono ancora in fase beta. Alcuni dei problemi che puoi incontrare con i package video su FreeBSD comprendono:

  1. Un'applicazione non riesce a riprodurre un file generato da un'altra applicazione.

  2. Un'applicazione non riesce a riprodurre un file che lei stessa ha prodotto.

  3. Lo stesso applicativo posto su due computer diversi, ricompilato su ognuno dei due computer, riproduce lo stesso file in modo diverso.

  4. Da un filtro apparentemente banale quale il ridimensionamento di un'immagine si ottenga un pessimo risultato derivato da una routine di ridimensionamento bacata.

  5. Un'applicazione che genera frequentemente file ``core''.

  6. La documentazione non viene installata con il port e può essere trovata sul web o nella directory work del port.

Molte di queste applicazioni possono anche esibire ``Linuxismi''. Ovvero, ci possono essere problemi risultanti dal modo in cui le librerie standard sono state implementate nelle distribuzioni Linux, o alcune modifiche al kernel di Linux che sono state apportate dagli autori delle applicazioni. Questi problemi possono non essere stati notati e aggirati dal mantainer del port, e possono portare comunque a problemi come questi:

  1. L'uso di /proc/cpuinfo per riconoscere le caratteristiche del processore.

  2. Un uso errato dei thread che può portare un programma a bloccare la propria esecuzione piuttosto che terminare correttamente.

  3. Software non ancora presente nella collezione dei port di FreeBSD che è comunemente usato unitamente all'applicazione.

A questo punto, gli sviluppatori di queste applicazioni sono stati collaborativi con i maintainer dei port al fine di minimizzare la ricerca di soluzioni necessarie al processo di porting.


7.4.2.1 MPlayer

MPlayer è stata sviluppata di recente ed è un player in rapida evoluzione. Gli obbiettivi degli sviluppatori di MPlayer sono la velocità e la flessibilità su Linux e le altre famiglie di UNIX. Il progetto è partito non appena il fondatore del gruppo si stancò delle prestazioni degli altri riproduttori. C'è chi dice che l'interfaccia grafica sia stata sacrificata per un design essenziale. Tuttavia, una volta che si sono imparate perfettamente le opzioni da riga di comando e le scorciatoie, funziona decisamente bene.


7.4.2.1.1 Compilazione di MPlayer

MPlayer è reperibile sotto multimedia/mplayer. MPlayer effettua una serie di controlli sull'hardware durante il processo di compilazione, che ha come risultato un binario che non potrà essere considerato portabile da una piattaforma ad un'altra. Questo è il motivo per cui risulta importante compilarlo usando il port piuttosto che il pacchetto contenente il binario. Inoltre, ulteriori opzioni possono essere specificate nella riga di comando di make, come descritto all'inizio della compilazione.

# cd /usr/ports/multimedia/mplayer
# make
You can enable additional compilation optimizations
by defining WITH_OPTIMIZED_CFLAGS
You can enable GTK GUI by defining WITH_GUI.
You can enable DVD support by defining WITH_DVD.
You can enable SVGALIB support by defining WITH_SVGALIB.
You can enable VORBIS sound support by defining WITH_VORBIS.
You can enable XAnim DLL support by defining WITH_XANIM.

Se hai installato x11-toolkits/gtk12, a questo punto si potrà abilitare la compilazione della GUI. Altrimenti, non vale la pena la fatica. Se si ha intenzione di vedere DVD (possibilmente codificati in CSS) con MPlayer si sarà costretti ad abilitare l'opzione per il supporto DVD qui [6]. Alcune opzioni utili sono:

# make WITH_DVD=yes WITH_SVGALIB=yes

Al momento, il port MPlayer creerà la sua documentazione in HTML e l'eseguibile mplayer. Sarà anche possibile compilare un codificatore, mencoder, uno strumento utile per ricodificare i video. Una modifica al Makefile lo rende disponibile. È possibile che venga abilitato di default nelle versioni successive del port.

La documentazione HTML di MPlayer è molto istruttiva. Qualora il lettore trovasse le informazioni sull'hardware e le interfacce video in questo capitolo scarne, la documentazione di MPlayer risulta essere un ottimo supplemento. Se si stanno cercando informazioni riguardo il supporto video sotto UNIX, sarebbe utile trovare il tempo di leggere in modo preciso la documentazione di MPlayer.


7.4.2.1.2 Utilizzo di MPlayer

Ogni utente che voglia usare MPlayer deve creare la directory .mplayer sotto la propria home. Per creare questa directory necessaria, puoi digitare il seguente comando:

% cd /usr/ports/multimedia/mplayer
% make install-user

Le opzioni del comando mplayer sono elencate nella pagina del manuale. Per qualunque altro dettaglio consulta la documentazione HTML. In questa sezione, descriveremo solamente alcuni degli usi più comuni.

Per riprodurre un file, ad esempio testfile.avi, usando una delle varie interfacce video usa l'opzione -vo:

% mplayer -vo xv testfile.avi
% mplayer -vo sdl testfile.avi
% mplayer -vo x11 testfile.avi
# mplayer -vo dga testfile.avi
# mplayer -vo 'sdl:dga' testfile.avi

È utile provare tutte queste opzioni, considerando che le prestazioni dipendono da svariati fattori e variano in modo considerevole a seconda dell'hardware.

Per riprodurre un DVD, sostituisci testfile.avi con l'opzione -dvd N DISPOSITIVO dove N corrisponde al numero del titolo da riprodurre e DISPOSITIVO al dispositivo che identifica il DVD-ROM. Per esempio, per riprodurre il terzo titolo da /dev/dvd:

# mplayer -vo dga -dvd 3 /dev/dvd

Per interrompere, mettere in pausa, andare avanti e così via, leggi l'elenco delle associazioni dei tasti, che vengono elencati eseguendo mplayer -h o consulta la pagina man.

Ulteriori opzioni utili per la riproduzione sono: -fs -zoom che abilita la modalità schermo intero e -framedrop che aiuta le prestazioni.

Perchè la riga di comando di mplayer non diventi eccessivamente lunga, l'utente può creare il file .mplayer/config ed impostare lì i valori predefiniti:

vo=xv
fs=yes
zoom=yes

In ultimo, è possibile usare mplayer per estrarre una traccia DVD in un file .vob. Per estrarre la seconda traccia dal DVD, digita questo:

# mplayer -dumpstream -dumpfile out.vob -dvd 2 /dev/dvd

Il file ottenuto, out.vob, sarà in formato MPEG e potrà manipolato da un'altro programma descritto in questa sezione.


7.4.2.1.3 mencoder

Se hai scelto di installare mencoder quando hai compilato MPlayer, sei avvisato che è ancora un componente sperimentale. Prima di usare mencoder è una buona idea familiarizzare con le opzioni contenute nella documentazione HTML. Esiste anche una pagina man, ma non è utile senza la documentazione HTML. Esiste un numero considerevole di modi per migliorare la qualità, un bitrate più basso, cambiare codifica ed alcuni di questi trucchi può fare la differenza tra prestazioni più o meno accettabili. Di seguito un paio di esempi per cominciare. Prima di tutto, una semplice copia:

% mencoder input.avi -oac copy -ovc copy -o output.avi

Combinazioni errate di opzioni da riga di comando possono portare a file di output irriproducibili perfino con mplayer. Di conseguenza, se si vuole semplicemente estrarre una traccia, usare l'opzione -dumpfile eseguendo in mplayer.

Per convertire il file input.avi in formato MPEG4 con l'audio codificato in MPEG3 (è necessario audio/lame):

% mencoder input.avi -oac mp3lame -lameopts br=192 \
  -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi

Questo comando ha creato un file riproducibile con mplayer e xine.

Il parametro input.avi può essere sostituito con -dvd 1 /dev/dvd ed eseguire il comando come root per ricodificare il capitolo DVD direttamente. Poichè si sarà certamente poco soddisfatti del risultato la prima volta, è consigliato eseguire il dump del capitolo e lavorare direttamente sul file.


7.4.2.2 Il Riproduttore Video xine

Il riproduttore video xine è un progetto dagli ampi obiettivi e non solo l'essere una soluzione unica per la riproduzione, ma anche una libreria di base riutilizzabile ed un eseguibile modulare che possa essere esteso con i plugin. È disponibile sia come pacchetto che come port, sotto multimedia/xine.

xine è ancora un pò rozzo, ma è chiaramente un buon inizio. In pratica, xine necessita sia di una CPU veloce che di una scheda video veloce o il supporto per l'estensione XVideo. L'interfaccia grafica è utilizzabile, ma ancora mal disegnata.

Allo stato attuale, non ci sono moduli distribuiti con xine che possano riprodurre DVD codificati in CSS. Esistono distribuzioni di terze parti che hanno moduli di questo genere già compilati, ma nessuno di questi esiste nella FreeBSD Ports Collection.

Comparato con MPlayer, xine offre maggiori caratteristiche all'utente ma, allo stesso tempo, non rende disponibile all'utente un controllo più accurato. Il riproduttore video xine funziona molto meglio sulle interfacce XVideo.

Di default, xine si avvierà con un'interfaccia grafica. Si possono quindi usare i menu per aprire per aprire un file specifico:

% xine

Alternativamente, può essere invocato per aprire direttamente un file senza l'interfaccia grafica, con il comando:

% xine -g -p mymovie.avi

7.4.2.3 Le Utility transcode

Il software transcode non è un riproduttore, piuttosto un insieme di strumenti per ricodificare file .avi e .mpg. Con transcode, si ha la possibilità di unire file video, riparare file corrotti ed utilizzare strumenti da riga di comando con interfaccie che utilizzano i flussi stdin/stdout.

Così come MPlayer, anche transcode è un software in fase sperimentale che deve essere compilato usando il port multimedia/transcode. Sono disponibili parecchie opzioni da passare a make. Io consiglio:

# make WITH_LIBMPEG2=yes

Se hai intenzione di installare multimedia/avifile, allora aggiungi l'opzione WITH_AVIFILE alla riga di comando di make, così come di seguito:

# make WITH_AVIFILE=yes WITH_LIBMPEG2=yes

Ecco due esempi di come usare transcode per la conversione video che produce un output ridimensionato. Il primo, codifica il risultato come un file openDIVX AVI, mentre il secondo codifica nel formato MPEG, più portabile.

% transcode -i input.vob -x vob -V -Z 320x240 \
-y opendivx -N 0x55 -o output.avi
% transcode -i input.vob -x vob -V -Z 320x240 \
-y mpeg -N 0x55 -o output.tmp
% tcmplex -o output.mpg -i output.tmp.m1v -p output.tmp.mpa -m 1

Esiste una pagina man per transcode, ma c'è poca documentazione sulle utility tc* (come per esempio tcmplex) che vengono installate. Tuttavia, l'opzione a riga di comando -h può sempre essere usata per avere delle brevi istruzioni d'uso del comando.

In confronto, transcode gira molto più lentamente rispetto a mencoder, ma risulta essere un'ottima alternativa per produrre file in formati più vari. Si sa che gli MPEG creati con transcode funzionano con Windows Media® Player ed Apple Quicktime®, ad esempio.


7.4.3 Ulteriori Letture

I vari package di applicazioni video per FreeBSD si stanno evolvendo rapidamente. È abbastanza possibile che in un futuro vicino molti dei problemi discussi qui saranno risolti. Nel frattempo, chiunque voglia ottenere il massimo dalle capacità A/V di FreeBSD, dovrà unire alla meglio la conoscenza che deriva dalle svariate FAQ e guide con l'uso di queste poche applicazioni. Questa sezione esiste per fornire al lettore indicazioni a queste informazioni aggiuntive.

La Documentazione di MPlayer è molto istruttiva sul piano tecnico. Questa documentazione, probabilmente, dovrà essere consultata da chiunque voglia ottenere un alto grado di conoscenza del video sotto UNIX. La mailing list di MPlayer risulta abbastanza ostile a chiunque non si sia preoccupato di leggere la documentazione, se si ha intenzione di segnalar loro un bug, RTFM.

L'HOWTO di xine contiene un capitolo su come aumentare le prestazioni che è comune a tutti i riproduttori.

In ultimo, ci sono alcuni applicativi promettenti che il lettore può provare:


7.5 Configurazione delle Schede TV

Contributo originale di Josef El-Rayes. Ampliato e adattato da Marc Fonvieille.

7.5.1 Introduzione

Le schede TV permettono di visualizzare la TV via onde radio o via cavo sul tuo computer. La maggior parte di queste accettano in input video composito tramite connettori RCA o S-video e alcune di queste schede hanno un sintonizzatore radio FM.

FreeBSD fornisce supporto per le schede TV su bus PCI che usano un chip di acquisizione video Brooktree Bt848/849/878/879 o Conexant CN-878/Fusion 878a tramite il driver bktr(4). Devi anche assicurarti che la scheda abbia un sintonizzatore supportato, consulta la pagina man di bktr(4) per una lista dei sintonizzatori supportati.


7.5.2 Aggiunta del Driver

Per usare la scheda, devi caricare il driver bktr(4), e questo può essere fatto aggiungendo la seguente riga al file /boot/loader.conf in questo modo:

bktr_load="YES"

Alternativamente, puoi compilare staticamente il supporto per la scheda TV nel tuo kernel, in questo caso aggiungi le seguenti righe alla configurazione del tuo kernel:

device    bktr
device iicbus
device iicbb
device smbus

Questi driver aggiuntivi sono necessari poiché le componenti della scheda sono interconnesse tramite un bus I2C. Quindi compila ed installa un nuovo kernel.

Una volta che hai aggiunto il supporto al tuo sistema, devi riavviare la macchina. Durante il processo di avvio, la tua scheda TV dovrebbe apparire, come in questo esempio:

bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0
iicbb0: <I2C bit-banging driver> on bti2c0
iicbus0: <Philips I2C bus> on iicbb0 master-only
iicbus1: <Philips I2C bus> on iicbb0 master-only
smbus0: <System Management Bus> on bti2c0
bktr0: Pinnacle/Miro TV, Philips SECAM tuner.

Ovviamente questi messaggi possono differire a seconda dell'hardware. Tuttavia dovresti controllare se il sintonizzatore viene rilevato correttamente; è sempre possibile modificare alcuni dei parametri rilevati tramite le MIB di sysctl(8) e le opzioni nel file di configurazione del kernel. Ad esempio, se vuoi imporre che il sintonizzatore sia un Philips SECAM, dovresti aggiungere la riga seguente al file di configurazione del kernel:

options OVERRIDE_TUNER=6

o puoi usare direttamente sysctl(8):

# sysctl hw.bt848.tuner=6

Guarda la pagina man di bktr(4) e il file /usr/src/sys/conf/NOTES per maggiori dettagli sulle opzioni disponibili. (Se sei sotto FreeBSD 4.X, sostituisci /usr/src/sys/conf/NOTES con /usr/src/sys/i386/conf/LINT.)


7.5.3 Applicazioni Utili

Per usare la tua scheda TV devi installare una delle seguenti applicazioni:

  • multimedia/fxtv fornisce capacità di TV-in-una-finestra e acquisizione di immagini/audio/video.

  • multimedia/xawtv è anch'esso un'applicazione TV, con le stesse caratteristiche di fxtv.

  • misc/alevt decodifica e visualizza Videotext/Teletext.

  • audio/xmradio, un'applicazione per usare il sintonizzatore radio FM che hanno alcune schede TV.

  • audio/wmtune, un'applicazione desktop maneggevole per i sintonizzatori radio.

Altre applicazioni sono disponibili nella FreeBSD Ports Collection.


7.5.4 Risoluzione dei Problemi

Se incontri qualche problema con la tua scheda TV, dovresti verificare dapprima se il chip di acquisizione video e il sintonizzatore sono realmente supportati dal driver bktr(4) e se hai usato le corrette opzioni di configurazione. Per maggiore supporto e varie domande sulla tua scheda video potresti voler leggere ed usare gli archivi della mailing list freebsd-multimedia.


Capitolo 8 Configurazione del Kernel di FreeBSD

8.1 Sinossi

Traduzione in corso


8.2 Why Build a Custom Kernel?

Traduzione in corso


8.4 The Configuration File

Traduzione in corso


8.5 Making Device Nodes

Traduzione in corso


8.6 If Something Goes Wrong

Traduzione in corso


Capitolo 9 Stampa

9.1 Sinossi

Traduzione in corso


9.2 Introduction

Traduzione in corso


9.3 Basic Setup

Traduzione in corso


9.4 Advanced Printer Setup

Traduzione in corso


9.5 Using Printers

Traduzione in corso


9.7 Troubleshooting

Traduzione in corso


Capitolo 10 Compatibilità con i Binari di Linux

10.1 Sinossi

Traduzione in corso


10.2 Installation

Traduzione in corso


10.3 Installing Mathematica

Traduzione in corso


10.4 Installing Maple

Traduzione in corso


10.5 Installing Oracle

Traduzione in corso


10.6 Installing SAP R/3

Traduzione in corso


10.7 Advanced Topics

Traduzione in corso

III. Amministrazione del Sistema

I rimanenti capitoli del Manuale di FreeBSD coprono tutti gli aspetti dell'amministrazione di un sistema FreeBSD. Ogni capitolo inizia descrivendo quello che imparerai dopo aver letto il capitolo, e specifica anche quello che dovresti sapere prima di affrontare il materiale.

Questi capitoli sono studiati per essere letti quando si ha bisogno di un'informazione. Non devi leggerli in un ordine particolare, né devi leggerli tutti prima di poter usare FreeBSD.


Capitolo 11 Configurazione e Messa a Punto

Scritto da Chern Lee. Basato su un tutorial scritto da Mike Smith. Basato anche su tuning(7) scritto da Matt Dillon.

11.1 Sinossi

Uno degli aspetti importanti di FreeBSD è la configurazione del sistema. Una corretta configurazione del sistema aiuterà a prevenire mal di testa durante futuri aggiornamenti. Questo capitolo spiegherà molti dei processi di configurazione di FreeBSD, inclusi alcuni parametri che possono essere impostati per ottimizzare un sistema FreeBSD.

Inoltre questo capitolo descriverà alcuni dei parametri che possono essere impostati per mettere a punto un sistema FreeBSD ed ottenere prestazioni ottimali.

Dopo aver letto questo capitolo, saprai:

  • Come lavorare in maniera efficiente con i file system e le partizioni di swap.

  • Le basi dei sistemi di configurazione rc.conf e di avvio /usr/local/etc/rc.d.

  • Come configurare host virtuali sui dispositivi di rete.

  • Come usare i vari file di configurazione in /etc.

  • Come mettere a punto FreeBSD usando le variabili sysctl.

  • Come ottimizzare la prestazioni del disco e modificare le limitazioni del kernel.

Prima di leggere questo capitolo, dovresti:

  • Comprendere le basi di Unix e FreeBSD (Capitolo 3).

  • Avere dimestichezza nel mantenere i sorgenti di FreeBSD aggiornati (Capitolo 19), e nella configurazione/compilazione del kernel (Capitolo 8).


11.2 Configurazione Iniziale

11.2.1 Disposizione delle Partizioni


11.2.1.1 Partizioni di Base

Nel disegnare il tuo file system con disklabel(8) o sysinstall(8), ricorda che i dischi rigidi possono trasferire dati ad un ritmo maggiore dalle tracce esterne rispetto a quelle interne. Quindi i file system più piccoli e con un gran numero di accessi dovrebbero essere più vicini alla parte esterna del disco, mentre le partizioni più ampie, come /usr, dovrebbero essere posizionate verso l'interno. È una buona idea creare le partizioni in un ordine simile: root, swap, /var, /usr.

Le dimensioni della partizione /var riflettono l'uso che intendi fare della macchina. /var viene usata per mantenere le caselle di posta, i file di log, e gli spool della stampante. Le caselle di posta e file di log potrebbero crescere in maniera imprevedibile in relazione al numero di utenti presenti sul tuo sistema e da quanto a lungo manterrai i file di log. La maggior parte degli utenti non avrà mai bisogno di un gigabyte, ma ricorda che /var/tmp deve essere abbastanza ampia da contenere tutti i pacchetti.

La partizione /usr contiene molti dei file richiesti per far funzionare il sistema, la collezioni dei ports(7) (raccomandata) e il codice sorgente (opzionale). Entrambi sono opzionali al momento dell'installazione. Almeno 2 gigabyte sono raccomandati per questa partizione.

Quando decidi le dimensioni delle partizioni, tieni a mente le richieste di spazio. Esaurire lo spazio in una partizione mentre ne usi poco in un'altra può essere molto fastidioso.

Nota: Alcuni utenti hanno scoperto che il dimensionamento auto-predefinito di sysinstall(8) a volte crea partizioni /var o / più piccole del necessario. Partiziona saggiamente e generosamente.


11.2.1.2 Partizione di Swap

Come regola generale, la partizione di swap dovrebbe essere tipicamente il doppio della quantità di memoria principale (RAM). Ad esempio, se la macchina avesse 128 megabyte di memoria, il file di swap dovrebbe essere di 256 megabyte. Sistemi con meno memoria potrebbero funzionare meglio con uno swap maggiore. Meno di 256 megabyte di swap non è raccomandato e dovresti pensare ad una espansione della memoria. Gli algoritmi di paginazione sono ottimizzati per funzionare al meglio quando la partizione di swap è almeno due volte la dimensione della memoria principale. Configurare uno swap troppo piccolo potrebbe portare ad una inefficienza nel codice di scansione della VM e potrebbero creare problemi in seguito, nel caso di aggiunta di memoria alla macchina.

Su sistemi più grandi con dischi SCSI multipli (o dischi IDE multipli collegati a diversi controller) è consigliabile che ci sia uno swap per ogni disco (fino a quattro dischi). Le partizioni di swap dovrebbero avere approssimativamente le stesse dimensioni. Il kernel può gestire dimensioni arbitrarie ma internamente le strutture dati scalano meglio fino a quattro volte la dimensione della partizione di swap più ampia. Avere partizioni di swap con dimensioni simili permetterà al kernel di distribuire al meglio lo spazio di swap tra i dischi. Partizioni di swap grandi vanno bene, anche se non vengono usate molto. Potrebbe essere più semplice recuperare il sistema da un programma impazzito prima di essere costretti a riavviare.


11.2.1.3 Perché Partizionare?

Molti utenti pensano che un'unica grande partizione vada bene, ma ci sono molte ragioni per cui questa è una cattiva idea. Primo, ogni partizione ha differenti caratteristiche operative e separarle permette ai file system di ottimizzare se stessi di conseguenza. Ad esempio, le partizioni root e /usr sono per lo più usate in lettura, senza molte operazioni di scrittura, mentre un sacco di letture e scritture potrebbero esserci in /var e /var/tmp.

Partizionando in maniera appropriata il sistema, la frammentazione introdotta nelle partizioni più piccole, con più carico in scrittura, non inciderà sulle partizioni per lo più di lettura. Mantenere le partizioni con maggiore carico in scrittura vicine al bordo del disco aumenterà le prestazioni di I/O nelle partizioni dove ne hai più bisogno. Ora, sebbene potresti avere bisogno di prestazioni di I/O anche nelle partizioni più ampie, spostarle verso il bordo del disco non porterebbe nessun miglioramento significativo delle prestazioni, al contrario dello spostamento di /var all'esterno. Infine, ci sono problemi riguardanti la sicurezza. Una piccola, simpatica partizione di root che è essenzialmente di sola lettura ha ottime possibilità di sopravvivere intatta a un brutto crash.


11.3 Configurazione Centrale

Il posto principale per le informazioni di configurazione del sistema è in /etc/rc.conf. Questo file contiene una ampia gamma di informazioni di configurazione, usate principalmente all'avvio della macchina per la configurazione del sistema. Il suo nome implica direttamente questo; si tratta di informazioni di configurazione per i file rc*.

Un amministratore dovrebbe aggiungere dei campi nel file rc.conf per cambiare le impostazioni predefinite di /etc/defaults/rc.conf. Il file predefinito non drovebbe essere semplicemente copiato in /etc - esso contiene valori di default, non esempi. Tutti i cambiamenti specifici del sistema dovrebbero essere effettuati nel file rc.conf stesso.

Nelle applicazioni clustered possono essere adottate differenti strategie per separare le configurazioni generali da quelle specifiche del sistema in maniera da mantenere basso l'impegno di amministrazione. L'approccio raccomandato è di porre le configurazioni generali in un altro file, ad esempio /etc/rc.conf.site, e poi includerlo in /etc/rc.conf, che conterrà solo le informazioni specifiche del sistema.

Visto che rc.conf viene letto da sh(1) è semplice farlo. Ad esempio:

  • rc.conf:

            . rc.conf.site
            hostname="nodo15.example.com"
            network_interfaces="fxp0 lo0"
            ifconfig_fxp0="inet 10.1.1.1"
    
  • rc.conf.site:

            defaultrouter="10.1.1.254"
            saver="daemon"
            blanktime="100"
    

Il file rc.conf.site potrà poi essere distribuito su ogni sistema usando rsync o un programma simile, mentre il file rc.conf rimarrà unico.

L'aggiornamento del sistema tramite sysinstall(8) o make world non sovrascriverà il file rc.conf, quindi le configurazioni del sistema non andranno perse.


11.4 Configurazione delle Applicazioni

Tipicamente, le applicazioni installate hanno i propri file di configurazione, con la loro sintassi, ecc. E' importante che questi file siano tenuti separati dal sistema di base, in maniera da essere facilmente individuati e gestiti dagli strumenti di gestione dei pacchetti.

In genere, questi file vengono installati in /usr/local/etc. Nel caso in cui una applicazione abbia un grande numero di file di configurazione, verrà creata una sottodirectory per contenerli.

Normalmente, quando viene installato un pacchetto, vengono installati anche file di configurazione d'esempio. In genere questi vengono identificati da un suffisso .default. Se non ci sono file di configurazione esistenti per l'applicazione, verranno creati copiando i file .default.

Ad esempio, considera il contenuto della directory /usr/local/etc/apache:

-rw-r--r--  1 root  wheel   2184 May 20  1998 access.conf
-rw-r--r--  1 root  wheel   2184 May 20  1998 access.conf.default
-rw-r--r--  1 root  wheel   9555 May 20  1998 httpd.conf
-rw-r--r--  1 root  wheel   9555 May 20  1998 httpd.conf.default
-rw-r--r--  1 root  wheel  12205 May 20  1998 magic
-rw-r--r--  1 root  wheel  12205 May 20  1998 magic.default
-rw-r--r--  1 root  wheel   2700 May 20  1998 mime.types
-rw-r--r--  1 root  wheel   2700 May 20  1998 mime.types.default
-rw-r--r--  1 root  wheel   7980 May 20  1998 srm.conf
-rw-r--r--  1 root  wheel   7933 May 20  1998 srm.conf.default

Le differenze nelle dimensioni dei file mostrano che solo srm.conf è stato modificato. Una successiva installazione di Apache dai port non sovrascriverà questo file modificato.


11.5 Avvio dei Servizi

È comune per un sistema sostenere un certo numero di servizi. Questi possono essere avviati in molti modi differenti, ognuno dei quali ha vantaggi differenti.

I programmi installati tramite port o dalla collezione dei pacchetti metteranno spesso uno script in /usr/local/etc/rc.d che verrà invocato all'avvio del sistema con l'argomento start, ed allo spegnimento con l'argomento stop. Questo è il modo consigliato per avviare i servizi di sistema che devono funzionare come root, o che hanno bisogno di essere lanciati da root. Questi script sono registrati come parte dell'installazione del pacchetto, e saranno rimossi quando verrà rimosso il pacchetto.

Uno script di avvio generico in /usr/local/etc/rc.d appare così:

#!/bin/sh
echo -n ' FooBar'

case "$1" in
start)
        /usr/local/bin/foobar
        ;;
stop)
        kill -9 `cat /var/run/foobar.pid`
        ;;
*)
        echo "Usage: `basename $0` {start|stop}" >&2
        exit 64
        ;;
esac

exit 0

Gli script di avvio di FreeBSD cercheranno in /usr/local/etc/rc.d degli script che abbiano una estensione .sh e siano eseguibili da root. Gli script trovati verranno richiamati con l'opzione start all'avvio, e stop allo spegnimento per permettergli di svolgere il loro compito. Quindi se volessi che il suddetto script di esempio venisse trovato ed eseguito al momento giusto, durante l'avvio del sistema, dovresti salvarlo in un file di nome FooBar.sh in /usr/local/etc/rc.d e dovresti assicurarti che sia eseguibile. Puoi rendere uno script eseguibile tramite chmod(1) come mostrato di seguito:

# chmod 755 FooBar.sh

Alcuni servizi aspettano di essere invocati da inetd(8) quando viene ricevuta una connessione su una porta valida. Ciò è comune per tutti i server di lettura della posta (POP e IMAP, ecc.). Questi servizi vengono abilitati modificando il file /etc/inetd.conf. Guarda inetd(8) per i dettagli sulla modifica di questo file.

Alcuni servizi aggiuntivi potrebbero non essere coperti dalle opzioni in /etc/rc.conf. Tradizionalmente questi vengono avviati mettendo i comandi necessari per invocarli in /etc/rc.local. Da FreeBSD 3.1 non c'è più nessun /etc/rc.local predefinito;. Se venisse creato dall'amministratore, esso verrebbe comunque gestito normalmente. Nota che rc.local viene generalmente visto come ultima possibilità; se c'è un posto migliore per avviare il servizio, fallo da lì.

Nota: NON mettere nessun comando in /etc/rc.conf. Per avviare i demoni, o per eseguire un qualsiasi comando all'avvio, metti invece uno script in /usr/local/etc/rc.d.

è anche possibile usare il demone cron(8) per avviare i servizi di sistema. Questo approccio ha molti vantaggi, non ultimo il fatto che poiché cron(8) esegue questi processi come il proprietario di crontab, i servizi possono essere avviati e mantenuti da utenti non-root.

Per fare ciò si approfitta di una caratteristica di cron(8): le specifiche temporali possono essere sostituite da @reboot, che farà sì che il compito venga eseguito quando cron(8) viene avviato, poco dopo l'avvio del sistema.


11.6 Configurazione delle Interfacce di Rete

Contributo di Marc Fonvieille.

Al giorno d'oggi non riusciamo a pensare ad un computer senza pensare ad una connessione di rete. Aggiungere e configurare una scheda di rete è un compito comune per ogni amministratore FreeBSD.


11.6.1 Individuazione del Driver Corretto

Prima di cominciare, dovresti conoscere il modello della scheda di rete che possiedi, il chip che usa, e se si tratta di una scheda PCI o ISA. FreeBSD supporta un'ampia varietà sia di schede PCI che ISA. Verifica la l'Hardware Compatibility List della tua release per vedere se la scheda è supportata.

Una volta sicuro che la tua scheda sia supportata, hai bisogno di determinare il driver appropriato per la scheda. Il file /usr/src/sys/i386/conf/LINT ti fornirà un elenco di driver per le interfacce di rete con alcune informazioni su chipset/schede supportate. Se hai dubbi su quale sia il driver corretto, leggi la pagina man del driver. La pagina man fornirà ulteriori informazioni sull'hardware supportato ed anche sui possibili problemi che potrebbero capitare.

Se sei in possesso di una scheda comune, la maggior parte delle volte non dovrai cercare molto per trovare un driver. I driver per le schede di reti comuni sono presenti nel kernel GENERIC, quindi la tua scheda dovrebbe mostrarsi durante l'avvio, in questo modo:

dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38
000ff irq 15 at device 11.0 on pci0
dc0: Ethernet address: 00:a0:cc:da:da:da
miibus0: <MII bus> on dc0
ukphy0: <Generic IEEE 802.3u media interface> on miibus0
ukphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30
000ff irq 11 at device 12.0 on pci0
dc1: Ethernet address: 00:a0:cc:da:da:db
miibus1: <MII bus> on dc1
ukphy1: <Generic IEEE 802.3u media interface> on miibus1
ukphy1:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto

In questo esempio, vediamo che nel sistema sono presenti due schede che usano il driver dc(4).

Per usare la tua scheda di rete, avrai bisogno di caricare il driver appropriato. Ciò può essere fatto in due modi. Il modo più semplice consiste nel caricare semplicemente un modulo nel kernel relativo alla scheda di rete con kldload(8). Non è disponibile un modulo per ogni scheda di rete (le schede ISA e le schede che usano il driver ed(4), ad esempio). Alternativamente, si può compilare staticamente il supporto per la propria scheda di rete nel proprio kernel. Controlla /usr/src/sys/i386/conf/LINT e la pagina man del driver per sapere cosa aggiungere al tuo file di configurazione del kernel. Per maggiori informazioni sulla ricompilzione del kernel, guarda il Capitolo 8. Se la tua scheda è stata riconosciuta all'avvio dal kernel (GENERIC) non dovrai compilarne uno nuovo.


11.6.2 Configurazione della Scheda di Rete

Una volta che il driver giusto per la scheda di rete è stato caricato, la scheda ha bisogno di essere configurata. Come molte altre cose, la scheda di rete potrebbe essere già stata configurata al momento dell'installazione tramite sysinstall.

Per mostrare la configurazione delle interfaccie di rete sul tuo sistema, immetti il seguente comando:

% ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
        ether 00:a0:cc:da:da:da
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
dc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
        ether 00:a0:cc:da:da:db
        media: Ethernet 10baseT/UTP
        status: no carrier
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500

Nota: Vecchie versioni di FreeBSD potrebbero richiedere l'opzione -a dopo ifconfig(8). Per maggiori dettagli sulla sintassi corretta di ifconfig(8), fai riferimento alla pagina man. Nota anche che le voci relative all'IPv6 (inet6 ecc.) sono state omesse in questo esempio.

In questo esempio, vengono mostrati i seguenti dispositivi:

  • dc0: La prima interfaccia Ethernet

  • dc1: La seconda interfaccia Ethernet

  • lp0: L'interfaccia della porta parallela

  • lo0: Il dispositivo di loopback

  • tun0: Il dispositivo tunnel usato da ppp

FreeBSD usa il nome del driver seguito dall'ordine nel quale la scheda è stat rilevata all'avvio del kernel per dare un nome alla scheda di rete. Ad esempio sis2 sarebbe la terza scheda di rete nel sistema che usa il driver sis(4).

In questo esempio, il dispositivo dc0 è attivo. Gli indicatori chiave sono:

  1. UP significa che la scheda è pronta e configurata.

  2. La scheda ha un indirizzo Internet (inet) (in questo caso 192.168.1.3).

  3. Essa ha una maschera di sottorete valida (netmask; 0xffffff00 è lo stesso che 255.255.255.0).

  4. Essa ha un indirizzo di broadcast valido (in questo caso, 192.168.1.255).

  5. L'indirizzo MAC della scheda ether) è 00:a0:cc:da:da:da.

  6. La selezione del mezzo fisico è in modalità autoselezione (media: Ethernet autoselect (100baseTX <full-duplex>)). Vediamo che dc1 è stata configurata con un mezzo fisico 10baseT/UTP. Per ulteriori informazioni sui tipi di mezzi disponibili per un driver, fai riferimento alla sua pagina man.

  7. Lo stato del collegamento (status) è active, ovvero è stata rilevata la portante. Per dc1, vediamo status: no carrier. Questo è normale quando un cavo ethernet non è stato inserito nella scheda.

Se l'output di ifconfig(8) avesse mostrato qualcosa di simile a:

dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
                ether 00:a0:cc:da:da:da

ciò avrebbe indicato che la scheda non era stata ben configurata.

Per configurare la tua scheda, avrai bisogno dei privilegi di root. La configurazione della scheda di rete può essere effettuata da riga di comando con ifconfig(8), ma avresti bisogno di farlo ad ogni riavvio del sistema. Il file /etc/rc.conf è il posto dove scrivere la configurazione della scheda di rete.

Apri /etc/rc.conf con il tuo editor preferito. Avrai bisogno di aggiungere una riga per ogni scheda di rete presente nel sistema, ad esempio nel nostro caso, abbiamo aggiunto queste linee:

ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0"
ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"

Dovrai sostituire dc0, dc1, e così via, con i dispositivi corretti per la tua scheda, e gli indirizzi con quelli appropriati. Dovresti leggere le pagine man del driver e di ifconfig(8) per maggiori dettagli sulle opzioni permesse ed anche la pagina man di rc.conf(5) per maggiori informazioni sulla sintassi di /etc/rc.conf.

Se hai configurato la rete durante l'installazione, alcune linee relative alle schede di rete potrebbero essere già presenti. Controlla due volte /etc/rc.conf prima di aggiungere ogni linea.

Avrai anche bisogno di modificare il file /etc/hosts per aggiungere i nomi e gli IP delle varie macchine della LAN, se non sono già lì. Per maggiori informazioni, fai riferimento a hosts(5) ed a /usr/share/examples/etc/hosts.


11.6.3 Verifica e Risoluzione dei Problemi

Una volta che hai effettuato i cambiamenti necessari a /etc/rc.conf, dovresti riavviare la macchina. Ciò farà sì che i cambiamenti alle interfacce vengano applicati, e verificherà che il sistema si riavvii senza nessun errore di configurazione.

Una volta che il sistema è stato riavviato, dovresti testare le interfaccie di rete.


11.6.3.1 Test della Scheda Ethernet

Per verificare che una scheda Ethernet sia configurata correttamente, si devono provare due cose. Prima, effettuare un ping verso l'interfaccia stessa, e poi un ping verso un'altra macchina sulla LAN.

Prima proviamo l'interfaccia:

% ping -c5 192.168.1.3
PING 192.168.1.3 (192.168.1.3): 56 data bytes
64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms
64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms

--- 192.168.1.3 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms

Ora dobbiamo effettuare un ping verso un'altra macchina della LAN:

% ping -c5 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms

--- 192.168.1.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms

Puoi usare il nome della macchina invece di 192.168.1.2 se hai sistemato il file /etc/hosts.


11.6.3.2 Risoluzione dei Problemi

11.6.3.2.1. Dove posso trovare informazioni su possibili problemi che potrei incontrare con la mia scheda di rete?
11.6.3.2.2. Quando cerco di effttuare un ping verso una macchina sulla mia LAN, ottengo questo messaggio di errore: ``ping: sendto: Permission denied''.
11.6.3.2.3. Vedo un sacco di messaggi ``watchdog timeout'' nei log del sistema, e quando cerco di effettuare un ping verso una macchina sulla LAN, ottengo questo messaggio: ``ping: sendto: No route to host''.
11.6.3.2.4. Vedo un sacco di messaggi ``device timeout'' nei log del sistema, e la mia scheda di rete non funziona.
11.6.3.2.5. Le prestazioni della scheda sono mediocri, cosa posso fare?
11.6.3.2.6. ci sono delle schede di rete raccomandate o alcune dalle quali dovrei tenermi lontano?

11.6.3.2.1. Dove posso trovare informazioni su possibili problemi che potrei incontrare con la mia scheda di rete?

La pagina man del driver è la prima documentazione da leggere. Anche gli archivi delle mailing list possono essere utili.

11.6.3.2.2. Quando cerco di effttuare un ping verso una macchina sulla mia LAN, ottengo questo messaggio di errore: ``ping: sendto: Permission denied''.

Questo significa che non hai il permesso di inviare pacchetti ICMP. Verifica se c'è un firewall in esecuzione sulla macchina e se ci sono delle regole che bloccano il protocollo ICMP.

11.6.3.2.3. Vedo un sacco di messaggi ``watchdog timeout'' nei log del sistema, e quando cerco di effettuare un ping verso una macchina sulla LAN, ottengo questo messaggio: ``ping: sendto: No route to host''.

La prima cosa da fare è verificare il cavo di rete. Molte schede di rete richiedono uno slot PCI che supporti il Bus Mastering. Su alcune vecchie schede madri, solo uno slot PCI lo permette (la maggior parte delle volte lo slot 0). Controlla la scheda di rete e la documentazione della scheda madre per capire se quello potrebbe essere il problema.

11.6.3.2.4. Vedo un sacco di messaggi ``device timeout'' nei log del sistema, e la mia scheda di rete non funziona.

Avere uno o due di questi messaggi è spesso normale con alcune schede. Ad ogni modo, se questi persistono e la rete non è usabile, assicurati che il cavo di rete sia connesso e che non ci siano conflitti IRQ tra scheda di rete ed altri dispositivi nel sistema.

11.6.3.2.5. Le prestazioni della scheda sono mediocri, cosa posso fare?

È difficile rispondere a questa domanda. Qual è la tua definizione di ``prestazioni mediocri''? Controlla due volte qualunque cosa nella tua configurazione, leggi la pagina man tuning(7), e cerca di evitare schede di rete economiche. Molti utenti hanno notato che impostando la selezione del mezzo fisico su autoselect porta a prestazioni scadenti su certo hardware.

11.6.3.2.6. ci sono delle schede di rete raccomandate o alcune dalle quali dovrei tenermi lontano?

Dovresti evitare le schede economiche per un uso serio. Le schede economiche spesso offrono chipset pieni di bug, e la maggior parte delle volte non forniscono buone prestazioni. Molti utenti di FreeBSD apprezzano le schede che usano il chipset fxp(4), tuttavia questo non significa che tutti gli altri chipset siano cattivi.


11.7 Host Virtuali

Un uso piuttosto comune di FreeBSD è come hosting di siti virtuali, dove un solo server appare alla rete come molti server distinti. Ciò viene effettuato assegnando indirizzi di rete multipli ad una sola interfaccia.

Una data interfaccia di rete ha un solo indirizzo ``reale'', e può avere un numero qualsiasi di indirizzi ``alias''. Questi alias vengono normalmente aggiunti mettendo dei campi alias in /etc/rc.conf.

Un campo alias per l'interfaccia fxp0 appare così:

ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"

Nota che il campo alias deve iniziare con alias0 e aumentare in ordine, (ad esempio, _alias1, _alias2, e così via). Il processo di configurazione si fermerà al primo numero mancante.

Il calcolo delle maschere di sottorete degli alias è importante, ma, fortunatamente, è anche abbastanza semplice. Per una data interfaccia, deve esserci un indirizzo che rappresenta correttamente la maschera di sottorete. Ogni altro indirizzo che ricada in questa rete deve avere una maschera di sottorete con tutti 1.

Ad esempio, considera il caso in cui l'interfaccia fxp0 sia connessa a due reti, la rete 10.1.1.0 con maschera di sottorete 255.255.255.0 e la rete 202.0.75.16 con maschera di sottorete 255.255.255.240. Vogliamo che il sistema sia visibile come 10.1.1.1 fino a 10.1.1.5 e come 202.0.75.17 fino a 202.0.75.20.

Le seguenti righe configurano il dispositivo correttamente per questo scopo:

 ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0"
 ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255"
 ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255"
 ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255"
 ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255"
 ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240"
 ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255"
 ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255"
 ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"

11.8 File di Configurazione

11.8.1 Struttura di /etc

Ci sono molte directory nelle quali vengono tenute le informazioni di configurazione. Tra queste ci sono:

/etc Informazioni generiche sulla configurazione del sistema; questi dati sono specifici del sistema.
/etc/defaults Versioni di default dei file di configurazione del sistema.
/etc/mail Configurazioni extra di sendmail(8), o file di configurazione di altri MTA.
/etc/ppp Configurazione ppp sia per i programmi a livello utente che a livello kernel.
/etc/namedb Posizione predefinita per i dati di named(8). Normalmente qui si trova named.conf insieme ai file di zona.
/usr/local/etc File di configurazione per le applicazioni installate. Può contenere sottodirectory.
/usr/local/etc/rc.d Script start/stop per i programmi installati.
/var/db File di dati specifici del sistema generati automaticamente, come il database dei package, il database di locate, e così via.

11.8.2 Nomi degli Host


11.8.2.1 /etc/resolv.conf

/etc/resolv.conf detta il modo in cui il sistema di risoluzione dei nomi di FreeBSD accede all'Internet Domain Name System (DNS).

I campi più comuni in resolv.conf sono:

nameserver L'indirizzo IP di un name server al quale dovrà rivolgersi il sistema di risoluzione. I server vengono interrogati nell'ordine in cui sono elencati, fino a un massimo di tre.
search Lista di ricerca per i nomi degli host. Normalmente questo viene determinato dal dominio dell'host locale.
domain Il nome del dominio locale.

Un resolv.conf tipico:

search example.com
nameserver 147.11.1.11
nameserver 147.11.100.30

Nota: Si dovrebbe usare solo una tra le due opzioni search e domain.

Se stai usando DHCP, dhclient(8) generalmente sovrascriverà resolv.conf con le informazioni ricevute dal server DHCP.


11.8.2.2 /etc/hosts

/etc/hosts è un semplice database testuale, reminescenza della vecchia rete Internet. Esso lavora in congiunzione con DNS e NIS fornendo una mappatura da nome a indirizzo IP. Computer locali connessi ad una LAN possono essere messi in questo file per una gestione semplice dei nomi, invece di mettere su un server named(8). Inoltre, /etc/hosts può essere usato per fornire un registro locale dei nomi di internet, riducendo la necessità di effettuare richieste esternamente per i nomi ad accesso frequente.

# $FreeBSD$
#
# Host Database
# Questo file dovrebbe contenere gli indirizzi e gli alias
# per gli host locali che condividono questo file.
# In presenza di DNS o NIS, questo file potrebbe non essere consultato affatto;
# guarda /etc/nsswitch.conf per l'ordine di risoluzione.
#
#
::1                     localhost localhost.my.domain myname.my.domain
127.0.0.1               localhost localhost.my.domain myname.my.domain

#
# Rete immaginaria.
#10.0.0.2               myname.my.domain myname
#10.0.0.3               myfriend.my.domain myfriend
#
# In accordo all'RFC 1918, puoi usare le seguenti classi di IP per reti private
# che non verranno mai connesse ad Internet:
#
#       10.0.0.0        -   10.255.255.255
#       172.16.0.0      -   172.31.255.255
#       192.168.0.0     -   192.168.255.255
#
# In caso volessi essere in grado di collegarti ad Internet, avrai bisogno
# di veri numeri ufficiali assegnati.  PER FAVORE PER FAVORE PER FAVORE
# non tentare di inventarti i numeri della tua rete ma fattene assegnare
# uno dal tuo provider (se ne hai uno) o dall'Internet Registry (ftp su
# rs.internic.net, directory `/templates').
#

/etc/hosts accetta il semplicissimo formato:

[Indirizzo Internet ] [nome host ufficiale] [alias1] [alias2] ...

Ad esempio:

10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2

Consulta hosts(5) per maggiori informazioni.


11.8.3 Configurazione dei File di Log


11.8.3.1 syslog.conf

syslog.conf è il file di configurazione per il programma syslogd(8). Indica quale tipo di messaggi verranno scritti su ogni file di log.

# $FreeBSD$
#
#       Gli spazi SONO validi separatori dei campi in questo file. Ad ogni modo,
#       altri sistemi *nix-like insistono ancora nell'usare tab come separatori
#       di campo. Se condividi questo file tra più sistemi, potresti
#       voler usare solo dei tab come separatori.
#       Consulta la pagina man di syslog.conf(5).
*.err;kern.debug;auth.notice;mail.crit          /dev/console
*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.*                                      /var/log/security
mail.info                                       /var/log/maillog
lpr.info                                        /var/log/lpd-errs
cron.*                                          /var/log/cron
*.err                                           root
*.notice;news.err                               root
*.alert                                         root
*.emerg                                         *
# togli il commento a questo per loggare tutte le scritture su /dev/console
# in /var/log/console.log
#console.info                                   /var/log/console.log
# togli il commento a questo per abilitare il logging di tutti i messaggi di log
# su /var/log/all.log
#*.*                                            /var/log/all.log
# togli il commento a questo per abilitare il logging su un host remoto di nome
# loghost
#*.*                                            @loghost
# togli i commenti a questi se hai inn in funzione
# news.crit                                     /var/log/news/news.crit
# news.err                                      /var/log/news/news.err
# news.notice                                   /var/log/news/news.notice
!startslip
*.*                                             /var/log/slip.log
!ppp
*.*                                             /var/log/ppp.log

Consulta la pagina man di syslog.conf(5) per maggiori informazioni.


11.8.3.2 newsyslog.conf

newsyslog.conf è il file di configurazione di newsyslog(8), un programma che normalmente viene eseguito da cron(8). newsyslog(8) determina quando i file di log richiedono un archiviazione o un riordinamento. logfile viene rinominato in logfile.0, logfile.0 in logfile.1 e così via. Alternativamente, i file potranno essere archiviati in formato gzip(1), e quindi diventeranno: logfile.0.gz, logfile.1.gz, e così via.

newsyslog.conf indica quali file di log devono essere gestiti, quanti devono essere mantenuti, e quando devono essere toccati. I file di log possono essere riordinati e/o archiviati quando raggiungono una certa dimensione, o a una certa data/ora periodica.

# file di configurazione per newsyslog
# $FreeBSD$
#
# filename          [owner:group]    mode count size when [ZB] [/pid_file] [sig_num]
/var/log/cron                           600  3     100  *     Z
/var/log/amd.log                        644  7     100  *     Z
/var/log/kerberos.log                   644  7     100  *     Z
/var/log/lpd-errs                       644  7     100  *     Z
/var/log/maillog                        644  7     *    @T00  Z
/var/log/sendmail.st                    644  10    *    168   B
/var/log/messages                       644  5     100  *     Z
/var/log/all.log                        600  7     *    @T00  Z
/var/log/slip.log                       600  3     100  *     Z
/var/log/ppp.log                        600  3     100  *     Z
/var/log/security                       600  10    100  *     Z
/var/log/wtmp                           644  3     *    @01T05 B
/var/log/daily.log                      640  7     *    @T00  Z
/var/log/weekly.log                     640  5     1    $W6D0 Z
/var/log/monthly.log                    640  12    *    $M1D0 Z
/var/log/console.log                    640  5     100  *     Z

Consulta la pagina man di newsyslog(8) per maggiori informazioni.


11.8.4 sysctl.conf

sysctl.conf assomiglia molto a rc.conf. I valori vengono impostati nella forma variabile=valore. I valori specificati vengono impostati dopo che il sistema è entrato in modalità multiutente. Non tutte le variabili sono gestibili in questo modo.

Un sysctl.conf d'esempio che disattiva il logging delle uscite forzate da segnali non gestibili e che lascia capire ai programmi di Linux che essi stanno effettivamente funzionando sotto FreeBSD:

kern.logsigexit=0       # Non registra le uscite forzate (es. sig 11)
compat.linux.osname=FreeBSD
compat.linux.osrelease=4.3-STABLE

11.9 Messa a Punto con sysctl

sysctl(8) è un'interfaccia che vi permette di effettuare cambiamenti ad un sistema FreeBSD già attivo. Questo include molte opzioni avanzate dello stack TCP/IP e del sistema di memoria virtuale che possono permettere di migliorare drammaticamente le prestazioni ad un sistemista che abbia esperienza. Più di cinquecento variabili di sistema possono essere lette e modificate usando sysctl(8).

In sostanza, sysctl(8) serve a due cose: a leggere e a modificare le impostazioni di sistema.

Per visualizzare tutte le variabili modificabili:

% sysctl -a

Per leggere una particolare variabile, ad esempio, kern.maxproc:

% sysctl kern.maxproc
kern.maxproc: 1044

Per impostare una particolare variabile, usa l'intuitiva sintassi variabile=valore:

# sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000

I valori validi per le variabili di sysctl sono generalmente o stringhe, o numeri, o valori booleani (un valore booleano può valere 1 per sì o 0 per no).


11.10 Messa a Punto dei Dischi

11.10.1 Variabili sysctl

11.10.1.1 vfs.vmiodirenable

La variabile sysctl vfs.vmiodirenable può essere impostata a 0 (inattivo) o 1 (attivo); di default è 1. Questa variabile controlla il modo in cui le directory vengono messe nella cache dal sistema. La maggior parte delle directory è piccola, ed usa solo un singolo frammento (tipicamente 1 K) nel file system e meno (tipicamente 512 byte) nella cache. Ad ogni modo, quando si lavora nella modalità predefinita il buffer manterrà soltanto un numero fissato di directory anche se hai una quantità enorme di memoria. Attivando questa sysctl si permette al buffer di usare la VM Page Cache per immagazzinare le directory, rendendo disponibile tutta la memoria disponibile per il caching delle directory. In ogni caso, la minima quantità di memoria usata per memorizzare una directory sarà la dimensione della pagina fisica (in genere 4 K) invece di 512 byte. Noi consigliamo di attivare questa opzione se si hanno in esecuzione dei servizi che manipolano un grosso numero file. Servizi di questo tipo sono le cache web, i grandi sistemi di posta, e quelli di news. Attivare questa opzione in generale non ridurrà le prestazioni nonostante la memoria sprecata, ma dovresti sperimentare tu stesso per verificare.


11.10.1.2 hw.ata.wc

FreeBSD 4.3 ha giocato un po' con l'idea di disattivare il caching IDE in scrittura. Questo ha ridotto la larghezza di banda in scrittura verso i dischi IDE ma è stato considerato necessario a causa di gravi problemi di consistenza dei dati introdotti dai venditori di dischi rigidi. Il problema è che il disco IDE rimane inattivo dopo che una scrittura è stata completata. Con il caching in scrittura attivo, i dischi IDE non scrivono soltanto i dati sui dischi in maniera disordinata, ma talvolta rimandano la scrittura indefinitamente sotto carichi di lavoro del disco pesanti. Un crash o un calo di tensione possono condurre a seri problemi di corruzione del file system. L'impostazione predefinita di FreeBSD fu cambiata in favore della sicurezza. Sfortunatamente, il risultato è stato una perdita di prestazioni talmente tremenda che abbiamo dovuto reinserire il caching in scrittura di default dopo quella release. Dovresti verificare il valore di default sul tuo sistema osservando la variabile sysctl hw.ata.wc. Se il caching IDE in scrittura è disattivato, potete attivarlo reimpostando la variabile del kernel a 1. Questo dovrebbe essere effettuato dal boot loader all'avvio. Tentare di effettuare questo cambiamento dopo che il kernel è stato avviato non avrà nessun effetto.

Per maggiori informazioni, guarda ata(4).


11.10.2 Soft Updates

Il programma tunefs(8) può essere usato per mettere a punto con accuratezza un file system. Questo programma ha molte opzioni differenti, ma per ora noi ci preoccuperemo solo di attivare e disattivare i Soft Updates, che verrà effettuato tramite:

# tunefs -n enable /filesystem
# tunefs -n disable /filesystem

Un file system non potrà essere modificato con tunefs(8) mentre è montato. Un buon momento per attivare i Soft Updates è prima che le partizioni siano montate, in modalità singolo utente.

Nota: Da FreeBSD 4.5, è possibile attivare i Soft Updates al momento della creazione dei file system, grazie all'uso dell'opzione -U di newfs(8).

I Soft Updates migliorano drasticamente le prestazioni dei meta-dati, principalmente la creazione e la cancellazione di file, attraverso l'uso di una memoria cache. Consigliamo di attivare i Soft Updates su tutti i file system. Ci sono due lati negativi relativi ai Soft Updates dei quali dovresti essere a conoscenza: primo, i Soft Updates garantiscono la consistenza del file system in caso di crash ma è più che probabile che passino molti secondi (anche un minuto!) prima che venga aggiornato fisicamente il disco. Se il sistema crasha potresti perdere molto più lavoro in questa modo. Secondo, i Soft Updates rallentano la liberazione dei blocchi liberi del file system. Se hai un file system (come il file system root) che è quasi pieno, la realizzazione di un grosso aggiornamento, come un make installworld, potrebbe essere causa di un superamento dei limiti di spazio del file system e di un fallimento dell'aggiornamento.


11.10.2.1 Maggiori dettagli sui Soft Updates

Ci sono due approcci tradizionalmente nella scrittura dei meta-dati del file system su disco. (Gli aggiornamenti dei meta-dati sono aggiornamenti ai dati che non sono contenuto, come gli inode o le directory.)

Storicamente, il comportamento predefinito era di scrivere gli aggiornamenti dei meta-dati in maniera sincrona. Se una directory veniva modificata, il sistema attendeva finché il cambiamento venisse effettivamente scritto su disco. I buffer con i dati dei file (i contenuti dei file) venivano passati attraverso la cache e salvati su disco in seguito, in maniera asincrona. Il vantaggio di questa implementazione è che avviene in maniera sicura. Se si verifica un problema durante un aggiornamento, i meta-dati sono sempre in uno stato consistente. Un file viene creato completamente o non viene creato affatto. Se i blocchi dati di un file non sono riusciti ad uscire dalla cache e arrivare al disco prima del crash, fsck(8) è in grado di capirlo e riparare il file system impostando a zero la lunghezza del file. Inoltre, l'implementazione è chiara e semplice. Lo svantaggio è che i cambiamenti dei meta-dati sono lenti. Un rm -r, ad esempio, tocca tutti i file in una directory consecutivamente, ma ogni cambiamento della directory (la cancellazione del file) verrà scritto su disco in maniera sincrona. Questo include gli aggiornamenti alla directory stessa, alla tabella degli inode, e magari anche ai blocchi indiretti allocati dal file. Simili considerazioni si applicano nell'elenco di grosse gerarchie (tar -x).

Il secondo caso è l'aggiornamento asincrono dei meta-dati. Questo è il comportamento predefinito per Linux/ext2fs e mount -o async per *BSD/ufs. Anche tutti gli aggiornamenti dei meta-dati vengono semplicemente fatti passare attraverso la cache, cioè vengono mescolati con gli aggiornamenti dei dati contenuti nel file. Il vantaggio di questa implementazione è che non c'è bisogno di attendere che ogni aggiornamento dei meta-dati venga scritto su disco, dunque tutte le operazioni che causano enormi quantità di aggiornamenti dei meta-dati lavorano molto più velocemente che nel caso sincrono. Inoltre, l'implementazione è ancora semplice e chiara, dunque c'è un basso rischio che si annidino dei bug nel codice. Lo svantaggio è che non c'è nessuna garanzia di uno stato consistente del file system. Se si verifica un problema durante un'operazione che ha aggiornato grandi quantità di meta-dati (ad esempio un abbassamento di tensione, o qualcuno che preme il tasto reset), il file system verrà lasciato in uno stato imprevedibile. Non c'è opportunità di esaminare lo stato del file system quando il sistema viene riavviato; i blocchi dati di un file potrebbero essere già stati scritti sul disco mentre gli aggiornamenti della tabella degli inode o la directory associata non lo sono. È praticamente impossibile implementare un fsck che sia in grado di ripulire il caos risultante (perché i dati necessari non sono disponibili sul disco). Se il file system è stato danneggiato più del riparabile, la sola scelta è di usare newfs(8) per ricrearlo e recuperarlo da un backup.

La soluzione comune di questo problema era implementare la registrazione delle regioni sporche, a cui spesso si fa riferimento come journaling, anche se questo termine non viene usato coerentemente e talvolta viene applicato ad altre forme di logging delle transazioni. Gli aggiornamenti dei meta-dati sono ancora scritti in maniera sincrona, ma solo in una piccola regione del disco. In seguito vengono spostati nella posizione appropriata. Poiché l'area di registrazione è una piccola regione contigua sul disco, non ci sono lunghe distanze da percorrere per le testine del disco, anche durante le operazioni pesanti, dunque queste operazioni sono più veloci degli aggiornamenti sincroni. Inoltre la complessità dell'implementazione è piuttosto limitata, dunque il rischio che si presentino dei bug è basso. Uno svantaggio è che tutti i meta-dati vengono scritti due volte (una volta nella regione di logging ed un altra nella posizione appropriata) e quindi per un lavoro normale si può avere un ``peggioramento'' delle prestazioni. D'altro canto, in caso di crash, tutti le operazioni sui meta-dati in sospeso possono essere velocemente annullate o recuperate dall'area di registrazione quando il sistema è di nuovo attivo, e come risultato si ha un avvio veloce del file system.

Kirk McKusick, lo sviluppatore del Berkeley FFS, ha risolto questo problema con i Soft Updates: tutti gli aggiornamenti dei meta-dati vengono tenuti in memoria e vengono scritti su disco in sequenza ordinata (``aggiornamenti ordinati dei meta-dati''). Ciò porta all'effetto che, in caso di operazioni pesanti sui meta-dati, gli ultimi aggiornamenti ad un elemento ``recuperano'' i precedenti se questi sono ancora in memoria e non sono già stati scritti su disco. Dunque tutte le operazioni, diciamo su una directory, vengono effettuate principalmente in memoria prima che l'aggiornamento sia scritto su disco (i blocchi dei dati vengono ordinati in relazione alla loro posizione, in modo che non vengano scritti su disco prima dei loro meta-dati). Se il sistema va in crash, ciò causa un implicito ``riavvolgimento del log'': tutte le operazioni che non hanno ancora trovato posto sul disco appariranno come mai effettuate. Viene mantenuto uno stato consistente del file system che sarà quello di 30 o 60 secondi prima. L'algoritmo usato garantisce anche che tutte le risorse in uso siano marcate come tali nelle appropriate tabelle di bit: blocchi e inode. Dopo un crash, il solo errore di allocazione è che vengono marcate come ``usate'' anche risorse che sono effettivamente ``libere''. fsck(8) riconosce questa situazione, e libera le risorse che non sono più in uso. Non c'è pericolo nell'ignorare lo stato di sporcizia del file system dopo un crash montandolo di forza con mount -f. Per poter liberare le risorse che potrebbero essere non usate, fsck(8) ha bisogno di essere avviato in seguito. Questa è l'idea di un fsck in background: all'avvio del sistema, viene registrata solo una immagine del file system. fsck può essere eseguito in seguito. Tutti i file system possono essere montati ``sporchi'', quindi il processo di avvio del sistema procede in modalità multiutente. In seguito, fsck viene avviato su tutti i file system dove è necessario, per liberare le risorse che potrebbero essere inutilizzate. (I file system che non usano i Soft Updates hanno ancora bisogno del solito fsck, comunque.)

Il vantaggio è che le operazioni sui meta-dati sono veloci quasi come gli aggiornamenti asincroni (cioè più veloci che con il logging, che deve scrivere i meta-dati due volte). Gli svantaggi sono nella complessità del codice (che implica un maggiore rischio di trovare bug in un'area molto sensibile, essendo legata alla perdita dei dati degli utenti), ed un consumo di memoria maggiore. Inoltre ci sono alcune idiosincrasie alle quali ci si deve abituare. Dopo un crash, lo stato del file system appare in qualche modo ``vecchio''. In situazioni dove l'approccio sincrono avrebbe causato la permanenza di alcuni file di lunghezza zero dopo un fsck, questi file non esistono affatto con un file system con Soft Updates, perché né i meta-dati né i contenuti dei file sono mai stati scritti su disco. Lo spazio su disco non viene rilasciato finché gli aggiornamenti non sono stati scritti su disco, il che può avvenire qualche tempo dopo che è stato eseguito rm. Questo potrebbe causare problemi durante l'installazione di grandi quantità di dati su un file system che non avesse abbastanza spazio per contenere tutti i file due volte.


11.11 Messa a Punto dei Limiti del Kernel


11.11.1 Limiti dei File/Processi

11.11.1.1 kern.maxfiles

kern.maxfiles può essere aumentato o abbassato a seconda dei requisiti del tuo sistema. Questa variabile indica il numero massimo di descrittori di file sul tuo sistema. Quando la tabella dei descrittori di file è piena, apparirà ripetutamente la scritta ``file: table is full'' nel buffer dei messaggi di sistema, che può essere visualizzato con il comando dmesg.

Ogni file, socket, o fifo aperta usa un descrittore di file. Un server di produzione di larga scala può richiedere facilmente molte migliaia di descrittori di file, in relazione al tipo e al numero di servizi in esecuzione insieme.

Il valore predefinito di kern.maxfile viene dettato dall'opzione MAXUSERS nel file di configurazione del kernel. kern.maxfiles cresce proporzionalmente al valore di MAXUSERS. Quando si compila un kernel personalizzato, è una buona idea impostare questa opzione di configurazione del kernel in base agli usi del proprio sistema. Da questo numero, dipendono molti dei limiti predefiniti del kernel. Anche se una macchina in produzione potrebbe non avere effettivamente 256 utenti connessi contemporaneamente, le risorse necessarie potrebbero essere simili a quelle di un server web su larga scala.

Nota: Da FreeBSD 4.5 in poi, l'impostazione di MAXUSERS a 0 nel file di configurazione del kernel fornirà un valore di default ragionevole basato sulla quantità di RAM presente nel sistema.


11.11.2 Limiti di Rete

L'opzione di configurazione del kernel NMBCLUSTERS decide la quantità di mbuf di rete disponibili al sistema. Un server molto trafficato con un numero basso di MBUF ostacolerebbe le possibilità di FreeBSD. Ogni cluster rappresenta approssimativamente 2 K di memoria, dunque un valore di 1024 rappresenta 2 megabyte di memoria del kernel riservata per i buffer di rete. Può essere effettuato un semplice calcolo per capire quanti ne siano necessari. Se hai un web server che arriva al massimo a 1000 connessioni simultanee, ed ogni connessione consuma un buffer di 16 K in ricezione e un'altro di 16 K in trasmissione, avrai bisogno approssimativamente di 32 MB di buffer di rete per coprire il web server. Una buona regola generale è di moltiplicare per 2, dunque 2x32 MB / 2 KB = 64 MB / 2 KB = 32768.


11.12 Aggiunta di Spazio di Swap

Non importa quanto bene pianifichi tutto, a volte un sistema non funziona come ti aspetti. Se ti trovi ad avere bisogno di maggiore spazio di swap, è abbastanza semplice aggiungerlo. Ci sono tre modi per aumentare lo spazio di swap: aggiungere un nuovo disco rigido, abilitare lo swap su NFS, e creare un file di swap su una partizione esistente.


11.12.1 Swap su un Nuovo Disco Rigido

Il modo migliore per aggiungere dello swap, ovviamente, è usare questa come scusa per aggiungere un altro disco rigido. Puoi sempre aggiungere un nuovo disco, dopo tutto. Se puoi fare così, vai a rileggere la discussione sullo spazio di swap dalla sezione sull'Installazione di FreeBSD del Manuale per alcuni suggerimenti su come organizzare al meglio lo spazio di swap.


11.12.2 Swap su NFS

Lo swap su NFS è consigliato solo se non hai un disco locale su cui realizzare lo swap. Lo swap via NFS è lento ed inefficiente nelle versioni di FreeBSD precedenti alla 4.X. Nella 4.0-RELEASE e successive è ragionevolmente efficiente e veloce. Anche nelle versioni più nuove di FreeBSD, comunque, lo swap via NFS è limitato dalla larghezza di banda disponibile sulla rete e aggiunge ulteriore lavoro per il server NFS.


11.12.3 File di Swap

Puoi creare un file delle dimensioni specifiche per usarlo come file di swap. In questo nostro esempio useremo un file di 64MB chiamato /usr/swap0. Puoi usare qualsiasi nome vuoi, ovviamente.

Esempio 11-1. Creazione di un File di Swap

  1. Accertati che la tua configurazione del kernel includa il driver per i vnode. Non c'è nelle versioni recenti del GENERIC.

    pseudo-device   vn 1   #driver vnode (trasforma un file in un dispositivo)
    
  2. crea un dispositivo vn:

    # cd /dev
    # sh MAKEDEV vn0
    
  3. crea un file di swap (/usr/swap0):

    # dd if=/dev/zero of=/usr/swap0 bs=1024k count=64
    
  4. imposta i permessi appropriati (/usr/swap0):

    # chmod 0600 /usr/swap0
    
  5. Abilita il file di swap in /etc/rc.conf:

    swapfile="/usr/swap0"   # Imposta il nome del file di swap se si desidera un file di swap ausiliario.
    
  6. Riavvia la macchina, o per abilitare il file di swap immediatamente digita:

    # vnconfig -e /dev/vn0b /usr/swap0 swap
    

Capitolo 12 La Procedura di Avvio di FreeBSD

12.1 Sinossi

Il processo di accensione di un computer e caricamento del sistema operativo viene detto ``processo di avviamento'', o semplicemente ``avvio''. La procedura di avvio di FreeBSD fornisce un alto grado di flessibilità nel personalizzare quello che succede quando avvii il sistema, dandoti la possibilità di scegliere tra diversi sistemi operativi installati sullo stesso computer, o anche tra diverse versioni dello stesso sistema operativo o tra diversi kernel installati.

Questo capitolo fornisce i dettagli sulle opzioni di configurazione che puoi impostare per personalizzare il processo di avvio di FreeBSD. Ciò comprende tutto quello che avviene fino a quando il kernel viene lanciato, vengono controllate le periferiche, e viene avviato init(8). Se non sei sicuro di sapere quando tutto questo accada, si tratta del momento in cui il colore del testo a video cambia da bianco brillante a grigio.

Dopo aver letto questo capitolo, saprai:

  • Quali sono i componenti del sistema di avvio di FreeBSD, e come interagiscono.

  • Le opzioni che puoi impostare per i componenti durante l'avviamento di FreeBSD per controllare il processo di avvio.

  • Le basi dei device.hints(5).

Solo per x86: Questo capitolo descrive la procedura di avvio di FreeBSD su sistemi Intel x86.


12.2 Il Problema dell'Avvio

Accendere un computer e far partire il sistema operativo pone un dilemma interessante. Per definizione, il computer non sa fare nulla finché non viene avviato il sistema operativo. Questo include anche l'esecuzione dei programmi dal disco. Dunque se il computer non può eseguire un programma da disco senza il sistema operativo, ed i programmi del sistema operativo sono sul disco, come viene avviato il sistema operativo?

Questo è un problema analogo a quello descritto nel libro Le Avventure del Barone di Munchausen. Un personaggio era caduto in una botola, e ne era uscito tirandosi su da sé (in inglese ``bootstrap''), riuscendo nell'intento solo con i propri sforzi. Nei primi giorni dei calcolatori al meccanismo usato per caricare il sistema operativo fu applicato il termine bootstrap, ed in seguito venne abbreviato in ``booting'' (in italiano ``avvio'').

Su sistemi con hardware x86 il BIOS (Basic Input/Output System) è il responsabile del caricamento del sistema operativo. Per fare ciò, il BIOS cerca nel disco rigido il Master Boot Record (MBR), che deve essere in una specifica posizione sul disco. Il BIOS ha abbastanza conoscenze per caricare ed eseguire l'MBR, ed assume che l'MBR possa portare avanti il resto dei compiti relativi al caricamento del sistema operativo.

Se hai solo un sistema operativo installato sui tuoi dischi allora l'MBR standard sarà sufficiente. Questo MBR cerca la prima slice (partizione) avviabile sul disco, e poi esegue il codice su quella slice per caricare il resto del sistema operativo.

Se hai installato più sistemi operativi sui tuoi dischi allora puoi installare un MBR diverso, che mostra una lista dei diversi sistemi operativi, e ti permette di scegliere quale avviare. FreeBSD viene fornito con un simile MBR che può essere installato, ed altri fornitori di sistemi operativi forniscono MBR alternativi.

Il resto del sistema di avvio di FreeBSD è diviso in tre stadi. Il primo stadio viene eseguito dall'MBR, che sa solo il necessario per mettere il computer in un certo stato ed eseguire il secondo stadio. Quest'ultimo può fare poco di più, prima di eseguire il terzo. Il terzo stadio esaurisce il compito di caricare il sistema operativo. Il lavoro è diviso in queste tre parti perché gli standard dei PC pongono dei limiti alla dimensione dei programmi che possono essere eseguiti nei primi due stadi. Concatenando i compiti si permette a FreeBSD di fornire un loader più flessibile.

A questo punto viene avviato il kernel ed esso comincia a verificare i dispositivi e ad inizializzarli. Una volta che la procedura di avvio del kernel è finita, il kernel passa il controllo al processo utente init(8), che si assicura che i dischi siano in uno stato usabile. Poi init(8) avvia la configurazione delle risorse a livello utente che monta i file system, imposta le schede di rete per comunicare via rete, ed in generale fa partire tutti i processi che generalmente sono in esecuzione su un sistema FreeBSD all'avvio.


12.3 L'MBR, e gli Stadi di Avvio Uno, Due, e Tre

12.3.1 MBR, /boot/boot0

L'MBR di FreeBSD è posizionato in /boot/boot0. Questa è una copia dell'MBR, poiché il vero MBR deve essere posizionato su una parte speciale del disco, fuori dell'area di FreeBSD.

Siccome il programma nell'MBR può essere lungo solo 512 byte, boot0 è molto semplice. Se hai installato l'MBR di FreeBSD ed hai vari sistemi operativi installati sui tuoi dischi allora vedrai una schermata simile a questa al momento dell'accensione:

Esempio 12-1. Screenshot di boot0

F1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1

Default: F2

Altri sistemi operativi, in particolare Windows 95, sono noti per l'abitudine di sovrascrivere l'MBR esistente con il proprio. Se accade questo, o se vuoi rimpiazzare l'MBR pre-esistente con quello di FreeBSD puoi usare il seguente comando:

# fdisk -B -b /boot/boot0 dispositivo

Dove dispositivo è il dispositivo dal quale vuoi avviare, come ad0 per il primo disco IDE, ad2 per il primo disco ide sul secondo canale, da0 per il primo disco SCSI, e così via.

Comunque, se sei un utente Linux e preferisci che sia LILO a controllare il processo di avvio, puoi modificare /etc/lilo.conf per avviare FreeBSD, e selezionare Leave The Master Boot Record Untouched durante il processo di installazione di FreeBSD. Se hai installato il boot manager di FreeBSD, puoi avviare Linux e modificare il file di configurazione di LILO, /etc/lilo.conf aggiungendo la seguente opzione:

other=/dev/hdXY
table=/dev/hdb
loader=/boot/chain.b
label=FreeBSD

che permetterà l'avvio di FreeBSD e Linux via LILO. Nel nostro esempio, usiamo XY per determinare quale drive e quale partizione usare. Se stai usando un drive SCSI, dovrai cambiare /dev/hdXY in qualcosa di simile a /dev/sdXY, dove viene usata ancora la sintassi XY. L'opzione loader=/boot/chain.b può essere omessa se hai entrambi i sistemi operativi sullo stesso drive. Ora puoi eseguire /sbin/lilo -v per effettuare i tuoi cambiamenti, che dovrebbero essere confermati con messaggio su schermo.


12.3.2 Stadio Uno, /boot/boot1, e Stadio Due, /boot/boot2

Concettualmente il primo ed il secondo stadio sono parte dello stesso programma, sulla stessa area del disco. Per limitazioni di spazio sono stati divisi in due, ma li installerai sempre insieme.

Essi si trovano sul settore di avvio della slice di avvio, dove boot0, o ogni altro programma nell'MBR si aspetta di trovare il codice da eseguire per proseguire la procedura di avvio. I file nella directory /boot sono copie dei file reali, che sono immagazzinati fuori dal file system di FreeBSD.

boot1 è molto semplice, poiché può essere lungo solo 512 byte, e conosce solo lo stretto necessario del disklabel di FreeBSD, il quale memorizza le informazioni sulle slice, per trovare ed eseguire boot2.

boot2 è leggermente più sofisticato, e conosce il file system di FreeBSD abbastanza da potervi trovare dei file, e può fornire una semplice interfaccia per scegliere quale kernel o loader eseguire.

Poiché il loader è molto più complesso, e fornisce una gradevole interfaccia di facile utilizzo alla configurazione di avvio, boot2 in genere lo esegue, ma in precedenza era incaricato di lanciare il kernel direttamente.

Esempio 12-2. Screenshot di boot2

>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/kernel
boot:

Se mai avrai bisogno di rimpiazzare il boot1 ed il boot2 installati, usa disklabel(8):

# disklabel -B discoslice

dove discoslice sono il disco e la slice dal quale vuoi effettuare l'avvio, come ad esempio ad0s1 per la prima slice sul primo disco IDE.

Modalità Pericolosamente Dedicata: Se nella sintassi del comando disklabel(8) usi solo il nome del disco, come ad0, creerai un disco pericolosamente dedicato, senza slice. Quasi sicuramente non è questo quello che vuoi fare, quindi controlla due volte il comando disklabel(8) prima di premere Invio.


12.3.3 Stadio Tre, /boot/loader

Il loader è l'ultimo stadio della procedura di avvio divisa in tre, e si trova sul file system, generalmente come /boot/loader.

Il loader deve essere inteso come un metodo user-friendly per la configurazione di avvio, tramite l'uso di un insieme di comandi integrati facili da usare, sostenuto da un potente interprete, con un insieme di comandi più complessi.


12.3.3.1 Sequenza di Operazioni del Loader

Durante l'inizializzazione, il loader controllerà la console e i dischi, e cercherà di capire da quale disco si stia avviando. Imposterà le variabili di conseguenza, ed avvierà un interprete al quale potranno essere passati i comandi dell'utente in maniera interattiva o attraverso uno script.

Poi il loader leggerà /boot/loader.rc, che di default legge i settaggi di /boot/defaults/loader.conf il quale imposta dei valori di default ragionevoli per le variabili e inoltre /boot/loader.rc legge /boot/loader.conf per i cambiamenti locali a quelle variabili. In base a queste variabili loader.rc carica i moduli ed il kernel prescelti.

Infine, di default, il loader attende per 10 secondi la pressione di un tasto, ed avvia il kernel se non viene interrotto. Se invece viene interrotto, viene presentato all'utente un prompt in grado di comprendere un semplice insieme di comandi, dal quale l'utente può impostare precisamente le variabili, scaricare dalla memoria tutti i moduli, o caricarli, ed infine avviare o ri-avviare.


12.3.3.2 Comandi Integrati nel Loader

Questi sono i comandi usati più comunemente. Per una discussione completa su tutti i comandi disponibili, guarda loader(8).

autoboot secondi

Procede all'avvio del kernel se non viene interrotto nell'intervallo di tempo specificato, in secondi. Mostra un conto alla rovescia, e l'intervallo predefinito è di 10 secondi.

boot [-opzioni] [nomekernel]

Procede immediatamente all'avvio del kernel, con le opzioni date, se ce ne sono, e con il nome del kernel specificato, se fornito.

boot-conf

Va avanti con la stessa configurazione automatica di moduli basati sulle variabili come accade al boot. Questo ha senso solo se prima usi unload, e cambi delle variabili, in generale kernel.

help [argomento]

Mostra un messaggio d'aiuto letto da /boot/loader.help. Se l'argomento dato è index, allora elenca tutti gli argomenti disponibili.

include nomefile ...

Processa il file specificato. Il file viene letto, e interpretato riga per riga. Un errore blocca il comando include immediatamente.

load [-t tipo] nomefile

Carica il kernel, il modulo del kernel, o il file del tipo specificato, con il nome specificato. Ogni argomento dopo nomefile viene passato al file.

ls [-l] [percorso]

Mostra un elenco dei file nel percorso dato, o nella directory root, se non ne viene specificato uno. Se è specificato -l, verranno mostrate anche le dimensioni dei file.

lsdev [-v]

Elenca tutti i dispositivi dai quali potrebbe essere possibile caricare moduli. Se viene specificata l'opzione -v, verranno stampati dettagli maggiori.

lsmod [-v]

Mostra i moduli caricati. Se viene specificato -v, verranno stampati dettagli maggiori.

more nomefile

Mostra i file specificati, con una pausa ad ogni pagina visualizzata.

reboot

Riavvia immediatamente il sistema.

set variabile, set variabile=valore

Imposta le variabili di ambiente del loader.

unload

Rimuove tutti i moduli caricati.


12.3.3.3 Esempi sul Loader

Qui ci sono alcuni esempi pratici sull'uso del loader:

  • Per avviare semplicemente il vostro kernel abituale, ma in modalità singolo utente:

    boot -s
    
  • Per scaricare dalla memoria i moduli e il kernel usuali, e poi caricare solo il vecchio (o un altro) kernel:

    unload
    load kernel.old
    

    Puoi usare kernel.GENERIC per riferirti al kernel generico che viene fornito nel disco d'installazione, o kernel.old per riferirti al kernel installato precedentemente (quando hai aggiornato o configurato il kernel, ad esempio).

    Nota: Usa il comando seguente per caricare i tuoi soliti moduli con un altro kernel:

    unload
    set kernel="kernel.old"
    boot-conf
    
  • Per caricare uno script di configurazione del kernel (uno script automatizzato che faccia le cose che faresti tu normalmente configurando il kernel all'avvio):

    load -t userconfig_script /boot/kernel.conf
    

12.4 Interazione con il Kernel Durante l'Avvio

Una volta che il kernel è stato caricato dal loader (come di consueto) o da boot2 (scavalcando il loader), esso esamina i suoi flag di avvio, se ce ne sono, e aggiusta il suo comportamento come necessario.


12.4.1 I Flag di Avvio del Kernel

Qui ci sono alcuni dei più comuni flag di avvio:

-a

durante l'inizializzazione del kernel, chiede il dispositivo da montare come file system di root.

-C

avvia da CDROM.

-c

esegue UserConfig, il programma di configurazione del kernel all'avvio

-s

avvia in modalità singolo utente

-v

aumenta la verbosità durante l'avvio del kernel

Nota: Ci sono altri flag di avvio, leggi boot(8) per maggiori informazioni su di essi.


12.5 Device Hints

Contributo di Tom Rhodes.

Nota: Questa è una caratteristica di FreeBSD 5.0 e successive che non esiste nelle versioni precedenti.

Durante l'avvio iniziale del sistema, il boot loader(8) leggerà il file device.hints(5). Questo file contiene informazioni di avvio per il kernel dette variabili, e talvolta indicate come ``device hints'', suggerimenti per i dispositivi. Questi ``device hints'' vengono usati dai driver per la configurazione delle varie periferiche.

I device hints possono essere specificati anche nel prompt del terzo stadio del boot loader. Le variabili possono essere aggiunte usando il comando set, rimosse con unset, e visualizzate con show. Inoltre, in questo modo, le variabili impostate nel file /boot/device.hints possono essere scavalcate. I device hint inseriti in questo modo non sono permanenti e verranno dimenticati al riavvio seguente.

Una volta che il sistema è stato avviato, può essere usato il comando kenv(1) per mostrare tutte le variabili.

La sintassi per il file /boot/device.hints è una variabile per riga, usando il solito cancelletto ``#'' per indicare i commenti. Le linee sono costruite come segue:

hint.driver.unit.keyword="valore"

La sintassi nel terzo stadio del boot loader è:

set hint.driver.unit.keyword=valore

driver è il nome del driver per il dispositivo, unit è il numero di unità per quel driver, e keyword è la parola chiave per quell'hint. La parola chiave può essere:

  • at: specifica il bus sul quale è collegato il dispositivo.

  • port: specifica l'indirizzo iniziale di I/O che deve essere usato.

  • irq: specifica il numero di interrupt request che deve essere usato.

  • drq: specifica il numero del canale DMA.

  • maddr: specifica l'indirizzo di memoria fisico occupato dal dispositivo.

  • flags: imposta vari bit di flag per il dispositivo.

  • disabled: se impostato a ``1'' il dispositivo è disabilitato.

I driver possono accettare (o richiedere) più hints di quelli elencati qui, si raccomanda quindi di verificare la loro pagina di manuale. Per maggiori informazioni, consulta le pagine man device.hints(5), kenv(1), loader.conf(5), e loader(8).


12.6 Init: Inizializzazione del Controllo dei Processi

Una volta che il kernel ha finito di avviarsi, trasferisce il controllo al processo utente init, che si trova in /sbin/init, o al programma specificato nella variabile init_path nel loader.


12.6.1 Sequenza di Riavvio Automatica

La sequenza di riavvio automatica assicura che i file system disponibili sul sistema siano consistenti. Se qualcuno non lo è, e fsck(8) non può risolvere le inconsistenze, init(8) abbandona il sistema in modalità singolo utente per permettere all'amministratore di sistema di occuparsi dei problemi direttamente.


12.6.2 Modalità Singolo Utente

Questa modalità può essere raggiunta attraverso la sequenza di riavvio automatica, o tramite l'avvio da parte dell'utente con l'opzione -s o impostando la variabile boot_single nel loader.

Si può arrivare ad essa anche richiamando shutdown(8) senza l'opzione per il riavvio (-r) o per l'arresto (-h), dalla modalità multi utente.

Se la console del sistema è settata come insecure in /etc/ttys, allora il sistema richiede la password di root prima di entrare in modalità singolo utente.

Esempio 12-3. Una Console Insicura in /etc/ttys

# name  getty                           type    status          comments
#
# Se la console è settata come  "insecure", allora init chiederà
# la password di root per andare in modalità singolo utente .
console none                            unknown off insecure

Nota: Avere una console insecure significa ritenere insicura la sicurezza fisica della console, ed assicurarsi che solo chi conosce la password di root possa usare la modalità singolo utente, non significa voler eseguire la console in maniera insicura. Dunque, se vuoi avere sicurezza, scegli insecure, non secure.


12.6.3 Modalità Multi Utente

Se init(8) ritiene che i tuoi file system siano in ordine, o quando l'utente ha terminato il lavoro in modalità singolo utente, il sistema entra in modalità multi utente, nella quale inizia la configurazione delle risorse del sistema.


12.6.3.1 Configurazione delle Risorse (rc)

Il sistema di configurazione delle risorse legge i valori predefiniti della configurazione da /etc/defaults/rc.conf, e i dettagli specifici del sistema da /etc/rc.conf, e poi procede al montaggio dei file system del sistema elencati in /etc/fstab, avvia i servizi di rete, avvia vari demoni di sistema, ed infine esegue gli script di avvio dei pacchetti installati localmente.

La pagina man di rc(8) è un buon riferimento per la configurazione delle risorse del sistema, poiché esamina gli script stessi.


12.7 Sequenza di Spegnimento

Al momento di uno spegnimento controllato, tramite shutdown(8), init(8) cercherà di eseguire lo script /etc/rc.shutdown, e poi procederà ad inviare a tutti i processi il segnale TERM, e successivamente il segnale KILL a quelli che non sono terminati in tempo.

Per spegnere una macchina FreeBSD su architetture e sistemi che supportano la gestione dell'energia, usa semplicemente il comando shutdown -p now per disattivare immediatamente l'alimentazione. Per riavviare semplicemente un sistema FreeBSD, usa solo shutdown -r now. Avrai bisogno di essere root o un membro del gruppo operator per eseguire shutdown(8). Possono essere usati anche i comandi halt(8) e reboot(8), fai riferimento alle loro pagine di man ed a quella di shutdown(8) per maggiori informazioni.

Nota: La gestione dell'energia richiede il supporto acpi(4) nel kernel o caricato come modulo in FreeBSD 5.X e il supporto apm(4) in FreeBSD 4.X.


Capitolo 13 Gestione degli Utenti e degli Account di Base

13.1 Sinossi

Traduzione in corso


13.2 Introduction

Traduzione in corso


13.3 The Superuser Account

Traduzione in corso


13.4 System Accounts

Traduzione in corso


13.5 User Accounts

Traduzione in corso


13.6 Modifying Accounts

Traduzione in corso


13.7 Limiting Users

Traduzione in corso


13.8 Personalizing Users

Traduzione in corso


13.9 Groups

Traduzione in corso


Capitolo 14 Sicurezza

14.1 Sinossi

Questo capitolo dà una introduzione di base sui concetti dei sistemi di sicurezza, alcune buone regole di comportamento e alcuni argomenti avanzati per FreeBSD. Molti degli argomenti qua tratati possono essere applicati anche ai sistemi e alla sicurezza su Internet in generale. Internet non è più il luogo ``amichevole'' dove ognuno vuole essere il tuo amichevole vicino. Mettere in sicurezza il tuo ssitema è un imperativo per la protezione dei tuoi dati, della tua proprietà intelletuale, il tuo tempo e molto altro dalla mano di hackere simili.

FreeBSD dà un insieme di utility e di meccanismi per assicurare l'integrità e la sicurezza del tuo sistema e della tua rete.

Dopo la lettura di questo capitolo, conoscerai:

  • Concetti di base dei sistemi di sicurezza, rispetto a FreeBSD.

  • Vari meccanismi di crittografia disponibili in FreeBSD, come DES e MD5.

  • Come configurare l'autenticazione OTP (password a singolo uso).

  • Come configurare KerberosIV su release FreeBSD precedenti alla 5.0.

  • Come configurare Kerberos5 su FreeBSD 5.0 o successive.

  • Come creare firewall usando IPFW.

  • Come configurare IPsec e creare una VPN tra macchine FreeBSD/Windows.

  • Come configurare e usare OpenSSH, l'implementaizone SSH usata da FreeBSD.

  • Come configurare e caricare i moduli aggiuntivi per il controllo degli accessi usando il Framework MAC di TrustedBSD.

  • Cosa sono le ACL del file system e come usarle.

  • Come utilizzare le pubblicazioni sugli avvisi di sicurezza di FreeBSD.

Prima di leggere questo capitolo dovresti:

  • Capire concetti base di FreeBSD e Internet.


14.2 Introduzione

La sicurezza è una funzione che inizia e finisce con l'amministratore di sistema. Nonostante ogni sistema multi-utente UNIX BSD abbia della sicurezza insita, il lavoro di costruire e mantenere meccanismi di sicurezza aggiuntivi in modo da mantenere ``onesti'' gli utenti è probabilmente uno dei maggiori lavori di un amministratore di sistema. La macchine sono sicure solo quanto le si rende e le richieste di sicurezza si scontrano sempre con l'umana necessità per la comodità. I sistemi UNIX, in generale, sono capaci di eseguire un gran numero di processi contemporanei e ognuno di questi processi opera come server -- nel senso che entità esterne possono connettersi e parlarci. Mentre i mini e i mainframe di ieri diventano i desktop di oggi, mentre i computer diventano interconnessi e internet-connessim, la sicurezza diventa un problema sempre maggiore.

Il modo migliore per implementare la sicurezza è con un approccio ``a cipolla''. In pratica, quello che vuoi fare è creare tanti livelli di sicurezza quanto è conveniente e poi tenere sotto controllo il sistema per vedere eventuali intrusioni. Non vuoi esagerare nella sicurezza o interferirai con l'individuazione e quest'ultima è una delle parti più importanti di ogni meccanismo di sicurezza. Per esempio, ha poco senso imopstare il flag schg (vedi chflags(1)) su ogni binario di sistema dato che questo potrà sì proteggere temporaneamente i binari, ma evita che l'attaccante faccia una modifica facilmente individuabile e potrebbe far in modo che il tuo meccanismo di sicurezza non individui l'attaccante del tutto.

La sicurezza di un sistema riguarda anche il gestire varie forme di attacco, compresi attacchi che tentano di bloccare, o comunque rendere inusabile, il sistema, anche se non necessariamente cercano di compromettere l'account di root root (``rompere root''). I problemi di sicurezza possono essere suddivisi in svariate categorie:

  1. Attacchi che limitano la disponibilità dei servizi (``Denial of service'' o, in breve, DoS).

  2. Compromissione degli account utente.

  3. Compromissione di root tramite server accessibili.

  4. Compromissione di root tramite gli account utente.

  5. Crazione di backdoor (letteralmente ``porte sul retro'', ovvero accessi secondari personalizzati).

Un attacco DoS è un'azione che priva la macchina di risorse. Tipicamente un attacco DoS è un meccanismo a forza-bruta che tenta di bloccare e comunque rendere inusabile una macchina travolgendo di richieste i server che rende disponibili o direttamente lo stack di rete. Alcuni attacchi DoS tentano di trarre vantaggio da bug nello stack di rete per bloccare la macchina con un singolo pacchetto. Questo genere di attacchi può evitato solo mettendo a posto il bug direttamente nel kernel. Gli attacchi sui server possono spesso essere evitati specificando con attenzione dei limiti sul carico che i server stessi devono accettare in caso che il sistema lavori in condizioni avverse. Gli attacchi a forza-bruta generati da un'intera rete di attaccanti sono più difficili da gestire. Ad esempio un attacco con pacchetti in spoof (ovvero con il campo mittente falsato) è praticamente impossibile da fermare, a meno di staccare del tutto il sistema da Internet. Potrà anche non fermare la tua macchina, ma sicuramente può saturare la tua connessione Internet.

La compromissione di un account utente è ancora più comune di un attacco DoS. Molti sysadmin usano ancora i server standard telnetd, rlogind, rshd e ftpd sulle loro macchine. Questi programmi, normalmente, non usano connessioni crittate. Il risultato è che quando hai una base utenti di medie dimensioni, uno o più degli utenti connessi al tuo sistema da remoto (il modo più comune e conveniente per collegarsi a un sisetma) avrà una password compromessa da un'operaizone di sniffing. Gli amministratori di sistema attenti controllano i registri degli accessi remoto cercando indirizzi sospetti anche tra gli accessi permessi.

Bisogna sempre dare per scontato che una volta che un attaccante ha accesso ad un account utente, può rompere anche root. In realtà, comunque, in un sistema ben configurato e mantenuto, questo non è necessariamente vero. La distinzione è importante perché senza accesso a root l'attaccante ni genere non può nascondere le proprie tracce e può, alla peggio, rovinare i files dell'utente o mandaer la macchina in crash. La compromissione degli account utente è molto comune dato che gli utenti tendono a non prendere precauzioni tanto quanto i sysadmin.

Gli amministratori di sistema devono ricordare che su una macchina ci sono potenzialmente molti modi per rompere root. L'attaccante potrebbe conoscere la password di root, potrebbe trovare un bug in un programma server in esecuzione con diritti di root e sfruttarlo per entrare da remoto, oppure una volta ottenuto un account utente potrebbe fare lo stesso con un bug in un programma con suid root. If an attacker has found a way to break root on a machine, the attacker may not have a need to install a backdoor. Many of the root holes found and closed to date involve a considerable amount of work by the attacker to cleanup after himself, so most attackers install backdoors. A backdoor provides the attacker with a way to easily regain root access to the system, but it also gives the smart system administrator a convenient way to detect the intrusion. Making it impossible for an attacker to install a backdoor may actually be detrimental to your security, because it will not close off the hole the attacker found to break in the first place.

Security remedies should always be implemented with a multi-layered ``onion peel'' approach and can be categorized as follows:

  1. Securing root and staff accounts.

  2. Securing root -- root-run servers and suid/sgid binaries.

  3. Securing user accounts.

  4. Securing the password file.

  5. Securing the kernel core, raw devices, and filesystems.

  6. Quick detection of inappropriate changes made to the system.

  7. Paranoia.

The next section of this chapter will cover the above bullet items in greater depth.


14.3 Securing FreeBSD

Traduzione in corso


14.4 DES, MD5, and Crypt

Traduzione in corso


14.5 S/Key

Traduzione in corso


14.6 Kerberos

Traduzione in corso


14.7 Firewalls

Traduzione in corso


14.8 OpenSSL

Traduzione in corso


14.9 IPsec

Traduzione in corso


14.10 OpenSSH

14.10.1 SSH Tunneling

Traduzione in corso


Capitolo 15 Mandatory Access Control

15.1 Sinossi

Traduzione in corso


15.2 Key Terms in this Chapter

Traduzione in corso


15.3 Explanation of MAC

Traduzione in corso


15.4 Understanding MAC Labels

Traduzione in corso


15.5 Module Configuration

Traduzione in corso


15.6 The MAC bsdextended Module

Traduzione in corso


15.7 The MAC ifoff Module

Traduzione in corso


15.8 The MAC portacl Module

Traduzione in corso


15.10 The MAC partition Module

Traduzione in corso


15.12 The MAC Biba Module

Traduzione in corso


15.13 The MAC LOMAC Module

Traduzione in corso


15.16 An Example of a MAC Sandbox

Traduzione in corso


Capitolo 16 Archiviazione dei Dati

16.1 Sinossi

Traduzione in corso


16.2 Device Names

Traduzione in corso


16.3 Adding Disks

Traduzione in corso


16.4 RAID

Traduzione in corso


16.8 Backups to Floppies

Traduzione in corso


16.9 Backup Basics

Traduzione in corso


16.11 File System Snapshots

Traduzione in corso


16.12 File System Quotas

Traduzione in corso


Capitolo 17 Il Gestore di Volumi Vinum

Originariamente scritto da Greg Lehey.

17.1 Sinossi

Qualunque siano i dischi che hai, ci sono sempre dei problemi potenziali:

  • Potrebbero essere troppo piccoli.

  • Potrebbero essere troppo lenti.

  • Potrebbero essere troppo inaffidabili.

Un modo in cui alcuni utenti salvaguardano sè stessi contro questi problemi è attraverso l'uso di dischi multipli, e talvolta ridondanti.

In aggiunta a supportare diverse schede e controller per sistemi RAID hardware, il sistema FreeBSD base include il gestore di volumi Vinum, un driver di dispositivo a blocchi che implementa dischi virtuali.

Vinum fornisce più flessibilità, prestazioni, e affidabilità rispetto all'archiviazione su disco tradizionale, e implementa i modelli RAID-0, RAID-1, e RAID-5 sia singolarmente che in combinazione.

Questo capitolo fornisce una panoramica sui poteziali problemi dell'archiviazione su disco tradizionale, e un'introduzione al gestore di volumi Vinum.


17.2 Dischi Troppo Piccoli

Vinum è un Volume Manager, ovvero un driver virtuale di disco che si occupa dei tre problemi indicati nella sinossi. Diamo un'occhiata in dettaglio a questi problemi, per cui sono state proposte e implementate varie soluzioni.

I dischi stanno diventando sempre più grandi, ma questo è vero anche le necessità di spazio per i dati. Spesso sentirai il bisogno di avere un file system più grande dei dischi che possiedi. Effettivamente questo problema non è così grave come lo era dieci anni fa, ma è sempre presente. Alcuni sistemi risolvono la questione creando un dispositivo astratto che ripartisce i suoi dati su vari dischi.


17.3 Colli di Bottiglia nell'Accesso

I moderni sistemi hanno frequentemente la necessità di accedere ai dati in modo concorrente. Ad esempio, un grande server FTP o HTTP può avere migliaia di sessioni concorrenti e molteplici connessioni da 100 Mbit/s verso il mondo esterno, ben oltre il transfer rate (velocità di trasferimento) che la maggior parte dei dischi può sostenere.

I dischi odierni possono trasferire sequenzialmente dati fino a 70 MB/s, ma questo valore ha poca importanza in un ambiente dove molti processi indipendenti accedono al disco, in quanto raggiungerebbero solo una frazione di quella velocità. In questi casi è più interessante vedere il problema dal punto di vista del sottosistema dischi: il parametro importante è il carico che il trasferimento pone sul sottosistema, in altre parole il tempo per cui il trasferimento occupa i dischi necessari per lo stesso.

In ogni trasferimento da disco il drive deve prima posizionare le testine, poi aspettare che il primo settore passi sotto la testina di lettura e solo dopo può effettuare il trasferimento. Queste azioni possono essere considerate atomiche: non ha alcun senso interromperle.

Considera un tipico trasferimento di circa 10 kB: l'attuale generazione di dischi ad alte prestazioni può posizionare le testine in circa 3,5 ms. I dischi più veloci ruotano a 15.000 rpm, quindi la latenza media rotazionale (mezzo giro) è di 2 ms. A 70 MB/s, il trasferimento in sé occupa circa 150 μs, quasi nulla in confronto al tempo di posizionamento. In questo caso il transfer rate effettivo può scendere fino a poco oltre 1 MB/s e questo è charamente molto dipendente dalla dimensione del trasferimento.

La tradizionale e ovvia soluzione a questo collo di bottiglia è ``più assi'': invece di usare un grande disco si usano molti piccoli dischi con la stessa dimensione totale. Ogni disco è capace di posizionarsi e trasferire dati indipendentemente quindi la velocità effettiva aumenta di un fattore vicino al numero di dischi usati.

L'esatto fattore di miglioramento è, ovviamente, più piccolo del numero di dischi: benché ogni disco sia capace di trasferire in parallelo non c'è modo di assicurare che le richieste siano distribuite uniformemente tra tutti i dischi. Inevitabilmente il carico su uno dei dischi è più alto che sugli altri.

L'uniformità della distribuzione del carico sui dischi è fortemente dipendente dal modo in cui i dati sono condivisi tra i dischi stessi. Nella seguente discussione è conveniente pensare allo spazio di immagazzinamento come se fosse diviso in un gran numero di settori identificati da un indirizzo numerico, come pagine in un libro. Il metodo più ovvio è di dividere il disco virtuale in gruppi di settori consecutivi della dimensione dei dischi fisici e immagazzinarli in questa maniera, come strappare un grosso libro in piccole sezioni. Questo metodo è chiamato concatenazione e ha il vantaggio di non avere particolari richieste sulla dimensione degli specifici dischi. Funziona bene quando l'accesso al disco virtuale è ben ripartito tra tutto il suo spazio di indirizzamento. Quando l'accesso è concentrato in una piccola area il miglioramento è meno marcato. La Figura 17-1 illustra la sequenza in cui le unità di immagazzinamento sono allocate nell'organizzazione concatenata.

Figura 17-1. Organizzazione Concatenata



Un metodo alternativo è dividere lo spazio in più piccole componenti di egual dimensione e immagazzinarle sequenzialente su differenti dispositivi. Per esempio i primi 256 settori potrebbero essere immagazzinati sul primo disco, i seguenti 256 settori sul disco seguente e così via. Dopo aver immagazzinato i dati sull'ultimo disco il processo si ripete finché i dischi non sono pieni. Questo mappamento è chiamato striping (letteralmente "a bande") o RAID-0 [7]. Lo striping richiede qualche sforzo aggiuntivo per localizzare i dati e può causare carico di I/O aggiuntivo quando il trasferimento è distribuito tra vari dischi, ma aiuta il carico a essere ben distribuito tra i vari dischi. La Figura 17-2 illustra la sequenza in cui i blocchi di dati sono allocati nell'organizzazione in striping.

Figura 17-2. Organizzazione in Striping




17.4 Integrità dei Dati

L'ultimo problema dei dischi attuali è che sono inaffidabili. Benché la loro affidabilità sia aumentata tremendamente durante gli ultimi anni sono tuttora il componente di un server che ha la maggior probabilità di rompersi. Quando succede i risultati possono essere catastrofici: rimpiazzare un disco rotto e riempirlo dei dati originari può richiedere giorni.

Il metodo tradizionale per affrontare questo problema si chiama mirroring (letteralmente "specchiatura") e consiste nel tenere due copie dei dati su hardware fisici differenti. Con l'avvento dei livelli RAID questa tecnica è stata chiamata RAID di livello 1 o RAID-1. Ogni scrittura su disco scrive in entrambe le locazioni; una lettura può essere soddisfatta da entrambi quindi se un disco si rompe i dati sono sempre disponibili sull'altro disco.

Il mirroring ha due problemi:

  • Il prezzo. Richiede il doppio dello spazio di immagazzinamento delle soluzioni non ridondanti.

  • L'impatto sulle prestazioni. La scrittura deve essere compiuta su entrambi i dischi quindi la banda occupata raddoppia. Le letture non soffrono di problemi sulle prestazioni: possono perfino essere più veloci.

Una soluzione alternativa è la parità, implementata nel RAID di livello 2, 3, 4 e 5. Di questi, il RAID-5 è il più interessante. La sua implementazione in Vinum è una variante dell'organizzazione in striping che dedica un blocco di ogni banda alla parità degli altri blocchi. Per come è implementato in Vinum, ogni blocco RAID-5 è simile a un blocco in striping, con la differenza che implementa il RAID-5 includendo un blocco di parità per ogni banda. Come richiesto dal RAID-5 la locazione di questi blocchi di parità cambia da ogni banda alla successiva. I numeri nei blocchi dati indicano il numero dei blocchi relativi.

Figura 17-3. Organizzazione RAID-5



Comparandolo al mirroring, il RAID-5 ha il vantaggio di richiedere molto meno spazio di immagazzinamento. La velocità di lettura è simile all'organizzazione in striping, ma in scrittura l'accesso è significativamente più lento, circa il 25% della performance di lettura. Se uno dei dischi si rompe l'aggregato continua a lavorare con performance peggiorate: la lettura da uno dei dischi rimanenti continua normalmente, ma la lettura dal disco rotto è ricalcolata dai corrispondenti blocchi dei dischi rimanenti.


17.5 Oggetti Vinum

Per risolvere questi problemi Vinum implementa una categoria di oggetti a quattro livelli:

  • L'oggetto più visibile è il disco virtuale, chiamato volume. I volumi hanno essenzialmente le stesse proprietà di un disco UNIX, benché ci sia qualche differenza minore. Non hanno limiti di dimensione.

  • I volumi sono composti da plex, ognuno dei quali rappresenta il completo spazio di indirizzamento del volume. È quindi questo il livello della gerarchia che gestisce la ridondanza dei dati. Pensa ai plex come a singoli dischi collegati tra loro in mirroring, ognuno contenete gli stessi dati.

  • Dato che Vinum vive all'interno del framework UNIX di immagazzinamento dei dati sarebbe possibile utilizzare le partizioni UNIX come blocchi basilari per costruire i plex multidisco, ma questo approccio sarebbe in effetti troppo poco flessibile: i dischi UNIX possono avere solo un limitato numero di partizioni; al contrario Vinum suddivide le singole partizioni UNIX (drive, ovvero dischi) in aree contigue chiamate subdisks (sottodischi), che solo a loro volta utilizzati come elementi per costruire i plex.

  • I sottodischi risiedono su drive Vinum, che attualmente sono partizioni UNIX. I drive Vinum possono contenere qualsiasi quantità di sottodischi. Con l'eccezione di una piccola area all'inizio del drive, che è usata per immagazzinare informazioni sulla configurazione e sullo stato, l'intero drive è disponibile per l'ìimmagazzinamento dei dati.

La sezione seguente descrive come gli oggetti sopra discussi possano dare le funzionalità richieste.


17.5.1 Considerazioni sulle Dimensioni dei Volumi

I plex possono contenere molteplici sottodischi distribuiti tra tutti i drive presenti nella configurazione di Vinum, questo permette alla dimensione dei plex, e quindi anche dei volumi, di non essere limitata dalla dimensione dei singoli dischi.


17.5.2 Immagazzinamento Ridondante dei Dati

Vinum implementa il mirroring collegando più plex allo stesso volume, ogni plex contiene la rappresentazione di tutti i dati del volume. Un volume può contenere da uno ad otto plex.

Nonostante un plex rappresenti i dati di un volume per intero, è possibile che parti di questa rappresentazione vengano a mancare o per scelta (non definendo dei sottodischi per alcune parti del plex) o per accidente (come risultato della rottura del disco che le conteneva). Finché almeno un plex contiene i dati di tutto lo spazio d'indirizzamento del volume, il volume stesso è completamente funzionale.


17.5.3 Considerazioni sulle Prestazioni

Vinum implementa sia la concatenazione che lo striping al livello di plex:

  • Un plex concatenato usea lo spazio di indirizzamento di ogni sottodisco a turno.

  • Un plex in striping suddivide i dati tra ogni sottodisco. I sottodischi devono tutti avere la stessa dimensione e devono essere presenti almeno due sottodischi perché esista differenza da un plex concatenato.


17.5.4 Quale Organizzazione per i Plex?

La versione di Vinum distribuita con FreeBSD 5.3 implementa due tipi di plex:

  • I plex concatenati, che sono i più flessibili: possono contenere qualsiasi numero di sottodischi e questi possono avere qualsiasi dimensione. Il plex può essere esteso aggiungendo sottodischi. Richiede meno tempo di CPU di un plex in striping, benché la differenza in carico di CPU non sia misurabile. D'altro canto sono più suscettibili agli hot spot (letteralmente ``zona calda''): casi in cui un disco è molto attivo mentre gli altri sono fermi.

  • Il più grande vantaggio dei plex in striping (RAID-0) è la loro capacità di ridurre gli hot spot: scegliendo una dimensione di striping ottimale (circa 256 kB) si può ridistribuire il carico sui drive. Gli svantaggi di questo approccio sono codice più complesso e restrizioni sui sottodischi: devono essere tutti della stessa dimensione, inoltre estendere il plex aggiungendo sottodischi è così complicato che attualmente Vinum non lo implementa. Vinum aggiunge anche un'ulteriore restrizione elementare: un plex in striping deve contenere almeno due sottodischi, dato che sarebbe altrimenti indistinguibile da un plex concatenato.

La Tabella 17-1 riassume vantaggi e svantaggi di ogni tipo di organizzazione dei plex.

Tabella 17-1. Organizzazione dei Plex Vinum

Tipo di plex Sottodischi minimi Sottodischi aggiungibili Dimensioni forzatamente uguali Applicazione
concatenato 1 no Immagazzinamento di grandi moli di dati con la massima flessibilità e prestazioni moderate
striping 2 no Alte prestazioni in casi di accessi altamente concorrenti

17.6 Alcuni Esempi

Vinum mantiene un database della configurazione che descrive gli oggetti del sistema conosciuti. Inizialmente l'utente crea il database della configurazione da uno o più file di configurazione, con l'aiuto del programma vinum(8). Vinum immagazzina una copia del database di configurazione in ogni slice del disco (che Vinum chiama device, ovvero ``dispositivo'') sotto il suo controllo. Questo database è aggiornato a ogni cambi di stato in modo che un riavvio possa recuperare accuratamente lo stato di ogni oggetto Vinum.


17.6.1 Il File di Configurazione

Il file di configurazione descrive singoli oggetti Vinum. La definizione di un semplice volume potrebbe essere:

    drive a device /dev/da3h
    volume myvol
      plex org concat
        sd length 512m drive a

Questo file descrive quattro oggetti Vinum:

  • La linea drive descrive la partizione del disco (drive) e la sua locazione relativa all'hardware sottostante. Gli viene assegnato il nome simbolico a. Questa separazione dei nomi simbolici dai nomi di dispositivo permette di muovere i dischi da una locazione ad un'altra senza confusione.

  • La linea volume descrive un volume. L'unico attributo richiesto è il nome, in questo caso myvol.

  • La linea plex definisce un plex. L'unico parametro richiesto è il tipo di organizzazione, in questo caso concat. Non è necessario un nome: il sistema genera un nome automaticamente a partire dal nome del volume, aggiungendo un suffisso .px, dove x indica il numero del plex nel volume. Il plex verrà quindi chiamato myvol.p0.

  • La linea sd descrive un sottodisco. Le spefiche minime sono il nome del drive su cui immagazzinarlo e la lunghezza del sottodisco. Come per i plex non è necessario un nome: il sistema assegna automaticamente nomi derivati dal nome del plex, agigungendo il suffisso .sx, dove x indica il numero del sottdisco nel plex, quindi Vinum darà a questo sottodisco il nome di myvol.p0.s0.

Dopo aver elaborato questo file, vinum(8) produce il seguente output:

      # vinum -> create config1
      Configuration summary
      Drives:         1 (4 configured)
      Volumes:        1 (4 configured)
      Plexes:         1 (8 configured)
      Subdisks:       1 (16 configured)

    D a                     State: up       Device /dev/da3h        Avail: 2061/2573 MB (80%)

    V myvol                 State: up       Plexes:       1 Size:        512 MB

    P myvol.p0            C State: up       Subdisks:     1 Size:        512 MB

    S myvol.p0.s0           State: up       PO:        0  B Size:        512 MB

Questo output mostra il formato di elenco breve di vinum(8), che è rappresentato graficamente nella Figura 17-4.

Figura 17-4. Un Semplice Volume Vinum



Questa figura e quelle che seguono rappresentano un volume contenente dei plex che a loro volta contengono dei sottodischi. In questo semplice esempio il volume contiene un plex e il plex contiene un sottodisco.

Questo particolare volume non ha specifici vantaggi su una convenzionale partizione di disco. Contiene un singolo plex, quindi non è ridondante. Il plex contiene un solo sottodisco, quindi non c'è differenza nell'immagazzinamento dei dati. Le sezioni seguenti mostrano vari metodi di configurazione più interessanti.


17.6.2 Aumentare la Resistenza alle Rotture: il Mirroring

Il mirroring può aumentare, in un volume, la resistenza alle rotture. Quando si definisce un volume in mirroring è importante assicurarsi che i sottodischi di ogni plex siano su dischi differenti, in modo che la rottura di un drive non blocchi entrambi i plex. La seguente configurazione mostra un volume in mirroring:

    drive b device /dev/da4h
    volume mirror
      plex org concat
        sd length 512m drive a
          plex org concat
            sd length 512m drive b

In questo esempio non è necessario specificare nuovamente la definizione del drivea, dato che Vinum mantiene traccia di tutti gli oggetti nel suo database di configurazione. Dopo aver elaborato questa definizione, la configurazione appare così:

    Drives:         2 (4 configured)
    Volumes:        2 (4 configured)
    Plexes:         3 (8 configured)
    Subdisks:       3 (16 configured)

    D a                     State: up       Device /dev/da3h        Avail: 1549/2573 MB (60%)
    D b                     State: up       Device /dev/da4h        Avail: 2061/2573 MB (80%)

    V myvol                 State: up       Plexes:       1 Size:        512 MB
    V mirror                State: up       Plexes:       2 Size:        512 MB

    P myvol.p0            C State: up       Subdisks:     1 Size:        512 MB
    P mirror.p0           C State: up       Subdisks:     1 Size:        512 MB
    P mirror.p1           C State: initializing     Subdisks:     1 Size:        512 MB

    S myvol.p0.s0           State: up       PO:        0  B Size:        512 MB
    S mirror.p0.s0          State: up       PO:        0  B Size:        512 MB
    S mirror.p1.s0          State: empty    PO:        0  B Size:        512 MB

Figura 17-5 mostra la struttura graficamente.

Figura 17-5. Un Volume Vinum in Mirroring



In questo esempio ogni plex contiene l'intero spazio di indirizzamento di 512 MB. Come nel precedente esempio ogni plex contiene un solo sottodisco.


17.6.3 Ottimizzazione delle Prestazioni

Il volume in mirroring dell'esempio precedente è più resistente alle rotture di un volume non in mirroring, ma le sue prestazioni sono inferiori: ogni scrittura sul volume richiede una scrittura su ognuno dei drive, utilizzando quindi una maggior frazione della banda passante totale dei dischi. Considerazioni sulle prestazioni portano ad un differente approccio: al posto del mirroring, i dati vengono posti su più dischi possibile utilizzando lo striping. La seguente configruazione mostra un volume con un plex in striping su quattro dischi:

        drive c device /dev/da5h
        drive d device /dev/da6h
        volume stripe
        plex org striped 512k
          sd length 128m drive a
          sd length 128m drive b
          sd length 128m drive c
          sd length 128m drive d

Come prima non è necessario definire i drive che Vinum già conosce. Dopo aver elaborato queste definizioni la configurazione appare così:

    Drives:         4 (4 configured)
    Volumes:        3 (4 configured)
    Plexes:         4 (8 configured)
    Subdisks:       7 (16 configured)

    D a                     State: up       Device /dev/da3h        Avail: 1421/2573 MB (55%)
    D b                     State: up       Device /dev/da4h        Avail: 1933/2573 MB (75%)
    D c                     State: up       Device /dev/da5h        Avail: 2445/2573 MB (95%)
    D d                     State: up       Device /dev/da6h        Avail: 2445/2573 MB (95%)

    V myvol                 State: up       Plexes:       1 Size:        512 MB
    V mirror                State: up       Plexes:       2 Size:        512 MB
    V striped               State: up       Plexes:       1 Size:        512 MB

    P myvol.p0            C State: up       Subdisks:     1 Size:        512 MB
    P mirror.p0           C State: up       Subdisks:     1 Size:        512 MB
    P mirror.p1           C State: initializing     Subdisks:     1 Size:        512 MB
    P striped.p1            State: up       Subdisks:     1 Size:        512 MB

    S myvol.p0.s0           State: up       PO:        0  B Size:        512 MB
    S mirror.p0.s0          State: up       PO:        0  B Size:        512 MB
    S mirror.p1.s0          State: empty    PO:        0  B Size:        512 MB
    S striped.p0.s0         State: up       PO:        0  B Size:        128 MB
    S striped.p0.s1         State: up       PO:      512 kB Size:        128 MB
    S striped.p0.s2         State: up       PO:     1024 kB Size:        128 MB
    S striped.p0.s3         State: up       PO:     1536 kB Size:        128 MB

Figura 17-6. Un Volume Vinum in Striping



Questo volume è rappresentato nella Figura 17-6. L'intensità delle strisce indica la posizione all'interno dello spazio di inidirizzamento del plex: le più chiare all'inizio, le più scure alla fine.


17.6.4 Resistenza alle Rotture e Prestazioni

Con hardware a sufficenza è possibile creare volumi con miglioramenti sia nella resistenza alle rotture che nelle prestazioni, comparati alle normali partizioni UNIX. Una tipica configurazione potrebbe essere:

    volume raid10
      plex org striped 512k
        sd length 102480k drive a
        sd length 102480k drive b
        sd length 102480k drive c
        sd length 102480k drive d
        sd length 102480k drive e
      plex org striped 512k
        sd length 102480k drive c
        sd length 102480k drive d
        sd length 102480k drive e
        sd length 102480k drive a
        sd length 102480k drive b

I sottodischi del secondo plex sono spostati di due posti rispetto a quelli del primo plex: questo aumenta le probabilità che le scritture non utilizzino lo stesso sottodisco anche in caso che un trasferimento utilizzi entrambi i drive.

La Figura 17-7 rappresenta la struttura di questo volume.

Figura 17-7. Un Volume Vinum in Mirroring e Striping




17.7 Nomenclatura degli Oggetti

Come descritto sopra, Vinum assegna nomi di default a plex e sottodischi, benché questi possano essere cambiati. Cambiare il nome di default non è raccomandato: l'esperienza con il VERITAS volume manager, che permette la nomenclatura arbitraria degli oggetti, ha mostrato che questa flessibilità non porta vantaggi significativi e può causare confusione.

I nomi possono contenere ogni carattere non blank (i caratteri di spazio, tabulazione, cambio riga) ma è consigliato limitarsi a lettere, cifre e il carattere di underscore (il carattere di sottolineatura). I nomi di volumi, plex e sottodischi possono essere lunghi fino a 64 caratteri, i nomi di drive invece hanno un massimo di 32 caratteri.

I nomi assegnati agli oggetti Vinum sono nella gerarchia /dev/vinum. La configurazione di Vinum mostrata sopra creerebbe i seguenti dispositivi:

  • I dispositivi di controllo /dev/vinum/control e /dev/vinum/controld, utilizzati rispettivamente da vinum(8) e dal demone Vinum.

  • Voci di dispositivi a blocchi e a caratteri per ogni volume. Questi sono i principali dispositivi utilizzati da Vinum. I dispositivi a blocchi hanno il nome dei relativi volumi, quelli a caratteri, seguendo la tradizione BSD, hanno una lettera r all'inizio del nome. Quindi la configurazione vista sopra genererebbe i dispositivi a blocchi /dev/vinum/myvol, /dev/vinum/mirror, /dev/vinum/striped, /dev/vinum/raid5 e /dev/vinum/raid10, e i dispositivi a caratteri /dev/vinum/rmyvol, /dev/vinum/rmirror, /dev/vinum/rstriped, /dev/vinum/rraid5 e /dev/vinum/rraid10. In questo c'è un ovvio problema: è possibile avere due volumi chiamati r e rr che avrebbero un conflitto nel creare il nodo /dev/vinum/rr: sarebbe il dispositivo a caratteri per il volume r o il dispositivo a blocchi per il volume rr? Attualmente Vinum non si interessa di questo conflitto: il volume definito per primo prende il nome.

  • Una directory /dev/vinum/drive con voci per ogni disco. Queste voci sono in effetti dei collegamenti simbolici ai rispettivi nodi di disco.

  • Una directory /dev/vinum/volume con voci per ogni volume. Contiene sottodirectory per ogni plex, che a loro volta contengono sottodirectory per ogni sottodisco.

  • Le directory /dev/vinum/plex, /dev/vinum/sd e /dev/vinum/rsd contengono i dispositivi a blocchi per ogni plex, dispositivo a blocchi e dispositivo a caratteri per ogni sottodisco rispettivamente.

Ad esempio, considera il seguente file di configurazione:

    drive drive1 device /dev/sd1h
    drive drive2 device /dev/sd2h
    drive drive3 device /dev/sd3h
    drive drive4 device /dev/sd4h
    volume s64 setupstate
      plex org striped 64k
        sd length 100m drive drive1
        sd length 100m drive drive2
        sd length 100m drive drive3
        sd length 100m drive drive4

Dopo aver elaborato questo file, vinum(8) crea la seguente struttura in /dev/vinum:

    brwx------  1 root  wheel   25, 0x40000001 Apr 13 16:46 Control
    brwx------  1 root  wheel   25, 0x40000002 Apr 13 16:46 control
    brwx------  1 root  wheel   25, 0x40000000 Apr 13 16:46 controld
    drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 drive
    drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 plex
    crwxr-xr--  1 root  wheel   91,   2 Apr 13 16:46 rs64
    drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 rsd
    drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 rvol
    brwxr-xr--  1 root  wheel   25,   2 Apr 13 16:46 s64
    drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 sd
    drwxr-xr-x  3 root  wheel       512 Apr 13 16:46 vol

        /dev/vinum/drive:
    total 0
    lrwxr-xr-x  1 root  wheel  9 Apr 13 16:46 drive1 -> /dev/sd1h
    lrwxr-xr-x  1 root  wheel  9 Apr 13 16:46 drive2 -> /dev/sd2h
    lrwxr-xr-x  1 root  wheel  9 Apr 13 16:46 drive3 -> /dev/sd3h
    lrwxr-xr-x  1 root  wheel  9 Apr 13 16:46 drive4 -> /dev/sd4h

    /dev/vinum/plex:
    total 0
    brwxr-xr--  1 root  wheel   25, 0x10000002 Apr 13 16:46 s64.p0

    /dev/vinum/rsd:
    total 0
    crwxr-xr--  1 root  wheel   91, 0x20000002 Apr 13 16:46 s64.p0.s0
    crwxr-xr--  1 root  wheel   91, 0x20100002 Apr 13 16:46 s64.p0.s1
    crwxr-xr--  1 root  wheel   91, 0x20200002 Apr 13 16:46 s64.p0.s2
    crwxr-xr--  1 root  wheel   91, 0x20300002 Apr 13 16:46 s64.p0.s3

    /dev/vinum/rvol:
    total 0
    crwxr-xr--  1 root  wheel   91,   2 Apr 13 16:46 s64

    /dev/vinum/sd:
    total 0
    brwxr-xr--  1 root  wheel   25, 0x20000002 Apr 13 16:46 s64.p0.s0
    brwxr-xr--  1 root  wheel   25, 0x20100002 Apr 13 16:46 s64.p0.s1
    brwxr-xr--  1 root  wheel   25, 0x20200002 Apr 13 16:46 s64.p0.s2
    brwxr-xr--  1 root  wheel   25, 0x20300002 Apr 13 16:46 s64.p0.s3

    /dev/vinum/vol:
    total 1
    brwxr-xr--  1 root  wheel   25,   2 Apr 13 16:46 s64
    drwxr-xr-x  3 root  wheel       512 Apr 13 16:46 s64.plex

    /dev/vinum/vol/s64.plex:
    total 1
    brwxr-xr--  1 root  wheel   25, 0x10000002 Apr 13 16:46 s64.p0
    drwxr-xr-x  2 root  wheel       512 Apr 13 16:46 s64.p0.sd

    /dev/vinum/vol/s64.plex/s64.p0.sd:
    total 0
    brwxr-xr--  1 root  wheel   25, 0x20000002 Apr 13 16:46 s64.p0.s0
    brwxr-xr--  1 root  wheel   25, 0x20100002 Apr 13 16:46 s64.p0.s1
    brwxr-xr--  1 root  wheel   25, 0x20200002 Apr 13 16:46 s64.p0.s2
    brwxr-xr--  1 root  wheel   25, 0x20300002 Apr 13 16:46 s64.p0.s3

Benché sia raccomandato non allocare nomi specifici a plex e sottodischi, i drive di Vinum devono avere un nome. Questo permette di spostare un disco in una differente locazione e continuare a riconoscerlo automaticamente. I nomi di drive possono essere lunghi fino a 32 caratteri.


17.7.1 Creare i File System

I volumi appaiono al sistema identici ai dischi, con un'eccezione. Differentemente dai dischi UNIX, Vinum non partiziona i volumi, che quindi non contengono una tabella delle partizioni. Questo ha reso necessario modificare alcuni programmi di utilità del disco, tra cui newfs(8), che prcedentemente cercava di interpretare l'ultima lettera di un volume Vinum come un identificatore di partizione. Ad esempio un disco potrebbe avere un nome come /dev/ad0a o /dev/da2h. Questi nomi rappresentano la prima partizione (a) del primo (0) disco IDE (ad) e l'ottava partizione (h) del terzo (2) disco SCSI (da), rispettivamente. Al contrario un volume Vinum potrebbe essere chiamato /dev/vinum/concat, un nome che non ha alcuna relazione con nomi di partizione.

Normalmente newfs(8) interpreta il nome del disco e si lamenta se non riesce a comprenderlo. Per esempio:

# newfs /dev/vinum/concat
newfs: /dev/vinum/concat: can't figure out file system partition

Nota: Queste informazioni sono valide solo per versioni di FreeBSD precedenti alla 5.0:

Per poter creare un file system su questo volume usa newfs(8) con l'opzione -v:

# newfs -v /dev/vinum/concat

17.8 Configurare Vinum

Il kernel GENERIC non contiene Vinum. È possibile creare un kernel speciale che lo contenga, ma questo non è raccomandato: il metodo standard per lanciare Vinum è come modulo del kernel (kld). Non è neanche necessario usare kldload(8) per Vinum: quando lanci vinum(8) il programma controlla se il modulo è stato caricato e, in caso non sia caricato, lo carica automaticamente.


17.8.1 Avvio

Vinum immagazzina le informazioni sulla configurazione dei dischi essenzialmente nella stessa forma dei file di configurazione. Quando legge il database di configurazione Vinum riconosce un numero di parole chiave che non sono permesse nei file di configurazione, ad esempio un file di configurazione del disco potrebbe contenere il seguente testo:

volume myvol state up
volume bigraid state down
plex name myvol.p0 state up org concat vol myvol
plex name myvol.p1 state up org concat vol myvol
plex name myvol.p2 state init org striped 512b vol myvol
plex name bigraid.p0 state initializing org raid5 512b vol bigraid
sd name myvol.p0.s0 drive a plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 0b
sd name myvol.p0.s1 drive b plex myvol.p0 state up len 1048576b driveoffset 265b plexoffset 1048576b
sd name myvol.p1.s0 drive c plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 0b
sd name myvol.p1.s1 drive d plex myvol.p1 state up len 1048576b driveoffset 265b plexoffset 1048576b
sd name myvol.p2.s0 drive a plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 0b
sd name myvol.p2.s1 drive b plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 524288b
sd name myvol.p2.s2 drive c plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1048576b
sd name myvol.p2.s3 drive d plex myvol.p2 state init len 524288b driveoffset 1048841b plexoffset 1572864b
sd name bigraid.p0.s0 drive a plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 0b
sd name bigraid.p0.s1 drive b plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 4194304b
sd name bigraid.p0.s2 drive c plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 8388608b
sd name bigraid.p0.s3 drive d plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 12582912b
sd name bigraid.p0.s4 drive e plex bigraid.p0 state initializing len 4194304b driveoff set 1573129b plexoffset 16777216b

Le ovvie differenze sono qua la presenza di informazioni esplicite sulle locazioni e sulla nomenclatura (entrambe permesse, ma scoraggiate, all'utente) e le informazioni sugli stati (che non sono disponibili all'utente). Vinum non immagazzina informazioni sui drive tra le informazioni della configurazione: trova i drive scandendo le partizioni dei dischi configurati alla ricerca di un'etichetta Vinum. Questo permette a Vinum di identificare i drive correttamente anche se gli è stato assegnato un differente codice identificativo di drive UNIX.


17.8.1.1 Avvio Automatico

Per poter lanciare Vinum automaticamente all'avvio del sistema assicuratevi che le seguenti linee siano nel vostro /etc/rc.conf:

start_vinum="YES"               # set to YES to start vinum

Se non hai un file /etc/rc.conf, creane uno con questo contenuto. Questo ordinerà al sistema di caricare il Vinum kld all'avvio, inizializzando ogni oggetto menzionato nella configurazione. Questo viene fatto prima del mount dei file system quindi è possibile fare automaticamente fsck(8) e mount dei file system su volumi Vinum.

Quando esegui Vinum con il comando vinum start Vinum legge il database di configurazione da uno dei drive Vinum. In circostanze normali ogni drive contiene una copia identica del database di configurazione quindi non conta da quale disco viene letto. Dopo un crash, tuttavia, Vinum deve determinare quale drive è stato aggiornato più recentemente e leggere la configurazione da questo drive. Quindi aggiorna la configurazione, se necessario, sui drive progressivamente più vecchi.


17.9 Usare Vinum nel Filesystem Root

Per una macchina con filesystem completamente in mirroring con Vinum è desiderabile mettere in mirroring anche il filesystem di root; fare questo è meno semplice che non per un filesystem arbitrario, dato che:

  • Il filesystem root deve essere disponibile nella parte iniziale del processo di boot, quindi l'infrastruttura di Vinum deve essere già disponibile in quel momento.

  • Il volume contenete il filesystem root contiene anche il sistema di avvio e il kernel, che devono essere letti usando le funzioni native del sistema (ovvero il BIOS, sui PC) che spesso non conoscono i dettagli di Vinum.

Nelle sezioni seguenti, il termine ``volume root'' è usato generalmente per descrivere il volume Vinum che contiene il filesystem root. È probabilmente una buona idea usare il nome "root" per questo volume, ma non è necessario. Tutti gli esempi nelle prossime sezioni usano questo nome.


17.9.1 Lanciare Vinum abbastanza presto per il Filesystem Root

Ci sono varie misure da prendere per fare in modo che questo accada:

  • Vinum deve essere disponibile nel kernel già all'avvio, quindi il metodo per lanciare Vinum automaticamente descritto in Sezione 17.8.1.1 non può essere utilizzato e il parametro start_vinum in realtà non va impostato in questo tipo di configurazione. La prima possibilità è di compilare Vinum staticamente dentro al kernel, in modo che sia sempre disponibile, ma questo non è normalmente desiderabile. Un'altra opportunità à di fare in modo che /boot/loader (Sezione 12.3.3) carichi il modulo kernel di Vinum prima di lanciare il kernel. Questo può essere fatto utilizzando la riga:

    vinum_load="YES"
    

    nel file /boot/loader.conf.

  • Vinum deve essere inizializzato subito in modo da poter fornire il volume per il filesystem root. Per default la porzione kernel di Vinum non cerca dischi che contengano informazioni sui volumi Vinum fino a quando un amministratore (o uno degli script di partenza) non esegue un comando di vinum start.

    Nota: I seguenti paragrafi spiegano i passi necessari per FreeBSD 5.x e superiori. L'impostaizone richiesta da FreeBSD 4.x è diversa ed è descritta dopo, in Sezione 17.9.5.

    Inserendo la linea:

    vinum.autostart="YES"
    

    dentro a /boot/loader.conf, Vinum viene istruito, alla partenza del kernel, di controllare automaticamente tutti i dischi alla ricerca di informazioni sui volumi Vinum.

    Da notare il fatto che non è necessario istruire il kernel sulla locazione del filesystem root. /boot/loader cerca il nome del device di root in /etc/fstab e passa l'informazione al kernel. Quando è necessario montare il filesystem root, il kernel, tramite il nome di device fornitogli, capisce a quale driver deve chiedere la conversione di tale nome in ID interno di device (numero maggiore/minore).


17.9.2 Rendere un volume di root basato su Vinum accessibile dall'avvio

Dato che il codice di avvio di FreeBSD è attualmente di soli 7.5 KB ed è già appesantito dalla lettura di file (come /boot/loader) da un filesystem UFS, è semplicementeimpossibile insegnargil anche a leggere le strutture internet di Vinum in modo da fargil leggere i dati della configurazione di Vinum in modo da ricavarne gli elementi del volume di boot stesso. Sono quindi necessari alcuni trucchi per dare al codice di avvio l'illusione di una partizione "a" standard contenente il filesystem di root.

Perché questo sia anche solo possibile, il volume di root deve rispondere ai seguenti requisiti:

  • Il volume di root non deve essere in striping o in RAID-5.

  • Il volume di root non deve contenere la concatenazione di pi? di un sottodisco per ogni plex.

Da notare che è desiderabile e possibile aere plex multipli, contenente ognuno una replica del filesystem root. Il processo di avvio, però, usa solo una di queste repliche per trovare i file necessario all'avvio, fino a quando il kernel monta il filesystem di root stesso. Ogni singolo sottodisco in questi plex avrà quindi bisogno di una propria partizione "a" illusoria, affinché la periferica relativa possa essere avviabile. Non è strettamente necessario che ognuna di queste finte partizioni "a" sia locato con lo stesso spiazzamento all'interno della propria periferica, rispetto alle periferiche contenenti gli altri plex del volume. È comunque probabilmente una buona idea creare i volumi Vinum in modo che le periferiche in mirror siano simmetriche, per evitare confusione.

Per poter configurare queste partizioni "a", in ogni periferica contenente parte del volume di root, bisogna fare le seguenti cose:

  1. La locazione (spiazzamento dall'inizio della periferica) e la dimensione del sottodisco che è parte del volume di root deve essere esaminato, usando il comando:

    # vinum l -rv root
    

    Da notare che gli spiazzamenti e le dimensioni in Vinum sono misurati in byte. Devono essere divisi per 512 per ottenere il numero di blocchi necessari nel comando disklabel.

  2. Esegui il comando:

    # disklabel -e devname
    

    per ogni periferica che partecipa al volume di root. devname deve essere o il nome della slice (ad esempio ad0s1) o il nome del disco (ad esempio da0) per dischi senza tabella delle slice (ovvero i nomi che si usano anche con fdisk).

    Se c'è già una partizione "a" sulla periferica (presumibilmente contenente un filesystem root precedente all'uso di Vinum), dovrebbe essere rinominata in altro modo, in modo da restare accessibile (nno si sa mai), ma non essere usata più per default per avviare il sistema. Da notare che le partizioni attive (ad esempio un filesystem root attualmente montato) non possono essere rinominati, quindi questo deve essere eseguito o avviando da un disco ``Fixit'' o (in caso di mirror) in un processo a due passi dove il disco non di avvio viene modificato per primo.

    Infine, lo spiazzamento della partizione Vinum sulla periferica va aggiunto allo spiazzamento del rispettivo sottodisco di root rispetto alla periferica stessa. Il risultato sarà il valore di "offset" (spiazzamento) per la nuova partizione "a". Il valore "size" (dimensione) per questa partizione può essere copiato pari pari dal calcolo fatto sopra. Il valore "fstype" deve essere 4.2BSD. I valori "fsize", "bsize" e "cpg" devono preferibilmente essere scelti per corrispondere al vero e proprio filesystem, anche se in questo contesto non sono molto importanti.

    In questo modo una nuova partizione "a" sarà creata ricoprendo le partizioni Vinum su questa periferica. Da notare che disklabel permetterà questa ricopertura solo se la partizione Vinum è stata appropriatamente marcata usando un "fstype" pari a "vinum" fstype.

  3. È tutto! Ora una falsa partizione "a" esiste su ogni periferica che abbia una replica del volume di root. È altamente raccomandabile verificare nuovamente i risultati, usando un comando come:

    # fsck -n /dev/devnamea
    

Bisogna ricordarsi che tutte le informazioni contenute nei file di controllo devono essere relative al filesystem di root nel volume Vinum che, quando si imposta un nuovo volume di root Vinum, potrebbe non coincidere con quello del filesystem root attualmente attivo. In particolare bisogna stare attenti ai file /etc/fstab e /boot/loader.conf.

Al seguente riavvio il sistema dovrebbe ricavare le informazioni di controllo appropriate dal filesystem di root Vinum e agire di consequenza. Alla fine del processo di inizializzazione del kernel, dopo che tutte le periferiche sono state annunciate, l'avvertimento principale che conferma il successo dell'avvio è un messaggio simile a questo:

Mounting root from ufs:/dev/vinum/root

17.9.3 Esempi di configurazioni con root basata su Vinum

Dopo aver creato il volume di root Vinum, vinum l -rv root dovrebbe produrre qualcosa di simile a:

...
Subdisk root.p0.s0:
                Size:        125829120 bytes (120 MB)
                State: up
                Plex root.p0 at offset 0 (0  B)
                Drive disk0 (/dev/da0h) at offset 135680 (132 kB)

Subdisk root.p1.s0:
                Size:        125829120 bytes (120 MB)
                State: up
                Plex root.p1 at offset 0 (0  B)
                Drive disk1 (/dev/da1h) at offset 135680 (132 kB)
     

I valori su cui fare caso sono il 135680 dello spiazzamento (relativo alla partizione /dev/da0h). Questo si traduce in 265 blocchi da 512 byte nei termini di disklabel. /dev/da1h, contenente la seconda replica del volume di root, ha una configurazione simmetrica.

La disklabel per queste periferiche dovrebbe essere simile a questa:

...
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:   245760      281    4.2BSD     2048 16384     0   # (Cyl.    0*- 15*)
  c: 71771688        0    unused        0     0         # (Cyl.    0 - 4467*)
  h: 71771672       16     vinum                        # (Cyl.    0*- 4467*)
     

Si può notare che il parametro "size" per la finta partizione "a" corrisponde al valore di cui abbiamo parlato prima, mentre il parametro "offset" è la somma dello spiazzamento all'interno della partizione Vinum "h" e lo spiazzamento all'interno della periferica (o slice). Questa è una tipica configurazione necessaria per evitare il problema descritto in Sezione 17.9.4.3. Si può anche notare che l'intera partizione "a" è completamente contenuta dalla partizione "h", che contiene tutti i dati Vinum per questa periferica.

Notate che in questo esempio l'intera perfierica è dedicata a Vinum e nno c'è spazio per partizioni pre-Vinum, dato che questo disco è stato configurato da nuovo per il solo scopo di far parte di una configurazione Vinum.


17.9.4 Risoluzione Problemi

Se qualcosa va storto, serve un modo per tornare in una situazione di normalità. Segue una lista di alcuni tipici problemi, completi di soluzione.


17.9.4.1 Il Codice di Avvio si Carica, ma il Sistema non si Avvia

Se per qualsiasi ragione in sistema non prosegue nell'avvio, si può interrompere il processo di avvio premendo il tasto spazio all'avviso dei 10 secondi. Le variabili di avvio potranno quindi essere esaminate usando il comando show e manipolate con set e unset.

Se l'unico problema è che il modulo kernel di Vinum non è ancora presente nella lista dei moduli da caricare automaticamente, un semplice load vinum aiuterà.

Quando pronti, il processo di avvio può continuare con un boot -as. Le opzioni -as comunicano al kernel di montare il filesysetm di root (-a) e di interrompere il processo di avvio in modalità singolo utente (-s), quando il filesystem di root è montato a sola lettura. In questo modo benché uno solo dei plex do un volume multi-plex sia stato montato, non si rischia inconsistenza dei dati tra i vari plex.

Alla richiesta di un filesystem di root da montare, ogni periferica che contenga un filesystem di root valido può essere usata. Se /etc/fstab è stato impostato correttamente, il default dovrebbe essere ufs:/dev/vinum/root o simile. Una tipica alternativa potrebbe essere ufs:da0d, una ipotetica partizione contenete un filesystem root pre-Vinum. Bisogna fare attenzione quando si sceglie una delle partizioni "a" alias di un sottodisco della periferica root di Vinum, perché in una cifiguraizone in mirror questo monterebbe solo un pezzo della root in mirror. Se questo filesystem deve poi essere montato in lettura/scrittura è necessario rimuovere gli altri plex del volume root di Vinum dato che conterrebbero comunque dati non consistenti.


17.9.4.2 Si Carica Solo l'Avvio Primario

Se /boot/loader non si carica, ma l'avvio primario si carica comunque (si capisce dal singolo trattino nella colonna di sinistra dello schermo subito dopo l'inizio dell'avvio), si può tentare di fermare l'avvio primario in questo punto, premendo il tasto spazio. Questo fermerà l'avvio nella seconda fase, vedi Sezione 12.3.2. Qua si può fare un tentativo di caricare una differente partizione, ad esempio la partizione contenente il precedente filesystem di root "a", prima di sostituirlo come sopra indicato.


17.9.4.3 Non si Carica Niente, l'Avvio va in Panico

Questa situazione accade quando l'installazione di Vinum ha distrutto il codice di avvio. Sfortunatamente Vinum lascia solo 4 KB liberi all'inizio della sua partizione prima di scrivere il proprio header. Purtroppo le due fasi dell'avvio e la disklabel compresa tra le due attualmente occupa 8 KB, quindi se la partiozne Vinum è creata con spiazzamento 0 in una slice o disco che dovrebbe essere avviabile, la configurazione di Vinum distruggerà il codice di avvio.

Similmente, se la situazione sopra descritta è stata risolta avviando da un disco di ``Fixit'', e il codice di avvio re-installato usando disklabel -B come descritto in Sezione 12.3.2, il codice di avvio distruggerà l'header di Vinum, che non saprà più trovare i propri dischi. Benché nessun dato, di configurazione o contenuto, sia distrutto da questo processo, che risulta quindi recuperabile reinserendo la stessa configurazione di Vinum, la situazione è in realtà di difficile risoluzione: sarebbe necessario spostare l'intera partizione Vinum di almeno 4 KB, in modo da lasciare abbastanza spazio sia per il codice di avvio che per l'header Vinum.


17.9.5 Differenze per FreeBSD 4.X

In FreeBSD 4.X alcune funzioni interne necessarie a Vinum per poter trovare automaticamente tutti i dischi non sono presenti e il codice che ricava l'ID interno della periferica di root non è abbastanza intelligente da gestire automaticamente nomi come /dev/vinum/root, quindi le cose vengono fatte in modo un po' diverso.

Bisogna dire esplicitamente a Vinum quali dischi controllare, usando una riga di /boot/loader.conf come la seguente:

vinum.drives="/dev/da0 /dev/da1"

È importante indicare tutti i drive che possono contenere dati Vinum. Non è un problema indicare drive di troppo, non è neanche necessario aggiungere esplicitamente ogni slice e/o partizione, dato che Vinum cercherà header Vinum in tutte le slice e partizioni dei drive nominati.

Dato che le procedure utilizzate per interpretare il nome del filesystem di root e derivarne l'ID di periferica (numeri maggiore e minore) sono adatte per gestire solo nomi ``classici'' di periferica come /dev/ad0s1a, non riescono a capire nomi di volumi root come /dev/vinum/root. Per questo motivo Vinum ha bisogno di pre-impostare durante la propria inzializzazione il parametro kernel interno che contiene l'ID della periferica di root. Questo viene fatto indicando il nome della volume di root nella variabile di avvio vinum.root. La riga di /boot/loader.conf adatta per fare questo è simile alla seguente:

vinum.root="root"

Quando l'inizializzaione del kernel cerca di trovare la periferica root da montare controlla se qualche modulo del kernel ha già pre-inizializzato il parametro kernel apposito; se questo è il caso e la periferica che dice di essere la periferica di root ha il numero maggiore e minore corrispondenti al driver come trovato dal nome della periferica di root passata (ovvero "vinum", nel nostro caso), userà l'ID di periferica pre-allocato, anziché cercar di trovarne uno da solo. In tal modo durante l'usuale avvio automatico può continuare a montare il volume di root Vinum per il filesystem di root.

Bisogna comunque notare che anche quando boot -a richiede di inserire manualmente il nome della periferica di root tale nome non può essere intepretato nel caso sia un nome rfierito a un volume Vinum. Se è inserito un nome di periferica non riferito a una periferica Vinum, la non corrispondenza col numero maggiore pre-allocato del parametro di root e del driver ricavato dal nome farà sì che la procedura utilizzi il normale interprete, quindi una stringa come ufs:da0d funzionerà come previsto. Da notare che se questo fallisce non si può più provare una stringa come ufs:vinum/root, dato che non verrebbe interpretata; l'unica via di uscita è riavviare e ripartire da zero. (Alla richiesta di ``askroot'', la parte iniziale /dev/ può sempre essere omessa.)


Capitolo 18 Localizzazione - Uso e Impostazione dell'I18N/L10N

Contributo di Andrey A. Chernov. Revisione di Michael C. Wu.

18.1 Sinossi

FreeBSD è un progetto di larga diffusione con utenti e collaboratori in ogni parte del mondo. Questo capitolo affronta quegli aspetti tipici di FreeBSD relativi all'internazionalizzazione e localizzazione del sistema che permettono agli utenti non di lingua inglese di operare in maniera più confortevole. Ci sono molti aspetti da considerare dell'implementazione I18N sia a livello utente che di sistema, perciò, ove necessario, si rinvierà il lettore a fonti di informazione più specifiche.

Dopo aver letto questo capitolo, saprai:

  • Come i vari linguaggi e nazioni sono codificati nei moderni sistemi operativi.

  • Come impostare la localizzazione per la tua shell di login.

  • Come configurare la tua console per una lingua che non sia l'inglese.

  • Come usare concretamente X Window System con differenti lingue.

  • Dove reperire ulteriori informazioni su come scrivere applicazioni I18N compatibili.

Prima di leggere questo capitolo, dovresti:

  • Sapere come installare applicazioni aggiuntive di terze parti (Capitolo 4).


18.2 Principi di Base

18.2.1 Cosa significano le sigle I18N/L10N?

Gli sviluppatori hanno abbreviato la parola ``internationalization'' in I18N, contando il numero di lettere che costituiscono la parola ``internationalization'', escludendo la prima e l'ultima. Lo stesso è stato fatto per l'acronimo L10N, che deriva appunto da ``localization''. Combinando insieme i metodi, i protocolli e le applicazioni che rispettano gli standard I18N/L10N si permette agli utenti di utilizzare una qualsiasi lingua di propria scelta.

Le applicazioni I18N sono realizzate mediante appositi kit, disponibili tramite specifiche librerie. Questo permette agli sviluppatori di scrivere in un normale file di testo i menù e i messaggi da visualizzare nel programma e di tradurlo poi nelle varie lingue. Si raccomandano vivamente i programmatori di seguire questa convenzione.


18.2.2 Perché Dovrei Usare I18N/L10N?

I18N/L10N è usato ogni qualvolta desideri visualizzare, immettere o processare dati in lingue diverse da quella inglese.


18.2.3 Quali Lingue sono Disponibili nel Lavoro I18N?

I18N e L10N non sono caratteristiche specifiche di FreeBSD. Al momento, è possibile scegliere fra la maggior parte delle lingue più diffuse nel mondo, tra le quali: cinese, tedesco, giapponese, francese, russo, italiano e altre ancora.


18.3 Come Utilizzare la Localizzazione

Vista la sua importanza, I18N non è specifico del sistema FreeBSD ed è una convenzione. Siete invitati ad aiutare il progetto FreeBSD per sostenere questa convenzione.

Le impostazioni per la localizzazione o nazionalizzazione sono basate su tre termini principali: Codice Lingua, Codice Nazione e Codifica. I nomi che contraddistinguono una localizzazione sono formati utilizzando questi termini nel modo seguente:

CodiceLingua_CodiceNazione.Codifica

18.3.1 I Codici per la Lingua e la Nazione

Al fine di localizzare un sistema FreeBSD (o qualsiasi altro sistema UNIX che gestisca I18N) in una specifica lingua, l'utente deve innanzitutto conoscere i codici della nazione e della lingua desiderati (i codici delle nazioni segnalano alle applicazioni quali convenzioni adottare all'interno di un dato linguaggio). Inoltre, i browser web, i server SMTP/POP, i server web, ecc. possono operare in base ad essi. I seguenti sono esempi di codici lingua/nazione:

Codice Lingua/Nazione Descrizione
en_US inglese - Stati Uniti d'America
ru_RU russo - Russia
zh_TW cinese tradizionale - Taiwan

18.3.2 Codifiche

Alcune lingue utilizzano codifiche non ASCII, cioè caratteri a 8 bit, estesi o multibyte, vedere multibyte(3) per maggiori dettagli. Le applicazioni più vecchie, non riconoscendoli, li interpretano come caratteri di controllo. Quelle più recenti invece riconoscono di solito i caratteri a 8 bit. A seconda dell'implementazione, è possibile che gli utenti debbano ricompilare un'applicazione con il supporto ai caratteri estesi o multibyte, o debbano configurare l'applicazione in modo corretto. Per essere in grado di immettere e di elaborare caratteri estesi o multibyte, la FreeBSD Ports Collection fornisce vari programmi in differenti linguaggi. Si faccia riferimento alla relativa documentazione I18N del port di FreeBSD.

Precisamente, l'utente deve consultare la documentazione propria dell'applicazione per conoscere come configurarla correttamente o come passare i giusti valori al configuratore/Makefile/compilatore.

Alcune cose da tener presente sono:

  • Gli insiemi di caratteri rappresentabili dal tipo char del linguaggio C, specifici della lingua (vedere multibyte(3)), cioè ISO-8859-1, ISO-8859-15, KOI8-R, CP437.

  • Codifiche estese o multibyte, cioè EUC, Big5.

Puoi consultare l'elenco corrente degli insiemi di caratteri nel Registro IANA.

Nota: Con le versioni 4.5 o successive di FreeBSD si utilizzino le codifiche per la localizzazione compatibili con X11.


18.3.3 Applicazioni I18N

Nel sistema dei port e dei pacchetti precompilati di FreeBSD, le applicazioni I18N sono facilmente riconoscibili, perché il loro nome include la sigla I18N. Tuttavia, non sempre queste potrebbero supportare la lingua desiderata.


18.3.4 Impostazione del Locale

Di solito è sufficiente esportare il valore del nome del locale posto nella variabile LANG all'interno della shell di login. Questo può essere fatto utilizzando il file dell'utente ~/.login_conf oppure il file di configurazione della shell di login dell'utente (~/.profile, ~/.bashrc, ~/.cshrc). Non c'è bisogno di impostare le altre variabili del locale, come LC_CTYPE, LC_CTIME. Per maggiori informazioni si faccia riferimento alla documentazione di FreeBSD specifica per la data lingua.

Puoi settare le due variabili d'ambiente seguenti nei tuoi file di configurazione:

  • LANG per le funzioni appartenenti alla famiglia POSIX®, setlocale(3)

  • MM_CHARSET per l'insieme dei caratteri che dovranno usare le applicazioni che supportano lo standard MIME

Ciò va fatto per la configurazione della shell dell'utente, di un'applicazione specifica e per quella di X11.


18.3.4.1 Metodi di Localizzazione

Ci sono due metodi per impostare il locale, entrambi descritti qui di seguito. Il primo (raccomandato) consiste nell'impostare le variabili d'ambiente in una classe di login, mentre il secondo consiste nell'aggiungere i valori delle variabili d'ambiente al file d'avvio della shell di sistema.


18.3.4.1.1 Metodo delle Classi di Login

Questo metodo fa sì che le variabili d'ambiente necessarie per il nome del locale e per gli insiemi dei caratteri MIME vengano inizializzate una volta sola per ogni possibile shell di sistema invece di aggiungere specifici assegnamenti per ogni file d'avvio di shell. Il Setup a Livello Utente può essere fatto dall'utente stesso e il Setup a Livello Amministratore richiede i privilegi del superuser.


18.3.4.1.1.1 Setup a Livello Utente

Ecco un breve esempio di un file .login_conf posto nella directory home di un utente che ha entrambe le variabili impostate alla codifica Latin-1:

me:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO8859-1:

Ecco invece un esempio di un file .login_conf che imposta le variabili per il cinese tradizionale con codifica BIG-5. Si noti che sono state impostate molte variabili perchè alcuni programmi non rispettano come dovrebbero le variabili di localizzazione per il cinese, giapponese e il coreano.

#Gli utenti che non vogliono usare l'unità monetaria o i formati temporali
#di Taiwan possono modificare manualmente ogni variabile
me:\
        :lang=zh_TW.Big5:\
        :lc_all=zh_TW.Big:\
        :lc_collate=zh_TW.Big5:\
        :lc_ctype=zh_TW.Big5:\
        :lc_messages=zh_TW.Big5:\
        :lc_monetary=zh_TW.Big5:\
        :lc_numeric=zh_TW.Big5:\
        :lc_time=zh_TW.Big5:\
        :charset=big5:\
        :xmodifiers="@im=xcin": #Setta il XIM Input Server

Vedere il paragrafo Setup a Livello Amministratore e login.conf(5) per maggiori dettagli.


18.3.4.1.1.2 Setup a Livello Amministratore

Controlla che la classe di login dell'utente in /etc/login.conf selezioni la lingua corretta. Assicurati che queste impostazioni appaiano in /etc/login.conf:

nome_lingua:titolo_account:\
:charset=MIME_charset:\
:lang=nome_locale:\
:tc=default:

Ritornando quindi all'esempio di prima che utilizzava Latin-1, si dovrebbe avere una cosa simile a questa:

tedesco:Account Utenti Tedeschi:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO8859-1:\
:tc=default:
Modifica delle Classi di Login con vipw(8)

Usa vipw per aggiungere nuovi utenti, e crea qualcosa di simile a quanto segue:

utente:password:1111:11:lingua:0:0:Nome Utente:/home/user:/bin/sh
Modifica delle Classi di Login con adduser(8)

Usa adduser per aggiungere nuovi utenti, in questo modo:

  • Imposta defaultclass = lingua in /etc/adduser.conf. Tieni presente che in questo modo dovrai inserire una classe default per tutti gli utenti di altre lingue.

  • In alternativa si può specificare la lingua desiderata ogni volta che appare il prompt

    Enter login class: default []:
    
    durante l'esecuzione di adduser(8)

  • Un'altra alternativa è utilizzare il comando nel modo seguente per ogni utente di una diversa lingua che si desidera aggiungere:

    # adduser -class lingua
    
Cambiare le Classi di Login con pw(8)

Se utilizzi il comando pw(8) per aggiungere nuovi utenti, invocalo in questo modo:

# pw useradd nome_utente -L  lingua

18.3.4.1.2 Metodo del File di Avvio della Shell

Nota: Questo metodo è sconsigliato perché richiede una inizializzazione diversa per ogni possibile shell. Usa invece il Metodo delle Classi di Login.

Per aggiungere il nome del locale e l'insieme dei caratteri per lo standard MIME, bisogna semplicemente settare le due variabili d'ambiente mostrate di seguito nei file d'avvio della shell /etc/profile e/o /etc/csh.login. Nell'esempio che segue viene utilizzata la lingua tedesca:

In /etc/profile:

LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO8859-1; export MM_CHARSET

Oppure in /etc/csh.login:

setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO8859-1

Lo stesso risultato si ottiene aggiungendo i precedenti comandi al file /usr/share/skel/dot.profile (per i comandi usati in /etc/profile), oppure al file /usr/share/skel/dot.login (per quelli in /etc/csh.login).

Per l'ambiente X11:

Nel file $HOME/.xinitrc:

LANG=de_DE.ISO8859-1; export LANG

Oppure:

setenv LANG de_DE.ISO8859-1

a seconda della shell utilizzata (vedi sopra).


18.3.5 Settaggio della Console

Per tutti gli insiemi di caratteri che sono rappresentabili con il tipo char in C, imposta i font della console adatti alla lingua prescelta in /etc/rc.conf:

font8x16=nome_font
font8x14=nome_font
font8x8=nome_font

nome_font è il nome di uno dei file di font presenti nella directory /usr/share/syscons/fonts, privato del suffisso .fnt.

Assicurati anche di impostare la giusta mappatura della tastiera e del video per il proprio set di caratteri usando /stand/sysinstall. Una volta all'interno di sysinstall, seleziona Configure, quindi Console. In alternativa, aggiungi le seguenti righe in /etc/rc.conf:

scrnmap=nome_screenmap
keymap=nome_keymap
keychange="numero_tasto_funzione sequenza"

nome_screenmap viene preso dalla directory /usr/share/syscons/scrnmaps, privato del suffisso .scm. Una screenmap assieme ad una corrispondente mappa dei font è solitamente necessaria nel caso la scheda grafica non gestisca i font via software, ma li abbia codificati internamente; la screenmap serve appunto a rimappare tali font interni nel font prescelto.

Se hai abilitato il demone moused inserendo la seguente riga in /etc/rc.conf:

moused_enable="YES"

allora leggi quanto riportato nel prossimo paragrafo sul cursore del mouse.

Di default il cursore del mouse del driver syscons(4) occupa l'intervallo da 0xd0 a 0xd3 nel set di caratteri in uso. Se la tua lingua utilizza tali caratteri, devi spostare l'intervallo occupato dal cursore. Per far questo con le versioni anteriori alla 5.0 di FreeBSD, inserisci la seguente riga nel tuo file di configurazione del kernel:

options           SC_MOUSE_CHAR=0x03

Per le versioni 4.4 e successive aggiungi la seguente riga al file /etc/rc.conf:

mousechar_start=3

nome_keymap deve invece corrispondere a uno dei file presenti nella directory /usr/share/syscons/keymaps, privato del suffisso .kbd. Se sei indeciso su quale keymap scegliere, puoi usare il comando kbdmap(1) per testare le varie mappature senza dover riavviare il sistema.

La variabile keychange è di solito richiesta per programmare i tasti funzione in relazione al tipo di terminale in uso, poiché le sequenze generate da un tasto funzione non possono essere definite in una mappa di tasti.

Assicurati inoltre di impostare il corretto tipo di terminale in /etc/ttys per tutte le voci del tipo ttyv*. Attualmente, le corrispondenze predefinite sono:

Insieme di Caratteri Tipo di Terminale
ISO-8859-1 o ISO-8859-15 cons25l1
ISO-8859-2 cons25l2
ISO-8859-7 cons25l7
KOI8-R cons25r
KOI8-U cons25u
CP437 (di default per VGA) cons25
US-ASCII cons25w

Per i linguaggi che usano caratteri estesi o multibyte, è bene servirsi del corretto port di FreeBSD nella directory /usr/ports/linguaggio. Poichè alcuni port che si presentano come console sono riconosciuti dal sistema come terminali seriali virtuali (vtty), devi riservare abbastanza vtty sia per X11 che per la console pseudo-seriale. Ecco una lista parziale di applicazioni con cui si possono utilizzare altri linguaggi in console:

Linguaggio Ubicazione
cinese tradizionale (BIG-5) /usr/ports/chinese/big5con
giapponese /usr/ports/japanese/ja-kon2-* oppure /usr/ports/japanese/Mule_Wnn
coreano /usr/ports/korean/ko-han

18.3.6 Impostazione di X11

Sebbene X11 non faccia parte del progetto FreeBSD, vengono qui fornite alcune informazioni per gli utenti di FreeBSD. Per maggiori dettagli, si faccia riferimento al sito web XFree86 o a quello del Server X11 utilizzato.

Nel file ~/.Xresources, puoi mettere a punto le impostazioni per I18N specifiche di un'applicazione (ad esempio, i font, i menu, ecc.).


18.3.6.1 Visualizzazione dei Font

Installa il server TrueType® Common di X11 (x11-servers/XttXF86srv-common) e i corrispondenti font TrueType propri della lingua prescelta. L'impostazione del corretto locale dovrebbe permetterti di visualizzare tale lingua nei vari menu, ecc.


18.3.6.2 Immissione di Caratteri Non Inglesi

Il protocollo X11 Input Method (XIM) è un nuovo standard per tutti i client X11. Tutte le applicazioni X11 dovrebbero essere scritte come client XIM che ricevono l'input dai server XIM. Vi sono parecchi server XIM disponibili per le differenti lingue.


18.3.7 Configurazione della Stampante

Alcuni set di caratteri del tipo char del C sono solitamente codificati a livello hardware all'interno delle stampanti stesse. Gli insiemi di caratteri estesi o multibyte richiedono invece una speciale configurazione e si raccomanda l'utilizzo di apsfilter. Puoi anche convertire documenti nei formati PostScript o PDF utilizzando convertitori specifici per una data lingua.


18.3.8 Il Kernel e i File System

Il file system di FreeBSD FFS (Fast File System) è completamente a 8-bit, perciò può essere utilizzato con qualsiasi insieme di caratteri del tipo char del C (vedere multibyte(3)), ma non vi è un nome particolare di un insieme di caratteri memorizzato nel file system; cioè, il file system è a 8 bit senza alcuna codifica interna e ignora un'eventuale codifica. Ufficialmente, FFS non supporta ancora alcuna forma degli insiemi di caratteri estesi o multibyte. Tuttavia, esistono per alcuni di questi delle patch indipendenti per il FFS che abilitano tale supporto. Sono solo soluzioni temporanee, non portabili ed si è deciso di non includerle nell'albero dei sorgenti. Si faccia riferimento ai rispettivi siti web della lingua desiderata per ulteriori informazioni e per i file di patch.

Il supporto per il file system di MS-DOS in FreeBSD offre la possibilità di configurare la modalità di conversione tra gli insiemi di caratteri MS-DOS, Unicode e quelli scelti per il file system di FreeBSD. Consultare mount_msdos(8) per i dettagli.


18.4 Compilazione dei Programmi con Supporto I18N

Molti dei port di FreeBSD includono il supporto I18N. Alcuni di essi sono contrassegnati dal suffisso -I18N nel loro nome. Questi e molti altri programmi hanno il supporto per I18N già incluso e non necessitano perciò di speciali considerazioni.

Tuttavia, alcune applicazioni come ad esempio MySQL richiedono che venga specificato nel Makefile l'insieme dei caratteri che si utilizzeranno. Questa operazione viene fatta o modificando direttamente il suddetto file oppure passando un opportuno valore al programma configure nella directory dei sorgenti.


18.5 Localizzazione di FreeBSD con Lingue Particolari

18.5.1 Lingua Russa (Codifica KOI8-R)

Contributo originale di Andrey A. Chernov.

Per maggiori informazioni sulla codifica KOI8-R, si veda la fonte di riferimento per il KOI8-R (Russian Net Character Set).


18.5.1.1 Impostazione del Locale

Metti le seguenti righe nel tuo file ~/.login_conf:

me:My Account:\
:charset=KOI8-R:\
:lang=ru_RU.KOI8-R:

Si veda quanto esposto precedentemente in questo capitolo per degli esempi di impostazione del locale.


18.5.1.2 Configurazione della Console

  • Per le versioni di FreeBSD precedenti la 5.0 aggiungi la seguente opzione nel tuo file di configurazione del kernel:

    options             SC_MOUSE_CHAR=0x03
    

    Per le versioni 4.4 e seguenti inserisci la seguente riga nel file /etc/rc.conf:

    mousechar_start=3
    
  • Utilizza le seguenti impostazioni nel file /etc/rc.conf:

    keymap="ru.koi8-r"
    scrnmap="koi8-r2cp866"
    font8x16="cp866b-8x16"
    font8x14="cp866-8x14"
    font8x8="cp866-8x8"
    
  • Per ogni voce ttyv* nel file /etc/ttys, usa cons25r come tipo di terminale.

Si veda quanto esposto in precedenza in questo capitolo per degli esempi su come impostare la console.


18.5.1.3 Configurazione della Stampante

Dal momento che la maggior parte delle stampanti con caratteri russi hanno a livello hardware la codifica codepage CP866, è necessario utilizzare uno speciale filtro di conversione da KOI8-R a CP866. Tale filtro viene installato di default come /usr/libexec/lpr/ru/koi2alt. La voce per una stampante russa dovrebbe apparire perciò così in /etc/printcap:

lp|Russian local line printer:\
:sh:of=/usr/libexec/lpr/ru/koi2alt:\
:lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:

Si veda printcap(5) per una spiegazione dettagliata del significato dei vari campi.


18.5.1.4 Nomi di File Russo e File System MS-DOS®

La seguente voce d'esempio di fstab(5) abilita il supporto per i nomi di file in russo su file system MS-DOS:

/dev/ad0s2      /dos/c  msdos   rw,-W=koi2dos,-L=ru_RU.KOI8-R 0 0

L'opzione -L seleziona il nome locale usato, e -W imposta la tabella di coversione dei caratteri. Per usare l'opzione -W, assicurati di montare /usr prima della partizione MS-DOS perché le tabelle di conversione sono posizionate in /usr/libdata/msdosfs. Per maggiori informazioni, guarda la pagina man di mount_msdos(8).


18.5.1.5 Configurazione di X11

  1. Segui innanzitutto la configurazione del locale in console come descritto in precedenza.

    Nota: Il locale russo KOI8-R potrebbe non funzionare con le vecchie versioni di XFree86 (precedenti alla 3.3). XFree86 4.X è ora la versione di default del sistema X Window in FreeBSD. Perciò non dovrebbe costituire più un problema a meno che non stai usando una versione piuttosto vecchia di FreeBSD.

  2. Vai nella directory /usr/ports/russian/X.language e dai il seguente comando:

    # make install
    

    Questo port installa l'ultima versione disponibile dei font KOI8-R. XFree86 3.3 possiede già alcuni font KOI8-R, ma questi sono meglio dimensionati.

    Controlla la sezione "Files" nel tuo file /etc/XF86Config. Le seguenti righe devono essere aggiunte prima di qualsiasi altra voce FontPath:

    FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/misc"
    FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi"
    FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi"
    

    Se utilizzi una modalità video ad alta risoluzione, scambia le righe 75 dpi e 100 dpi.

  3. Per attivare la tastiera russa, aggiungi alla sezione "Keyboard" del tuo file XF86Config queste cose.

    Per XFree86 v3.X:

    XkbLayout  "ru"
    XkbOptions "grp:caps_toggle"
    

    Per XFree86 v4.X:

    Option "XkbLayout"   "ru"
    Option "XkbOptions"  "grp:caps_toggle"
    

    Verifica inoltre che la riga XkbDisable sia commentata.

    Il tasto per passare dalla codifica russa (RUS) a quella dei caratteri latini (LAT) è CapsLock. La normale funzione del tasto CapsLock è ancora disponibile mediante la combinazione di tasti Shift+CapsLock (solamente in modalità LAT).

    Se hai i tasti ``Windows'' sulla tua tastiera, e noti che alcuni tasti non alfabetici sono mappati non correttamente in modalità RUS, aggiungi in XF86Config la seguente riga.

    Per XFree86 v3.X:

    XkbVariant "winkeys"
    

    Per XFree86 v4.X:

    Option "XkbVariant" "winkeys"
    

    Nota: La tastiera russa XKB potrebbe non funzionare con le vecchie versioni di XFree86; vedere la nota precedente per ulteriori informazioni a riguardo. La tastiera russa XKB potrebbe anche presentare delle anomalie anche con applicazioni che non abbiamo il supporto per la localizzazione. Queste applicazioni dovrebbero come minimo effettuare all'avvio una chiamata alla funzione XtSetLanguageProc (NULL, NULL, NULL);. Vedere KOI8-R per X Window per più informazioni su come localizzare un'applicazione.


18.5.2 Localizzazione del Cinese Tradizionale per Taiwan

Il FreeBSD-Taiwan Project fornisce un Chinese HOWTO per FreeBSD all'indirizzo http://freebsd.sinica.edu.tw/~statue/freebsd/zh-tut/ per l'utilizzo di gran parte delle applicazioni in cinese. L'attuale autore del FreeBSD Chinese HOWTO è Shen Chuan-Hsing .

Chuan-Hsing Shen ha creato la Chinese FreeBSD Collection (CFC) utilizzando zh-l10n-tut del FreeBSD-Taiwan Project. I pacchetti e i file di script sono disponibili all'url ftp://freebsd.csie.nctu.edu.tw/pub/taiwan/CFC/.


18.5.3 Localizzazione della Lingua Tedesca (per Tutte le Lingue ISO 8859-1)

Slaven Rezic ha scritto un tutorial su come utilizzare le lettere con l'umlaut su una macchina FreeBSD. Il tutorial è scritto in tedesco e disponibile all'indirizzo http://www.de.FreeBSD.org/de/umlaute/.


18.5.5 Documentazione Non Inglese per FreeBSD

Alcuni volontari hanno tradotto parte della documentazione di FreeBSD in altre lingue. Questo materiale è raggiungibile seguendo i link segnalati sul sito ufficiale di FreeBSD oppure sotto la directory /usr/share/doc.


Capitolo 19 Lo Stato dell'Arte

19.1 Sinossi

Traduzione in corso


19.3 Synchronizing Your Source

Traduzione in corso


19.4 Using make world

Traduzione in corso

IV. Comunicazione di Rete

FreeBSD è uno dei maggiori sistemi operativi schierati verso alte performance dei servizi di rete. I capitoli di questa parte trattano:

  • Comunicazioni Seriali

  • PPP e PPP over Ethernet

  • Posta Elettronica

  • Esecuzione di Servizi di Rete

  • Altri Argomenti di Networking Avanzato

Questi capitoli sono studiati per essere letti quando si ha bisogno di un'informazione. Non devi leggerli in un ordine particolare, né devi leggerli tutti prima di poter usare FreeBSD in rete.


Capitolo 20 Comunicazioni Seriali

20.1 Sinossi

UNIX ha sempre avuto un supporto per le comunicazioni seriali. In effetti, le prime vere macchine UNIX si appoggiavano a linee seriali per l'input e l'output da e verso l'utente. Le cose sono cambiate molto dai giorni in cui un ``terminale'' consisteva in una stampante da 10 caratteri al secondo o in una tastiera. Questo capitolo coprirà alcuni dei modi nei quali FreeBSD usa le comunicazioni seriali.

Dopo aver letto questo capitolo, saprai:

  • Come connettere terminali al tuo sistema FreeBSD.

  • Come usare un modem per collegarti telefonicamente ad una macchina remota.

  • Come permettere a utenti remoti di effettuare login sul tuo sistema via modem.

  • Come avviare il tuo sistema da una console seriale.

Prima di leggere questo capitolo, dovresti:

  • Sapere come configurare ed installare un nuovo kernel (Capitolo 8).

  • Comprendere i permessi ed i processi UNIX (Capitolo 3).

  • Avere accesso al manuale tecnico per l'hardware seriale (modem o scheda multiporta) che vuoi usare con FreeBSD.


20.2 Introduzione

20.2.1 Terminologia

bps

Bits per Second (Bit per Secondo) -- la frequenza alla quale vengono trasmessi i dati

DTE

Data Terminal Equipment (Attrezzatura per il Terminale Dati) -- ad esempio, il tuo computer

DCE

Data Communications Equipment (Attrezzatura per le Comunicazioni Dati) -- il tuo modem

RS-232

Standard EIA per le comunicazioni tra hardware seriale

Nel parlare della velocità di comunicazione, questa sezione non usa il termine ``baud''. Il baud si riferisce al numero di transizioni degli stati elettrici che possono essere effettuati in un periodo di tempo, mentre i ``bps'' (bit per secondo) sono il termine corretto da usare (o almeno non sembra irritare troppo i perfezionisti).


20.2.2 Cavi e Porte

Per collegare un modem o un terminale alla tua macchina FreeBSD, avrai bisogno di una porta seriale sul tuo computer e del cavo appropriato per il tuo dispositivo seriale. Se sei già pratico con l'hardware ed i cavi necessari, puoi saltare tranquillamente questa sezione.


20.2.2.1 Cavi

Ci sono parecchi tipi diversi di cavi seriali. I due tipi più comuni per i nostri scopi sono i cavi null-modem ed i cavi standard (``dritti'') RS-232. La documentazione per il tuo hardware dovrebbe descrivere il tipo di cavi necessari.


20.2.2.1.1 Cavi null-modem

Un cavo null-modem lascia passare alcuni segnali, come ``signal ground'', direttamente, ma inverte altri segnali. Ad esempio, il pin ``send data'' in un estremo va sul pin ``receive data'' nell'altro.

Se ti piace fare i cavi da solo, puoi costruire un cavo null-modem da usare con i terminali. Questa tabella mostra i nomi dei segnali RS-232C ed i numeri dei pin su un connettore DB-25.

Segnale Pin #   Pin # Segnale
SG 7 si connette a 7 SG
TD 2 si connette a 3 RD
RD 3 si connette a 2 TD
RTS 4 si connette a 5 CTS
CTS 5 si connette a 4 RTS
DTR 20 si connette a 6 DSR
DCD 8   6 DSR
DSR 6 si connette a 20 DTR

Nota: Collega internamente al cappuccio del connettore ``Data Set Ready'' (DSR) e ``Data Carrier Detect'' (DCD), e quindi a ``Data Terminal Ready'' (DTR) in quello remoto.


20.2.2.1.2 Cavi Standard RS-232C

Un cavo seriale standard passa tutti i segnali RS-232C diretti. Cioè, il pin ``send data'' su un estremo del cavo va nel pin ``send data'' sull'altro estremo. Questo è il tipo di cavo da usare per collegare un modem al tuo sistema FreeBSD, ed è anche appropriato per alcuni terminali.


20.2.2.2 Porte

Le porte seriali sono i dispositivi attraverso i quali vengono trasferiti i dati tra il computer FreeBSD ed il terminale. Questa sezione descrive il tipo di porte che esistono e come vengono indicate in FreeBSD.


20.2.2.2.1 Tipi di Porte

Esistono parecchi tipi di porte seriali. Prima di comprare o costruire un cavo, avrai bisogno di assicurarti che sia adatto alle porte sul terminale e sul sistema FreeBSD.

La maggior parte dei terminali avrà porte DB25. I personal computer, compresi i PC con FreeBSD, avranno porte DB25 o DB9. Se hai una scheda seriale multiporta nel tuo PC, potresti avere porte RJ-12 o RJ-45.

Guarda la documentazione fornita con l'hardware per le specifiche del tipo di porta usata. Spesso basta anche un'ispezione visiva della porta.


20.2.2.2.2 Nomi delle Porte

In FreeBSD, si accede ad ogni porta seriale attraverso una voce nella directory /dev. Ci sono due differenti tipi di voci:

  • Le porte di ingresso vengono dette /dev/ttydN dove N è il numero di porta, cominciando da zero. Generalmente, puoi usare la porta di ingresso per i terminali. Le porte di ingresso richiedono che la linea fornisca un segnale detto data carrier detect (DCD) per funzionare correttamente.

  • Le porte di uscita vengono dette /dev/cuaaN. In genere non si usano porte di uscita per i terminali, ma solo per i modem. Puoi usare la porta di uscita se il cavo seriale o il terminale non supportano il segnale di carrier detect.

Se hai connesso un terminale sulla prima porta seriale (COM1 in MS-DOS), allora userai /dev/ttyd0 per riferirti al terminale. Se il terminale è sulla seconda porta seriale (anche nota come COM2), usa /dev/ttyd1, e così via.


20.2.3 Configurazione del Kernel

FreeBSD supporta quattro porte seriali di default. Nel mondo MS-DOS, queste sono note come COM1, COM2, COM3, e COM4. FreeBSD attualmente supporta schede d'interfaccia seriale multiporta ``stupide'', come le BocaBoard 1008 e 2016, così come le schede multiporta intelligenti come quelle fatte dalla Digiboard e dalla Stallion Technologies. Ad ogni modo, il kernel di default usa solo le porte COM standard.

Per vedere se il tuo kernel riconosce una delle tue porte seriali, guarda i messaggi mentre il kernel viene avviato, o usa il comando /sbin/dmesg per far scorrere di nuovo i messaggi di avvio del kernel. In particolare, cerca dei messaggi che inizino con i caratteri sio.

Suggerimento: Per vedere solo i messaggi che hanno la parola sio, usa il comando:

# /sbin/dmesg | grep 'sio'

Ad esempio, su un sistema con quattro porte seriali, questi sono i messaggi dati dall'avvio del kernel specifici delle porte seriali:

sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A
sio3 at 0x2e8-0x2ef irq 9 on isa
sio3: type 16550A

Se il tuo kernel non riconosce tutte le tue porte seriali, probabilmente avrai bisogno di configurare un kernel FreeBSD adattato al tuo sistema. Per informazioni dettagliate sulla configurazione del kernel, vedi più avanti Capitolo 8.

Le linee rilevanti per i dispositivi nella tua configurazione del kernel dovrebbero apparire così, con FreeBSD 4.X:

device            sio0    at isa? port IO_COM1 irq 4
device          sio1    at isa? port IO_COM2 irq 3
device          sio2    at isa? port IO_COM3 irq 5
device          sio3    at isa? port IO_COM4 irq 9

e così, con FreeBSD 5.X:

device            sio

Puoi commentare o rimuovere completamente le linee per i dispositivi che non hai nel caso di FreeBSD 4.X; per FreeBSD 5.X devi modificare il file /boot/device.hints per configurare le porte seriali. Guarda la pagina man di sio(4) per informazioni aggiuntive sulla configurazione delle porte seriali e delle schede multiporta. Stai attento se stai usando un file di configurazione già usato per una versione differente di FreeBSD, poiché i flag dei dispositivi e la sintassi sono cambiati tra una versione e l'altra.

Nota: port IO_COM1 è una sostituzione per port 0x3f8, IO_COM2 è 0x2f8, IO_COM3 è 0x3e8, e IO_COM4 è 0x2e8, che sono indirizzi comuni per le rispettive porte seriali; gli interrupt 4, 3, 5, e 9 sono linee di richiesta di interrupt piuttosto comuni. Da notare anche che le normali porte seriali non possono condividere degli interrupt sui bus ISA dei PC (le schede multiporta hanno dell'elettronica integrata che permette a tutte le 16550A sulla scheda di condividere uno o due linee di richiesta dell'interrupt).


20.2.4 File Speciali di Dispositivo

Alla maggior parte dei dispositivi nel kernel si accede attraverso ``file speciali di dispositivo'', che si trovano nella directory /dev. Ai dispositivi sio si accede attraverso i /dev/ttydN (ingresso) e /dev/cuaaN (uscita). FreeBSD fornisce anche dei dispositivi di inizializzazione (/dev/ttyidN e /dev/cuaiaN) e dei dispositivi di blocco (/dev/ttyldN e /dev/cualaN). I dispositivi di inizializzazione vengono usati per inizializzare i parametri delle porte di comunicazione ogni volta che una porta viene aperta, come crtscts per i modem che usano le segnalazioni RTS/CTS per il controllo di flusso. I dispositivi di blocco vengono usati per fissare i flag sulle porte ed evitare che altri utenti o programmi cambino certi parametri; guarda le pagine man di termios(4), sio(4), e stty(1) per maggiori informazioni sulle impostazioni dei terminali, sui dispositivi di blocco ed inizializzazione, e sull'impostazione delle opzioni del terminale, rispettivamente.


20.2.4.1 Creazione dei File Speciali di Dispositivo

Nota: FreeBSD 5.0 include il file system devfs(5) che crea automaticamente nodi per i dispositivi necessari. Se stai usando una versione di FreeBSD con il devfs abilitato puoi saltare tranquillamente questa sezione.

Uno script di shell di nome MAKEDEV nella directory /dev gestisce i file di dispositivo. Per usare MAKEDEV nella creazione del file di dispositivo per COM1 (porta 0), fai cd su /dev e dai il comando MAKEDEV ttyd0. Allo stesso modo, per creare il file di dispositivo per COM2 (porta 1), usa MAKEDEV ttyd1.

MAKEDEV non crea solo i file speciali /dev/ttydN, ma anche i nodi /dev/cuaaN, /dev/cuaiaN, /dev/cualaN, /dev/ttyldN, e /dev/ttyidN.

Dopo aver creato i nuovi file di dispositivo, fa attenzione nel controllare i permessi sui file (specialmente sui file /dev/cua*) per assicurarti che solo gli utenti che dovrebbero effettivamente avere accesso a questi dispositivi possano leggerli e scriverli -- magari non vorrai permettere al tuo utente medio di usare il tuo modem per chiamare verso l'esterno. I permessi predefiniti su /dev/cua* dovrebbero essere adatti:

crw-rw----    1 uucp     dialer    28, 129 Feb 15 14:38 /dev/cuaa1
crw-rw----    1 uucp     dialer    28, 161 Feb 15 14:38 /dev/cuaia1
crw-rw----    1 uucp     dialer    28, 193 Feb 15 14:38 /dev/cuala1

Questi permessi permettono all'utente uucp e agli utenti nel gruppo dialer di usare i dispositivi di uscita.


20.2.5 Configurazione della Porta Seriale

Il dispositivo ttydN (o cuaaN) è il normale dispositivo che si apre per le proprie applicazioni. Quando un processo apre il dispositivo, avrà un insieme di impostazioni di I/O predefinite per il terminale. Puoi visualizzare queste impostazioni con il comando:

# stty -a -f /dev/ttyd1

Quando cambi le impostazioni per questo dispositivo, queste rimangono efficaci finché il dispositivo non viene chiuso. Quando viene riaperto, ritorna all'insieme di default. Per effettuare dei cambiamenti all'insieme predefinito, modifica le impostazioni per il dispositivo di ``stato iniziale''. Ad esempio, per attivare di default modalità CLOCAL, comunicazione a 8 bit, e controllo di flusso XON/XOFF per ttyd5, scrivi:

# stty -f /dev/ttyid5 clocal cs8 ixon ixoff

Le inizializzazioni di sistema per i dispositivi seriali sono controllate in /etc/rc.serial. Questo file influisce sui valori predefiniti dei dispositivi seriali.

Per evitare cambiamenti da parte di qualche applicazione, modifica il dispositivo di ``blocco dello stato''. Ad esempio, per bloccare la velocità di ttyd5 a 57600 bps, scrivi:

# stty -f /dev/ttyld5 57600

Ora, un applicazione che apra ttyd5 e cerchi di cambiare la velocità della porta resterà bloccata a 57600 bps.

Naturalmente, dovresti rendere i dispositivi di stato iniziale e stato di blocco scrivibili solo da root.


20.3 Terminali

Contributo di Sean Kelly.

I terminali forniscono un sistema di accesso conveniente ed a basso costo al tuo sistema FreeBSD quando non sei davanti alla console del computer o connesso ad una rete. Questa sezione descrive l'uso dei terminali con FreeBSD.


20.3.1 Uso e Tipi di Terminali

I sistemi UNIX originali non avevano console. Invece, la gente effettuava il login ed avviava programmi attraverso terminali connessi alle porte seriali del computer. Ciò era abbastanza simile all'uso di modem e programmi terminale per collegarsi telefonicamente ad un sistema remoto e lavorare da riga di comando.

I PC di oggi hanno console capaci di grafica di alta qualità, ma l'abilità di stabilire una sessione di login su una porta seriale esiste ancora in quasi ogni sistema operativo in stile UNIX di oggi; FreeBSD non fa eccezione. Usando un terminale attaccato ad una porta seriale inutilizzata, puoi effettuare il login ed eseguire qualsiasi programma testuale che potresti lanciare normalmente dalla console o da una finestra xterm in X Window.

Un utente aziendale può connettere molti terminali ad un sistema FreeBSD e porli sulle scrivanie dei propri impiegati. Un utente casalingo può usare qualcosa come un vecchio PC IBM o un Macintosh® come terminale connesso a un computer più potente che faccia girare FreeBSD. Puoi anche trasformare quello che sarebbe un computer singolo utente in un potente sistema per utenti multipli.

Per FreeBSD, esistono tre tipi di terminali:

Le sottosezioni rimanenti descrivono ognuno di questi tipi.


20.3.1.1 Terminali ``Stupidi''

Questi terminali sono oggetti hardware specializzati che permettono di connettere dei computer tramite linee seriali. Essi vengono detti ``stupidi'' poiché hanno solo la potenza di calcolo necessaria per mostrare, inviare, e ricevere testo. Non potete eseguire nessun programma su di essi. È il computer al quale vi collegate che ha la potenza per eseguire editor di testo, compilatori, email, giochi, e così via.

Ci sono centinaia di tipi di terminali di questo tipo, venduti da molti produttori, incluso il VT-100 della Digital Equipment Corporation e il WY-75 della Wyse. Quasi tutti funzioneranno con FreeBSD. Alcuni terminali di alto livello possono anche mostrare della grafica, ma solo alcuni pacchetti software possono avvalersi di queste caratteristiche.

I terminali stupidi sono popolari negli ambienti di lavoro nei quali i lavoratori non hanno bisogno di accedere ad applicazioni grafiche come quelle fornite dal sistema X Window.


20.3.1.2 PC che Emulano Terminali

Se un terminale stupido ha appena le capacità per mostrare, inviare, e ricevere testo, allora di certo un qualunque personal computer può funzionare come un terminale stupido. Tutto ciò di cui hai bisogno è il cavo appropriato ed un qualche programma per l'emulazione di terminale sul tuo computer.

Una simile configurazione è comune in molte case. Ad esempio, se il tuo coniuge sta lavorando alla console del sistema FreeBSD, tu puoi fare del lavoro testuale allo stesso momento da un PC meno potente connesso come terminale al sistema FreeBSD.


20.3.1.3 Terminali X

I terminali X sono i terminali più sofisticati tra quelli disponibili. Invece di collegarsi alla porta seriale, in genere ci si collega ad essi tramite un rete come Ethernet. Invece di essere relegati alle applicazioni testuali, essi possono mostrare applicazioni X.

Introduciamo i terminali X solo per una questione di completezza. Ad ogni modo, questo capitolo non affronta in modo completo l'installazione, la configurazione, o l'uso dei terminali X.


20.3.2 Configurazione

Questa sezione descrive quello che hai bisogno di configurare sul tuo sistema FreeBSD per abilitare una sessione di login via terminale. Si assume che tu abbia già configurato il kernel con il supporto per la porta seriale alla quale è connesso il terminale -- e che questo sia già connesso.

Dovresti ricordare dal Capitolo 12 che il processo init è responsabile del controllo di tutti i processi e dell'inizializzazione del sistema all'avvio. Uno dei compiti svolti da init è la lettura del file /etc/ttys e l'avvio di un processo getty sui terminali disponibili. Il processo getty è responsabile della lettura di un nome di login e dell'avvio del programma login.

Dunque, per configurare i terminali per il tuo sistema FreeBSD devono essere effettuati come root i seguenti passi:

  1. Aggiungi una linea a /etc/ttys relativa al file in /dev per la porta seriale, se non è già presente.

  2. Specifica che /usr/libexec/getty deve essere eseguito sulla porta, e specifica il tipo appropriato di getty dal file /etc/gettytab.

  3. Specifica il tipo di terminale predefinito.

  4. Imposta la porta su ``on''.

  5. Specifica se la porta deve essere ``sicura''.

  6. Forza init alla rilettura del file /etc/ttys.

Come passo opzionale, potresti desiderare di creare un tipo di getty personale da usare nel secondo passo aggiungendo una linea in /etc/gettytab. Questo capitolo non spiega come fare ciò; sei incoraggiato a leggere le pagine man di gettytab(5) e getty(8) per maggiori informazioni.


20.3.2.1 Aggiunta di un Elemento in /etc/ttys

Il file /etc/ttys elenca tutte le porte del tuo sistema FreeBSD dalle quali vuoi permettere un login. Ad esempio, la prima console virtuale ttyv0 è elencata in questo file. Si può accedere al sistema dalla console grazie a questa voce. Questo file contiene anche delle voci per altre console virtuali, porte seriali, e pseudo-tty. Per un terminale connesso fisicamente, basta copiare l'elenco delle porte seriali in /dev senza la parte /dev (ad esempio, /dev/ttyv0 verrà scritta come ttyv0).

Un'installazione predefinita di FreeBSD include un file /etc/ttys con supporto per le prime quattro porte seriali: da ttyd0 a ttyd3. Se vuoi collegare un terminale a una di queste porte, non hai bisogno di aggiungere un'altra voce.

Esempio 20-1. Aggiunta di Voci per Altri Terminali a /etc/ttys

Supponiamo che si vogliano collegare due terminali ad un sistema: un Wyse-50 ed un vecchio PC IBM 286 con Procomm come programma di emulazione di terminale VT-100. Colleghiamo il Wyse alla seconda porta seriale ed il 286 alla sesta (una porta su scheda seriale multiporta). Le voci corrispondenti nel file /etc/ttys apparirebbero così:

ttyd1(1)  "/usr/libexec/getty std.38400"(2)  wy50(3)  on(4)  insecure(5)
ttyd5   "/usr/libexec/getty std.19200"  vt100  on  insecure
(1)
Il primo campo in genere specifica il nome del file speciale per il terminale, come si trova in /dev.
(2)
Il secondo campo è il comando da eseguire per questa linea, generalmente getty(8). getty inizializza ed apre la linea, imposta la velocità, richiede all'utente un nome di login e poi esegue il programma login(1).

Il programma getty accetta un parametro (opzionale) da riga di comando, il tipo di getty. Un tipo di getty configura le caratteristiche della linea del terminale, come la frequenza di bit per secondo e la parità. Il programma getty legge questa caratteristiche dal file /etc/gettytab.

Il file /etc/gettytab contiene molte voci per le linee di terminale sia vecchie che nuove. In quasi tutti i casi, le voci che cominciano per std funzioneranno con i terminali connessi fisicamente. Queste voci ignorano la parità. C'è una voce std per ogni frequenza di bps da 110 a 115200. Naturalmente, puoi aggiungere le tue voci a questo file. La pagina man di gettytab(5) fornisce maggiori informazioni.

Nell'impostare il tipo di getty nel file /etc/ttys, assicurati che le impostazioni di comunicazione sul terminale corrispondano.

Nel nostro esempio, il Wyse-50 non usa parità e si connette a 38400 bps. Il PC 286 non usa parità e si connette a 19200 bps.

(3)
Il terzo campo è il tipo di terminale generalmente collegato alla linea tty. Per le porte dial-up, viene usato tipicamente unknown o dialup poiché gli utenti possono collegarsi con praticamente qualunque tipo di terminale o programma. Per i terminali connessi direttamente, il tipo di terminale non cambia, quindi puoi mettere un vero tipo di terminale preso dal file database di termcap(5) in questo campo.

Per il nostro esempio, il Wyse-50 usa il tipo per il vero terminale mentre il PC 286 con Procomm in esecuzione verrà impostato per emulare un VT-100.

(4)
Il quarto campo specifica se la porta deve essere abilitata. Scrivere on qui farà sì che il processo init avvii il programma nel secondo campo, getty. Se metti off in questo campo, non ci sarà nessun getty, e dunque nessun login sulla porta.
(5)
Il campo finale è usato per specificare se la porta è sicura. Segnare una porta come sicura significa confidare nel fatto che non ci sia rischio nel permettere all'account di root (o ad un altro con user ID uguale a 0) di effettuare il login da quella porta. Porte insicure non permettono il login a root. Su una porta insicura, gli utenti devono effettuare un login con accesso non privilegiato, e poi usare su(1) o un meccanismo simile per ottenere privilegi superiori.

È fortemente consigliato l'uso di ``insecure'' anche per i terminali che si trovano dietro porte chiuse a chiave. È abbastanza semplice effettuare il login e usare su se si ha bisogno di privilegi da superutente.


20.3.2.2 Come Forzare init a Rileggere /etc/ttys

Dopo aver effettuato i cambiamenti necessari al file /etc/ttys si deve mandare un segnale SIGHUP (hangup) al processo init affinché sia costretto a rileggere il suo file di configurazione. Ad esempio:

# kill -HUP 1

Nota: init è sempre il primo processo eseguito su un sistema dunque avrà sempre PID 1.

Se tutto è stato impostato correttamente, tutti i cavi sono collegati, ed i terminali sono accesi, allora un processo getty dovrebbe essere in esecuzione su ogni terminale e a questo punto dovresti vedere dei prompt per il login sui tuoi terminali.


20.3.3 Risoluzione dei Problemi di Connessione

Anche con la più meticolosa attenzione ai dettagli, qualcosa potrebbe comunque andare storto nell'impostazione di un terminale. Questa è una lista dei sintomi e di alcuni suggerimenti per risolverli.


20.3.3.1 Non Appare Nessun Prompt per il Login

Assicurati che il terminale sia connesso e acceso. Se è un personal computer che funziona da terminale, assicurati che il programma di emulazione di terminale sia attivo sulla porta seriale giusta.

Assicurati che il cavo sia ben connesso sia al terminale che al computer FreeBSD. Assicurati che sia il giusto tipo di cavo.

Assicurati che il terminale e FreeBSD siano concordi sul valore di bps e sulle impostazioni di parità. Se hai un terminale con un display video, assicurati che il contrasto e la luminosità siano giusti. Se è un terminale di stampa, assicurati che ci siano carta e inchiostro sufficienti.

Assicurati che il processo getty sia attivo per quel terminale. Ad esempio, per avere una lista dei processi getty con ps, scrivi:

# ps -axww | grep getty

dovresti vedere una voce per il terminale. Ad esempio, la schermata seguente mostra che getty è in esecuzione sulla seconda porta seriale ttyd1 e sta usando la voce std.38400 in /etc/gettytab:

22189  d1  Is+    0:00.03 /usr/libexec/getty std.38400 ttyd1

Se non c'è nessun processo getty in esecuzione, assicurati di aver abilitato la porta in /etc/ttys. Ricordati anche di eseguire kill -HUP 1 dopo aver modificato il file ttys.

Se il processo getty è attivo ma il terminale non mostra ancora un prompt di login, o se mostra un prompt ma non ti permette di digitare nulla, il tuo terminale o il tuo cavo potrebbero non supportare la transazione hardware. Prova a cambiare il valore in /etc/ttys da std.38400 a 3wire.38400 (e ricordati di dare un kill -HUP 1 dopo aver modificato /etc/ttys). La voce 3wire è simile a std, ma ignora l'handshake hardware. Potresti aver bisogno di ridurre i baud o di abilitare un controllo di flusso software usando 3wire per evitare dei buffer overflow.


20.3.3.2 Compaiono Caratteri Strani Invece di un Prompt di Login

Assicurati che il terminale e FreeBSD siano concordi sui bps e sulle impostazioni di parità. Verifica i processi getty per assicurarti che sia in funzione il tipo corretto di getty. Se non è così, modifica /etc/ttys ed esegui kill -HUP 1.


20.3.3.3 I Caratteri Appaiono Duplicati; la Password Viene Visualizzata Quando la Scrivo

Cambia l'impostazione del terminale (o del programma di emulazione) da ``half duplex'' o ``local echo'' a ``full duplex''.


20.4 Servizio di Ricezione Chiamate

Contributo di Guy Helmer. Aggiunte di Sean Kelly.

La configurazione del sistema FreeBSD per il servizio di ricezione chiamate è molto simile alla connessione di terminali tranne per il fatto che si ha a che fare con dei modem invece che con dei terminali.


20.4.1 Modem Esterni contro Modem Interni

I modem esterni sembrerebbero migliori per chiamare, poiché i modem esterni spesso possono essere configurati in maniera semipermanente tramite dei parametri immagazzinati in RAM non volatile e generalmente forniscono degli indicatori luminosi che mostrano lo stato degli importanti segnali RS-232. Le lucine lampeggianti impressionano gli ospiti, ma sono anche molto utili per vedere se un modem sta funzionando in maniera appropriata.

I modem interni in genere mancano della RAM non-volatile, quindi la loro configurazione può essere limitata solo impostando i DIP switch. Se il tuo modem interno ha delle luci indicatrici di segnale, probabilmente è difficile vederle quando il case del sistema è al suo posto.


20.4.1.1 Modem e Cavi

Se stai usando un modem esterno, allora avrai bisogno del cavo appropriato. Un cavo seriale standard RS-232C dovrebbe essere sufficiente, posto che tutti i normali segnali siano connessi:

  • Sent Data (TD)

  • Received Data (RD)

  • Request to Send (RTS)

  • Clear to Send (CTS)

  • Data Set Ready (DSR)

  • Data Terminal Ready (DTR)

  • Carrier Detect (CD)

  • Signal Ground (SG)

FreeBSD necessita dei segnali RTS e CTS per il controllo di flusso a velocità superiori a 2400 bps, del segnale CD per identificare quando c'è stata una risposta alla chiamata o quando una linea è stata scollegata, e del segnale DTR per dare il reset al modem dopo che una sessione è terminata. Alcuni cavi sono connessi senza alcuni dei segnali necessari, dunque se hai dei problemi, come una sessione di login che non scompare quando la linea è sconnessa, potresti avere un problema col cavo.

Come altri sistemi operativi UNIX, FreeBSD usa i segnali hardware per scoprire quando una chiamata è stata accettata o quando una linea è stata scollegata e per scollegare e resettare il modem dopo una chiamata. FreeBSD evita di mandare comandi al modem o di leggere i valori riportati dal modem. Se hai familiarità con la connessione dei modem a BBS di PC, questo potrebbe sembrarti scomodo.


20.4.2 Considerazioni sull'Interfaccia Seriale

FreeBSD supporta interfacce di comunicazione EIA RS-232C (CCITT V.24) basate su NS8250, NS16450, NS16550, e NS16550A. I dispositivi 8250 e 16450 hanno buffer di un singolo carattere. Il dispositivo 16550 fornisce un buffer di 16 caratteri, che permette prestazioni del sistema migliori. (Dei bug nel normale 16550 impediscono l'uso del buffer di 16 caratteri, quindi usate 16550A se possibile). A causa del buffer a singolo carattere questi dispositivi richiedono un lavoro maggiore da parte del sistema operativo rispetto ai dispositivi a 16 caratteri di buffer, le schede d'interfaccia seriale basate su 16550A sono preferibili. Se il sistema ha molte porte seriali attive o dovrà sopportare un grosso carico, le schede basate su 16550A sono migliori per comunicazioni a basso tasso d'errore.


20.4.3 Breve Panoramica

Come con i terminali, init lancia un processo getty per ogni porta seriale configurata per connessioni in ingresso. Ad esempio, se un modem è connesso a /dev/ttyd0, il comando ps ax mostrerà questo:

 4850 ??  I      0:00.09 /usr/libexec/getty V19200 ttyd0

Quando un utente chiama la linea del modem e questo si collega, il modem riporterà la linea CD (Carrier Detect). Il kernel nota che la portante è stata rilevata e completa l'apertura della porta con getty. getty invia un prompt login: alla velocità iniziale di linea specificata. getty aspetta per verificare che vengano ricevuti caratteri legittimi, e, in una tipica configurazione, se trova dei caratteri strani (probabilmente perché la velocità del modem è differente da quella di getty), getty cerca di calibrare la velocità di linea fino a ricevere dei caratteri ragionevoli.

Dopo che l'utente ha inserito il suo nome di login, getty esegue /usr/bin/login, che completa il login richiedendo la password per l'utente ed avviandone la shell.


20.4.4 File di Configurazione

Ci sono tre file di configurazione di sistema nella directory /etc che avrai probabilmente bisogno di modificare per permettere chiamate in ingresso sul tuo sistema FreeBSD. Il primo, /etc/gettytab, contiene le informazioni di configurazione per il demone /usr/libexec/getty. Il secondo, /etc/ttys contiene le informazioni che dicono a /sbin/init quali dispositivi tty devono avere processi getty in esecuzione. Infine, si possono mettere comandi di inizializzazione nello script /etc/rc.serial.

Ci sono due scuole di pensiero riguardo i modem su UNIX. Un gruppo preferisce configurare i propri modem in maniera che qualunque sia la velocità con la quale un utente remoto si collega, l'interfaccia locale RS-232 computer-modem funzioni ad una velocità fissa. Il beneficio di questa configurazione è che l'utente remoto vede sempre un prompt di login immediato. Il lato negativo è che il sistema non sa quale sia la vera velocità di trasmissione dati di un utente, quindi programmi a tutto schermo come Emacs non modificheranno i loro metodi di rappresentazione dello schermo per ottimizzare la risposta su connessioni lente.

L'altra scuola di pensiero configura le proprie interfacce RS-232 verso il modem per variare la propria velocità rispetto a quella di connessione dell'utente remoto. Ad esempio, le connessioni V.32bis (14.4 Kbps) faranno sì che il modem faccia funzionare la propria interfaccia RS-232 a 19.2 Kbps, mentre le connessioni a 2400 bps faranno sì che funzioni a 2400 bps. Poiché getty non comprende nessun valore restituito dal modem riguardo la velocità di connessione, getty darà un messaggio login: ad una velocità iniziale fissata e aspetterà i caratteri in risposta. Se l'utente vede caratteri strani, si assume che sappia che dovrà premere Invio finché non vedrà un prompt riconoscibile. Se le frequenze di trasmissione non concordano, getty vedrà tutto ciò che l'utente preme come ``spazzatura'', cercherà di passare alla velocità seguente e invierà il prompt login: di nuovo. Questa procedura potrebbe continuare ad nauseam, ma normalmente ci vogliono solo una o due pressioni sui tasti prima che l'utente veda un buon prompt. Ovviamente, questa sequenza di login non è pulita come la precedente a ``velocità fissata'', ma un utente su una connessione a bassa velocità dovrebbe ricevere una risposta interattiva migliore da programmi a tutto schermo.

Questa sezione cercherà di fornire informazioni di configurazione bilanciate, ma è indirizzata verso l'approccio di avere la frequenza di trasmissione del modem che segue la velocità della connessione.


20.4.4.1 /etc/gettytab

/etc/gettytab è un file di configurazione sul modello di termcap(5) per getty(8). Si prega di vedere la pagina man di gettytab(5) per le informazioni complete sul formato del file e la lista delle sue possibilità.


20.4.4.1.1 Configurazione a Velocità Fissa

Se stai fissando la frequenza di comunicazione del modem ad una velocità particolare, probabilmente non avrai bisogno di effettuare nessun cambiamento a /etc/gettytab.


20.4.4.1.2 Configurazione a Velocità Concordata

C'è bisogno di impostare una voce in /etc/gettytab per dare a getty le informazioni sulla velocità che si vuole usare per il modem. Se si possiede un modem a 2400 bps, probabilmente è possibile usare la voce D2400 già esistente.

#
# Terminali chiamanti veloci, a rotazione 2400/1200/300
# (può impostarsi in tutti i modi)
#
D2400|d2400|Fast-Dial-2400:\
        :nx=D1200:tc=2400-baud:
3|D1200|Fast-Dial-1200:\
        :nx=D300:tc=1200-baud:
5|D300|Fast-Dial-300:\
        :nx=D2400:tc=300-baud:

Se si possiede un modem con velocità maggiore, probabilmente sarà necessario aggiungere una voce in /etc/gettytab; qui c'è un esempio per modem a 14.4 Kbps modem con una velocità massima d'interfaccia di 19.2 Kbps:

#
# Aggiunte per un modem V.32bis
#
um|V300|High Speed Modem at 300,8-bit:\
        :nx=V19200:tc=std.300:
un|V1200|High Speed Modem at 1200,8-bit:\
        :nx=V300:tc=std.1200:
uo|V2400|High Speed Modem at 2400,8-bit:\
        :nx=V1200:tc=std.2400:
up|V9600|High Speed Modem at 9600,8-bit:\
        :nx=V2400:tc=std.9600:
uq|V19200|High Speed Modem at 19200,8-bit:\
        :nx=V9600:tc=std.19200:

Questo risulterà in una connessione a 8-bit, senza parità.

L'esempio precedente avvia la comunicazione a 19.2 Kbps (per una connessione V.32bis), poi cicla tra 9600 bps (per V.32), 2400 bps, 1200 bps, 300 bps, e poi ancora a 19.2 Kbps. Il ciclo sulle frequenze di comunicazione è implementato con nx= (``next table''). Ogni linea usa una voce tc= (``table continuation'') per continuare a leggere le impostazioni ``standard'' per una frequenza particolare.

Se hai un modem a 28.8 Kbps e/o vuoi avvantaggiarti della compressione su un modem a 14.4 Kbps, hai bisogno di usare una frequenza di comunicazione più alta di 19.2 Kbps. Qui c'è un esempio di voce per gettytab che imposta la velocità a 57.6 Kbps:

#
# Aggiunte per modem  V.32bis o V.34 Modem
# Impostazione a 57.6 Kbps
#
vm|VH300|Very High Speed Modem at 300,8-bit:\
        :nx=VH57600:tc=std.300:
vn|VH1200|Very High Speed Modem at 1200,8-bit:\
        :nx=VH300:tc=std.1200:
vo|VH2400|Very High Speed Modem at 2400,8-bit:\
        :nx=VH1200:tc=std.2400:
vp|VH9600|Very High Speed Modem at 9600,8-bit:\
        :nx=VH2400:tc=std.9600:
vq|VH57600|Very High Speed Modem at 57600,8-bit:\
        :nx=VH9600:tc=std.57600:

Se hai una CPU lenta o un carico di sistema pesante e non hai porte seriale 16550A, potresti ricevere errori ``sio'' ``silo'' a 57.6 Kbps.


20.4.4.2 /etc/ttys

La configurazione del file /etc/ttys è stata affrontata nella Esempio 20-1. La configurazione dei modem è simile ma dobbiamo passare un argomento differente a getty e specificare un tipo di terminale differente. Il formato generale per la configurazione sia a velocità fissata che per quella concordata è:

ttyd0   "/usr/libexec/getty xxx"   dialup on

Il primo elemento nella linea precedente è il file di dispositivo per questa voce -- ttyd0 significa che /dev/ttyd0 è il file che verrà tenuto d'occhio da getty. Il secondo elemento, "/usr/libexec/getty xxx" (xxx verrà rimpiazzato dalla capacità iniziale di gettytab) è il processo che init eseguirà sul dispositivo. Il terzo elemento, dialup, è il tipo predefinito di terminale. Il quarto parametro, on, indica a init che quella linea è operativa. Potrebbe esserci un quinto parametro, secure, ma dovrebbe essere usato solo per i terminali che siano fisicamente sicuri (come la console di sistema).

Il tipo di terminale predefinito (dialup nell'esempio precedente) potrebbe dipendere dalle preferenze locali. dialup è il terminale tradizionale predefinito sulle linee di ingresso in maniera che gli utenti possano personalizzare i loro script di login per notare quando il terminale è dialup e modificare automaticamente il loro tipo di terminale. Ad ogni modo, l'autore ritiene più semplice specificare vt102 come tipo di terminale predefinito, poiché l'utente può usare semplicemente un'emulazione VT102 sul suo sistema remoto.

Dopo aver effettuato i cambiamenti a /etc/ttys, puoi inviare un segnale HUP a init per fargli rileggere il file. Puoi usare il comando

# kill -HUP 1
per inviare il segnale. Se questa è la prima volta che cambi le impostazioni del sistema, puoi aspettare finché il modem non sia configurato in maniera appropriata e connesso, prima di inviare il segnale a init.


20.4.4.2.1 Configurazione a Velocità Fissa

Per una configurazione a velocità fissa, la voce in ttys ha bisogno di una voce che gestisca la velocità fissa anche per getty. Per un modem la cui velocità sulla porta sia bloccata a 19.2 Kbps, la voce in ttys potrebbe essere così:

ttyd0   "/usr/libexec/getty std.19200"   dialup on

Se il tuo modem è bloccato su una frequenza di trasmissione differente, sostituisci il valore appropriato per std.velocità al posto di std.19200. Assicurati di usare un tipo valido elencato in /etc/gettytab.


20.4.4.2.2 Configurazione a Velocità Concordata

In una configurazione a velocità concordata, la voce in ttys deve fare riferimento alla voce iniziale ``auto-baud'' (sic) in /etc/gettytab. Ad esempio, se hai aggiunto la riga suggerita precedentemente per un modem con velocità variabile che inizi a 19.2 Kbps (la riga in gettytab contenente il punto d'avvio V19200), la riga in ttys potrebbe essere questa:

ttyd0   "/usr/libexec/getty V19200"   dialup on

20.4.4.3 /etc/rc.serial

I modem ad alta velocità, come i V.32, i V.32bis, e i V.34, necessitano di un controllo di flusso hardware (RTS/CTS). Puoi aggiungere dei comandi stty al file /etc/rc.serial per impostare i flag di controllo di flusso nel kernel FreeBSD per le porte del modem.

Ad esempio per impostare il flag termios crtscts sui dispositivi di inizializzazione di ingresso e uscita della porta seriale numero 1 (COM2), si possono aggiungere le seguenti linee a /etc/rc.serial:

# Configurazione iniziale della porta seriale
stty -f /dev/ttyid1 crtscts
stty -f /dev/cuaia1 crtscts

20.4.5 Impostazioni del Modem

Se hai uno di quei modem i cui parametri possono essere impostati in maniera permanente in RAM non volatile, avrai bisogno di usare un programma terminale (come Telix su MS-DOS o tip sotto FreeBSD) per impostare i parametri. Collegati al modem usando le stesse velocità iniziali e di comunicazione che userebbe getty e configura la RAM non volatile secondo queste necessità:

  • CD attivo per la connessione

  • DTR attivo per l'operazione; l'assenza del DTR porta allo scollegamento della linea e al reset del modem

  • CTS controllo di flusso dei dati trasmessi

  • Disabilita il controllo di flusso XON/XOFF

  • RTS controllo di flusso dei dati ricevuti

  • Modalità silenziosa (nessun codice di risposta)

  • Nessun echo dei comandi

Leggi la documentazione del tuo modem per capire quali comandi e/o impostazioni per i DIP switch sia necessario fornirgli.

Ad esempio, per impostare i parametri precedenti su un U.S. Robotics® Sportster® 14.400 esterno, si potrebbero dare questi comandi al modem:

ATZ
AT&C1&D2&H1&I0&R2&W

Potresti anche sfruttare questa opportunità per raffinare le impostazioni del modem, ad esempio per decidere se dovrà usare V.42bis e/o la compressione MNP5.

Il modem esterno U.S. Robotics Sportster 14.400 ha anche dei DIP switch che devono essere impostati; per altri modem, forse potrai usare queste impostazioni come esempio:

  • Switch 1: SU -- DTR Normale

  • Switch 2: N/D (Codici di Risposta Verbali/Codici di Risposta Numerici

  • Switch 3: SU -- Sopprime i Codici di Risposta

  • Switch 4: GIÙ -- Nessun echo, comandi offline

  • Switch 5: SU -- Auto risposta

  • Switch 6: SU -- Carrier Detect Normale

  • Switch 7: SU -- Carica i valori predefiniti dall'NVRAM

  • Switch 8: N/D (Modalità intelligente/modalità stupida)

I codici di risposta dovrebbero essere disabilitati/soppressi per i modem chiamanti per evitare i problemi che possono capitare se getty dà incidentalmente un prompt login: ad un modem che si trova in modalità di comando ed il modem restituisce l'eco del comando o un codice di risposta. Questa sequenza può portare ad una lunga, stupida conversazione tra getty ed il modem.


20.4.5.1 Configurazione a Velocità Fissa

Per una configurazione a velocità fissa, avrai bisogno di configurare il modem affinché mantenga una frequenza dati da modem a computer indipendente dalla frequenza di comunicazione. Su un modem esterno U.S. Robotics Sportster 14.400 questi comandi bloccheranno la velocità dati tra modem e computer alla velocità con la quale i comandi sono stati inviati:

ATZ
AT&B1&W

20.4.5.2 Configurazione a Velocità Concordata

Per una configurazione a velocità concordata, sarà necessario configurare il modem affinché modifichi la frequenza dei dati della porta seriale relativamente alla velocità di arrivo. Su un modem esterno U.S. Robotics Sportster 14.400, questi comandi causeranno il blocco della frequenza di trasmissione dati con correzione d'errore del modem sulla velocità con il quale è stato inviato il comando, ma permetteranno variazioni della velocità della porta seriale per le connessioni senza correzione d'errore:

ATZ
AT&B2&W

20.4.5.3 Verifica della Configurazione del Modem

La maggior parte dei modem ad alta velocità fornisce comandi per verificare i parametri funzionali usati dal modem in maniera più o meno comprensibile. Sui modem esterni U.S. Robotics Sportster 14.400, il comando ATI5 mostra le impostazioni che sono immagazzinate nella RAM non volatile. Per vedere i veri parametri operativi del modem (così come vengono influenzati dai DIP switch del modem), usa i comandi ATZ e ATI4.

Se hai modem di marche differenti, verifica il manuale del tuo modem per vedere come sia possibile un ulteriore controllo sui parametri di configurazione del modem.


20.4.6 Risoluzione dei Problemi

Questi sono un po' di passi che è possibile seguire per verificare il funzionamento del modem sul tuo sistema.


20.4.6.1 Verifica del Sistema FreeBSD

Collega il modem al sistema FreeBSD, avvia il sistema, e, se il tuo modem ha luci di indicazione dello stato, guarda se la luce DTR del modem si accende quando appare il prompt login: sulla console del sistema -- se si accende, dovrebbe significare che FreeBSD ha avviato un processo getty sulla porta di comunicazione appropriata e sta aspettando una chiamata dal modem.

Se l'indicatore DTR non lampeggia, effettua il login sul sistema FreeBSD dalla console e dai il comando ps ax per verificare se FreeBSD sta cercando di eseguire un processo getty sulla porta corretta. Dovresti vedere linee come queste tra i processi mostrati:

  114 ??  I      0:00.10 /usr/libexec/getty V19200 ttyd0
  115 ??  I      0:00.10 /usr/libexec/getty V19200 ttyd1

Se vedi qualcosa di diverso, come questo:

  114 d0  I      0:00.10 /usr/libexec/getty V19200 ttyd0

ed il modem non ha ancora accettato chiamate, ciò significa che getty ha completato l'apertura della porta di comunicazione. Questo potrebbe indicare un problema nei cavi o un modem mal configurato, poiché getty non dovrebbe completare l'apertura della porta fino al rilevamento del segnale CD (carrier detect).

Se non vedi nessun processo getty in attesa sulla porta ttydN scelta, ricontrolla le voci in /etc/ttys per vedere se ci sono errori lì. Inoltre, controlla il file di log /var/log/messages per vedere se ci sono messaggi di init o getty riguardo i loro problemi. Se ci sono messaggi, ri-ricontrolla i file di configurazione /etc/ttys e /etc/gettytab, ed anche i file speciali di dispositivo /dev/ttydN, cercando ogni errore, voce mancante, o file di dispositivo mancante.


20.4.6.2 Tentativo di Connessione in Ingresso

Cerca di collegarti dall'esterno al sistema; assicurati di usare 8 bit, nessuna parità, e 1 bit di stop sul sistema remoto. Se non ottieni un prompt, o vengono visualizzati caratteri strani, prova a premere Invio circa una volta per secondo. Se dopo un po' ancora non vedi un prompt login:, prova inviare un'INTERRUZIONE. Se stai usando un modem ad alta velocità per effettuare la chiamata, prova a richiamare dopo aver bloccato la velocità dell'interfaccia del modem (tramite AT&B1 su un U.S. Robotics Sportster, ad esempio).

Se ancora non ottieni alcun prompt login:, verifica /etc/gettytab ancora e ricontrolla che:

  • La capacità iniziale specificata in /etc/ttys per quella linea corrisponda a quella in /etc/gettytab

  • Ogni campo nx= corrisponda ad un valore in gettytab

  • Ogni campo tc= corrisponda a un altro nome di capacità in gettytab

Se chiami ma il modem su FreeBSD non risponde, assicurati che il modem sia configurato per rispondere alla chiamata quando viene fornito un segnale DTR. Se il modem sembra essere configurato correttamente, verifica che la linea DTR sia attiva controllando gli indicatori luminosi del modem (se ne ha).

Se hai già controllato tutto quanto più volte ed ancora non funziona, fai una pausa e riprova in seguito. Se ancora non funziona puoi provare a inviare un messaggio di posta elettronica alla mailing list per le domande generiche su FreeBSD descrivendo il tuo modem ed il tuo problema, e i bravi ragazzi della lista cercheranno di darti una mano.


20.5 Servizio di Effettuazione Chiamate

I seguenti sono consigli per far sì che la tua macchina sia in grado di connettersi tramite modem ad un altro computer. Questo è appropriato per stabilire una sessione terminale con un host remoto.

Questo è utile per collegarsi ad una BBS.

Questo tipo di connessione può essere estremamente utile per ottenere un file da Internet se hai problemi con il PPP. Se hai bisogno di usare l'FTP ed il PPP non funziona, usa la sessione terminale per eseguire l'FTP. Poi usa zmodem per trasferire il file sulla tua macchina.


20.5.1 Il Mio Modem Hayes Stock Non È Supportato, Cosa Posso Fare?

Effettivamente, la pagina man di tip è un po' datata. C'è un compositore Hayes generico già integrato. Usa semplicemente at=hayes nel tuo /etc/remote file.

Il driver Hayes non è abbastanza intelligente da riconoscere alcune delle caratteristiche avanzate dei nuovi modem--messaggi come BUSY, NO DIALTONE, o CONNECT 115200 lo confonderanno e basta. Dovrai disattivare questi messaggi quando usate tip (usando ATX0&W).

Inoltre, il timeout di composizione per tip è di 60 secondi. Il tuo modem dovrebbe usare qualcosa di meno, altrimenti tip penserà che ci sia un problema di comunicazione. Prova ATS7=45&W.

Nota: Come viene fornito, tip non supporta ancora i modem Hayes completamente. La soluzione è modificare il file tipconf.h nella directory /usr/src/usr.bin/tip/tip. Ovviamente avrai bisogno della distribuzione con i sorgenti per fare ciò.

Modifica la linea #define HAYES 0 a #define HAYES 1. Poi dai i comandi make e make install. Tutto funziona bene dopo aver fatto questo.


20.5.2 Come Dovrei Inserire Questi Comandi AT?

Inserisci quella che viene definita una voce ``diretta'' nel file /etc/remote. Ad esempio, se il tuo modem è collegato alla prima porta seriale, /dev/cuaa0, allora inserisci la riga seguente:

cuaa0:dv=/dev/cuaa0:br#19200:pa=none

Usa la frequenza di bps più alta supportata dal tuo modem per il valore di br. Poi, digita tip cuaa0 e verrai connesso al tuo modem.

Se non c'è nessuna /dev/cuaa0 sul tuo sistema, fai questo:

# cd /dev # sh MAKEDEV cuaa0

O usa cu come root con il seguente comando:

# cu -llinea -s velocità

linea è la porta seriale (es. /dev/cuaa0) e velocità è la velocità (es. 57600). Quando hai finito di inserire i comandi AT premi ~. per uscire.


20.5.3 Il Simbolo @ per il Valore pn Non Funziona!

Il simbolo @ come valore del numero telefonico dice a tip di andare a cercare un numero telefonico in /etc/phones. Ma il segno @ è anche un carattere speciale nei file come /etc/remote. Devi farne l'escape con un backslash:

pn=\@

20.5.4 Come Posso Chiamare Un Numero Telefonico Da Riga di Comando?

Metti una cosiddetta voce ``generica'' in /etc/remote. Ad Esempio:

tip115200|Chiama un qualunque numero a 115200 bps:\
        :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Chiama un qualunque numero a 57600 bps:\
        :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:

Poi puoi fare una cosa simile:

# tip -115200 5551234

Se preferisci cu a tip, usa una voce generica per cu:

cu115200|Usa cu per chiamare un numero qualsiasi a 115200bps:\
        :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:

e digita:

# cu 5551234 -s 115200

20.5.5 Devo Digitare La Frequenza di bps Ogni Volta Che lo Faccio?

Metti una voce per tip1200 o cu1200, ma vai avanti e inserisci una qualunque frequenza di bps appropriata per il valore di br. tip pensa che un buon valore predefinito sia 1200 bps, motivo per cui cerca una voce per tip1200. Non sei obbligato a usare 1200 bps, comunque.


20.5.6 Accedo ad un Grande Numero di Host attraverso un Server di Terminali

Invece di aspettare fino ad essere connesso e poi digitare CONNECT <host> ogni volta, usa la funzionalità cm di tip. Ad esempio, queste voci in /etc/remote:

pain|pain.deep13.com|La macchina di Forrester:\
        :cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|La macchina di Frank:\
        :cm=CONNECT muffin\n:tc=deep13:
deep13:Server di terminali del Gizmonics Institute:\
        :dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:

ti permetteranno di digitare tip pain o tip muffin per collegarti agli host pain o muffin, e tip deep13 per il server di terminali.


20.5.7 Tip Può Provare Più di una Linea per ogni Sito?

Questo è spesso un problema quando una università ha molte linee di modem e molte migliaia di studenti cercano di usarle.

Inserisci una voce per la tua università in /etc/remote e usa @ per il campo pn:

big-university:\
        :pn=\@:tc=dialout
dialout:\
        :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:

Poi, elenca i numeri di telefono dell'università in /etc/phones:

big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114

tip proverà ognuno di questi secondo l'ordine, poi smetterà. Se vuoi continuare a riprovare, esegui tip in un ciclo while.


20.5.8 Perché Devo Premere Ctrl+P Due Volte per Inviare Un Solo Ctrl+P?

Ctrl+P è il carattere predefinito per ``forzare'', usato per dire a tip che il prossimo carattere è un dato letterale. Puoi impostare il carattere per forzare a qualsiasi altro carattere con il comando di escape ~s, che significa ``imposta una variabile''.

Digita ~sforce=singolo-carattere seguito da un ritorno a capo. singolo-carattere è un qualsiasi carattere singolo. Se non date nessun singolo-carattere, allora il carattere per forzare sarà il carattere nullo, che è possibile ottenere premendo Ctrl+2 o Ctrl+Spazio. Un valore abbastanza buono per il singolo-carattere è Shift+Ctrl+6, che è usato solo da alcuni server di terminali.

Potete far sì che il carattere per forzare sia un qualsiasi carattere vogliate specificando la riga seguente nel file $HOME/.tiprc:

force=<singolo-carattere>

20.5.9 Improvvisamente Tutto Quello che Digito È in Maiuscolo??

Devi aver premuto Ctrl+A, il ``raise character'', di tip progettato specificamente per le persone con il tasto caps-lock rotto. Usa ~s come mostrato prima per impostare la variabile raisechar a qualcosa di ragionevole. In pratica, puoi impostarla allo stesso valore del carattere per forzare, se pensi di non usare mai queste due caratteristiche.

Qui c'è un file .tiprc di esempio per gli utenti Emacs che hanno bisogno di premere Ctrl+2 e Ctrl+A molto spesso:

force=^^
raisechar=^^

Il carattere ^^ è Shift+Ctrl+6.


20.5.10 Come Posso Trasferire File con tip?

Se stai parlando ad altri sistemi UNIX, puoi mandare e ricevere file con ~p (put) e ~t (take). Questi comandi eseguono cat ed echo sul sistema remoto per accettare e inviare file. La sintassi è:

~p file-locale [file-remoto]

~t file-remoto [file-locale]

non c'è controllo d'errore, quindi probabilmente dovresti usare un altro protocollo, come zmodem.


20.5.11 Come Posso Eseguire zmodem con tip?

Per ricevere file, avvia il programma di invio sul lato remoto. Poi, digita ~C rz per iniziare a ricevere in locale.

Per inviare file, avvia il programma di ricezione sul lato remoto. Poi, digita ~C sz files per inviarli sul sistema remoto.


20.6 Impostazione della Console Seriale

Contributo di Kazutaka YOKOTA. Basato su un documento di Bill Paul.

20.6.1 Introduzione

FreeBSD ha la capacità di avviare un sistema con soltanto un terminale stupido su porta seriale come console. Una configurazione simile dovrebbe essere utile per due tipi di persone: amministratori di sistema che desiderano installare FreeBSD su macchine che non hanno tastiera o monitor connesso, e sviluppatori che vogliono effettuare il debug del kernel o dei driver.

Come descritto nel Capitolo 12, FreeBSD implementa un avviamento composto da tre stadi. I primi due stadi sono nel blocco di avvio che viene immagazzinato all'inizio della slice di FreeBSD sul disco d'avvio. Il blocco di avvio poi carica ed avvia il loader (/boot/loader) come terzo stadio.

Per poter impostare la console seriale devi configurare il codice del blocco di avvio, il codice del loader ed il kernel.


20.6.2 Configurazione della Console Seriale, Versione Essenziale

Questa sezione presuppone che stai usando una configurazione di default, conosci come connettere le porte seriali e vuoi solamente una veloce panoramica su come abilitare una console seriale. Se incontri difficoltà in questa procedura, consulta una spiegazione più esaustiva di tutte le opzioni e delle configurazioni avanzate nella sezione Sezione 20.6.3.

  1. Connetti la porta seriale. La console seriale sarà sulla COM1.

  2. Esegui echo -h > /boot.config per abilitare la console seriale per il kernel e per il boot loader.

  3. Modifica il file /etc/ttys e cambia off in on per l'entry ttyd0. Questo abilita il prompt di login sulla console seriale, che rispecchia la tipica configurazione delle console video.

  4. shutdown -r now riavvierà il sistema con la console seriale abilitata.


20.6.3 Configurazione della Console Seriale

  1. Preparazione di un cavo seriale.

    Avrai bisogno di un cavo null-modem o di un cavo seriale standard ed un adattatore null-modem. Guarda Sezione 20.2.2 per una discussione sui cavi seriali.

  2. Scollegamento della tastiera.

    La maggior parte dei sistemi PC verifica la presenza di una tastiera durante il Power-On Self-Test (POST) e dà un errore se la tastiera non viene rilevata. Alcune macchine si lamentano parecchio per la mancanza della tastiera e non proseguono l'avvio finché non viene collegata.

    Se il tuo computer si lamenta per questo errore, ma si avvia lo stesso, allora non devi fare nulla di speciale. (Alcune macchine con BIOS Phoenix semplicemente dicono ``Keyboard failed'' e continuano ad avviarsi normalmente).

    Se il tuo computer rifiuta di avviarsi senza la tastiera allora dovrai configurare il BIOS affinché ignori questo errore (se possibile). Consulta il manuale della tua scheda madre per maggiori dettagli su come fare ciò.

    Suggerimento: Impostare la tastiera su ``Non installata'' nel setup del BIOS non significa che non potrai usare la tastiera. Tutto quel che fa è dire al BIOS di non verificare la presenza di una tastiera all'accensione, in modo che non segnali che la tastiera non è collegata. Puoi lasciare la tastiera collegata anche con questa opzione impostata a ``Non installata'' e la tastiera funzionerà lo stesso.

    Nota: Se il tuo sistema ha un mouse PS/2®, le possibilità di dover scollegare il mouse allo stesso modo della tastiera sono alte. Questo perché i mouse PS/2 condividono dell'hardware con la tastiera e lasciando il mouse collegato potresti ingannare la verifica della tastiera facendogli credere che sia ancora presente. Si dice che il sistema Gateway 2000 Pentium 90 MHz con BIOS AMI funzioni così. In generale, questo non è un problema perché il mouse non è comunque particolarmente utile senza la tastiera.

  3. Collegamento di un terminale stupido alla COM1 (sio0).

    Se non possiedi un terminale stupido, puoi usare un vecchio PC/XT con un programma per modem, o la porta seriale di un altra macchina UNIX. Se non hai una COM1 (sio0), trovane una. Attualmente, non c'è altro modo di scegliere una porta diversa dalla COM1 per i blocco di avvio senza doverlo ricompilare. Se stai già usando la COM1 per un altro dispositivo, dovrai rimuoverlo temporaneamente ed installare un nuovo blocco di avvio ed un nuovo kernel una volta che FreeBSD sia funzionante. (Si assume che la COM1 sia sempre disponibile su un server di file/calcolo/terminali; se davvero hai bisogno della COM1 per qualcos'altro (e non puoi passare quel qualcosa alla COM2 (sio1)), allora probabilmente non dovresti nemmeno avere a che fare con tutto questo in primo luogo).

  4. Assicurati che il file di configurazione del tuo kernel abbia i parametri appropriati impostati per la COM1 (sio0).

    I parametri rilevanti sono:

    0x10

    Abilita il supporto alla console per questa unità. Gli altri parametri di console sono ignorati se non è fissato questo. Attualmente, al massimo un'unità può avere il supporto alla console; verrà preferita la prima (secondo l'ordine nel file di configurazione) con questo parametro. Questa opzione non renderà la porta seriale la console. Imposta il parametro seguente o usa l'opzione -h descritta più in basso, insieme a questa impostazione.

    0x20

    Forza questa unità ad essere la console (a meno che sia presente un'altra console con priorità più alta), trascurando l'opzione -h discussa precedentemente. Questo parametro rimpiazza l'opzione COMCONSOLE in FreeBSD versione 2.X. Il parametro 0x20 deve essere usato insieme al 0x10.

    0x40

    Riserva questa unità (insieme a 0x10) e rende l'unità indisponibile per l'accesso normale. Non dovresti impostare questo parametro sull'unità della porta seriale che desideri usare come console seriale. L'unico uso di questo parametro è per designare l'unità per il debug remoto del kernel. Guarda il Developer's Handbook per maggiori informazioni sul debugging remoto.

    Nota: In FreeBSD 4.0 o successivo, la semantica del parametro 0x40 è leggermente differente e c'è un altro parametro per specificare una porta seriale per il debug remoto.

    Esempio:

    device sio0 at isa? port IO_COM1 flags 0x10 irq 4
    

    Guarda la pagina man sio(4) per maggiori dettagli.

    Se i parametri non sono stati impostati, sarà necessario eseguire UserConfig (su una console differente) o ricompilare il kernel.

  5. Creazione di boot.config nella directory radice della partizione a nel disco di avvio.

    Questo file istruirà il codice del blocco di avvio su come vuoi avviare il sistema. Per poter attivare la console seriale, avrai bisogno di una o più delle seguenti opzioni--se vuoi opzioni multiple, includile tutte sulla stessa linea:

    -h

    Passa dalla console interna a quella seriale. Puoi usarla per cambiare i dispositivi console. Ad esempio, se avvii dalla console interna (video), puoi usare -h per dirigere il loader ed il kernel in modo che usino la porta seriale come dispositivo per la console. Alternativamente, se avvii da porta seriale, puoi usare l'opzione -h per dire al loader ed al kernel di usare lo schermo come console.

    -D

    Passa da una configurazione singola a una duplice. Nella configurazione singola la console sarà o quella interna (il display video) o la porta seriale, a seconda dello stato dell'opzione -h già descritta. Nella configurazione duplice, sia il display video che la porta seriale diventeranno la console allo stesso momento, senza curarsi dello stato dell'opzione -h. Ad ogni modo, nota che questa configurazione duplice ha effetto solo durante l'esecuzione del blocco di avvio. Una volta che il loader ha assunto il controllo, la console specificata da -h diventa l'unica.

    -P

    Fa sì che il blocco di avvio verifichi la presenza della tastiera. Se non ne viene rilevata nessuna, le opzioni -D e -h vengono impostate automaticamente.

    Nota: A causa delle costrizioni relative allo spazio nelle versioni attuali del blocco di avvio, l'opzione -P è in grado di riconoscere solo le tastiere estese. Le tastiere con meno di 101 tasti (e senza i tasti F11 e F12) potrebbero non essere rilevate. Le tastiere su alcuni computer portatili potrebbero non essere rilevate a causa di questa limitazione. Se questo è il caso del tuo sistema, devi abbandonare l'opzione -P. Sfortunatamente non c'è nessun metodo per aggirare questo problema.

    Usa l'opzione -P per selezionare la console automaticamente, o l'opzione -h per attivare la console seriale.

    Puoi includere altre opzioni come descritte in boot(8).

    Le opzioni, eccetto -P, verranno passate al loader (/boot/loader). Il loader determinerà quale tra il video interno o la console seriale debba diventare la console esaminando lo stato dell'opzione -h. Ciò significa che se specifichi l'opzione -D ma non la -h in /boot.config, puoi usare la porta seriale come console soltanto durante l'esecuzione del blocco di avvio; il loader userà il video interno come console.

  6. Avviamento della macchina.

    Quando avvii la tua macchina FreeBSD, il blocco di avvio scriverà il contenuto di /boot.config sulla console. Ad esempio:

    /boot.config: -P
    Keyboard: no
    

    La seconda linea appare solo se metti l'opzione -P in /boot.config ed indichi la presenza/assenza della tastiera. Questo messaggio va alla console seriale o a quella interna, o a entrambe, a seconda dell'opzione in /boot.config.

    Opzioni I messaggi vanno a
    nessuna console interna
    -h console seriale
    -D console seriale ed interna
    -Dh console seriale ed interna
    -P, tastiera presente console interna
    -P, tastiera assente console seriale

    Dopo i messaggi precedenti, ci sarà una piccola pausa prima che il blocco di avvio continui nel caricamento del loader e prima che ulteriori messaggi vengano scritti sulla console. In circostanze normali, non hai necessità di interrompere il blocco di avvio, ma potresti volerlo fare per verificare che tutto sia impostato correttamente.

    Premi un tasto qualsiasi, differente da Invio, alla console per interrompere il processo di avvio. Il blocco di avvio aspetterà ulteriori azioni. Dovresti vedere qualcosa del genere:

    >> FreeBSD/i386 BOOT
    Default: 0:ad(0,a)/boot/loader
    boot:
    

    Verifica se il messaggio precedente appare sulla console seriale o su quella interna o su entrambe, secondo le opzioni poste in /boot.config. Se il messaggio appare nella console corretta, premi Invio per continuare il processo di avvio.

    Se vuoi la console seriale ma non riesci a vedere il prompt sul terminale seriale, qualcosa è sbagliato nelle tue impostazioni. Nel frattempo, scrivi -h e premi Invio (se possibile) per dire al blocco di avvio (e al loader e al kernel) di scegliere la porta seriale per la console. Una volta che il sistema è attivo, torna indietro e verifica cosa è andato storto.

Dopo che il loader è stato caricato e ti trovi nel terzo stadio del processo di avvio puoi ancora passare dalla console interna alla console seriale impostando le variabili d'ambiente appropriate nel loader. Guarda la Sezione 20.6.6.


20.6.4 Sommario

Qui c'è il sommario delle varie impostazioni discusse in questa sezione e la console eventualmente selezionata.


20.6.4.1 Caso 1: Imposti il Flag 0x10 per sio0

device sio0 at isa? port IO_COM1 flags 0x10 irq 4
Opzioni in /boot.config Console durante i blocco di avvio Console durante il loader Console nel kernel
niente interna interna interna
-h seriale seriale seriale
-D seriale ed interna interna interna
-Dh seriale ed interna seriale seriale
-P, tastiera presente interna interna interna
-P, tastiera assente seriale ed interna seriale seriale

20.6.4.2 Caso 2: Imposti il Flag 0x30 per sio0

device sio0 at isa? port IO_COM1 flags 0x30 irq 4
Opzioni in /boot.config Console durante i blocco di avvio Console durante il loader Console nel kernel
niente interna interna seriale
-h seriale seriale seriale
-D seriale ed interna interna seriale
-Dh seriale ed interna seriale seriale
-P, tastiera presente interna interna seriale
-P, tastiera assente seriale ed interna seriale seriale

20.6.5 Consigli per una Console Seriale

20.6.5.1 Impostazione di una Velocità Maggiore della Porta Seriale

Di default, le impostazioni della porta seriale sono: 9600 baud, 8 bit, nessuna parità, ed 1 bit di stop. Se desideri cambiare la velocità, avrai bisogno di ricompilare almeno il blocco di avvio. Aggiungi la linea seguente a /etc/make.conf e compila il nuovo blocco di avvio:

BOOT_COMCONSOLE_SPEED=19200

Guarda Sezione 20.6.5.2 per istruzioni dettagliate su come costruire e installare nuovi blocchi di avvio.

Se la console seriale è configurata in qualche altra maniera invece di essere selezionata all'avvio con -h, o se la console seriale usata dal kernel è differente da quella usata dal blocco di avvio, allora dovrai aggiungere anche le opzioni seguenti al file di configurazione del kernel e compilare un nuovo kernel:

options CONSPEED=19200

20.6.5.2 Utilizzo di una Porta Seriale Differente da sio0 per la Console

Usare una porta seriale differente da sio0 come console richiede un po' di ricompilazione. Se vuoi usare un'altra porta seriale per qualche motivo, ricompila il blocco di avvio, il loader ed il kernel come segue.

  1. Ottieni i sorgenti del kernel. (Guarda il Capitolo 19)

  2. Modifica /etc/make.conf e imposta BOOT_COMCONSOLE_PORT all'indirizzo della porta che vuoi usare (0x3F8, 0x2F8, 0x3E8 o 0x2E8). Solo i dispositivi da sio0 a sio3 (COM1 a COM4) possono essere usati; le schede seriali multiporta non funzioneranno. Non sono necessarie impostazioni per gli interrupt.

  3. Crea un file di configurazione del kernel personalizzato e aggiungi i flag appropriati per la porta seriale che intendi usare. Ad esempio, se vuoi fare di sio1 (COM2) la console:

    device sio1 at isa? port IO_COM2 flags 0x10 irq 3
    

    o

    device sio1 at isa? port IO_COM2 flags 0x30 irq 3
    

    I flag di console per le altre porte seriali non dovrebbero essere impostati.

  4. Ricompila ed installa il blocco di avvio ed il loader:

    # cd /sys/boot
    # make
    # make install
    
  5. Ricompila ed installa il kernel.

  6. Scrivi il blocco di avvio sul disco di avvio con disklabel(8) ed avvia con il nuovo kernel.


20.6.5.3 Accesso al Debugger DDB dalla Linea Seriale

Se desideri entrare nel debugger del kernel dalla console seriale (utile per diagnostiche remote, ma anche molto pericoloso se generi un BREAK spurio sulla porta seriale!) allora dovrai compilare il tuo kernel con le opzioni seguenti:

options BREAK_TO_DEBUGGER
options DDB

20.6.5.4 Come Ottenere un Prompt di Login sulla Console Seriale

Anche se questo non è necessario, potresti desiderare un prompt di login sulla linea seriale, ora che puoi vedere i messaggi di avvio e puoi accedere a sessioni di debug del kernel attraverso la console seriale. Qui è spiegato come fare.

Apri il file /etc/ttys con un editor e trova queste linee:

ttyd0 "/usr/libexec/getty std.9600" unknown off secure
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd2 "/usr/libexec/getty std.9600" unknown off secure
ttyd3 "/usr/libexec/getty std.9600" unknown off secure

I dispositivi da ttyd0 a ttyd3 corrispondono a COM1 fino a COM4. Cambia off a on per la porta desiderata. Se hai cambiato la velocità della porta seriale, dovrai cambiare std.9600 affinché corrisponda all'impostazione corrente, ad es. std.19200.

Potresti anche desiderare cambiare il tipo di terminale da unknown al tipo effettivo del tuo terminale seriale.

Dopo avere modificato il file, devi dare un kill -HUP 1 affinché i cambiamenti abbiano effetto.


20.6.6 Cambiamento della Console dal Loader

Le sezioni precedenti hanno descritto come impostare la console seriale lavorando sul blocco di avvio. Questa sezione mostra come specificare a console inserendo alcuni comandi ed alcune variabili di ambiente nel loader. Quando il loader verrà invocato al terzo stadio del processo di avvio, dopo il blocco di avvio, le impostazioni nel loader prenderanno il posto di quelle nel blocco di avvio.


20.6.6.1 Impostazione della Console Seriale

Puoi facilmente specificare al loader ed al kernel di usare la console seriale scrivendo una sola riga in /boot/loader.rc:

set console=comconsole

Ciò sarà efficace in ogni caso, qualunque siano le impostazioni nel blocco di avvio discusse nella sezione precedente.

Sarebbe meglio mettere la linea precedente come prima linea di /boot/loader.rc in modo da vedere i messaggi sulla console seriale il prima possibile.

Altrimenti, puoi specificare la console interna come:

set console=vidconsole

Se non imposti la variabile di ambiente console del loader, quest'ultimo, e conseguentemente anche il kernel, useranno una console qualunque indicata dall'opzione -h nel blocco di avvio.

Nelle versioni 3.2 o successive, è possibile specificare la console in /boot/loader.conf.local o /boot/loader.conf, piuttosto che in /boot/loader.rc. Con questo metodo il tuo /boot/loader.rc dovrebbe apparire così:

include /boot/loader.4th
start

Poi, crea /boot/loader.conf.local ed aggiungi lì la linea seguente.

console=comconsole

o

console=vidconsole

Guarda loader.conf(5) per maggiori informazioni.

Nota: Al momento il loader non ha un'opzione equivalente alla -P del blocco di avvio, e non c'è possibilità di scegliere automaticamente la console interna e la console seriale basandosi sulla presenza di una tastiera.


20.6.6.2 Utilizzo di una Porta Seriale Diversa da sio0 per la Console

Sarà necessario ricompilare il loader per usare una porta seriale differente da sio0 per la console seriale. Segui la procedura descritta nella Sezione 20.6.5.2.


20.6.7 Avvertimento

L'idea di tutto questo è di permettere alla gente di mettere su server dedicati che non abbiano bisogno di hardware grafico o di tastiere. Sfortunatamente, mentre la maggior parte dei sistemi ti permetteranno di avviare senza tastiera, ce ne sono alcuni che non ti permetteranno di partire senza un adattatore grafico. Le macchine con BIOS AMI possono essere configurate per partire senza adattatori grafici cambiando semplicemente il valore di ``graphics adapter'' nella configurazione CMOS a ``Not installed''.

Ad ogni modo, molte macchine non supportano questa opzione e si rifiuteranno di avviarsi se non si ha hardware grafico nel sistema. Con queste macchine, avrai bisogno di lasciare un qualche tipo di scheda grafica attaccata, (anche una scheda monocromatica di recupero) sebbene non avrai necessità di collegare un monitor. Potresti anche tentare di installare un BIOS AMI.


Capitolo 21 PPP e SLIP

21.1 Sinossi

Traduzione in corso


21.2 Using User PPP

Traduzione in corso


21.3 Using Kernel PPP

Traduzione in corso


21.5 Using PPP over ATM (PPPoA)

Traduzione in corso


21.6 Using SLIP

Traduzione in corso


Capitolo 22 Posta Elettronica

Lavoro originale di Bill Lloyd. Rielaborato da Jim Mock.

22.1 Sinossi

La ``Posta Elettronica'', meglio conosciuta come email, è una delle forme di comunicazione maggiormente utilizzate tutt'oggi. Questo capitolo fornisce un'introduzione di base per eseguire un server di posta su FreeBSD, come pure un'introduzione per inviare e ricevere la posta elettronica usando FreeBSD; comunque, questo non è un riferimento completo e infatti molte considerazioni importanti sono omesse. Per coprire questo argomento in modo più completo, si rimanda il lettore alla moltitudine di eccellenti libri elencati nell'Appendice B.

Dopo aver letto questo capitolo, saprai:

  • Quali componenti software vengono coinvolti nell'invio e nella ricezione della posta elettronica.

  • Dove sono collocati in FreeBSD i file di configurazione fondamentali di sendmail.

  • Le differenze tra casella di posta remota e locale.

  • Come impedire agli spammer di usare illegalmente il tuo server di posta come un relay.

  • Come installare e configurare un mail transfer agent alternativo sul tuo sistema, sostituendo sendmail.

  • Come risolvere i problemi più frequenti legati al server di posta.

  • Come usare SMTP con UCCP.

  • Come configurare il sistema solo per inviare la posta.

  • Come usare la posta con una connessione dialup.

  • Come configurare l'Autenticazione SMTP per aumentare la sicurezza.

  • Come installare e usare un Mail User Agent (MUA), come mutt per inviare e ricevere la posta.

  • Come scaricare la tua posta da un server remoto POP o IMAP.

  • Come applicare in modo automatico filtri e regole sulla posta in entrata.

Prima di leggere questo capitolo, dovresti:

  • Aver configurato correttamente la tua connessione di rete (Capitolo 24).

  • Aver configurato correttamente le informazioni DNS relative alla tua macchina server di posta (Capitolo 24).

  • Sapere come installare software aggiuntivo di terze parti (Capitolo 4).


22.2 Utilizzo della Posta Elettronica

Ci sono cinque parti principali impegnate in uno scambio di email. Queste sono: il programma client, quello server, il DNS, una casella di posta remota o locale, e naturalmente la macchina server di posta.


22.2.1 Il Programma Client

Questo include programmi a riga di comando quali mutt, pine, elm, e mail, e programmi con un'interfaccia grafica (GUI) quali balsa, xfmail per citarne alcuni, e qualcosa di più ``raffinato'' simile a un browser WWW. Questi programmi semplicemente fanno passare le transazioni email alla ``macchina server di posta'' locale, chiamando uno dei programmi server disponibili o inoltrando queste transazioni via TCP.


22.2.2 Il Programma Server

FreeBSD incorpora di default sendmail, ma supporta anche altri programmi server di posta elettronica, alcuni dei quali sono:

  • exim;

  • postfix;

  • qmail.

Di solito il programma server svolge due funzioni--si occupa di ricevere la posta in arrivo e di consegnare quella in partenza. Questo programma non permette di prelevare la posta usando protocolli come POP o IMAP, ne tanto meno di ``collegarsi'' alle caselle di posta locali mbox o di tipo Maildir. Per far questo hai bisogno di un altro demone.

Avvertimento: Vecchie versioni di sendmail contengono alcuni seri problemi di sicurezza che possono dare la possibilità ad un attaccante di guadagnarsi un accesso locale e/o remote sulla tua macchina. Assicurati di eseguire una versione aggiornata per evitare questi problemi. In alternativa, installa un altro MTA dalla FreeBSD Ports Collection.


22.2.3 Email e DNS

Il DNS (Domain Name System) e il suo demone named giocano un ruolo fondamentale nella consegna della posta. Per consegnare la posta dal tuo host a un altro, il programma server cercherà l'host remoto nel DNS per determinare la macchina server che riceverà la posta per il destinatario. Lo stesso processo avviene quando un host remoto invia dei messaggi di posta alla tua macchina server di posta.

Il DNS è responsabile della corrispondenza tra nomi host ed indirizzi IP, e memorizza anche informazioni specifiche per la consegna della posta, informazioni conosciute come record MX. Il record MX (Mail eXchanger) specifica quale/i host dovranno ricevere la posta per un particolare dominio. Se non hai un record MX per il tuo nome host o per il tuo dominio, la posta sarà consegnata direttamente al tuo host a condizione di avere un record A che mappa il tuo nome host al tuo indirizzo IP.

Puoi vedere i record MX per un dominio usando il comando host(1), come mostrato nel seguente esempio:

% host -t mx FreeBSD.org
FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org

22.2.4 Ricezione della Posta

La ricezione della posta per il tuo dominio viene gestita dalla macchina server di posta. Questa raccoglierà la posta indirizzata al tuo dominio e la salverà nel formato mbox (metodo per la memorizzazione della posta di default) o Maildir, a seconda delle tua configurazione. Una volta memorizzata, la posta può essere sia letta in modo locale usando applicazioni come mail(1) o mutt, sia prelevata in modo remoto usando protocolli come POP e IMAP. Ciò significa che se vuoi solo leggere la posta localmente, non hai bisogno di installare un server POP o IMAP.


22.2.4.1 Accedere a caselle di posta remote usando POP o IMAP

Per accedere a caselle di posta in modo remoto, devi avere l'accesso a un server POP o IMAP. Questi protocolli permettono agli utenti di collegarsi con facilità alle loro caselle di posta da locazioni remote. Benchè sia POP che IMAP permettono agli utenti di accedere alle caselle di posta in modo remoto, IMAP offre alcuni vantaggi, alcuni dei quali sono:

  • IMAP può memorizzare e prelevare i messaggi di posta su un server remoto.

  • IMAP supporta aggiornamenti simultanei.

  • IMAP può essere estremamente utile con connessioni lente poichè permette agli utenti di prelevare la struttura dei messaggi senza scaricarli completamente; può inoltre realizzare compiti come la ricerca su un server al fine di minimizzare il trasferimento dei dati tra client e server.

Per installare un server POP o IMAP, devi seguire i seguenti passi:

  1. Scegli un server IMAP o POP che meglio soddisfa le tue necessità. I seguenti server POP e IMAP sono ben noti e si prestano come degli ottimi esempi:

    • qpopper;

    • teapop;

    • imap-uw;

    • courier-imap;

  2. Installa il demone POP o IMAP di tua scelta dalla collezione dei port.

  3. Se necessario, modifica il file /etc/inetd.conf per avviare il server POP o IMAP.

Avvertimento: Nota che sia POP che IMAP trasmettono informazioni, inclusi il nome utente e la password in chiaro. Ciò significa che se vuoi mettere al sicuro la trasmissione di informazioni su questi protocolli, potresti considerare di effettuare tunnel di sessioni con ssh(1). La creazione di tunnel di sessioni è descritta nella Sezione 14.10.1.


22.2.4.2 Accesso alle caselle di posta locali

Si può accedere localmente alla casella di posta utilizzando un MUA sul server nel quale risiede la casella di posta. Questo può essere fatto usando applicazioni come mutt o mail(1).


22.2.5 La Macchina Server di Posta

La macchina server di posta è il nome del server che è responsabile della consegna e del ricevimento della posta per il tuo host, ed eventualmente per la tua rete.


22.3 Configurazione di sendmail

Contributo di Christopher Shumway.

sendmail(8) è il Mail Transfer Agent (MTA) di default su FreeBSD. Il compito di sendmail è di accettare posta dai Mail User Agent (MUA), e consegnarla al server di posta appropriato come definito nel suo file di configurazione. Inoltre sendmail può accettare connessioni via rete e consegnare i messaggi a caselle di posta locali o ad un altro programma.

sendmail utilizza i seguenti file di configurazione:

File Funzione
/etc/mail/access File database di accesso di sendmail
/etc/mail/aliases Alias delle caselle di posta
/etc/mail/local-host-names Lista di host per i quali sendmail accetta posta
/etc/mail/mailer.conf File di configurazione del programma di posta
/etc/mail/mailertable Tabella di consegna del programma di posta
/etc/mail/sendmail.cf File di configurazione principale di sendmail
/etc/mail/virtusertable Tabelle degli utenti e dei domini virtuali

22.3.1 /etc/mail/access

Il database di accesso definisce quali host o indirizzi IP hanno accesso al server di posta locale e quale tipo di accesso hanno. Gli host possono essere catalogati come OK, REJECT, RELAY o possono semplicemente essere passati alla procedura di gestione degli errori di sendmail con un preciso errore. Gli host che sono definiti OK, che è il valore di default, possono spedire posta a questo host sempre che la destinazione finale della posta sia la macchina locale. Gli host che sono definiti REJECT vengono rifiutati per qualsiasi connessione di posta. Gli host che hanno l'opzione RELAY per i loro nomi host possono utilizzare questo server per spedire posta verso qualsiasi destinazione.

Esempio 22-1. Configurazione del Database di Accesso di sendmail

cyberspammer.com                550 Non accettiamo posta dagli spammer
FREE.STEALTH.MAILER@            550 Non accettiamo posta dagli spammer
altra.sorgente.di.spam          REJECT
okay.cyberspammer.com           OK
128.32                          RELAY

In questo esempio abbiamo cinque elementi. Gli host mittenti che corrispondono a quelli posti sul lato sinistro della tabella sono condizionati dall'azione posta sul lato destro della tabella. I primi due esempi passano un codice di errore alla procedura di sendmail che gestisce gli errori. Il messaggio viene restituito all'host remoto quando viene trovata una corrispondenza sul lato sinistro della tabella. Il terzo esempio rifiuta la posta da un host specifico su Internet, altra.sorgente.di.spam. Il quarto esempio accetta connessioni di posta da un host, okay.cyberspammer.com, che è più preciso rispetto a cyberspammer.com della prima linea. Le corrispondenze più precise sovrascrivono quelle meno precise. L'ultimo esempio permette il relay della posta elettronica agli host che hanno un indirizzo IP che inizia con 128.32. Questi host possono spedire messaggi destinati ad altri server di posta attraverso questo server.

Quando modifichi questo file, devi eseguire make in /etc/mail/ per aggiornare il database.


22.3.2 /etc/mail/aliases

Il database degli alias contiene una lista di caselle di posta virtuali che sono espanse in altri utenti, file, programmi o in altri alias. Seguono alcuni esempi che possono essere usati in /etc/mail/aliases:

Esempio 22-2. Alias di Posta

root: utentelocale
ftp-bugs: joe,eric,paul
bit.bucket: /dev/null
procmail: "|/usr/local/bin/procmail"

Il formato del file è semplice: il nome della casella di posta che si trova a sinistra dei due punti viene espanso negli elementi posti a destra dei due punti. Il primo esempio semplicemente espande la casella di posta root nella casella di posta utentelocale, che è di nuovo ricercata nel database degli alias. Se non viene trovata, allora il messaggio viene consegnato all'utente locale utentelocale. L'esempio successivo mostra una mailing list. La posta indirizzata alla casella di posta ftp-bugs viene espansa nelle tre caselle di posta locali joe, eric, e paul. Nota che una casella di posta remota può essere specificata come user@example.com. Il terzo esempio mostra come scrivere la posta su un file, in questo caso /dev/null. L'ultimo esempio mostra come mandare la posta a un programma, in questo caso il messaggio di posta diventa lo standard input di /usr/local/bin/procmail tramite una pipe UNIX.

Quando modifichi questo file, devi eseguire make in /etc/mail/ per aggiornare il database.


22.3.3 /etc/mail/local-host-names

Questo file è una lista di nomi host che sendmail(8) accetta come se fossero l'host locale. Metti i domini o gli host per i quali sendmail deve ricevere posta. Per esempio, se questo server di posta dovesse essere in grado di accettare posta per il dominio example.com e per l'host mail.example.com, il suo local-host-names potrebbe assomigliare a questo:

example.com
mail.example.com

Quando modifichi questo file, devi riavviare sendmail(8) per attivare i cambiamenti.


22.3.4 /etc/mail/sendmail.cf

Il file di configurazione principale di sendmail, sendmail.cf controlla l'intero comportamento di sendmail, inclusa ogni cosa, dalla rielaborazione degli indirizzi e-mail alla stampa del messaggio di rifiuto per i server di posta remoti. Naturalmente, avendo svariati compiti, questo file di configurazione è alquanto complesso e i suoi dettagli vanno oltre lo scopo di questa sezione. Fortunatamente, questo file necessita raramente di essere modificato per server di posta standard.

Il file di configurazione principale di sendmail può essere costruito a partire da macro m4(1) che definiscono le caratteristiche e il comportamento di sendmail. Guarda /usr/src/contrib/sendmail/cf/README per ulteriori dettagli.

Quando modifichi questo file, devi riavviare sendmail(8) per attivare i cambiamenti.


22.3.5 /etc/mail/virtusertable

Il file virtusertable mappa indirizzi di posta relativi a domini e caselle di posta virtuali in caselle di posta reali. Queste caselle di posta possono essere locali, remote, alias definiti in /etc/mail/aliases o file.

Esempio 22-3. Esempio di Mappatura per la Posta di un Dominio Virtuale

root@example.com                root
postmaster@example.com          postmaster@noc.example.net
@example.com                    joe

Nell'esempio precedente, abbiamo una mappatura per il dominio example.com. Questo file viene processato dall'alto verso il basso fermandosi alla prima corrispondenza trovata. Il primo elemento mappa root@example.com nella casella di posta locale root. Il secondo elemento mappa postmaster@example.com nella casella di posta postmaster sull'host noc.example.net. Infine, se non sono state trovate corrispondenze per example.com fino a questo punto, verrà verificata l'ultima mappatura, che corrisponde a tutti gli altri messaggi di posta indirizzati a qualche utente di example.com. Questo verrà mappato nella casella di posta locale joe.


22.4 Sostituzione del proprio Mail Transfer Agent

Scritto da Andrew Boothman. Informazioni prese da e-mail scritte da Gregory Neil Shapiro.

Come già menzionato, l'MTA (Mail Transfer Agent, agente di trasferimento della posta elettronica) installato di default su FreeBSD è sendmail. Di conseguenza sendmail è responsabile della tua posta in partenza e di quella in arrivo.

Comunque, per vari motivi, alcuni amministratori necessitano di cambiare l'MTA dei loro sistemi. Questi motivi spaziano dal voler semplicemente provare un altro MTA all'aver bisogno di una caratteristica o di un pacchetto specifico ritrovabile in un altro MTA. Fortunatamente, per qualsiasi motivo, FreeBSD semplifica il processo di sostituzione.


22.4.1 Installazione di un nuovo MTA

Hai un'ampia scelta di MTA utilizzabili. Un buon punto di partenza è la FreeBSD Ports Collection dove puoi trovarne molti. Naturalmente sei libero di usare qualunque MTA proveniente da qualche sito, a condizione che tu riesca ad eseguirlo sotto FreeBSD.

Inizia installando il tuo nuovo MTA. Una volta installato devi valutare se realmente soddisfa le tue necessità, inoltre devi avere la possibilità di configurare il tuo nuovo programma prima che subentri a sendmail. Valutato questo, devi essere sicuro che durante l'installazione del nuovo programma non ci siano stati tentativi di sovrascrivere binari di sistema come /usr/bin/sendmail. Altrimenti, il tuo nuovo programma di posta è stato essenzialmente messo in attività prima che tu l'abbia configurato.

Per cortesia fai riferimento alla documentazione dell'MTA che hai scelto per informazioni su come configurarlo.


22.4.2 Disabilitazione di sendmail

La procedura usata per avviare sendmail cambia significativamente tra la 4.5-RELEASE e la 4.6-RELEASE. Di conseguenza, la procedura usata per disabilitarlo è leggermente differente a seconda della versione di FreeBSD utilizzata.


22.4.2.1 FreeBSD 4.5-STABLE prima del 4/4/2002 e precedenti (inclusa 4.5-RELEASE e precedenti)

Metti:

sendmail_enable="NO"

in /etc/rc.conf. In questo modo si disabiliterà il servizio di ricezione della posta di sendmail, ma se /etc/mail/mailer.conf (vedi sotto) non viene modificato, sendmail verrà ancora usato per spedire e-mail.


22.4.2.2 FreeBSD 4.5-STABLE dopo il 4/4/2002 (inclusa 4.6-RELEASE e successive)

Per disabilitare completamente sendmail devi mettere

sendmail_enable="NONE"

in /etc/rc.conf.

Avvertimento: Se disabiliti il servizio di consegna della posta di sendmail in questo modo, è importante che questo venga rimpiazzato con un altro sistema di consegna della posta perfettamente funzionante. Se non lo farai, le funzioni di sistema come periodic(8) saranno incapaci di inviare i loro risultati tramite e-mail come normalmente prevedono di fare. Molte parti del tuo sistema potrebbero presupporre di avere un sistema funzionante compatibile con sendmail. Se le applicazioni continuano a usare i binari di sendmail per tentare di spedire e-mail dopo che tu l'hai disabilitato, la posta potrebbe finire in una coda inattiva di sendmail, senza che venga mai consegnata.

Se vuoi solamente disabilitare il servizio di ricezione della posta di sendmail, devi mettere

sendmail_enable="NO"

in /etc/rc.conf. Molte informazioni sulle opzioni di avvio di sendmail sono disponibili nella pagina man di rc.sendmail(8).


22.4.3 Esecuzione del nuovo MTA all'avvio

Hai due possibili metodi per eseguire il tuo nuovo MTA all'avvio, a seconda della versione di FreeBSD utilizzata.


22.4.3.1 FreeBSD 4.5-STABLE prima del 11/4/2002 (inclusa 4.5-RELEASE e precedenti)

Posiziona uno script in /usr/local/etc/rc.d/ con estensione .sh ed eseguibile da root. Lo script deve accettare i parametri start e stop. Nella fase di avvio di FreeBSD gli script di sistema eseguiranno il comando

/usr/local/etc/rc.d/supermailer.sh start

che puoi anche usare per avviare manualmente il server. Nella fase di chiusura di FreeBSD, gli script di sistema useranno l'opzione stop, eseguendo il comando

/usr/local/etc/rc.d/supermailer.sh stop

che puoi anche usare per arrestare manualmente il server mentre il sistema è in funzione.


22.4.3.2 FreeBSD 4.5-STABLE dopo il 11/4/2002 (inclusa 4.6-RELEASE e successive)

Con le versioni recenti di FreeBSD, puoi usare il metodo precedente oppure puoi mettere

mta_start_script="nomefile"

in /etc/rc.conf, dove nomefile è il nome dello script che vuoi eseguire all'avvio per avviare il tuo MTA.


22.4.4 Sostituzione di sendmail come programma di posta di default del sistema

sendmail è così onnipresente come programma standard su sistemi UNIX che alcuni programmi lo suppongono già installato e configurato. Per questa ragione, molti degli altri MTA forniscono la loro compatibile implementazione dell'interfaccia a riga di comando di sendmail; questo agevola il loro utilizzo come sostituti ``drop-in'' di sendmail.

Quindi, se usi un altro programma di posta, dovrai assicurarti che i programmi che tentano di eseguire i binari standard di sendmail come /usr/bin/sendmail in realtà eseguano il programma di posta da te scelto. Fortunatamente, FreeBSD fornisce un meccanismo chiamato mailwrapper(8) che fa questo lavoro per te.

Quando sendmail è operativo, dovresti vedere in /etc/mail/mailer.conf qualcosa di simile a questo:

sendmail    /usr/libexec/sendmail/sendmail
send-mail   /usr/libexec/sendmail/sendmail
mailq       /usr/libexec/sendmail/sendmail
newaliases  /usr/libexec/sendmail/sendmail
hoststat    /usr/libexec/sendmail/sendmail
purgestat   /usr/libexec/sendmail/sendmail

Questo significa che quando uno di questi comandi (come sendmail stesso) viene eseguito, in realtà il sistema invoca una copia di mailwrapper di nome sendmail, la quale esamina mailer.conf ed esegue /usr/libexec/sendmail/sendmail. Questo meccanismo facilita la sostituzione dei binari che sono realmente eseguiti quando vengono invocate queste funzioni di default di sendmail.

Quindi se vuoi che /usr/local/supermailer/bin/sendmail-compat sia eseguito al posto di sendmail, devi modificare /etc/mail/mailer.conf in questo modo:

sendmail    /usr/local/supermailer/bin/sendmail-compat
send-mail   /usr/local/supermailer/bin/sendmail-compat
mailq       /usr/local/supermailer/bin/mailq-compat
newaliases  /usr/local/supermailer/bin/newaliases-compat
hoststat    /usr/local/supermailer/bin/hoststat-compat
purgestat   /usr/local/supermailer/bin/purgestat-compat

22.4.5 Conclusione

Una volta che hai configurato ogni cosa a tuo piacimento, devi terminare i processi di sendmail di cui non hai più bisogno e avviare i processi appartenenti al tuo nuovo programma, oppure puoi semplicemente riavviare il sistema. Riavviando il sistema avrai la possibilità di verificare se il sistema sia stato configurato correttamente per eseguire il tuo nuovo MTA in modo automatico all'avvio.


22.5 Risoluzione dei Problemi

22.5.1. Perché devo usare nomi di dominio completi (FQDN) per gli host del mio dominio?
22.5.2. sendmail riporta l'errore ``mail loops back to myself''
22.5.3. Come posso eseguire un server di posta su un host connesso in dial-up tramite PPP?
22.5.4. Perché continuo a ottenere l'errore ``Relaying Denied'' quando spedisco posta da altri host?

22.5.1. Perché devo usare nomi di dominio completi (FQDN) per gli host del mio dominio?

Probabilmente ti accorgerai che l'host è effettivamente in un dominio differente; per esempio, se sei in foo.bar.edu e desideri raggiungere un host chiamato mumble appartenente al dominio bar.edu, dovrai riferirti a questo tramite un nome di dominio completo, mumble.bar.edu, invece del solo mumble.

Tradizionalmente, questo era permesso dai resolver BIND di BSD. Tuttavia la versione corrente di BIND equipaggiata con FreeBSD non prevede più l'abbreviazione di default per nomi di dominio non completi all'infuori del dominio in cui sei. Quindi l'host mumble sarà giudicato come mumble.foo.bar.edu, oppure sarà ricercato per il dominio radice.

Questo differisce dal comportamento precedente, dove la ricerca continuava attraverso mumble.bar.edu, e mumble.edu. Dai un'occhiata all'RFC 1535 per i motivi per cui questa sia considerata una cattiva pratica, o persino un buco di sicurezza.

Come buona soluzione al problema, puoi mettere la linea:

search foo.bar.edu bar.edu
al posto della precedente:
domain foo.bar.edu
nel tuo /etc/resolv.conf. Comunque, assicurati che l'ordine di ricerca non oltrepassi il ``confine tra amministrazione locale e pubblica'', come definito nell'RFC 1535.

22.5.2. sendmail riporta l'errore ``mail loops back to myself''

La risposta è contenuta nelle FAQ di sendmail come segue:

Ottengo messaggi di errore, come questo:

553 MX list for domain.net points back to relay.domain.net
554 <user@domain.net>... Local configuration error

Come posso risolvere questo problema?

Hai chiesto che la posta per il dominio (es., domain.net) sia inoltrata
a un host specifico (in questo caso, relay.domain.net) attraverso l'uso di
un record MX, ma la macchina di inoltro non si riconosce appartenente a
domain.net. Aggiungi domain.net in /etc/mail/local-host-names
[chiamato /etc/sendmail.cw nelle versioni precedenti alla 8.10]
(se stai usando FEATURE(use_cw_file)) oppure aggiungi ``Cw domain.net''
in /etc/mail/sendmail.cf.

Le FAQ di sendmail possono essere trovate su http://www.sendmail.org/faq/ ed è raccomandato leggerle se vuoi ``perfezionare'' la tua configurazione di posta.

22.5.3. Come posso eseguire un server di posta su un host connesso in dial-up tramite PPP?

Vuoi collegare ad Internet una macchina FreeBSD posta sulla tua LAN. La macchina FreeBSD sarà un gateway di posta per la LAN. La connessione PPP non è molto indicata per questo scopo.

Esistono almeno due modi per far questo. Un modo è usare UUCP.

L'altro è trovare un server Internet a tempo pieno che fornisca un servizio MX secondario per il tuo dominio. Per esempio, se il dominio della tua società è example.com e il tuo fornitore di servizi Internet ha attivato example.net per fornire il servizio MX secondario al tuo dominio, allora:

example.com.         MX        10      example.com.
                     MX        20      example.net.

Solo un host deve essere specificato come ultimo ricevente (aggiungi Cw example.com in /etc/mail/sendmail.cf su example.com).

Quando sendmail tenterà di consegnare la posta proverà a connettersi alla tua connessione modem (example.com). Molto probabilmente finirà in time out poiché non sei online. In modo automatico sendmail consegnerà la posta al server MX secondario, ad esempio il tuo provider Internet (example.net). Il server MX secondario tenterà periodicamente di collegarsi al tuo host per consegnare la posta all'host MX primario (example.com).

Come script di login potresti usare qualcosa di simile a questo:

#!/bin/sh
# Mettimi in /usr/local/bin/pppmyisp
( sleep 60 ; /usr/sbin/sendmail -q ) &
/usr/sbin/ppp -direct pppmyisp

Se hai intenzione di creare uno script di login separato per un utente potresti usare sendmail -qRexample.com nello script precedente. Questo forzerà a processare immediatamente tutta la posta per example.com situata nella tua coda.

Segue un'ulteriore sottigliezza della situazione:

Messaggio rubato dalla mailing list degli Internet Service Provider che usano FreeBSD.

> forniamo l'MX secondario per un cliente. Il cliente si connette
> automaticamente ai nostri servizi molte volte al giorno per ottenere la
> posta per il suo MX primario (non chiamiamo il suo server quando arriva
> posta per il suo dominio). Il nostro sendmail processa la posta in coda
> ogni 30 minuti. Attualmente il cliente sta 30 minuti online per assicurarsi
> che tutta la posta vada all'MX primario.
>
> Esiste un comando che permetta di configurare sendmail in modo tale da
> spedire tutta la posta in quel momento? Naturalmente l'utente non ha
> privilegi di root sulla nostra macchina.

Nella sezione ``privacy flags'' di sendmail.cf, c'è una
definizione Opgoaway,restrictqrun

Rimuovi restrictqrun per permettere a utenti non root di avviare l'elaborazione
della coda. Inoltre potresti risistemare gli MX. Noi siamo l'MX primario per i
nostri clienti come questo, e abbiamo definito:

# Se siamo il miglior MX per un host, prova direttamente invece di generare
# errori di configurazione locale.
OwTrue

In questo modo un server remoto consegnerà direttamente a te, senza
tentare di connettersi al cliente. Dopodiché tu spedisci al tuo cliente.
Funziona solamente con gli ``host'', quindi hai bisogno che il tuo
cliente chiami la sua macchina di posta ``customer.com'' così come
``nomehost.customer.com'' nel DNS.
Basta mettere un record A nel DNS per ``customer.com''.

22.5.4. Perché continuo a ottenere l'errore ``Relaying Denied'' quando spedisco posta da altri host?

Con l'installazione di default di FreeBSD, sendmail viene configurato in modo tale da permettere di spedire posta solamente dall'host sul quale è in esecuzione. Per esempio, se c'è installato un server POP, allora gli utenti saranno in grado di controllare la posta da scuola, dal lavoro, o da altre postazioni remote ma tuttavia non potranno inviare messaggi di posta all'esterno da postazioni esterne. Tipicamente, pochi istanti dopo il tentativo, verrà spedita una email da MAILER-DAEMON con il messaggio di errore ``5.7 Relaying Denied''.

Esistono diversi modi per aggirare questo problema. La soluzione più semplice è mettere il proprio indirizzo assegnato dall'ISP nel file che contiene i domini a cui viene permesso di effettuare il relay, /etc/mail/relay-domains. Un modo veloce per far questo può essere:

# echo "your.isp.example.com" > /etc/mail/relay-domains

Dopo aver creato o modificato questo file devi riavviare sendmail. Questa soluzione è ideale se sei un amministratore del server e non desideri spedire posta localmente, o se vorresti usare un client/sistema punta e clicca su un'altra macchina o perfino su un altro ISP. Inoltre è molto utile se hai solo uno o due account di posta configurati. Se ci sono molti indirizzi da aggiungere, puoi semplicemente aprire questo file con il tuo editor di testo preferito e aggiungere i domini, uno per riga:

your.isp.example.com
other.isp.example.net
users-isp.example.org
www.example.org

Ora l'invio della posta tramite il tuo sistema, da parte di qualche host in lista (a condizione che l'utente abbia un account sul tuo sistema), avrà successo. Questo è un buon metodo per permettere agli utenti di spedire posta dal tuo sistema in modo remoto senza dare la possibilità a qualcuno di spedire SPAM tramite il tuo sistema.


22.6 Argomenti Avanzati

La seguente sezione tratta argomenti più complicati come l'organizzazione e la configurazione della posta per tutto il tuo dominio.


22.6.1 Configurazione di Base

Dalla macchina FreeBSD, dovresti essere in grado di spedire posta a host esterni a condizione di aver sistemato /etc/resolv.conf o di avere in esecuzione un proprio server dei nomi. Se vuoi che la posta per il tuo host sia consegnata all'MTA (es., sendmail) in esecuzione sul tuo host FreeBSD, esistono due metodi per farlo:

  • Eseguire un proprio server dei nomi e avere un proprio dominio. Per esempio, FreeBSD.org

  • Ricevere la posta direttamente sul tuo host. Questo viene fatto consegnando la posta direttamente al nome DNS corrente della tua macchina. Per esempio, example.FreeBSD.org.

Indipendentemente dal metodo scelto, affinché la posta possa essere consegnata direttamente al tuo host, devi avere un indirizzo IP statico permanente (non un indirizzo dinamico, come avviene nella maggior parte delle configurazioni dial-up di PPP). Se sei dietro a un firewall, devi abilitare il traffico SMTP in entrata. Se vuoi ricevere la posta direttamente sul tuo host, devi verificare una di queste due cose:

  • Assicurati che il record MX (con il numero più basso) relativo al tuo host nel tuo DNS punti all'indirizzo IP del tuo host.

  • Assicurati che non ci siano record MX nel tuo DNS per il tuo host.

Entrambi questi due metodi ti permettono di ricevere posta direttamente sul tuo host.

Prova questi comandi:

# hostname
example.FreeBSD.org
# host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XX

Se ottieni un risultato simile, l'invio diretto a dovrebbe funzionare senza problemi (assumendo che sendmail sia correttamente in esecuzione su example.FreeBSD.org).

Se invece vedi qualcosa di simile a questo:

# host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XX
example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org

Tutta la posta spedita al tuo host (example.FreeBSD.org) finirà per essere raccolta su hub sotto lo stesso nome utente invece di essere spedita direttamente al tuo host.

L'informazione precedente viene gestita dal tuo server DNS. Il record DNS che riporta l'informazione di instradamento della posta è l'elemento Mail eXchange. Se non esistono record MX, la posta sarà consegnata direttamente all'host attraverso il suo indirizzo IP.

L'elemento MX per freefall.FreeBSD.org in passato assomigliava a questo:

freefall        MX  30  mail.crl.net
freefall        MX  40  agora.rdrop.com
freefall        MX  10  freefall.FreeBSD.org
freefall        MX  20  who.cdrom.com

Come puoi vedere, freefall aveva molti elementi MX. Il numero MX più basso è l'host che, se disponibile, riceve direttamente la posta; se per qualche ragione questo non è accessibile, gli altri (qualche volta chiamati ``MX di backup'') accettano i messaggi temporaneamente, e li passano all'host attivo con numero inferiore, fino all'host con il numero più basso.

I server MX alternativi dovrebbero avere connessioni Internet indipendenti dalla propria al fine di risultare più utili. Il tuo ISP o un tuo amico non dovrebbero avere problemi a darti questo servizio.


22.6.2 Posta per il Tuo Dominio

Per organizzare un server di posta hai bisogno che la posta inviata alle stazioni di lavoro sia ricevuta direttamente sul server di posta. Sostanzialmente, hai bisogno di ``richiedere'' che la posta per i nomi host del tuo dominio (in questo caso *.FreeBSD.org) sia deviata al server di posta in modo tale che i tuoi utenti possono raccogliere la loro posta sul server di posta principale.

Per rendere la vita più facile, dovrebbe esistere su entrambe le macchine un account utente con lo stesso nome utente. Usa adduser(8) per farlo.

La macchina server di posta che utilizzerai deve essere designata come la macchina che scambia la posta per tutte le postazioni sulla rete. Questo viene realizzato attraverso la configurazione del DNS in modo simile a quanto segue:

example.FreeBSD.org   A   204.216.27.XX       ; Stazione di lavoro
                      MX  10 hub.FreeBSD.org  ; Server di posta

In questo modo la posta per la stazione di lavoro sarà reindirizzata al server di posta senza preoccuparsi dove punti il record A. La posta viene inviata all'host MX.

Non puoi effettuare queste modifiche da solo a meno che non hai in esecuzione un tuo server DNS. Se non puoi eseguire un server DNS, consulta il tuo ISP o chiunque ti fornisca il servizio DNS.

Se stai facendo dell'hosting di posta elettronica virtuale, le seguenti informazioni ti torneranno utili. In questo esempio, assumiamo che hai un cliente con un proprio dominio, in questo caso customer1.org, e vuoi che tutta la posta per customer1.org sia spedita alla tua macchina server di posta mail.myhost.com. L'elemento nel tuo DNS dovrebbe assomigliare a questo:

customer1.org     MX  10  mail.myhost.com

Non hai bisogno di un record A per customer1.org se vuoi solamente gestire la posta per tale dominio

Nota: Sii consapevole che un ping su customer1.org non funzionerà se non esiste un record A per tale dominio.

L'ultima cosa che devi fare è indicare a sendmail, posto sulla tua macchina server, per quali domini e/o host deve accettare posta. Esistono differenti modi per farlo. I seguenti due funzionano entrambi:

  • Se usi FEATURE(use_cw_file) aggiungi gli host al tuo file /etc/mail/local-host-names. Se usi una versione di sendmail precedente alla 8.10, il file da usare è /etc/sendmail.cw.

  • Se usi la versione di sendmail 8.10 o superiore aggiungi la riga Cwyour.host.com al tuo /etc/sendmail.cf o /etc/mail/sendmail.cf.


22.7 SMTP con UUCP

La configurazione di sendmail di default su FreeBSD è designata per siti che si collegano direttamente a Internet. I siti che vogliono scambiarsi lo loro posta tramite UUCP devono installare un altro file di configurazione di sendmail.

Editare a mano il file /etc/mail/sendmail.cf è materia da esperti. La versione 8 di sendmail genera file di configurazione tramite la preelaborazione di m4(1), dove l'attuale configurazione avviene su un livello di astrazione più alto. I file di configurazione di m4(1) possono essere trovati sotto /usr/src/usr.sbin/sendmail/cf.

Se non hai installato un completo albero dei sorgenti sul tuo sistema, non importa, il materiale di configurazione di sendmail è stato diviso in un separato tarball di sorgenti. Assumendo che tu abbia il tuo CDROM dei sorgenti di FreeBSD montato, esegui:

# cd /cdrom/src
# cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail

Questo estrae solo alcune centinaia di kilobytes. Il file README nella directory cf può servire come introduzione di base alla configurazione di m4(1).

Il miglior modo per supportare la consegna UUCP è usare la caratteristica mailertable. Questa crea un database che sendmail può usare per prendere le decisioni di instradamento.

Prima di tutto, devi creare il tuo file .mc. La directory /usr/src/usr.sbin/sendmail/cf/cf contiene alcuni esempi. Assumendo che tu abbia chiamato il tuo file foo.mc, tutto quello che devi fare per convertirlo in un valido sendmail.cf è:

# cd /usr/src/usr.sbin/sendmail/cf/cf
# make foo.cf
# cp foo.cf /etc/mail/sendmail.cf

Un tipico file .mc potrebbe assomigliare a questo:

VERSIONID(`Il tuo numero di versione') OSTYPE(bsd4.4)

FEATURE(accept_unresolvable_domains)
FEATURE(nocanonify)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')

define(`UUCP_RELAY', il.tuo.relay.uucp)
define(`UUCP_MAX_SIZE', 200000)
define(`confDONT_PROBE_INTERFACES')

MAILER(local)
MAILER(smtp)
MAILER(uucp)

Cw    il.tuo.nome.host.alias
Cw    iltuonodouucp.UUCP

Le righe contenenti le caratteristiche accept_unresolvable_domains, nocanonify, and confDONT_PROBE_INTERFACES impediscono l'uso del DNS durante la consegna della posta. La clausola UUCP_RELAY è necessaria per supportare la consegna UUCP. Metti semplicemente un nome host di Internet che è in grado di gestire indirizzi di pseudo-domini .UUCP; molto probabilmente, metterai il relay del tuo ISP.

Una volta fatto questo, hai bisogno del file /etc/mail/mailertable. Se hai solo un collegamento per l'esterno che viene usato per tutta la tua posta, la seguente riga sarà sufficiente:

#
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
.                             uucp-dom:il.tuo.relay.uucp

Un esempio più complesso potrebbe essere simile a questo:

#
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
#
horus.interface-business.de   uucp-dom:horus
.interface-business.de        uucp-dom:if-bus
interface-business.de         uucp-dom:if-bus
.heep.sax.de                  smtp8:%1
horus.UUCP                    uucp-dom:horus
if-bus.UUCP                   uucp-dom:if-bus
.                             uucp-dom:

Le prime tre righe gestiscono dei casi speciali dove la posta indirizzata a quel dominio non dovrebbe essere spedita tramite l'instradamento di default, ma piuttosto tramite alcuni UUCP di confine al fine di ``accorciare'' il percorso di consegna. La quarta riga gestisce la posta per il dominio Ethernet locale la quale può essere consegnata usando SMTP. Infine, gli UUCP di confine sono menzionati con la notazione a pseudo-dominio .UUCP, per permettere a un uucp-diconfine !destinatario di sovrascrivere le regole di default. L'ultima riga è sempre un singolo punto, a cui corrisponde ogni altra cosa e che rappresenta la consegna UUCP tramite l'UUCP di confine che viene usato come il tuo gateway di posta universale verso il mondo. Tutti i nomi dei nodi dietro alla parola uucp-dom: devono essere validi UUCP di confine, come puoi verificare usando il comando uuname.

Si ricorda che questo file deve essere convertito in un file database DBM prima di essere usato. La riga di comando che realizza ciò è messa come un commento in cima al file mailertable. Devi sempre eseguire quel comando ogni volta che modifichi il file mailertable.

Ultimo suggerimento: se non sei sicuro che alcuni instradamenti di posta potrebbero funzionare, ricordati l'opzione -bt di sendmail. Questa avvia sendmail in modalità test indirizzo; digita semplicemente 3,0, seguito dall'indirizzo su cui vuoi verificare l'instradamento della posta. L'ultima riga ti informa quale agente di posta interno è stato utilizzato, quale host di destinazione questo agente contatterà, e l'indirizzo (molto probabilmente tradotto). Lascia questa modalità digitando Ctrl+D.

% sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 foo@example.com
canonify           input: foo @ example . com
...
parse            returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . >
> ^D

22.8 Configurazione del Sistema di Posta solo per l'Invio

Contributo di Bill Moran.

Esistono molti casi in cui vorresti avere la possibilità di inviare la posta attraverso un relay. Alcuni esempi sono:

  • Il tuo computer è una macchina desktop, tuttavia vorresti essere in grado di usare programmi come send-pr(1). Per fare ciò, dovresti usare il relay di posta del tuo ISP.

  • Il computer è un server che non gestisce localmente la posta, ma demanda la gestione di tutta la posta ad un relay inoltrandola in modo opportuno.

La maggior parte degli MTA sono in grado di soddisfare questa particolare richiesta. Sfortunatamente, configurare in modo opportuno un MTA standard affinchè permetta solo l'inoltro della posta può essere un compito molto oneroso. Usare applicazioni come sendmail e postfix per questo fine risulta spesso troppo eccessivo.

Inoltre, alcuni servizi di accesso a Internet prevedono nel contratto l'impossibilità da parte del cliente di usare un ``server di posta''.

Il modo più facile per colmare questa necessità è installare il port mail/ssmtp. Esegui i seguenti comandi come root:

# cd /usr/ports/mail/ssmtp
# make install replace clean

Una volta installato, il port mail/ssmtp può essere configurato con quattro righe nel file /usr/local/etc/ssmtp/ssmtp.conf:

root=il_tuo_indirizzo_di_posta_reale
mailhub=mail.esempio.com
rewriteDomain=esempio.com
hostname=_HOSTNAME_

Assicurati di usare il tuo indirizzo di posta per la variabile root. Inserisci il server di posta di inoltro del tuo ISP al posto di mail.esempio.com (alcuni ISP lo chiamano come il ``server di posta in uscita'' o il ``server SMTP'').

Assicurati di disabilitare sendmail settando sendmail_enable="NONE" in /etc/rc.conf.

Il port mail/ssmtp ha altre opzioni disponibili. Guarda il file di configurazione di esempio /usr/local/etc/ssmtp e la pagina man di ssmtp per alcuni esempi e maggiori informazioni.

Configurando ssmtp in questo modo permetterai ai programmi sul tuo computer che necessitano di spedire posta di funzionare correttamente, senza violare le politiche del tuo ISP e senza permettere che il tuo computer sia utilizzato per l'inoltro di spam.


22.9 Uso della Posta con una Connessione Dialup

Se hai un indirizzo IP statico, non hai bisogno di adattare nulla alla configurazione di default. Imposta come nome host il nome Internet che ti è stato assegnato e sendmail farà il resto.

Se hai un indirizzo IP assegnato in modo dinamico e usi una connessione PPP dialup per Internet, allora probabilmente avrai una casella di posta sul server di posta del tuo ISP. Assumiamo che il dominio del tuo ISP sia example.net, che il tuo nome utente sia user, che hai chiamato la tua macchina bsd.home, e che il tuo ISP ti ha detto che puoi usare relay.example.net come relay per la posta.

Per ricevere la posta dalla tua casella, devi installare un agente di ricupero. L'utility fetchmail è una buona scelta poichè supporta diversi tipi di protocolli. Questo programma è disponibile come package o dalla collezione dei port (mail/fetchmail). Di solito, il tuo ISP fornirà POP. Se stai usando PPP a livello utente, puoi prelevare automaticamente la tua posta quando viene stabilita una connessione a Internet mettendo la seguente riga in /etc/ppp/ppp.linkup:

MYADDR:
!bg su user -c fetchmail

Se stai usando sendmail (come mostrato sotto) per consegnare posta ad account non locali, probabilmente vorrai che sendmail processi la tua coda di posta non appena viene stabilita una connessione ad Internet. Per far questo, metti il seguente comando dopo il comando fetchmail in /etc/ppp/ppp.linkup.

!bg su user -c "sendmail -q"

Assumiamo che tu abbia un account per user su bsd.home. Nella directory home di user su bsd.home, crea il file .fetchmailrc così composto:

poll example.net protocol pop3 fetchall pass MySecret

Questo file non dovrebbe essere leggibile da nessuno ad eccezione di user poichè contiene la password MySecret.

Per spedire la posta con il corretto header from:, devi indicare a sendmail di usare user@example.net piuttosto che user@bsd.home. Inoltre vorrai indicare a sendmail di spedire tutta la posta tramite relay.example.net, permettendo una veloce trasmissione della posta.

Il seguente file .mc dovrebbe essere sufficiente:

VERSIONID(`bsd.home.mc version 1.0')
OSTYPE(bsd4.4)dnl
FEATURE(nouucp)dnl
MAILER(local)dnl
MAILER(smtp)dnl
Cwlocalhost
Cwbsd.home
MASQUERADE_AS(`example.net')dnl
FEATURE(allmasquerade)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(nocanonify)dnl
FEATURE(nodns)dnl
define(`SMART_HOST', `relay.example.net')
Dmbsd.home
define(`confDOMAIN_NAME',`bsd.home')dnl
define(`confDELIVERY_MODE',`deferred')dnl

Fai riferimento alla precedente sezione per i dettagli su come trasformare questo file .mc nel file sendmail.cf. Inoltre, non dimenticarti di riavviare sendmail dopo aver aggiornato il file sendmail.cf.


22.10 Autenticazione SMTP

Scritto da James Gorham.

Avere un'Autenticazione SMTP operativa sul tuo server di posta porta numerosi benefici. L'Autenticazione SMTP aggiunge un ulteriore strato di sicurezza a sendmail, e ha il vantaggio di dare agli utenti mobili che cambiano host la possibilità di usare lo stesso server di posta senza avere la necessità di riconfigurare ogni volta i settaggi dei loro programmi client di posta.

  1. Installa dai port security/cyrus-sasl. Puoi trovare questo port in security/cyrus-sasl. In fase di compilazione security/cyrus-sasl permette di scegliere molte opzioni e, per il nostro scopo, assicurati di selezionare l'opzione pwcheck.

  2. Dopo aver installato security/cyrus-sasl, edita /usr/local/lib/sasl/Sendmail.conf (o crealo se non esiste) e aggiungi la seguente riga:

    pwcheck_method: passwd
    

    In questo modo si permetterà a sendmail di autenticare gli utenti tramite il proprio database passwd di FreeBSD. Questo procedimento evita di creare un nuovo set di nomi utenti e password per ogni utente che necessita di usare l'autenticazione SMTP, mantenendo la password di login uguale alla password di posta.

  3. Ora aggiungi le seguenti righe in /etc/make.conf:

    SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL
    SENDMAIL_LDFLAGS=-L/usr/local/lib
    SENDMAIL_LDADD=-lsasl
    

    Queste righe daranno, in fase di compilazione di sendmail, le giuste opzioni di configurazione per linkare a cyrus-sasl. Assicurati che cyrus-sasl sia installato prima di ricompilare sendmail.

  4. Ricompila sendmail eseguendo i seguenti comandi:

    # cd /usr/src/usr.sbin/sendmail
    # make cleandir
    # make obj
    # make
    # make install
    

    Se /usr/src non ha subito enormi cambiamenti e se le librerie condivise di cui si ha bisogno sono disponibili, la compilazione di sendmail non dovrebbe avere problemi.

  5. Dopo aver compilato e reinstallato sendmail, edita il tuo file /etc/mail/freebsd.mc (o qualunque altro file che usi come file .mc. Molti amministratori preferiscono usare, per unicità, l'output di hostname(1) come nome del file .mc). Aggiungi le seguenti righe:

    dnl set SASL options
    TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
    define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
    define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnl
    

    Queste opzioni configurano i vari metodi che sendmail ha a disposizione per autenticare gli utenti. Se vuoi usare un metodo diverso da pwcheck, guarda la documentazione inclusa nel package.

  6. Per finire, esegui make(1) in /etc/mail. Questo eseguirà il tuo nuovo file .mc e creerà un file .cf di nome freebsd.cf (o con il nome che hai usato per il file .mc). Quindi esegui il comando make install restart, che copierà il file in sendmail.cf, e riavvierà correttamente sendmail. Per maggiori informazioni su questa procedura, dovresti prendere come riferimento /etc/mail/Makefile.

Se tutto è andato per il verso giusto, dovresti essere in grado di inviare un messaggio di prova dopo aver inserito le informazioni di login nel programma client di posta. Per ulteriori indagini, setta il LogLevel di sendmail a 13 e guarda il file /var/log/maillog per eventuali errori.

Potresti voler aggiungere le seguenti righe in /etc/rc.conf in modo che questo servizio sia attivo dopo ogni avvio del sistema:

sasl_pwcheck_enable="YES"
sasl_pwcheck_program="/usr/local/sbin/pwcheck"

Questo assicurerà l'inizializzazione dell'SMTP_AUTH all'avvio del sistema.

Per ulteriori informazioni, guarda la pagina riguardante l'autenticazione SMTP di sendmail.


22.11 Mail User Agent

Contributo di Marc Silver.

Un Mail User Agent (MUA) è un'applicazione che viene usata per inviare e ricevere la posta elettronica. Man mano che la posta ``evolve'' e diventa più complessa, gli MUA diventano sempre più potenti nel modo in cui essi interagiscono con la posta elettronica; ciò fornisce agli utenti maggiori funzionalità e flessibilità. FreeBSD supporta svariati mail user agent, che possono essere facilmente installati usando la FreeBSD Ports Collection. Gli utenti possono scegliere tra client di posta con un'interfaccia grafica come evolution o balsa, client basati sulla console come mutt, pine e mail, oppure interfacce web utilizzate da alcune grandi organizzazioni.


22.11.1 mail

mail(1) è il Mail User Agent (MUA) di default su FreeBSD. Si tratta di un MUA basato sulla console che offre tutte le funzionalità di base richieste per inviare e ricevere messaggi di posta testuali, anche se è limitato nelle capacità di gestione degli allegati, e può solo supportare caselle di posta locali.

Sebbene mail non supporta in modo nativo interazioni con server POP o IMAP, queste caselle di posta possono essere scaricate nel file mbox locale usando un'applicazione come fetchmail, che verrà discussa più tardi in questo capitolo (Sezione 22.12).

Al fine di inviare o ricevere la posta, invoca semplicemente il comando mail come nel seguente esempio:

% mail

I contenuti delle caselle di posta degli utenti in /var/mail sono letti automaticamente dall'utility mail. Se la casella di posta è vuota, l'utility esce con un messaggio che indica che non è stato trovato nessun messaggio di posta. Una volta che la casella di posta è stata letta, viene avviata l'interfaccia dell'applicazione, e vengono visualizzati una lista di messaggi. I messaggi sono numerati in modo automatico, come nel seguente esempio:

Mail version 8.1 6/6/93.  Type ? for help.
"/var/mail/marcs": 3 messages 3 new
>N  1 root@localhost        Mon Mar  8 14:05  14/510   "test"
 N  2 root@localhost        Mon Mar  8 14:05  14/509   "user account"
 N  3 root@localhost        Mon Mar  8 14:05  14/509   "sample"

I messaggi possono ora essere letti usando il comando t di mail, seguito dal numero del messaggio che si vuole visualizzare. In questo esempio, leggeremo il primo messaggio di posta:

& t 1
Message 1:
From root@localhost  Mon Mar  8 14:05:52 2004
X-Original-To: marcs@localhost
Delivered-To: marcs@localhost
To: marcs@localhost
Subject: test
Date: Mon,  8 Mar 2004 14:05:52 +0200 (SAST)
From: root@localhost (Charlie Root)

Questo è un messaggio di prova, per favore rispondi se lo ricevi.

Come puoi vedere nell'esempio precedente, il tasto t visualizza il messaggio completo di tutte le sue intestazioni (header). Per visualizzare ancora la lista dei messaggi, puoi usare il tasto h.

Se il messaggio di posta richiede una replica, puoi usare mail per rispondere, usando il tasto R o r di mail. Il tasto R dice a mail di rispondere solamente al mittente del messaggio, mentre r replica non solo al mittente, ma anche agli altri eventuali destinatari del messaggio originario. Puoi anche impartire quei comandi con un suffisso relativo al numero di messaggio per il quale intendi rispondere. Fatto ciò, inserisci la tua risposta, segnalando la fine del messaggio con un singolo punto (.) su una nuova linea. Ecco un esempio:

& R 1
To: root@localhost
Subject: Re: test

Thank you, I did get your email.
.
EOT

Per inviare un nuovo messaggio, puoi usare il tasto m, seguito dall'indirizzo di posta elettronica del destinatario. Puoi specificare più destinatari separando ogni indirizzo da una virgola (,). Quindi si inserisce il soggetto del messaggio (il subject), seguito dal contenuto del messaggio stesso. La fine del messaggio deve essere specificata da un singolo punto (.) su una nuova linea.

& mail root@localhost
Subject: Ho imparato ad usare mail

Ora posso inviare e ricevere posta usando mail ... :)
.
EOT

Anche se in mail, il comando ? può essere usato per invocare l'help in linea, la pagina man mail(1) dovrebbe essere consultata per ottenere maggiori informazioni.

Nota: Come menzionato in precedenza, il comando mail(1) non è stato originariamente progettato per gestire gli allegati, e quindi il supporto per essi è proprio misero. Nuovi MUA come mutt gestiscono gli allegati in un modo più intelligente. Tuttavia se desideri comunque usare il comando mail, dovresti considerare l'uso del port converters/mpack.


22.11.2 mutt

mutt è un Mail User Agent leggero ma molto potente, con caratteristiche eccellenti, alcune delle quali sono:

  • Abilità nella gestione di thread di messaggi;

  • Supporto PGP per la firma digitale e per criptare i messaggi di posta;

  • Supporto al MIME;

  • Supporto del formato Maildir;

  • Altamente personalizzabile.

Tutte queste caratteristiche fanno di mutt uno dei maggiori user agent avanzati oggi disponibili. Guarda http://www.mutt.org per maggiori informazioni su mutt.

La versione stabile di mutt può essere installata usando il port mail/mutt, mentre la versione corrente di sviluppo può essere installata tramite il port mail/mutt-devel. Una volta che il port è stato installato, mutt può essere avviato usando il seguente comando:

% mutt

mutt in modo automatico legge il contenuto della casella di posta dell'utente in /var/mail/ e ne visualizza il contenuto. Se non ci sono messaggi nella casella di posta dell'utente, allora mutt si mette in attesa di comandi da parte dell'utente. L'esempio qui sotto mostra mutt che visualizza una lista di messaggi:

Per leggere un messaggio, selezionalo usando i tasti cursore, e premi il tasto Invio. Segue un esempio di come mutt visualizza un messaggio:

Come con il comando mail(1), mutt permette agli utenti di rispondere al solo mittente del messaggio come pure a tutti i suoi destinatari. Per rispondere solo al mittente del messaggio, usa il tasto r. Per inviare una risposta di gruppo, che invierà la risposta sia al mittente originario sia a tutti i destinatari del messaggio, usa il tasto g.

Nota: mutt si serve del comando vi(1) come editor per la creazione o risposta dei messaggi di posta elettronica. Il tipo di editor può essere personalizzato dall'utente creando o editando il proprio file di configurazione .muttrc nella propria directory home e settando in modo opportuno la variabile editor.

Per comporre un nuovo messaggio, premi il tasto m. Dopo aver digitato un valido soggetto, mutt avvierà vi(1) con il quale comporre il corpo del messaggio. Fatto ciò, salvando e uscendo da vi, mutt visualizzarà una schermata riassuntiva del messaggio che sta per essere consegnato. Per inviare il messaggio, premi il tasto y. Segue un esempio di una schermata riassuntiva di un messaggio:

mutt contiene un ottimo help in linea, che può essere accessibile nella maggior parte dei menù digitando il tasto ?. Inoltre, in alcuni casi, nella parte superiore delle finestra vengono elencati i tasti funzioni principali.


22.11.3 pine

pine è rivolto agli utenti novizi, tuttavia include alcune caratteristiche avanzate.

Avvertimento: Il software pine ha avuto svariate vulnerabilità remote scoperte in passato, che permettevano ad attaccanti remoti di eseguire del codice arbitrario come se fossero degli utenti locali del sistema, tramite l'invio di un messaggio di posta preparato ad doc. Tutti questi noti problemi sono stati rattoppati, ma il codice di pine è stato scritto in un modo insicuro e il Servizio di Sicurezza di FreeBSD crede che probabilmente esistono altre vulnerabilità non ancora scoperte o divulgate. Installa pine a tuo rischio e pericolo.

L'attuale versione di pine può essere installata usando il port mail/pine4. Una volta che il port è stato installato, pine può essere avviato con il comando seguente:

% pine

La prima volta che pine viene avviato viene visualizza una pagina di presentazione con una breve introduzione, e un sollecito del team di sviluppo di pine ad inviare un messaggio anonimo che permette di constatare quanti sono gli utenti che usano la loro applicazione. Per inviare questo messaggio anonimo, premi Invio, oppure premi il tasto E per uscire dalla presentazione senza inviare il messaggio anonimo. Ecco un esempio della pagina di presentazione:

All'utente viene quindi presentato il menù principale, che può essere facilmente esplorato con i tasti cursore. Questo menù principale fornisce le scorciatoie per comporre nuovi messaggi di posta, per esplorare le directory di posta e perfino per amministrare l'agenda degli indirizzi. Sotto al menù principale, sono mostrati i tasti funzione utili per realizzare azioni specifiche, attinenti all'attuale contesto d'uso.

La directory di default aperta da pine è inbox. Per visualizzare l'indice dei messaggi, premi il tasto I, o seleziona l'opzione MESSAGE INDEX come da esempio:

L'indice dei messaggi mostra i messaggi nella directory corrente, e può essere esplorato con i tasti cursore. I messaggi selezionati possono essere letti premendo il tasto Invio.

Nello screenshot seguente, viene visualizzato un semplice messaggio in pine. I tasti funzione sono visualizzati come riferimento nella parte superiore della finestra. Un esempio di uno di questi tasti funzioni è il tasto r, che dice al MUA di rispondere al messaggio attualmente visualizzato.

In pine la risposta ad un messaggio viene realizzata con l'editor pico, che è installato di default con pine. L'utility pico permette una semplice esplorazione del messaggio ed è più permissivo con i nuovi utenti rispetto a vi(1) o mail(1). Una volta completata la risposta, il messaggio può essere inviato con Ctrl+X. L'applicazione pine chiederà una conferma.

pine può essere personalizzato usando l'opzione SETUP del menù principale. Consulta http://www.washington.edu/pine/ per maggiori informazioni.


22.12 Usare fetchmail

Contributo di Marc Silver.

fetchmail è un client IMAP e POP super attrezzato che da la possibilità agli utenti di scaricare automaticamente la posta da server remoti IMAP e POP e di salvarla nelle proprie caselle di posta locali; in questo modo la posta è più accessibile. fetchmail può essere installato usando il port mail/fetchmail, e offre diverse caratteristiche, alcune delle quali sono:

  • Supporto dei protocolli POP3, APOP, KPOP, IMAP, ETRN e ODMR.

  • Capacità di inoltrare la posta usando SMTP, permettendo di filtrare, inoltrare, e usare la funzionalità alias come di consueto.

  • Può essere eseguito in modalità demone per verificare in modo periodico la presenza di nuovi messaggi.

  • Può recuperare più caselle di posta e inoltrare i relativi messaggi a diversi utenti locali, a seconda della sua configurazione.

Benchè la spiegazione di tutte le caratteristiche di fetchmail vada oltre lo scopo di questo documento, verranno presentate alcune funzionalità di base. fetchmail richiede un file di configurazione .fetchmailrc, al fine di poter essere avviato in modo corretto. Questo file include informazioni sui server come pure le credenziali per il login. Data la natura sensibile del contenuto di questo file, è consigliabile renderlo accessibile in sola lettura dal proprietario, usando il seguente comando:

% chmod 600 .fetchmailrc

La seguente configurazione di .fetchmailrc serve come esempio per scaricare una singola casella di posta usando POP. Essa indica a fetchmail di connettersi a example.com usando come nome utente joesoap e come password XXX. Questo esempio assume che l'utente joesoap è anche un utente del sistema locale.

poll example.com protocol pop3 username "joesoap" password "XXX"

Il prossimo esempio si connette a più server POP e IMAP e redirige i vari messaggi a diversi nomi utenti locali quando necessario:

poll example.com proto pop3:
user "joesoap", with password "XXX", is "jsoap" here;
user "andrea", with password "XXXX";
poll example2.net proto imap:
user "john", with password "XXXXX", is "myth" here;

L'utility fetchmail può essere eseguita in modalità demone con l'opzione -d, seguita da un intervallo (in secondi) in base al quale fetchmail sonderà i server elencati nel file .fetchmailrc. Il seguente esempio indica a fetchmail di sondare i server ogni 60 secondi:

% fetchmail -d 60

Maggiori informazioni su fetchmail possono essere trovate all'indirizzo http://www.catb.org/~esr/fetchmail/.


22.13 Usare procmail

Contributo di Marc Silver.

L'utility procmail è un'applicazione molto potente usata per filtrare la posta in ingresso. Permette agli utenti di definire delle ``regole'' che sono confrontate con la posta in ingresso per realizzare funzioni specifiche o per inoltrare la posta ad una casella di posta alternativa e/o ad altri indirizzi di posta. procmail può essere installato usando il port mail/procmail. Una volta installato, può essere integrato direttamente nella maggior parte degli MTA; consulta la documentazione del tuo MTA per maggiori informazioni. Altrimenti, procmail può essere integrato aggiungendo la seguente linea nel file .forward nella home directory dell'utente, potendo così utilizzare le funzionalità di procmail:

"|exec /usr/local/bin/procmail || exit 75"

La seguente sezione mostra alcune regole base di procmail, così come una breve descrizione di ciò che fanno. Queste ed eventualmente altre regole, devono essere inserite nel file .procmailrc, posto nella home directory dell'utente.

La maggior parte di queste regole possono essere trovate anche nella pagina man di procmailex(5).

Per inoltrare la posta inviata da user@example.com all'indirizzo di posta goodmail@example2.com:

:0
* ^From.*user@example.com
! goodmail@example2.com

Per inoltrare tutti i messaggi di posta con dimensioni inferiori a 1000 bytes verso l'indirizzo di posta esterno goodmail@example2.com:

:0
* < 1000
! goodmail@example2.com

Per inoltrare tutta la posta inviata a alternate@example.com in una casella di posta chiamata alternate:

:0
* ^TOalternate@example.com
alternate

Per inviare tutti messaggi di posta con soggetto ``Spam'' in /dev/null:

:0
^Subject:.*Spam
/dev/null

Ecco una ricetta utile che analizza i messaggi di posta in ingresso delle liste di FreeBSD.org e li posiziona in base alla lista in una opportuna casella di posta:

:0
* ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG
{
  LISTNAME=${MATCH}
  :0
  * LISTNAME??^\/[^@]+
  FreeBSD-${MATCH}
}

Capitolo 23 Server di Rete

23.1 Sinossi

Traduzione in corso


23.2 The inetd ``Super-Server''

Traduzione in corso


23.3 Network File System (NFS)

Traduzione in corso


23.6 Domain Name System (DNS)

Traduzione in corso


23.7 Apache HTTP Server

Traduzione in corso


23.8 File Transfer Protocol (FTP)

Traduzione in corso


Capitolo 24 Networking Avanzato

24.1 Sinossi

Traduzione in corso


24.2 Gateways e Routes

Traduzione in corso


24.3 Wireless

Traduzione in corso


24.4 Bluetooth

Traduzione in corso


24.5 Bridging

Traduzione in corso


24.6 Modalità senza dischi

Traduzione in corso


24.7 ISDN

Traduzione in corso


24.8 NAT

Traduzione in corso


24.9 PLIP

Traduzione in corso


24.10 IPv6

Traduzione in corso


24.11 ATM

Traduzione in corso

V. Appendici


Appendice A. Ottenere FreeBSD

A.1 Editori di CDROM e DVD

A.1.1 Prodotti al Dettaglio Confezionati

FreeBSD è disponibile in confezioni (i CD di FreeBSD, del software aggiuntivo, e la documentazione cartacea) presso svariati rivenditori:

  •             CompUSA
                WWW: http://www.compusa.com/
              

  •             Frys Electronics
                WWW: http://www.frys.com/
              


A.1.2 Set di CD e DVD

I set di CD e DVD di FreeBSD sono disponibili presso molti rivenditori on-line:

  •             Daemon News Mall
                560 South State Street, Suite A2
                OremUT 84058
                Stati Uniti d'America
                Telefono: +1 800 407-5170
                Fax: +1 1 801 765-0877
                Email: 
                WWW: http://www.bsdmall.com/freebsd1.html
              

  •             FreeBSD Mall, Inc.
                3623 Sanford Street
                ConcordCA 94520-1405
                Stati Uniti d'America
                Telefono: +1 925 674-0783
                Fax: +1 925 674-0821
                Email: 
                WWW: http://www.freebsdmall.com/
              

  •             FreeBSD Services Ltd
                11 Lapwing Close
                Bicester
                OX26 6XR
                Regno Unito
                WWW: http://www.freebsd-services.com/
              

  •             Hinner EDV
                St. Augustinus-Str. 10
                D-81825 München
                Germania
                Telefono: (089) 428 419
                WWW: http://www.hinner.de/linux/freebsd.html
              

  •             Ikarios
                22-24 rue Voltaire
                92000 Nanterre
                Francia
                WWW: http://ikarios.com/form/#freebsd
              

  •             Ingram Micro
                1600 E. St. Andrew Place
                Santa AnaCA  92705-4926
                Stati Uniti d'America
                Telefono: 1 (800) 456-8000
                WWW: http://www.ingrammicro.com/
              

  •             JMC Software
                Irlanda
                Telefono: 353 1 6291282
                WWW: http://www.thelinuxmall.com
              

  •             The Linux Emporium
                Hilliard House, Lester Way
                Wallingford
                OX10 9TA
                Regno Unito
                Telefono: +44 1491 837010
                Fax: +44 1491 837016
                WWW: http://www.linuxemporium.co.uk/products/freebsd/
              

  •             Linux System Labs Australia
                21 Ray Drive
                Balwyn North
                VIC - 3104
                Australia
                Telefono: +61 3 9857 5918
                Fax: +61 3 9857 8974
                WWW: http://www.lsl.com.au
              

  •             LinuxCenter.Ru
                Galernaya Street, 55
                Saint-Petersburg
                190000
                Russia
                Telefono: +7-812-3125208
                Email: 
                WWW: http://linuxcenter.ru/freebsd
              

  •             UNIXDVD.COM LTD
                57 Primrose Avenue
                Sheffield
                S5 6FS
                Regno Unito
                WWW: http://www.unixdvd.com/
              


A.1.3 Distributori

Se sei un rivenditore e vuoi vendere i CDROM di FreeBSD, contatta uno dei distributori seguenti:

  •             Cylogistics
                2672 Bayshore Parkway, Suite 610
                Mountain ViewCA 94043
                Stati Uniti d'America
                Telefono: +1 650 694-4949
                Fax: +1 650 694-4953
                Email: 
                WWW: http://www.cylogistics.com/
              

  •             FreeBSD Services Ltd
                11 Lapwing Close
                Bicester
                OX26 6XR
                Regno Unito
                WWW: http://www.freebsd-services.com/
              

  •             Kudzu, LLC
                7375 Washington Ave. S.
                EdinaMN 55439
                Stati Uniti d'America
                Telefono: +1 952 947-0822
                Fax: +1 952 947-0876
                Email: 
              

  •             Navarre Corp
                7400 49th Ave South
                New HopeMN 55428
                Stati Uniti d'America
                Telefono: +1 763 535-8333
                Fax: +1 763 535-0341
                WWW: http://www.navarre.com/
              


A.2 Siti FTP

I sorgenti ufficiali di FreeBSD sono disponibili via FTP anonimo da una serie di siti mirror sparsi in tutto il mondo. Il sito ftp://ftp.FreeBSD.org/pub/FreeBSD/ è ben gestito e permette un gran numero di connessioni, ma ti conviene probabilmente trovare un sito mirror a te ``più vicino'' (soprattutto se decidi di configurare una sorta di sito mirror).

Il database dei siti mirror di FreeBSD è più preciso della lista contenuta in questo manuale, poichè ottiene le informazioni direttamente dal DNS anziché affidarsi a una lista statica di host.

Inoltre, FreeBSD è disponibile via FTP anonimo dai seguenti siti mirror. Se decidi di procurarti FreeBSD via FTP anonimo, usa per favore un sito a te vicino. I siti mirror elencati come ``Siti Mirror Primari'' hanno tipicamente l'intero archivio di FreeBSD (tutte le versioni oggi disponibili per ognuna delle architetture) ma probabilmente scaricherai più velocemente da un sito che è nel tuo stato o regione. I siti di ogni stato contengono le versioni più recenti per le architetture più popolari ma potrebbero non contenere l'intero archivio di FreeBSD. Tutti i siti permettono l'accesso tramite FTP anonimo e alcuni permettono l'accesso anche con altri metodi. I metodi di accesso disponibili per ogni sito sono elencati fra parentesi dopo il nome dell'host.

Server Centrali, Siti Mirror Primari, Arabia Saudita, Argentina, Australia, Austria, Brasile, Canada, Cina, Corea, Croazia, Danimarca, Estonia, Finlandia, Francia, Germania, Giappone, Grecia, Hong Kong, Indonesia, Irlanda, Islanda, Italia, Lituania, Norvegia, Nuova Zelanda, Olanda, Polonia, Portogallo, Regno Unito, Repubblica Ceca, Repubblica Slovacca, Romania, Russia, Singapore, Slovenia, Spagna, Sud Africa, Svezia, Svizzera, Taiwan, Turchia, Ucraina, Ungheria, USA.

(aggiornato al 2005/03/04 15:32:08 UTC)

Server Centrali
Siti Mirror Primari

In caso di problemi, contatta l'hostmaster di questo dominio.

Arabia Saudita

In caso di problemi, contatta l'hostmaster di questo dominio.

Argentina

In caso di problemi, contatta l'hostmaster di questo dominio.

Australia

In caso di problemi, contatta l'hostmaster di questo dominio.

Austria

In caso di problemi, contatta l'hostmaster di questo dominio.

Brasile

In caso di problemi, contatta l'hostmaster di questo dominio.

Canada

In caso di problemi, contatta l'hostmaster di questo dominio.

Cina

In caso di problemi, contatta l'hostmaster di questo dominio.

Corea

In caso di problemi, contatta l'hostmaster di questo dominio.

Croazia

In caso di problemi, contatta l'hostmaster di questo dominio.

Danimarca

In caso di problemi, contatta l'hostmaster di questo dominio.

Estonia

In caso di problemi, contatta l'hostmaster di questo dominio.

Finlandia

In caso di problemi, contatta l'hostmaster di questo dominio.

Francia

In caso di problemi, contatta l'hostmaster di questo dominio.

Germania

In caso di problemi, contatta l'hostmaster di questo dominio.

Giappone

In caso di problemi, contatta l'hostmaster di questo dominio.

Grecia

In caso di problemi, contatta l'hostmaster di questo dominio.

Hong Kong
Indonesia

In caso di problemi, contatta l'hostmaster di questo dominio.

Irlanda

In caso di problemi, contatta l'hostmaster di questo dominio.

Islanda

In caso di problemi, contatta l'hostmaster di questo dominio.

Italia

In caso di problemi, contatta l'hostmaster di questo dominio.

Lituania

In caso di problemi, contatta l'hostmaster di questo dominio.

Norvegia

In caso di problemi, contatta l'hostmaster di questo dominio.

Nuova Zelanda
Olanda

In caso di problemi, contatta l'hostmaster di questo dominio.

Polonia

In caso di problemi, contatta l'hostmaster di questo dominio.

Portogallo

In caso di problemi, contatta l'hostmaster di questo dominio.

Regno Unito

In caso di problemi, contatta l'hostmaster di questo dominio.

Repubblica Ceca

In caso di problemi, contatta l'hostmaster di questo dominio.

Repubblica Slovacca

In caso di problemi, contatta l'hostmaster di questo dominio.

Romania

In caso di problemi, contatta l'hostmaster di questo dominio.

Russia

In caso di problemi, contatta l'hostmaster di questo dominio.

Singapore

In caso di problemi, contatta l'hostmaster di questo dominio.

Slovenia

In caso di problemi, contatta l'hostmaster di questo dominio.

Spagna

In caso di problemi, contatta l'hostmaster di questo dominio.

Sud Africa

In caso di problemi, contatta l'hostmaster di questo dominio.

Svezia

In caso di problemi, contatta l'hostmaster di questo dominio.

Svizzera

In caso di problemi, contatta l'hostmaster di questo dominio.

Taiwan

In caso di problemi, contatta l'hostmaster di questo dominio.

Turchia
Ucraina
Ungheria

In caso di problemi, contatta l'hostmaster di questo dominio.

USA

In caso di problemi, contatta l'hostmaster di questo dominio.


A.3 CVS Anonimo

A.3.1 Introduzione

Il CVS Anonimo (anche conosciuto come anoncvs) è una caratteristica del programma di utilità CVS contenuto in FreeBSD che serve per sincronizzarsi con un deposito CVS remoto (in gergo repository CVS). Tra le altre cose, permette agli utenti di FreeBSD di realizzare, senza avere particolari permessi, operazioni CVS in sola lettura su uno dei server anoncvs ufficiali del progetto FreeBSD. Per utilizzarlo è sufficiente impostare la variabile di ambiente CVSROOT facendola puntare al server anoncvs appropriato, immettere la password ``anoncvs'' con il comando cvs login, e poi usare il comando cvs(1) per accederci come se fosse un deposito locale.

Nota: Il comando cvs login memorizza le password utilizzate per l'autenticazione con il server CVS in un file chiamato .cvspass nella tua directory HOME. Se questo file non esiste, potresti ricevere un errore alla prima esecuzione di cvs login. Crea un file .cvspass vuoto e riprova il login.

Benché si possa dire che i servizi CVSup e anoncvs realizzino sostanzialmente le stesse funzioni, ci sono vari particolari che possono influenzare la scelta di un metodo di sincronizzazione piuttosto dell'altro. Per dirla in breve, CVSup è più efficiente nell'uso delle risorse di rete ed è il più avanzato tecnicamente tra i due, ma tutto questo ha un prezzo. Per usare CVSup, bisogna installare e configurare un client speciale prima di poter scaricare qualcosa, e si può scaricare solo blocchi piuttosto grossi che CVSup chiama collezioni.

Anoncvs, al contrario, può essere usato per esaminare qualunque cosa a partire da un singolo file fino a uno specifico programma (come ls o grep) specificando il nome del modulo CVS. Ovviamente, anoncvs è adatto solo per operazioni di sola lettura sul deposito CVS, quindi se hai intenzione di supportare lo sviluppo locale in uno dei depositi condivisi del progetto FreeBSD allora CVSup è in realtà l'unica opzione.


A.3.2 Uso del CVS Anonimo

La configurazione di cvs(1) per usare un deposito CVS Anonimo è semplicemente una questione di impostare la variable di ambiente CVSROOT affinché punti a uno dei server anoncvs del progetto FreeBSD. Al momento della stesura di questo testo sono disponibili i seguenti server:

  • Austria: :pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs (Usa cvs login ed inserisci qualunque password quando richiesta.)

  • Francia: :pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs (pserver (password ``anoncvs''), ssh (nessuna password))

  • Germania: :pserver:anoncvs@anoncvs.de.FreeBSD.org:/home/ncvs (Usa cvs login ed inserisci la password ``anoncvs'' quando richiesta.)

  • Germania: :pserver:anoncvs@anoncvs2.de.FreeBSD.org:/home/ncvs (rsh, pserver, ssh, ssh/2022)

  • Giappone: :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs (Usa cvs login ed inserisci la password ``anoncvs'' quando richiesta.)

  • Svezia: freebsdanoncvs@anoncvs.se.FreeBSD.org:/home/ncvs (solo ssh - nessuna password)

  • USA: freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs (solo ssh - nessuna password)

Dato che CVS permette di estrarre (nel suo gergo: ``check out'') qualsiasi versione dei sorgenti di FreeBSD che sia mai esistita (o, in alcuni casi, che esisterà), è bene familiarizzare con il parametro revisione (-r) di cvs(1) e sapere quali valori può assumere nel deposito del progetto FreeBSD.

Ci sono due tipi di tag, i tag di revisione e i tag di ramo. Un tag di revisione fa riferimento ad una revisione specifica. Il suo significato rimane lo stesso di giorno in giorno. Un tag di ramo, d'altro canto, si riferisce sempre all'ultima revisione relativa a una specifica linea di sviluppo. Dato che un tag di ramo non si riferisce ad una revisione specifica, esso potrebbe avere un significato diverso da un giorno con l'altro.

La Sezione A.6 contiene i tag di revisione che possono essere interessanti per gli utenti. Tuttavia, nessuno di questi tag è valido per la collezione dei port poichè questa non ha revisioni multiple.

Quando specifichi un tag di ramo, normalmente ricevi l'ultima versione dei file relativa a quella linea di sviluppo. Se vuoi ricevere una versione precedente, puoi farlo specificando la data con il parametro -D date. Si rimanda alla pagina man di cvs(1) per ulteriori dettagli.


A.3.3 Esempi

Benché sia consigliata un'attenta lettura della pagina man di cvs(1) prima di fare qualsiasi cosa, seguono alcuni veloci esempi che spiegano in modo essenziale l'uso del CVS Anonimo:

Esempio A-1. Estrazione di Qualcosa dalla -CURRENT (ls(1)) e poi Cancellazione della Stessa:

% setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs
% cvs login
Alla richiesta, inserire la password ``anoncvs''.
% cvs co ls
% cvs release -d ls
% cvs logout

Esempio A-2. Estrazione della Versione di ls(1) dal Ramo 3.X-STABLE:

% setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs
% cvs login
Alla richiesta, inserire la password ``anoncvs''.
% cvs co -rRELENG_3 ls
% cvs release -d ls
% cvs logout

Esempio A-3. Creazione di una Lista di Cambiamenti (come Diff Unificate) di ls(1)

% setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs
% cvs login
Alla richiesta, inserire la password ``anoncvs''.
% cvs rdiff -u -rRELENG_3_0_0_RELEASE -rRELENG_3_4_0_RELEASE ls
% cvs logout

Esempio A-4. Scoperta di Quali Altri Nomi di Moduli Possono Essere Usati:

% setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs
% cvs login
Alla richiesta, inserire la password ``anoncvs''.
% cvs co modules
% more modules/modules
% cvs release -d modules
% cvs logout

A.3.4 Altre Risorse

Le seguenti risorse addizionali possono essere utili nell'apprendimento del CVS:

  • CVS Tutorial dal Cal Poly.

  • CVS Home, la comunità di sviluppo e supporto del CVS.

  • CVSWeb è l'interfaccia web di CVS relativa al progetto FreeBSD.


A.4 Uso di CTM

CTM è un metodo per mantenere sincronizzati un albero di directory remoto e uno centralizzato. È stato sviluppato per l'albero dei sorgenti di FreeBSD, anche se con il passare del tempo, altre persone lo hanno trovano utile per altri scopi. A tutt'oggi esiste pochissima documentazione sul processo della creazione delle delta, quindi contattate la mailing list ctm-users per avere più informazioni e nel caso voleste usare CTM per altri scopi.


A.4.1 Perché Dovrei Usare CTM?

CTM fornisce una copia locale dell'albero dei sorgenti di FreeBSD. Ci sono molte ``varietà'' di alberi disponibili. Che tu voglia seguire l'intero albero CVS o solo uno dei rami, CTM può fornirti i dati che ti servono. Se sei uno sviluppatore attivo di FreeBSD, ma hai una connettività TCP/IP di bassa qualità o non esistente, o semplicemente desideri ricevere le modifiche in modo automatico, CTM fa al caso tuo. Riceverai fino a tre delta giornaliere per i rami più attivi. Tuttavia, puoi considerare che li puoi avere attraverso l'invio automatico di email. Le dimensioni degli aggiornamenti sono sempre più piccole possibile. Questi sono in genere meno di 5K, con occasionali (uno su dieci) aggiornamenti da 10-50K e qualcuno più grande (100K o più) di tanto in tanto.

Devi anche essere cosciente delle varie insidie relativi all'uso di sorgenti in via di sviluppo e non provenienti da release pronte. Questo è vero in particolare per i sorgenti ``current'' (correnti). È raccomandata la lettura di Restare in ``current'' con FreeBSD.


A.4.2 Cosa Serve per l'Uso di CTM?

Ti servono due cose: il programma CTM, e le delta iniziali da dargli in pasto (per arrivare ai livelli della ``current'').

Il programma CTM fa parte di FreeBSD fin dalla release della versione 2.0 e, se hai una copia dei sorgenti disponibile, risiede in /usr/src/usr.sbin/ctm.

Se stai usando una versione di FreeBSD precedente alla release 2.0, puoi recuperare i sorgenti attuali di CTM direttamente da:

http://www.FreeBSD.org/cgi/cvsweb.cgi/src/usr.sbin/ctm/

Le ``delta'' da dare in pasto a CTM si possono avere in due modi: tramite FTP o email. Se puoi utilizzare FTP via Internet allora i seguenti siti supportano l'accesso a CTM:

ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/

vedi anche la sezione mirror.

Entra via FTP nella directory giusta e, da lì, inizia col trasferire il file README.

Se invece desideri ricevere le delta per email:

Iscriviti ad una delle liste di distribuzione di CTM. ctm-cvs-cur supporta l'interno albero CVS. ctm-src-cur supporta il ramo di sviluppo current. ctm-src-4 supporta il ramo della release 4.X, ecc. (Se non sai come iscriverti a una lista, clicca sul nome della lista o raggiungi la pagina http://lists.FreeBSD.org/mailman/listinfo e clicca sulla lista a cui ti vuoi iscrivere. La pagina della lista dovrebbe contenere tutte le informazioni necessarie per l'iscrizione.)

Quando inizierai a ricevere gli aggiornamenti CTM via email, puoi usare il programma ctm_rmail per scompattarli e per applicarli. In realtà, se vuoi avere un processo completamente automizzato, puoi usare il programma ctm_rmail direttamente in un elemento di /etc/aliases. Esamina la pagina man di ctm_rmail per maggiori dettagli.

Nota: Indipendentemente dal metodo che utilizzi per ricevere le delta di CTM, dovresti iscriverti alla mailing list ctm-announce. In futuro, questo sarà l'unico posto dove saranno postati gli annunci riguardanti il funzionamento del sistema CTM. Clicca sul nome della lista e segui le istruzioni per iscriverti.


A.4.3 Uso di CTM per la Prima Volta

Prima che tu possa servirti delle delta di CTM, hai bisogno di un punto di partenza dal quale successivamente costruire le delta.

Innanzitutto dovresti determinare ciò che hai. Si può iniziare da un directory ``vuota''. Devi usare una delta iniziale ``Empty'' per iniziare il tuo albero CTM. Qualche volta può succedere che una di queste delta ``iniziali'' sia distribuita su un CD per tua convenienza, ma comunque, questo generalmente non avviene.

Poichè gli alberi sono molte decine di megabyte, puoi iniziare da qualcosa che hai a portata di mano. Se hai un CD di una release, puoi copiare o estrarre i sorgenti da lì. Questo salverà un significativo trasferimento di dati.

Puoi riconoscere queste delta ``iniziali'' dalla lettera X preceduta da un numero (per esempio src-cur.3210XEmpty.gz). Il nome che segue la lettera X corrisponde all'origine del tuo ``seme'' iniziale. Empty è una directory vuota. Di solito una transizione base a partire da Empty è prodotta ogni 100 delta. Strada facendo, queste avranno grandi dimensioni! Le dimensioni comuni per le delta XEmpty vanno dai 70 a 80 Megabyte di dati compressi con gzip.

Una volta che ti sei procurato una delta base come punto di partenza, avrai bisogno anche di tutte le delta successive aventi un numero maggiore.


A.4.4 Uso di CTM nella Tua Vita Quotidiana

Per applicare le delta, fai come segue:

# cd /where/ever/you/want/the/stuff
# ctm -v -v /where/you/store/your/deltas/src-xxx.*

CTM decifra le delta compresse tramite il comando gzip, quindi non hai bisogno di decomprimerle con gunzip, e ciò salva spazio su disco.

Tranne in alcune circostanze, CTM non toccherà il tuo albero. Per verificare una delta puoi usare l'opzione -c e di fatto CTM non toccherà il tuo albero; verificherà soltanto l'integrità della delta e se questa può essere applicata in modo pulito al tuo albero attuale.

Ci sono altre opzioni di CTM, guarda la pagina man o ispeziona i sorgenti per maggiori dettagli.

Questo è davvero tutto ciò che devi sapere. Ogni volta che ottieni una delta, esegui CTM per aggiornare i tuoi sorgenti.

È meglio non rimuovere le delta che richiedono grandi tempi di scaricamento. Nel caso succeda qualche disgrazia non dovrai riscaricarle. Anche se hai solo dischetti floppy, considera l'uso di fdwrite per crearne una copia.


A.4.5 Mantenimento delle Tue Modifiche Locali

Allo stesso modo di uno sviluppatore potresti voler sperimentare delle modifiche nell'albero dei sorgenti. CTM supporta le modifiche locali in modo limitato: prima di verificare la presenza di un file foo, esso cerca foo.ctm. Se questo file esiste, CTM opererà su di esso piuttosto che su foo.

Questo comportamento offre un semplice modo per mantenere le modifiche locali: copia semplicemente il file che desideri modificare in un file con lo stesso nome e suffisso .ctm. Quindi puoi liberamente hackerare il codice, e CTM manterrà aggiornato il file .ctm.


A.4.6 Altre Opzioni Interessanti di CTM

A.4.6.1 Scoprire con Precisione Ciò che Dovrebbe Essere Aggiornato

Puoi determinare la lista delle modifiche che CTM apporterà ai tuoi sorgenti usando l'opzione -l di CTM.

Questo è utile se vuoi mantenere dei log delle modifiche, prima o dopo aver modificato in qualche modo i file, o solo perchè ti senti un pò paranoico.


A.4.6.2 Creare dei Backup Prima di Aggiornare

Qualche volta potresti voler creare dei backup di tutti i file che saranno modificati da un aggiornamento di CTM.

Specificando l'opzione -B backup-file, CTM effettuerà il backup di tutti i file che saranno modificati da una certa delta CTM nel file backup-file.


A.4.6.3 Limitare i File che Devono Essere Aggiornati

Qualche volta potresti volere restringere la portata di un certo aggiornamento CTM, o potresti essere interessato ad estrarre solo pochi file da una serie di delta.

Puoi controllare la lista dei file sui quali CTM opererà specificando un'espressione regolare usando le opzioni -e e -x.

Per esempio, per estrarre una copia aggiornata del file lib/libc/Makefile dalla tua collezione di delta CTM, esegui i comandi seguenti:

# cd /dove/vuoi/estrarre/
# ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*

Per ogni file specificato in una delta CTM, le opzioni -e e -x sono applicate nello stesso ordine in cui compaiono sulla riga di comando. Il file è processato da CTM solo se risulta idoneo a tutte le opzioni -e e -x ad esso applicate.


A.4.7 Piani Futuri per CTM

I più importanti:

  • Usare qualche tipo di autenticazione nel sistema CTM, in modo tale da permette l'identificazione di aggiornamenti CTM contraffatti.

  • Ripulire le opzioni di CTM, che confondono e sono tutt'altro che intuitive.


A.4.8 Materiale Vario

Esiste una serie di delta per la collezione dei ports, ma è ancora di poco interesse.


A.4.9 Mirror CTM

CTM/FreeBSD è disponibile via FTP anonimo dai siti mirror seguenti. Se decidi di procurarti CTM via FTP anonimo, per favore usa un sito a te vicino.

In caso di problemi, contatta la mailing list ctm-users.

Se non trovi un mirror a te vicino o se il mirror è incompleto, prova ad usare qualche motore di ricerca come alltheweb.


A.5 Uso di CVSup

A.5.1 Introduzione

CVSup è un pacchetto di software per distribuire ed aggiornare alberi di sorgenti da un deposito centrale CVS posto su un server remoto. I sorgenti di FreeBSD sono mantenuti in un deposito CVS su una macchina centrale di sviluppo situata in California. Con CVSup, gli utenti di FreeBSD possono facilmente mantenere aggiornati i loro alberi di sorgenti.

CVSup usa il cosiddetto modello ad estrazione per aggiornare. In questo modello, è compito del client chiedere al server gli aggiornamenti. Il server attente passivamente le richieste di aggiornamento dai suoi client. In questo modo tutti gli aggiornamenti sono incitati dal client. Il server non invia mai degli aggiornamenti che non sono stati richiesti. Gli utenti devono eseguire il client CVSup manualmente per ottenere un aggiornamento, oppure possono usare cron per eseguire automaticamente queste operazioni secondo stabilite regole.

Il termine CVSup, scritto in quel modo, si riferisce all'intero pacchetto di software. I suoi componenti principali sono il client cvsup che viene eseguito su ogni macchina degli utenti, e il server cvsupd che viene eseguito su ogni sito mirror di FreeBSD.

Leggendo la documentazione di FreeBSD e le mailling list, potresti notare dei riferimenti a sup. Sup è il predecessore di CVSup, e serviva per un simile scopo. CVSup sostanzialmente è usato allo stesso modo di sup e, di fatto, i suoi file di configurazione sono compatibili con sup. Sup non viene più utilizzato nel progetto FreeBSD, poichè CVSup è più veloce e più flessibile.


A.5.2 Installazione

Il modo più semplice per installare CVSup è usare il package precompilato net/cvsup della collezione dei package di FreeBSD. Se preferisci costruire CVSup partendo dal sorgente, allora puoi usare il port net/cvsup. Ma sei avvisato: il port net/cvsup dipende dal sistema Modula-3, che richiede una consistente quantità di tempo e di spazio su disco per scaricarlo e costruirlo.

Nota: Se hai intenzione di usare CVSup su una macchina sulla quale non sarà installato XFree86, come su un server, assicurati di usare il port che non include la GUI di CVSup, ossia net/cvsup-without-gui.


A.5.3 Configurazione di CVSup

Il funzionamento di CVSup è controllato da un file di configurazione chiamato supfile. Esistono alcuni esempi di supfile nella directory /usr/share/examples/cvsup/.

Le informazioni contenute in un supfile rispondono alle seguenti questioni relative a CVSup:

Nelle seguenti sezioni, costruiremo un tipico supfile per rispondere a turno ad ognuna di queste questioni. Incominciamo però col descrivere la struttura globale di un supfile.

Un supfile è un file di testo. I commenti iniziano con un # e si estendono fino alle fine della riga. Le righe bianche e le righe che contengono solo commenti sono ignorate.

Ogni altra riga descrive un insieme di file che l'utente vuole ricevere. Una riga inizia con il nome di una ``collezione'', un nome di un gruppo logico di file definiti dal server. Il nome della collezione indica al server i file che vuoi ricevere. Dopo il nome della collezione seguono zero o più campi, separati da spazi bianchi. Questi campi rispondono alle questioni citate in precedenza. Ci sono due tipi di campi: campo opzione e campo valore. Un campo opzione consiste di una parola chiave a se stante, es. delete o compress. Anche un campo valore inizia con una parola chiave, ma questa è seguita dal simbolo =, senza spazi bianchi intermedi, e da un seconda parola. Ad esempio, release=cvs è un campo valore.

Un supfile tipicamente specifica più di un'unica collezione da ricevere. Un modo di strutturare un supfile è specificare esplicitamente tutti i campi rilevanti per ogni collezione. Tuttavia, ciò tende a creare supfile troppo lunghi, e ciò è scomodo poichè in un supfile la maggior parte dei campi sono gli stessi per tutte le collezioni. CVSup fornisce un meccanismo per aggirare questi problemi. Le linee che iniziano con il nome speciale di pseudo-collezione *default possono essere usate per inizializzare opzioni e valori che saranno utilizzati come default per le successive collezioni definite nel supfile. Un valore di default può essere sovrascritto da una singola collezione, specificando un valore diverso per la collezione stessa. Inoltre i valori di default possono essere modificati in mezzo al supfile tramite linee *default aggiuntive.

Con queste conoscenze, possiamo ora procedere alla costruzione di un supfile per ricevere ed aggiornare l'albero dei sorgenti della FreeBSD-CURRENT.

  • Quali file vuoi ricevere?

    I file disponibili via CVSup sono organizzati in gruppi chiamati ``collezioni''. Le collezioni che sono disponibili sono descritte nella prossima sezione. In questo esempio, desideriamo ricevere per intero l'albero corrente dei sorgenti del sistema FreeBSD. C'è un'unica e vasta collezione src-all che ci permette di ricevere tutto ciò. Come prima fase nella costruzione del nostro supfile, dobbiamo semplicemente elencare le collezioni, una per riga (in questo caso, c'è un'unica riga):

    src-all
    
  • Quali versioni dei file vuoi?

    Con CVSup, hai la possibilità di ricevere qualsiasi versione dei sorgenti che sia mai esistita. Questo è possibile poichè il server cvsupd lavora direttamente sul deposito CVS, che contiene tutte le versioni. Puoi specificare la versione che vuoi usando i campi valori tag= e date=.

    Avvertimento: Stai molto attento a specificare i campi tag= in modo corretto. Alcuni tag sono validi solo per certe collezioni di file. Se specifichi un tag non corretto, CVSup cancellerà file che tu non vorresti eliminare. In particolare, usa solamente tag=. per le collezioni ports-*.

    Il campo tag= richiama un tag simbolico nel deposito. Ci sono due tipi di tag, i tag di revisione e i tag di ramo. Un tag di revisione fa riferimento ad una revisione specifica. Il suo significato rimane lo stesso di giorno in giorno. Un tag di ramo, d'altro canto, si riferisce sempre all'ultima revisione relativa ad una specifica linea di sviluppo. Dato che un tag di ramo non si riferisce ad una revisione specifica, esso potrebbe avere un significato diverso da un giorno con l'altro.

    La Sezione A.6 contiene tag di ramo che potrebbero interessare gli utenti. Quando si specifica un tag in un file di configurazione di CVSup, esso dovrebbe essere preceduto da tag= (RELENG_4 diviene tag=RELENG_4). Tieni presente che per la collezione dei port è rilevante solo tag=..

    Avvertimento: Sii molto attento a digitare il nome del tag nel modo esatto. CVSup non è in grado di riconoscere tag errati. Se digiti in modo sbagliato un tag, CVSup si comporterà come se tu avessi specificato un tag valido che non riguarda nessun file. In questo caso i tuoi sorgenti saranno eliminati.

    Quando specifichi un tag di ramo, normalmente ricevi le ultime versioni dei file di quella linea di sviluppo. Se vuoi ricevere versioni precedenti, puoi specificare una data con il campo valore date=. La pagina man di cvsup(1) spiega come farlo.

    Nel nostro esempio, desideriamo ricevere FreeBSD-CURRENT. Aggiungiamo questa riga all'inizio del nostro supfile:

    *default tag=.
    

    C'è un importante caso speciale che entra in gioco se non specifichi ne un campo tag= ne un campo date=. In questo caso, ricevi i file RCS attuali direttamente dal deposito CVS del server, invece di ricevere una versione particolare. Gli sviluppatori in genere preferiscono questa modalità di funzionamento. Mantenendo una copia del deposito stesso sui loro sistemi, essi sono in grado di navigare attraverso la storia delle revisioni e di esaminare le versioni precedenti dei file. Comunque questo vantaggio è realizzabile al costo di un ingente quantità di spazio su disco.

  • Da dove li vuoi prelevare?

    Il campo host= indica a cvsup da dove prelevare i suoi aggiornamenti. Va bene uno qualunque dei siti mirror di CVSup, anche se dovresti provare a selezionarne uno che sia a te vicino nel ciberspazio. In questo esempio useremo un sito di distribuzione di FreeBSD fittizio, cvsup666.FreeBSD.org:

    *default host=cvsup666.FreeBSD.org
    

    Devi cambiare l'host in uno che esiste realmente prima di eseguire CVSup. Il settaggio dell'host può essere sovrascritto su riga di comando eseguendo cvsup con l'opzione -h hostname.

  • Dove li vuoi mettere sulla tua macchina?

    Il campo prefix= indica a cvsup dove mettere i file che riceve. In questo esempio, metteremo i file sorgenti direttamente nel nostro albero dei sorgenti, /usr/src. La directory src è già implicita nelle collezioni che vogliamo ricevere, quindi la corretta specifica è questa:

    *default prefix=/usr
    
  • Dove cvsup dovrebbe mantenere i suoi file di stato?

    Il client di CVSup mantiene certi file di stato in ciò che è chiamata directory ``base''. Questi file aiutano CVSup a lavorare in modo più efficace, mantenendo traccia di quali aggiornamenti sono stati già ricevuti. Useremo la directory base standard, /usr/local/etc/cvsup:

    *default base=/usr/local/etc/cvsup
    

    Questo settaggio è utilizzato di default se non viene specificato nel supfile, e quindi in realtà non abbiamo bisogno di inserire la riga precedente.

    Se la tua directory base non esiste, potrebbe essere una buona idea crearla subito. Il client cvsup interrompe l'esecuzione se la tua directory base non esiste.

  • Settaggi vari di supfile:

    C'è un altro settaggio che normalmente deve essere presente in un supfile:

    *default release=cvs delete use-rel-suffix compress
    

    release=cvs indica che il server dovrebbe prendere le sue informazioni dal deposito CVS principale di FreeBSD. In genere questa è la normalità, ma esistono altre possibilità che vanno oltre lo scopo di questa sezione.

    delete dà a CVSup il permesso di cancellare file. Dovresti sempre specificare questa opzione, in modo che CVSup possa mantenere il tuo albero dei sorgenti del tutto aggiornato. CVSup è attento nel cancellare solamente quei file dei quali è responsabile. Altri file extra verranno lasciati intatti.

    use-rel-suffix è ... arcano. Se vuoi realmente saperne di più, guarda la pagina man di cvsup(1). Altrimenti, specificala senza preoccupartene troppo.

    compress abilita l'uso di una compressione stile gzip sul canale di comunicazione. Se hai una connessione T1 o più veloce, non dovresti usare la compressione. Diversamente, può essere veramente d'aiuto.

  • Ricapitolazione di tutti settaggi:

    Il supfile completo per il nostro esempio è il seguente:

    *default tag=.
    *default host=cvsup666.FreeBSD.org
    *default prefix=/usr
    *default base=/usr/local/etc/cvsup
    *default release=cvs delete use-rel-suffix compress
    
    src-all
    

A.5.3.1 Il File refuse

Come menzionato in precedenza, CVSup usa un modello ad estrazione. Sostanzialmente, questo significa che ti connetti al server CVSup, lui dice, ``Ecco ciò che puoi scaricare ...'', ed il tuo client risponde ``OK, prenderò questo, questo, questo e questo.'' Nella configurazione di default, il client CVSup prenderà ogni file associato alla collezione e al tag che hai specificato nel file di configurazione. Tuttavia, questo non è sempre ciò che vuoi, specialmente se stai sincronizzando gli alberi doc, ports, o www -- molte persone non sono in grado di leggere quattro o cinque lingue, e quindi esse non hanno bisogno di scaricare i file di certe lingue. Se stai sincronizzando con CVSup la collezione dei port, puoi specificare collezioni individuali (es., ports-astrology, ports-biology, ecc. invece di specificare semplicemente ports-all). Tuttavia, poichè gli alberi doc e www non hanno collezioni per specifiche lingue, devi usare una delle molte abili caratteristiche di CVSup: il file refuse.

Il file refuse sostanzialmente indica a CVSup che non dovrebbe prendere ogni singolo file da una collezione; in altre parole, esso dice al client di rifiutare certi file dal server. Il file refuse può essere trovato (o, se non ne hai ancora uno, dovrebbe essere messo) in base/sup/. base è definita nel tuo supfile; di default, base è /usr/local/etc/cvsup, e quindi di default il file refuse è /usr/local/etc/cvsup/sup/refuse.

Il file refuse ha veramente un formato molto semplice; esso contiene semplicemente i nomi dei file o delle directory che non desideri scaricare. Per esempio, se non parli altre lingue oltre all'inglese e al tedesco, e non hai la necessità di usare le applicazioni in lingua tedesca (e le applicazioni in altre lingue, eccetto quella inglese), puoi mettere le seguenti righe nel tuo file refuse:

ports/arabic
ports/chinese
ports/french
ports/german
ports/hebrew
ports/hungarian
ports/japanese
ports/korean
ports/polish
ports/portuguese
ports/russian
ports/ukrainian
ports/vietnamese
doc/da_*
doc/de_*
doc/el_*
doc/es_*
doc/fr_*
doc/it_*
doc/ja_*
doc/nl_*
doc/no_*
doc/pl_*
doc/pt_*
doc/ru_*
doc/sr_*
doc/zh_*

e così via per altre lingue (puoi ottenere la lista completa esplorando il deposito CVS di FreeBSD).

Con questa utile funzionalità, quegli utenti che hanno una connessione lenta o pagano ogni minuto di connessione Internet potranno risparmiare tempo prezioso poichè non dovranno più scaricare file che non usano mai. Per maggiori dettagli sul file refuse e su altre utili caratteristiche di CVSup, guarda la sua pagina man.


A.5.4 Eseguire CVSup

Sei ora pronto per provare un aggiornamento. La riga di comando per farlo è molto semplice:

# cvsup supfile

dove supfile è naturalmente il nome del supfile che hai creato. Assumendo che stai lavorando sotto X11, cvsup visualizzarà una GUI con alcuni bottoni adibiti ad operazioni usuali. Premi il bottone go, e stai a guardare l'esecuzione.

Poichè in questo esempio stai aggiornando il tuo albero dei sorgenti /usr/src, avrai bisogno di eseguire il programma come root affinchè cvsup abbia i permessi necessari per aggiornare i tuoi file. Avendo appena creato il tuo file di configurazione, e non avendo mai usato questo programma prima ad ora, tutto ciò potrebbe renderti un pò nervoso. Esiste un semplice modo per provare la sincronizzazione senza toccare i tuoi preziosi file. Crea una directory vuota in qualche posto, e richiamala come argomento sulla riga di comando:

# mkdir /var/tmp/dest
# cvsup supfile /var/tmp/dest

La directory che hai specificato sarà usata come directory di destinazione per tutti gli aggiornamenti dei file. CVSup esaminerà i tuoi file usuali in /usr/src, ma non modificherà o cencellerà alcuno di essi. Gli aggiornamenti dei file finiranno invece in /var/tmp/dest/usr/src. Inoltre CVSup lascerà intatta la sua directory base contenente gli stati dei file quando viene eseguito in questo modo. Le nuove versioni di questi file saranno scritte nella directory specificata. A condizione che tu abbia l'accesso di lettura in /usr/src, non hai bisogno di essere root per realizzare questo tipo di giro di prova.

Se non stai utilizzando X11 o se non ti piacciono le GUI, dovresti aggiungere un paio di opzioni alla riga di comando quando esegui cvsup:

# cvsup -g -L 2 supfile

L'opzione -g indica a CVSup di non usare la sua GUI. Ciò è automatico se non stai utilizzando X11, ma se lo stai facendo allora la devi specificare.

L'opzione -L 2 indica a CVSup di visualizzare i dettagli di tutti gli aggiornamenti dei file che avvengono. Esistono tre livelli di verbosità, da -L 0 a -L 2. Il default è 0, che significa silenzio totale eccetto per i messaggi di errore.

Ci sono molte altre opzione disponibili. Per una breve lista di esse, digita cvsup -H. Per una descrizione più dettagliata, guarda la relativa pagina man.

Una volta che sei soddisfatto di come avvengono gli aggiornamenti, puoi organizzare esecuzioni regolari di CVSup usando cron(8). Ovviamente, non dovresti lasciare che CVSup usi la sua GUI quando lo esegui tramite cron(8).


A.5.5 Collezioni di File di CVSup

Le collezioni di file disponibili via CVSup sono organizzate gerarchicamente. Ci sono poche collezioni grandi, le quali sono divise in piccole sotto-collezioni. Ricevere una grande collezione è equivalente a ricevere ogni sua sotto-collezione. Le relazioni gerarchiche tra le collezioni riflettono l'uso dell'identazione nella lista qui sotto.

Le collezioni maggiormente usate sono src-all, e ports-all. Le altre collezioni sono usate solo da piccoli gruppi di persone per scopi speciali, e alcuni siti mirror potrebbero non contenerle tutte.

cvs-all release=cvs

Il deposito CVS maestro di FreeBSD, incluso il codice di crittografia.

distrib release=cvs

File relativi alla distribuzione e al mirroring di FreeBSD.

doc-all release=cvs

Sorgenti del Manuale di FreeBSD e altra documentazione. Questa collezione non include i file per il sito web di FreeBSD.

ports-all release=cvs

La FreeBSD Ports Collection.

Importante: Se non vuoi aggiornare per intero ports-all (l'interno albero dei port), ma usare una delle sotto-collezioni listate qui sotto, assicurati di aggiornare sempre la sotto-collezione ports-base! Ogni volta che qualcosa cambia nell'infrastruttura della costruzione dei port rappresentata da ports-base, è praticamente certo che quei cambiamenti saranno usati dai port ``reali'' in un brevissimo arco di tempo. Quindi, se aggiorni solo i port ``reali'' e questi usano alcune delle nuove caratteristiche, c'è un'alta probabilità che la loro costruzione fallirà con alcuni misteriosi messaggi di errore. La primissima cosa da fare in questi casi è assicurarsi che la propria sotto-collezione ports-base sia aggiornata.

ports-archivers release=cvs

Applicazioni per l'archiviazione.

ports-astro release=cvs

Applicazioni riguardanti l'astronomia.

ports-audio release=cvs

Applicazioni di supporto all'audio.

ports-base release=cvs

L'infrastruttura della costruzione della collezione dei port - vari file posti nelle sottodirectory Mk/ e Tools/ della directory /usr/ports.

Nota: Per favore vedi l'importante avvertimento qui sopra: dovresti sempre aggiornare questa sotto-collezione ogni volta che aggiorni qualche pezzo della FreeBSD Ports Collection!

ports-benchmarks release=cvs

Benchmark (applicazioni per valutare le prestazioni del computer).

ports-biology release=cvs

Biologia.

ports-cad release=cvs

Applicazioni per la grafica computerizzata.

ports-chinese release=cvs

Supporto alla lingua cinese.

ports-comms release=cvs

Software per la comunicazione.

ports-converters release=cvs

Convertitori di codici di caratteri.

ports-databases release=cvs

Database.

ports-deskutils release=cvs

Cose che erano utilizzate sulla scrivania prima che i computer furono inventati.

ports-devel release=cvs

Utility per il development.

ports-dns release=cvs

Software relativo al DNS.

ports-editors release=cvs

Editor.

ports-emulators release=cvs

Emulatori per altri sistemi operativi.

ports-finance release=cvs

Applicazioni finanziarie, di gestione delle spese e simili.

ports-ftp release=cvs

Server e client FTP.

ports-games release=cvs

Giochi.

ports-german release=cvs

Supporto alla lingua tedesca.

ports-graphics release=cvs

Utilità per la grafica.

ports-hungarian release=cvs

Supporto alla lingua ungherese.

ports-irc release=cvs

Utilità IRC (Internet Relay Chat).

ports-japanese release=cvs

Supporto alla lingua giapponese.

ports-java release=cvs

Utility Java.

ports-korean release=cvs

Supporto alla lingua coreana.

ports-lang release=cvs

Linguaggi di programmazione.

ports-mail release=cvs

Software di posta.

ports-math release=cvs

Software per la computazione numerica.

ports-mbone release=cvs

Applicazioni MBone.

ports-misc release=cvs

Utility varie.

ports-multimedia release=cvs

Software multimediale.

ports-net release=cvs

Software di rete.

ports-news release=cvs

Software per USENET.

ports-palm release=cvs

Software di supporto per i vari Palm™.

ports-polish release=cvs

Supporto alla lingua polacca.

ports-portuguese release=cvs

Supporto alla lingua portoghese.

ports-print release=cvs

Software per la stampa.

ports-russian release=cvs

Supporto alla lingua russa.

ports-security release=cvs

Utility per la sicurezza.

ports-shells release=cvs

Shell a riga di comando.

ports-sysutils release=cvs

Utility di sistema.

ports-textproc release=cvs

Utility per la manipolazione del testo (non include utility per la pubblicazione computerizzata).

ports-vietnamese release=cvs

Supporto alla lingua vietnamite.

ports-www release=cvs

Software relativo al World Wide Web.

ports-x11 release=cvs

Port per il supporto al sistema a finestre X.

ports-x11-clocks release=cvs

Orologi per X11.

ports-x11-fm release=cvs

Gestori di file per X11.

ports-x11-fonts release=cvs

Font per X11 e relative utility.

ports-x11-toolkits release=cvs

Cassette degli attrezzi per X11.

ports-x11-servers

Server X11.

ports-x11-wm

Gestori di finestre per X11.

src-all release=cvs

I sorgenti correnti di FreeBSD, incluso il codice di crittografia.

src-base release=cvs

Vari file posti in /usr/src.

src-bin release=cvs

Utility per l'utente in ambiente mono-utente (/usr/src/bin).

src-contrib release=cvs

Utility e librerie al di fuori del progetto FreeBSD, sostanzialmente utilizzati senza modifiche (/usr/src/contrib).

src-crypto release=cvs

Utility e librerie per la crittografia al di fuori del progetto FreeBSD, sostanzialmente utilizzati senza modifiche (/usr/src/crypto).

src-eBones release=cvs

Kerberos e DES (/usr/src/eBones). Non usati nell'attuale release di FreeBSD.

src-etc release=cvs

File di configurazione del sistema (/usr/src/etc).

src-games release=cvs

Giochi (/usr/src/games).

src-gnu release=cvs

Utility protette dalla licenza pubblica di GNU (/usr/src/gnu).

src-include release=cvs

File header (/usr/src/include).

src-kerberos5 release=cvs

Pacchetto di sicurezza Kerberos5 (/usr/src/kerberos5).

src-kerberosIV release=cvs

Pacchetto di sicurezza KerberosIV (/usr/src/kerberosIV).

src-lib release=cvs

Librerie (/usr/src/lib).

src-libexec release=cvs

Programmi di sistema normalmente eseguiti da altri programmi (/usr/src/libexec).

src-release release=cvs

File richiesti per produrre una release di FreeBSD (/usr/src/release).

src-sbin release=cvs

Utility di sistema per la modalità mono-utente (/usr/src/sbin).

src-secure release=cvs

Librerie e comandi per la crittografia (/usr/src/secure).

src-share release=cvs

File che possono essere condivisi tra sistemi multipli (/usr/src/share).

src-sys release=cvs

Il kernel (/usr/src/sys).

src-sys-crypto release=cvs

Codice di crittografia del kernel (/usr/src/sys/crypto).

src-tools release=cvs

Vari strumenti per il mantenimento di FreeBSD (/usr/src/tools).

src-usrbin release=cvs

Utility per l'utente (/usr/src/usr.bin).

src-usrsbin release=cvs

Utility di sistema (/usr/src/usr.sbin).

www release=cvs

I sorgenti per il sito web di FreeBSD.

distrib release=self

I file di configurazione del server CVSup. Usati dai siti mirror CVSup.

gnats release=current

Il database GNATS per tener traccia dei bug.

mail-archive release=current

Archivio delle mailing list di FreeBSD.

www release=current

I file pre-processati del sito web di FreeBSD (non i file sorgenti). Usati dai siti mirror WWW.


A.5.6 Per Maggiori Informazioni

Per le FAQ ed altre informazioni di CVSup vedere la pagina home di CVSup.

La maggior parte delle discussioni su CVSup inerenti a FreeBSD si svolgono sulla mailing list di discussioni tecniche su FreeBSD. In questa mailling list inoltre sono anche annunciate nuove versioni del software, come pure sulla mailing list di annunci su FreeBSD.

Questioni e resoconti di bug dovrebbero essere indirizzati all'autore del programma .


A.5.7 Siti CVSup

I server CVSup per FreeBSD si trovano ai seguenti siti:

Server Centrali, Siti Mirror Primari, Argentina, Australia, Austria, Brasile, Canada, Cina, Corea, Costa Rica, Danimarca, Estonia, Filippine, Finlandia, Francia, Germania, Giappone, Grecia, Indonesia, Irlanda, Islanda, Italia, Kuwait, Kyrgyzstan, Lettonia, Lituania, Norvegia, Nuova Zelanda, Olanda, Polonia, Portogallo, Regno Unito, Repubblica Ceca, Repubblica Slovacca, Romania, Russia, San Marino, Singapore, Slovenia, Spagna, Sud Africa, Svezia, Svizzera, Taiwan, Thailand, Turchia, Ucraina, Ungheria, USA.

(aggiornato al 2005/03/04 15:32:08 UTC)

Server Centrali
  • cvsup.FreeBSD.org

Siti Mirror Primari
  • cvsup1.FreeBSD.org

  • cvsup2.FreeBSD.org

  • cvsup3.FreeBSD.org

  • cvsup4.FreeBSD.org

  • cvsup5.FreeBSD.org

  • cvsup6.FreeBSD.org

  • cvsup7.FreeBSD.org

  • cvsup8.FreeBSD.org

  • cvsup9.FreeBSD.org

  • cvsup10.FreeBSD.org

  • cvsup11.FreeBSD.org

  • cvsup12.FreeBSD.org

  • cvsup13.FreeBSD.org

  • cvsup14.FreeBSD.org

  • cvsup15.FreeBSD.org

  • cvsup16.FreeBSD.org

  • cvsup18.FreeBSD.org

Argentina
  • cvsup.ar.FreeBSD.org

Australia
  • cvsup.au.FreeBSD.org

  • cvsup2.au.FreeBSD.org

  • cvsup3.au.FreeBSD.org

  • cvsup4.au.FreeBSD.org

  • cvsup5.au.FreeBSD.org

  • cvsup6.au.FreeBSD.org

  • cvsup7.au.FreeBSD.org

Austria
  • cvsup.at.FreeBSD.org

  • cvsup2.at.FreeBSD.org

Brasile
  • cvsup.br.FreeBSD.org

  • cvsup2.br.FreeBSD.org

  • cvsup3.br.FreeBSD.org

  • cvsup4.br.FreeBSD.org

  • cvsup5.br.FreeBSD.org

Canada
  • cvsup.ca.FreeBSD.org

Cina
  • cvsup.cn.FreeBSD.org

  • cvsup2.cn.FreeBSD.org

  • cvsup3.cn.FreeBSD.org

  • cvsup4.cn.FreeBSD.org

  • cvsup5.cn.FreeBSD.org

Corea
  • cvsup.kr.FreeBSD.org

  • cvsup2.kr.FreeBSD.org

  • cvsup3.kr.FreeBSD.org

Costa Rica
  • cvsup1.cr.FreeBSD.org

Danimarca
  • cvsup.dk.FreeBSD.org

  • cvsup2.dk.FreeBSD.org

  • cvsup3.dk.FreeBSD.org

Estonia
  • cvsup.ee.FreeBSD.org

Filippine
  • cvsup1.ph.FreeBSD.org

Finlandia
  • cvsup.fi.FreeBSD.org

  • cvsup2.fi.FreeBSD.org

Francia
  • cvsup.fr.FreeBSD.org

  • cvsup2.fr.FreeBSD.org

  • cvsup3.fr.FreeBSD.org

  • cvsup4.fr.FreeBSD.org

  • cvsup5.fr.FreeBSD.org

  • cvsup8.fr.FreeBSD.org

Germania
  • cvsup.de.FreeBSD.org

  • cvsup2.de.FreeBSD.org

  • cvsup3.de.FreeBSD.org

  • cvsup4.de.FreeBSD.org

  • cvsup5.de.FreeBSD.org

  • cvsup6.de.FreeBSD.org

  • cvsup7.de.FreeBSD.org

  • cvsup8.de.FreeBSD.org

Giappone
  • cvsup.jp.FreeBSD.org

  • cvsup2.jp.FreeBSD.org

  • cvsup3.jp.FreeBSD.org

  • cvsup4.jp.FreeBSD.org

  • cvsup5.jp.FreeBSD.org

  • cvsup6.jp.FreeBSD.org

Grecia
  • cvsup.gr.FreeBSD.org

  • cvsup2.gr.FreeBSD.org

Indonesia
  • cvsup.id.FreeBSD.org

Irlanda
  • cvsup.ie.FreeBSD.org

Islanda
  • cvsup.is.FreeBSD.org

Italia
  • cvsup.it.FreeBSD.org

Kuwait
  • cvsup1.kw.FreeBSD.org

Kyrgyzstan
  • cvsup.kg.FreeBSD.org

Lettonia
  • cvsup.lv.FreeBSD.org

Lituania
  • cvsup.lt.FreeBSD.org

  • cvsup2.lt.FreeBSD.org

  • cvsup3.lt.FreeBSD.org

Norvegia
  • cvsup.no.FreeBSD.org

Nuova Zelanda
  • cvsup.nz.FreeBSD.org

Olanda
  • cvsup.nl.FreeBSD.org

  • cvsup2.nl.FreeBSD.org

  • cvsup3.nl.FreeBSD.org

  • cvsup5.nl.FreeBSD.org

Polonia
  • cvsup.pl.FreeBSD.org

  • cvsup2.pl.FreeBSD.org

  • cvsup3.pl.FreeBSD.org

Portogallo
  • cvsup.pt.FreeBSD.org

  • cvsup2.pt.FreeBSD.org

  • cvsup3.pt.FreeBSD.org

Regno Unito
  • cvsup.uk.FreeBSD.org

  • cvsup2.uk.FreeBSD.org

  • cvsup3.uk.FreeBSD.org

  • cvsup4.uk.FreeBSD.org

Repubblica Ceca
  • cvsup.cz.FreeBSD.org

Repubblica Slovacca
  • cvsup.sk.FreeBSD.org

  • cvsup2.sk.FreeBSD.org

Romania
  • cvsup.ro.FreeBSD.org

  • cvsup1.ro.FreeBSD.org

  • cvsup2.ro.FreeBSD.org

  • cvsup3.ro.FreeBSD.org

Russia
  • cvsup.ru.FreeBSD.org

  • cvsup2.ru.FreeBSD.org

  • cvsup3.ru.FreeBSD.org

  • cvsup4.ru.FreeBSD.org

  • cvsup5.ru.FreeBSD.org

  • cvsup6.ru.FreeBSD.org

San Marino
  • cvsup.sm.FreeBSD.org

Singapore
  • cvsup.sg.FreeBSD.org

Slovenia
  • cvsup.si.FreeBSD.org

  • cvsup2.si.FreeBSD.org

Spagna
  • cvsup.es.FreeBSD.org

  • cvsup2.es.FreeBSD.org

  • cvsup3.es.FreeBSD.org

Sud Africa
  • cvsup.za.FreeBSD.org

  • cvsup2.za.FreeBSD.org

Svezia
  • cvsup.se.FreeBSD.org

  • cvsup3.se.FreeBSD.org

Svizzera
  • cvsup.ch.FreeBSD.org

Taiwan
  • cvsup.tw.FreeBSD.org

  • cvsup3.tw.FreeBSD.org

  • cvsup4.tw.FreeBSD.org

  • cvsup5.tw.FreeBSD.org

  • cvsup6.tw.FreeBSD.org

  • cvsup7.tw.FreeBSD.org

  • cvsup8.tw.FreeBSD.org

  • cvsup9.tw.FreeBSD.org

  • cvsup10.tw.FreeBSD.org

  • cvsup11.tw.FreeBSD.org

  • cvsup12.tw.FreeBSD.org

  • cvsup13.tw.FreeBSD.org

Thailand
  • cvsup.th.FreeBSD.org

Turchia
  • cvsup.tr.FreeBSD.org

Ucraina
  • cvsup2.ua.FreeBSD.org

  • cvsup3.ua.FreeBSD.org

  • cvsup4.ua.FreeBSD.org

  • cvsup5.ua.FreeBSD.org

  • cvsup6.ua.FreeBSD.org

  • cvsup7.ua.FreeBSD.org

Ungheria
  • cvsup.hu.FreeBSD.org

USA
  • cvsup1.us.FreeBSD.org

  • cvsup2.us.FreeBSD.org

  • cvsup3.us.FreeBSD.org

  • cvsup4.us.FreeBSD.org

  • cvsup5.us.FreeBSD.org

  • cvsup6.us.FreeBSD.org

  • cvsup7.us.FreeBSD.org

  • cvsup8.us.FreeBSD.org

  • cvsup9.us.FreeBSD.org

  • cvsup10.us.FreeBSD.org

  • cvsup11.us.FreeBSD.org

  • cvsup12.us.FreeBSD.org

  • cvsup13.us.FreeBSD.org

  • cvsup14.us.FreeBSD.org

  • cvsup15.us.FreeBSD.org

  • cvsup16.us.FreeBSD.org

  • cvsup18.us.FreeBSD.org


A.6 Tag CVS

Quando ricevi o aggiorni dei sorgenti usando cvs o CVSup, devi specificare un tag di revisione. Un tag di revisione si riferisce sia ad una particolare linea di sviluppo di FreeBSD, sia ad un specifico periodo di tempo. I primi tipi sono chiamati ``tag di ramo'', mentre i secondi ``tag di release''.


A.6.1 Tag di Ramo

Tutti, con l'eccezione di HEAD (che è sempre un valido tag), sono relativi all'albero src/. Gli alberi ports/, doc/, e www/ non sono ramificati.

HEAD

Nome simbolico per la linea di sviluppo corrente, FreeBSD-CURRENT. È anche il tag di default se nessun tag di revisione è specificato.

In CVSup, questo tag è rappresentato dal simbolo ..

Nota: In CVS, questo è il settaggio di default se nessun tag di revisione è stato specificato. In genere non è una buona idea aggiornare i sorgenti a CURRENT su una macchina STABLE, a meno che sai cosa stai facendo.

RELENG_5

La linea di sviluppo per FreeBSD-5.X, che diventerà FreeBSD-STABLE dopo che verrà rilasciato FreeBSD-5.3.

RELENG_5_2

Il ramo di release per FreeBSD-5.2 e FreeBSD-5.2.1, usato solo per aggiornamenti relativi alla sicurezza e per altri fix cruciali.

RELENG_5_1

Il ramo di release per FreeBSD-5.1, usato solo per aggiornamenti relativi alla sicurezza e per altri fix cruciali.

RELENG_5_0

Il ramo di release per FreeBSD-5.0, usato solo per aggiornamenti relativi alla sicurezza e per altri fix cruciali.

RELENG_4

La linea di sviluppo per FreeBSD-4.X, anche conosciuta come FreeBSD-STABLE.

RELENG_4_10

Il ramo di release per FreeBSD-4.10, usato solo per aggiornamenti relativi alla sicurezza e per altri fix cruciali.

RELENG_4_9

Il ramo di release per FreeBSD-4.9, usato solo per aggiornamenti relativi alla sicurezza e per altri fix cruciali.

RELENG_4_8

Il ramo di release per FreeBSD-4.8, usato solo per aggiornamenti relativi alla sicurezza e per altri fix cruciali.

RELENG_4_7

Il ramo di release per FreeBSD-4.7, usato solo per aggiornamenti relativi alla sicurezza e per altri fix cruciali.

RELENG_4_6

Il ramo di release per FreeBSD-4.6 e FreeBSD-4.6.2, usato solo per aggiornamenti relativi alla sicurezza e per altri fix cruciali.

RELENG_4_5

Il ramo di release per FreeBSD-4.5, usato solo per aggiornamenti relativi alla sicurezza e per altri fix cruciali.

RELENG_4_4

Il ramo di release per FreeBSD-4.4, usato solo per aggiornamenti relativi alla sicurezza e per altri fix cruciali.

RELENG_4_3

Il ramo di release per FreeBSD-4.3, usato solo per aggiornamenti relativi alla sicurezza e per altri fix cruciali.

RELENG_3

La line di sviluppo per FreeBSD-3.X, anche conosciuta come 3.X-STABLE.

RELENG_2_2

La linea di sviluppo per FreeBSD-2.2.X, anche conosciuta come 2.2-STABLE. Questo ramo è per la maggior parte obsoleto.


A.6.2 Tag di Release

Questi tag si riferiscono a un preciso istante di tempo quando una versione di FreeBSD è stata rilasciata. Il processo di release engineering è documentato in dettaglio dai documenti Release Engineering Information e Release Process. L'albero src usa nomi di tag che iniziano con RELENG_. Gli alberi ports e doc usano tag il cui nome inizia con RELEASE. Infine, l'albero www non viene taggato con alcun nome particolare per le release.

RELENG_4_10_0_RELEASE

FreeBSD 4.10

RELENG_5_2_1_RELEASE

FreeBSD 5.2.1

RELENG_5_2_0_RELEASE

FreeBSD 5.2

RELENG_4_9_0_RELEASE

FreeBSD 4.9

RELENG_5_1_0_RELEASE

FreeBSD 5.1

RELENG_4_8_0_RELEASE

FreeBSD 4.8

RELENG_5_0_0_RELEASE

FreeBSD 5.0

RELENG_4_7_0_RELEASE

FreeBSD 4.7

RELENG_4_6_2_RELEASE

FreeBSD 4.6.2

RELENG_4_6_1_RELEASE

FreeBSD 4.6.1

RELENG_4_6_0_RELEASE

FreeBSD 4.6

RELENG_4_5_0_RELEASE

FreeBSD 4.5

RELENG_4_4_0_RELEASE

FreeBSD 4.4

RELENG_4_3_0_RELEASE

FreeBSD 4.3

RELENG_4_2_0_RELEASE

FreeBSD 4.2

RELENG_4_1_1_RELEASE

FreeBSD 4.1.1

RELENG_4_1_0_RELEASE

FreeBSD 4.1

RELENG_4_0_0_RELEASE

FreeBSD 4.0

RELENG_3_5_0_RELEASE

FreeBSD-3.5

RELENG_3_4_0_RELEASE

FreeBSD-3.4

RELENG_3_3_0_RELEASE

FreeBSD-3.3

RELENG_3_2_0_RELEASE

FreeBSD-3.2

RELENG_3_1_0_RELEASE

FreeBSD-3.1

RELENG_3_0_0_RELEASE

FreeBSD-3.0

RELENG_2_2_8_RELEASE

FreeBSD-2.2.8

RELENG_2_2_7_RELEASE

FreeBSD-2.2.7

RELENG_2_2_6_RELEASE

FreeBSD-2.2.6

RELENG_2_2_5_RELEASE

FreeBSD-2.2.5

RELENG_2_2_2_RELEASE

FreeBSD-2.2.2

RELENG_2_2_1_RELEASE

FreeBSD-2.2.1

RELENG_2_2_0_RELEASE

FreeBSD-2.2.0


A.7 Siti AFS

I server AFS per FreeBSD sono in esecuzione nei seguenti siti:

Svezia

Il percorso dei file è: /afs/stacken.kth.se/ftp/pub/FreeBSD/

stacken.kth.se         # Stacken Computer Club, KTH, Svezia
130.237.234.43         #hot.stacken.kth.se
130.237.237.230        #fishburger.stacken.kth.se
130.237.234.3          #milko.stacken.kth.se

Il maintainer


A.8 Siti rsync

I seguenti siti rendono disponibile FreeBSD tramite il protocollo rsync. L'utility rsync lavora nello stesso modo del comando rcp(1), ma ha più opzioni e usa il protocollo rsync per aggiornamenti remoti il quale trasferisce solo le differenze tra i due set di file, e di conseguenza accelera fortemente la sincronizzazione su rete. Questo è molto utile se hai un sito mirror del server FTP di FreeBSD, o del deposito CVS. La suite rsync è disponibile per molti sistemi operativi e, su FreeBSD, puoi usare il port net/rsync o il rispettivo package.

Repubblica Ceca

rsync://ftp.cz.FreeBSD.org/

Collezioni disponibili:

  • ftp: Un mirror parziale del server FTP di FreeBSD.

  • FreeBSD: Un mirror completo del server FTP di FreeBSD.

Germania

rsync://grappa.unix-ag.uni-kl.de/

Collezioni disponibili:

  • freebsd-cvs: Il completo deposito CVS di FreeBSD.

Questa macchina fa da mirror anche per il deposito CVS dei progetti NetBSD e OpenBSD, tra gli altri.

Olanda

rsync://ftp.nl.FreeBSD.org/

Collezioni disponibili:

  • vol/3/freebsd-core: Un completo mirror del server FTP di FreeBSD.

Regno Unito

rsync://rsync.mirror.ac.uk/

Collezioni disponibili:

  • ftp.FreeBSD.org: Un completo mirror del server FTP di FreeBSD.

Stati Uniti d'America

rsync://ftp-master.FreeBSD.org/

Questo server può essere usato solo dai siti mirror primari di FreeBSD.

Collezioni disponibili:

  • FreeBSD: L'archivio master del server FTP di FreeBSD.

  • acl: La lista master delle ACL di FreeBSD.

rsync://ftp13.FreeBSD.org/

Collezioni disponibili:

  • FreeBSD: Un completo mirror del server FTP di FreeBSD.


Appendice B. Bibliografia

Sebbene le pagine man forniscano la documentazione di riferimento definitiva per le singole parti del sistema operativo FreeBSD, sono famose per non illustrare come mettere insieme i pezzi per far andare uniformemente l'intero sistema operativo. Per questo, non esiste sostituto a un buon libro sull'amministrazione di un sistema UNIX e a un buon manuale per gli utenti.


B.1 Libri & Riviste Specifiche su FreeBSD

Libri & Riviste internazionali:

Libri & Riviste in lingua inglese:


B.2 Guide per gli Utenti

  • Computer Systems Research Group, UC Berkeley. 4.4BSD User's Reference Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-075-9

  • Computer Systems Research Group, UC Berkeley. 4.4BSD User's Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-076-7

  • UNIX in a Nutshell. O'Reilly & Associates, Inc., 1990. ISBN 093717520X

  • Mui, Linda. What You Need To Know When You Can't Find Your UNIX System Administrator. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-104-6

  • Ohio State University ha scritto un Corso Introduttivo a UNIX che è disponibile online in formato HTML e PostScript.

    Una traduzione in italiano di questo documento è disponibile come parte del FreeBSD Italian Documentation Project.

  • Jpman Project, Japan FreeBSD Users Group. FreeBSD User's Reference Manual (traduzione giapponese). Mainichi Communications Inc., 1998. ISBN 4-8399-0088-4 P3800E.

  • Edinburgh University ha scritto una Guida Online per i nuovi arrivati nell'ambiente UNIX.


B.3 Guide per gli Amministratori

  • Albitz, Paul e Liu, Cricket. DNS and BIND, 4a Ed. O'Reilly & Associates, Inc., 2001. ISBN 1-59600-158-4

  • Computer Systems Research Group, UC Berkeley. 4.4BSD System Manager's Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-080-5

  • Costales, Brian, et al. Sendmail, 2a Ed. O'Reilly & Associates, Inc., 1997. ISBN 1-56592-222-0

  • Frisch, Æleen. Essential System Administration, 2a Ed. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-127-5

  • Hunt, Craig. TCP/IP Network Administration, 2a Ed. O'Reilly & Associates, Inc., 1997. ISBN 1-56592-322-7

  • Nemeth, Evi. UNIX System Administration Handbook. 3a Ed. Prentice Hall, 2000. ISBN 0-13-020601-6

  • Stern, Hal Managing NFS and NIS O'Reilly & Associates, Inc., 1991. ISBN 0-937175-75-7

  • Jpman Project, Japan FreeBSD Users Group. FreeBSD System Administrator's Manual (traduzione giapponese). Mainichi Communications Inc., 1998. ISBN 4-8399-0109-0 P3300E.

  • Dreyfus, Emmanuel. Cahiers de l'Admin: BSD 2nd Ed. (in French), Eyrolles, 2004. ISBN 2-212-11463-X


B.4 Guide per i Programmatori

  • Asente, Paul, Converse, Diana, e Swick, Ralph. X Window System Toolkit. Digital Press, 1998. ISBN 1-55558-178-1

  • Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's Reference Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-078-3

  • Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-079-1

  • Harbison, Samuel P. e Steele, Guy L. Jr. C: A Reference Manual. 4a ed. Prentice Hall, 1995. ISBN 0-13-326224-3

  • Kernighan, Brian e Dennis M. Ritchie. The C Programming Language.. PTR Prentice Hall, 1988. ISBN 0-13-110362-9

  • Lehey, Greg. Porting UNIX Software. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-126-7

  • Plauger, P. J. The Standard C Library. Prentice Hall, 1992. ISBN 0-13-131509-9

  • Spinellis, Diomidis. Code Reading: The Open Source Perspective. Addison-Wesley, 2003. ISBN 0-201-79940-5

  • Stevens, W. Richard. Advanced Programming in the UNIX Environment. Reading, Mass. : Addison-Wesley, 1992. ISBN 0-201-56317-7

  • Stevens, W. Richard. UNIX Network Programming. 2a Ed, PTR Prentice Hall, 1998. ISBN 0-13-490012-X

  • Wells, Bill. ``Writing Serial Drivers for UNIX''. Dr. Dobb's Journal. 19(15), Dicembre 1994. pp68-71, 97-99.


B.5 Architettura del Sistema Operativo

  • Andleigh, Prabhat K. UNIX System Architecture. Prentice-Hall, Inc., 1990. ISBN 0-13-949843-5

  • Jolitz, William. ``Porting UNIX to the 386''. Dr. Dobb's Journal. Gennaio 1991-Luglio 1992.

  • Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels e John Quarterman The Design and Implementation of the 4.3BSD UNIX Operating System. Reading, Mass. : Addison-Wesley, 1989. ISBN 0-201-06196-1

  • Leffler, Samuel J., Marshall Kirk McKusick, The Design and Implementation of the 4.3BSD UNIX Operating System: Answer Book. Reading, Mass. : Addison-Wesley, 1991. ISBN 0-201-54629-9

  • McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, e John Quarterman. The Design and Implementation of the 4.4BSD Operating System. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-54979-4

    (Il capitolo 2 di questo libro è disponibile online come parte del FreeBSD Documentation Project, mentre il capitolo 9 è consultabile qui.)

  • Stevens, W. Richard. TCP/IP Illustrated, Volume 1: The Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63346-9

  • Schimmel, Curt. Unix Systems for Modern Architectures. Reading, Mass. : Addison-Wesley, 1994. ISBN 0-201-63338-8

  • Stevens, W. Richard. TCP/IP Illustrated, Volume 3: TCP for Transactions, HTTP, NNTP and the UNIX Domain Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63495-3

  • Vahalia, Uresh. UNIX Internals -- The New Frontiers. Prentice Hall, 1996. ISBN 0-13-101908-2

  • Wright, Gary R. and W. Richard Stevens. TCP/IP Illustrated, Volume 2: The Implementation. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-63354-X


B.6 Riferimenti sulla Sicurezza

  • Cheswick, William R. e Steven M. Bellovin. Firewalls and Internet Security: Repelling the Wily Hacker. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-63357-4

  • Garfinkel, Simson e Gene Spafford. Practical UNIX & Internet Security. 2a Ed. O'Reilly & Associates, Inc., 1996. ISBN 1-56592-148-8

  • Garfinkel, Simson. PGP Pretty Good Privacy O'Reilly & Associates, Inc., 1995. ISBN 1-56592-098-8


B.7 Riferimenti sull'Hardware

  • Anderson, Don e Tom Shanley. Pentium Processor System Architecture. 2a Ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40992-5

  • Ferraro, Richard F. Programmer's Guide to the EGA, VGA, and Super VGA Cards. 3a ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-62490-7

  • Intel Corporation pubblica la documentazione sulle sue CPU, chipsets e standards sul suo sito web per gli sviluppatori, solitamente come files PDF.

  • Shanley, Tom. 80486 System Architecture. 3a ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40994-1

  • Shanley, Tom. ISA System Architecture. 3a ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40996-8

  • Shanley, Tom. PCI System Architecture. 4a ed. Reading, Mass. : Addison-Wesley, 1999. ISBN 0-201-30974-2

  • Van Gilluwe, Frank. The Undocumented PC, 2a Ed. Reading, Mass: Addison-Wesley Pub. Co., 1996. ISBN 0-201-47950-8

  • Messmer, Hans-Peter. The Indispensable PC Hardware Book, 4a Ed. Reading, Mass: Addison-Wesley Pub. Co., 2002. ISBN 0-201-59616-4


B.8 Storia di UNIX®

  • Lion, John Lion's Commentary on UNIX, 6th Ed. With Source Code. ITP Media Group, 1996. ISBN 1573980137

  • Raymond, Eric S. The New Hacker's Dictionary, 3rd edition. MIT Press, 1996. ISBN 0-262-68092-0. Conosciuto anche come il Jargon File

  • Salus, Peter H. A quarter century of UNIX. Addison-Wesley Publishing Company, Inc., 1994. ISBN 0-201-54777-5

  • Simon Garfinkel, Daniel Weise, Steven Strassmann. The UNIX-HATERS Handbook. IDG Books Worldwide, Inc., 1994. ISBN 1-56884-203-1

  • Don Libes, Sandy Ressler Life with UNIX -- edizione speciale. Prentice-Hall, Inc., 1989. ISBN 0-13-536657-7

  • The BSD family tree. http://www.FreeBSD.org/cgi/cvsweb.cgi/src/share/misc/bsd-family-tree o /usr/share/misc/bsd-family-tree su una macchina FreeBSD recente.

  • The BSD Release Announcements collection. 1997. http://www.de.FreeBSD.org/de/ftp/releases/

  • Networked Computer Science Technical Reports Library. http://www.ncstrl.org/

  • Old BSD releases from the Computer Systems Research group (CSRG). http://www.mckusick.com/csrg/: Il set di 4 CD comprende tutte le versioni di BSD dalla 1BSD alla 4.4BSD e 4.4BSD-Lite2 (ma non la 2.11BSD, sfortunatamente). Inoltre, l'ultimo disco contiene i sorgenti finali più i file SCCS.


B.9 Riviste e Giornali

  • The C/C++ Users Journal. R&D Publications Inc. ISSN 1075-2838

  • Sys Admin -- The Journal for UNIX System Administrators Miller Freeman, Inc., ISSN 1061-2688

  • freeX -- Das Magazin für Linux - BSD - UNIX (in tedesco) Computer- und Literaturverlag GmbH, ISSN 1436-7033


Appendice C. Risorse su Internet

Il rapido sviluppo di FreeBSD rende la carta stampata un mezzo non pratico per poterne seguire l'evoluzione. Le risorse in rete sono il migliore, se non l'unico, modo per tenersi informati sulle novità di questo sistema. Dal momento che FreeBSD è il prodotto del lavoro di volontari, la comunità degli utenti generalmente si presta anche ad una funzione di ``supporto tecnico'' di varia natura, con l'email e le news USENET come il mezzo più efficace per entrare in contatto con queste comunità.

I più frequentati punti di ritrovo della comunità FreeBSD sono esposti di seguito. Se aveste conoscenza di altre risorse non menzionate in questa sede, vi preghiamo di darne informazione a mailing list sul progetto di documentazione di FreeBSD cosicchè possano essere incluse.


C.1 Mailing Lists

Anche se molti sviluppatori di FreeBSD leggono USENET, non può esservi garanzia di ottenere risposta alle proprie domande in tempi brevi (e in generale non può esservi garanzia di ottenere alcuna risposta) semplicemente scrivendo ad uno dei mail-group di comp.unix.bsd.freebsd.*. Indirizzando i propri messaggi alla mailing list appropriata si raggiungerà una audience più concentrata ed informata, permettendo risposte più precise (o quanto meno più sollecite).

Gli argomenti delle varie liste sono elencati all'inizio del documento. Si prega di leggere gli argomenti prima di unirsi o scrivere ad una lista. La maggior parte dei sottoscrittori di liste ricevono ogni giorno svariate centinaia di messaggi, e mantenendo argomenti e regole di comportamento cerchiamo di tenere alto il rapporto segnale/rumore della lista. Venir meno a queste regole vorrebbe dire il fallimento della mailing list come mezzo efficace di comunicazione per il progetto. Vengono tenuti archivi per tutte le mailing list, e questi possono essere esplorati usando il FreeBSD World Wide Web server. L'archivio esplorabile per parole chiave costituisce un mezzo eccellente per trovare risposte a domande poste di frequente e dovrebbe essere consultato prima di spedire una domanda.


C.1.1 Sommario delle liste

Liste generiche: Le seguenti sono liste generiche a cui tutti sono invitati (e incoraggiati) a partecipare:

Lista Argomento
cvs-all Cambiamenti apportati all'albero dei sorgenti di FreeBSD
freebsd-advocacy Evangelismo FreeBSD
freebsd-announce Eventi importanti e annunci di progetti
freebsd-arch Discussioni sull'architettura ed il design
freebsd-bugbusters Discussioni incentrate sul mantenimento del database dei report dei problemi di FreeBSD e progetti correlati
freebsd-bugs Report sui bug
freebsd-chat Argomenti non-tecnici di interesse della comunità FreeBSD
freebsd-config Sviluppo del processo di installazione e configurazione di FreeBSD
freebsd-current Discussioni sull'utilizzo di FreeBSD-CURRENT
freebsd-isp Argomenti di interesse degli Internet Service Providers che usano FreeBSD
freebsd-jobs Opportunità di lavoro e consulenza relative a FreeBSD
freebsd-newbies Discussioni ed attività dei nuovi utenti FreeBSD
freebsd-policy Le decisioni sulla politica da adottare del core degli sviluppatori FreeBSD. Toni pacati e sola lettura
freebsd-questions Domande degli utenti e assistenza tecnica
freebsd-security-notifications Notifiche sulla sicurezza
freebsd-stable Discussioni sull'uso di FreeBSD-STABLE
freebsd-test Dove spedire i tuoi messaggi di test, lasciando in pace le altre liste

Liste tecniche: le seguenti liste sono a carattere tecnico. Dovreste leggere attentamente gli argomenti elencati di seguito prima di unirvi o spedirvi mail, poichè ci sono strette linee di condotta per il loro uso ed il loro contenuto.

Lista Argomento
freebsd-acpi Sviluppo di ACPI e della gestione dell'energia
freebsd-afs Il porting di AFS su FreeBSD
freebsd-aic7xxx Sviluppare drivers per Adaptec® AIC 7xxx
freebsd-alpha Il porting di FreeBSD su Alpha
freebsd-amd64 Il porting di FreeBSD sui sistemi AMD64
freebsd-apache Discussioni sui port relativi ad Apache
freebsd-arm Il porting di FreeBSD su processori ARM®
freebsd-atm Usare reti ATM con FreeBSD
freebsd-audit Il progetto di audit del codice sorgente
freebsd-binup Il design e lo sviluppo del sistema di aggiornamento dei binari
freebsd-cluster Usare FreeBSD in cluster
freebsd-cvsweb Il mantenimento di CVSweb
freebsd-database Discussioni sull'uso e lo sviluppo di database sotto FreeBSD
freebsd-doc Creare documenti su FreeBSD
freebsd-emulation L'emulazione di altri sistemi operativi come Linux/DOS/Windows
freebsd-firewire Discussioni tecniche sui FreeBSD FireWire® (iLink, IEEE 1394)
freebsd-fs I file system
freebsd-geom Discussioni e implementazioni riguardanti GEOM
freebsd-gnome Il porting di GNOME e delle applicazioni GNOME
freebsd-hackers Discussioni tecniche generiche
freebsd-hardware Discussioni tecniche generiche sull'hardware e FreeBSD
freebsd-i18n L'internazionalizzazione di FreeBSD
freebsd-ia32 FreeBSD sulla piattaforma IA-32 (Intel x86)
freebsd-ia64 Il porting di FreeBSD ai futuri sistemi Intel IA64
freebsd-ipfw Discussioni tecniche sul redesign del codice del firewall
freebsd-isdn Sviluppatori ISDN
freebsd-java Sviluppatori Java e persone coinvolte nel port delle JDK sotto FreeBSD
freebsd-kde Il porting di KDE e delle applicazioni KDE
freebsd-lfs Il porting di LFS sotto FreeBSD
freebsd-libh Il sistema di installazione e di gestione dei pacchetti di seconda generazione
freebsd-mips Il porting di FreeBSD su MIPS®
freebsd-mobile Discussioni sui portatili
freebsd-mozilla Il porting di Mozilla sotto FreeBSD
freebsd-multimedia Applicazioni multimediali
freebsd-new-bus Discussioni tecniche sull'architettura bus
freebsd-net Discussione sul networking e codice sorgente TCP/IP
freebsd-openoffice Il porting di OpenOffice.org e StarOffice su FreeBSD
freebsd-performance Questioni relative alla calibrazione delle prestazioni per installazioni a ad alta performance o carico elevato
freebsd-perl Mantenimento di un numero di port relativi a perl
freebsd-platforms Riguardo al porting di FreeBSD su architetture non Intel
freebsd-ports Discussione sulla collezione dei port
freebsd-ports-bugs Discussione sui bug/PR relativi ai port
freebsd-ppc Il porting di FreeBSD su PowerPC®
freebsd-qa Discussione su certificati di qualità, solitamente sotto una release
freebsd-realtime Sviluppo di estensioni realtime su FreeBSD
freebsd-scsi Il sottosistema SCSI
freebsd-security Questioni relative alla sicurezza di FreeBSD
freebsd-small L'uso di FreeBSD in applicazioni embedded
freebsd-smp Discussioni di design per sistemi a multiprocessore [a]simmetrico
freebsd-sparc64 Il porting di FreeBSD su architetture Sparc
freebsd-standards La coerenza di FreeBSD agli standards C99 e POSIX
freebsd-testing Test di stabilità e performance di FreeBSD
freebsd-threads Threading in FreeBSD
freebsd-tokenring Supporto per il token-ring in FreeBSD
freebsd-vuxml Discussioni sull'infrastruttura VuXML
freebsd-x11 Mantenimento e supporto di X11 su FreeBSD

Liste limitate: Le seguenti liste sono adatte ad un audience più specializzata (ed esigente) e probabilmente non sono di interesse del pubblico generico. È inoltre buona norma frequentare le liste tecniche prima di unirsi ad una di queste liste così da comprendere l'etichetta di comunicazione richiesta.

Lista Argomento
freebsd-hubs Per coloro che gestiscono mirrors (supporto infrastrutturale)
freebsd-user-groups Coordinamento dei gruppi utenti
freebsd-vendors Coordinamento dei venditori pre-release
freebsd-www Coloro che mantengono il sito www.FreeBSD.org

Liste digest: Tutte le liste sopracitate sono anche consultabili come digest. Una volta iscritto a una lista, puoi cambiare le tue opzioni digest nella sezione delle opzioni del tuo account.

Liste CVS: Le liste seguenti sono per le persone interessate a vedere i messaggi di log delle modifiche alle varie aree dell'albero dei sorgenti. Sono liste a Sola Lettura e non si dovrebbero inviare messaggi ad esse.

Lista Area dei sorgenti Descrizione dell'area
cvs-all /usr/(CVSROOT|doc|ports|projects|src) Tutte le modifiche in ogni parte dell'albero (unione di tutte le altre liste di commit cvs)
cvs-doc /usr/(doc|www) Tutte le modifiche all'albero doc e www
cvs-ports /usr/ports Tutte le modifiche all'albero ports
cvs-projects /usr/projects Tutte le modifiche all'albero projects
cvs-src /usr/src Tutte le modifiche all'albero src

C.1.2 Come iscriversi

Per iscriverti ad una lista, clicca sul nome della lista qui sopra o vai su http://lists.FreeBSD.org/mailman/listinfo e clicca sulla lista a cui sei interessato. La pagina delle liste dovrebbe contenere tutte le informazioni necessarie all'iscrizione.

Per mandare un messaggio ad una lista basta inviare una mail a <listname@FreeBSD.org>. Sarà poi redisribuita a tutti i membri della lista.

Per disiscriverti da una lista, clicca sull'URL che trovi in fondo a ogni email ricevuta dalla lista. È anche possibile inviare un'email a <freebsd-listname-unsubscribe@FreeBSD.org> per disiscriverti.

A costo di ripeterci, vorremmo che i membri della lista tecnica tenessero la discussione su un tono tecnico. Se sei solo interessato ad annunci importanti, allora è preferibile che ti iscrivi alla mailing list di annunci su FreeBSD, creata apposta per traffico non frequente.


C.1.3 Argomenti delle liste

Tutte le mailing list FreeBSD hanno alcune regole base che tutti gli utenti devono seguire. La mancata aderenza a queste regole comporterà due (2) avvisi scritti dal PostMaster FreeBSD , dopo dei quali, ad una terza trasgressione, il membro sarà espulso da tutte le mailing list di FreeBSD e gli sarà impedita qualsiasi futura iscrizione. Siamo mortificati del fatto che queste regole e misure siano necessarie, ma al giorno d'oggi Internet è diventato, a quanto pare, un'ambiente alquanto disordinato, e molti paiono scordarsi di quanto siano fragili alcuni suoi meccanismi.

Regole della strada:

  • L'argomento di ogni messaaggio dovrebbe aderire all'argomento della lista a cui è inviato, ad esempio se la lista è a carattere tecnico, i vostri messaggi dovrebbero contenere discussioni tecniche. Chiacchiericci continui ed irrilevanti vanno a discapito del valore della lista per tutti i suoi membri e non saranno tollerati. Per discussioni libere senza restrizioni sull'argomento, la mailing list di chiacchiere su FreeBSD è liberamente fruibile e dovrebbe essere usata per questo.

  • Non bisognerebbe scrivere a più di due mailing list, ed anche a due solo e soltanto se un motivo reale e concreto esiste. Per molte liste, esiste già un grande traffico di messaggi che si sovrappongono ed eccetto per i mix più esoterici (ad esempio ``-stable & -scsi''), non c'è alcun motivo di scrivere a più di una lista alla volta. Se un messaggio è inviato in modo tale che molte mailing list appaiono nella linea Cc, allora la linea Cc dovrebbe essere suddivisa prima di inviare nuovi messaggi. Voi siete del tutto responsabili per i vostri messaggi inviati in modo errato, non importa di chi sia la causa.

  • Attacchi personali ed insulti (nel contesto di una discussione) non sono permessi, e questa regola comprende membri e sviluppatori. Gravi violazioni della netiquette, come citare o inviare messaggi altrui quando il permesso a farlo non c'era e non sarebbe giunto sono altamente disapprovate ma non sanzionate direttamente. Comunque, ci sono pochissimi casi in cui questi messaggi sarebbero pertinenti all'argomento della lista, quindi tali comportamenti probabilmente otterrebbero un avviso (o un espulsione) del Postmaster, solo per quel motivo.

  • Pubblicità di prodotti non-FreeBSD è altamente proibita e comportertà un'espulsione immediata se è chiaro che il trasgressore sta inviando pubblicità spam.

Argomenti delle singole liste:

freebsd-acpi

Sviluppo di ACPI e della gestione dell'energia

freebsd-afs

Andrew File System

Questa è la lista per le discussioni sul porting e l'uso dell' AFS da CMU/Transarc.

freebsd-announce

Eventi importanti/pietre miliari

Questa è la mailing list per le persone interessate soltanto in annunci occasionali di eventi significativi riguardanti FreeBSD. Contiene annunci riguardo snapshots e altre release. Contiene annunci su nuove potenzialità di FreeBSD. Può contenere richieste di volontari etc. È una mailing list dal poco traffico, strettamente regolata.

freebsd-arch

Discussione sull'architettura e la progettazione

Questa lista è per la discussione dell'architettura FreeBSD. I messaggi saranno mantenuti strettamente tecnici di natura. Esempi di possibili argomenti:

  • Come modificare il processo di build per avere molti build personalizzati in funzione allo stesso tempo.

  • Cosa deve essere modificato nel VFS per far funzionare i layers Heimann.

  • Come modificare l'interfaccia dei device driver per poter usare gli stessi driver senza problemi su molti buses e architetture.

  • Come scrivere un driver di rete.

freebsd-audit

Progetto di audit del sorgente

Questa è la mailing list per il progetto di audit del codice FreeBSD. Anche se in origine era intesa per cambiamenti relativi alla sicurezza, le sue caratteristiche sono state estese per includere ogni cambiamento al codice.

Questa lista è piena di discussioni di patch, e probabilmente di non grandissimo interesse per l'utente medio FreeBSD. Discussioni sulla sicurezza non relative ad una particolare modifica del codice si tengono in FreeBSD-security. Nel frattempo tutti gli svilupatori sono incoraggiati a spedire le proprie patch a questa lista per correzioni, specialmente se toccano parte del sistema dove un bug può influenzare negativamente l'integrità del sistema.

freebsd-binup

Aggiornamento dei binari FreeBSD

Questa lista esiste per fornire un terreno di discussione per il sistema di aggiornamento dei binari, o binup. Sono consentite questioni di design, dettagli di implementazione, patch, report di bug, report di status, richieste di feature, log delle modifiche, e tutto ciò che riguardi binup.

freebsd-bugbusters

Coordinamento dello sforzo di gestione dei Problem Report

Lo scopo di questa lista è di servire come forum di coordinamento e discussione per il Bugmeister, i suoi Bugbuster, e ogni altra parte che abbia un genuino interesse nel database PR. Questa lista non è per la discussione di bug specifici, patch, o PR.

freebsd-bugs

Report di bug

Questa è la lista per i report dei bug di FreeBSD. Quando possibile, i bug dovrebbero essere indicati usando il comando send-pr(1) o tramite la sua interfaccia WEB.

freebsd-chat

Argomenti non tecnici relativi alla comunità FreeBSD

Questa lista contiene ciò che resta dalle altre liste riguardo ad informazioni non tecniche, sociali. Include discussioni sul fatto che Jordan sembri o meno un toon ferret, se scrivere o meno in maiuscolo, chi sta bevendo troppo caffè, dove spillano la migliore birra, chi spilla birra in cantina, e così via. Annunci occasionali di eventi importanti (party a venire, celebrazioni di matrimoni, nascite, nuovi lavori etc.) possono essere fatti alle liste non tecniche, ma i suddetti argomenti dovrebbero essere diretti a questa lista.

freebsd-core

Il core team di FreeBSD

Questa è una lista interna ad uso dei membri core. Messaggi possono esservi spediti quando una seria questione relativa a FreeBSD richiede un arbitrato da un alto scrutinio.

freebsd-current

Discussioni sull'uso di FreeBSD-CURRENT

Questa è la mailing list di discussione di FreeBSD-CURRENT. Contiene avvertimenti su nuove features in arrivo in -CURRENT che toccheranno gli utenti, ed istruzioni su passi che devono restare -CURRENT. Chiunque usi ``CURRENT'' deve sottoscrivere questa lista. È una mailing list tecnica per la quale ci si attende materiale strettamente tecnico.

freebsd-cvsweb

Progetto CVSweb di FreeBSD

Discussioni tecniche sull'uso, sviluppo e mantenimento di FreeBSD-CVSweb

freebsd-doc

Progetto di documentazione

Questa mailing list è per la discussione di argomenti e progetti riguardanti la creazione della documentazione FreeBSD. I membri di questa mailing list sono noti in genere come ``The FreeBSD Documentation Project''. È una lista aperta, sentitevi liberi di unirla e contribuirvi.

freebsd-firewire

FireWire (iLink, IEEE 1394)

Questa è la mailing list per la discussione del design e l'implementazione di un sottosistema FireWire (anche noto come IEEE 1394 o iLink) per FreeBSD. Argomenti rilevanti includono nello specifico gli standards, i bus devices, i loro protocolli, insiemi di adapter boards/cards/chips, e l'architettura e implementazione del codice per il loro pieno supporto.

freebsd-fs

File system

Discussioni riguardanti i file system FreeBSD. Questa è una lista dalle caratteristiche tecniche per la quale ci si attende contenuto strettamente tecnico.

freebsd-geom

GEOM

Discussioni riguardanti GEOM e relative implementazioni. Questa è una mailing list tecnica per la quale ci si attente contenuto strettamente tecnico.

freebsd-gnome

GNOME

Discussioni riguardanti The Gnome Desktop Environment per sistemi FreeBSD. Questa è una mailing list tecnica per la quale ci si attende materiale strettamente tecnico.

freebsd-ipfw

Firewall IP

Questo è il forum di discussione riguardante il redesign del codice IP firewall di FreeBSD. Questa è una mailing list tecnica per la quale ci si attende materiale strettamente tecnico.

freebsd-ia64

Il porting di FreeBSD su IA64

Questa è una mailing list tecnica per individui impegnati attivamente nel porting di FreeBSD alla piattaforma IA-64 dall'Intel, nel sollevare problemi e nel proporre soluzioni. Individui interessati nel seguire le discussioni tecniche sono comunque benvenuti.

freebsd-isdn

Sistema di comunicazione ISDN

Questa è la mailing list per le persone che discutono lo sviluppo del supporto ISDN per FreeBSD.

freebsd-java

Sviluppo Java

Questa è la mailing list per le persone impegnate nello sviluppo di applicazioni Java significative per FreeBSD ed il porting ed il mantenimento delle JDK.

freebsd-jobs

Cercasi e offresi opportunità di lavoro

Questo è un forum dove inviare avvisi di impiego e curriculum vitae relativi specificatamente a FreeBSD, ad esempio se stai cercando un impiego relativo a FreeBSD o hai un posto di lavoro da pubblicizzare che coinvolge FreeBSD allora questo è il posto giusto. Questa non è una mailing list sui problemi di occupazione in generale visto che forum appropriati esistono già da altre parti.

Nota che questa lista, come le altre mailing list di FreeBSD.org, è distribuita in tutto il mondo. Di conseguenza, devi essere chiaro sul luogo e sulle possibiltà di telelavoro o assistenza nel cambiare abitazione, se disponibili.

Le email dovrebbero usare solo formati aperti -- preferibilmente testo semplice, ma molti lettori accettano anche Portable Document Format (PDF), HTML, e alcuni altri. Formati chiusi come Microsoft Word (.doc) saranno respinti dal server delle mailing list.

freebsd-kde

KDE

Discussioni concernenti KDE su sistemi FreeBSD. È una mailing list a carattere tecnico per la quale ci si attende materiale strettamente tecnico.

freebsd-hackers

Discussioni tecniche

Questo è un forum per discussioni tecniche relative a FreeBSD. Questa è la mailing list tecnica principale. È per individui che lavorano attivamente a FreeBSD per sollevare problemi o discutere soluzioni alternative. Individui interessati nel seguire le discussioni tecniche sono comunque benvenuti. È una mailing list tecnica per la quale ci si attende contenuto strettamente tecnico.

freebsd-hardware

Discussione generale sull'hardware e FreeBSD

Discussione generica sui vari tipi di hardware che FreeBSD supporta, vari problemi e suggerimenti riguardo a cosa convenga acquistare e cosa evitare.

freebsd-hubs

Siti mirror

Annunci e discussioni per persone che mantengono siti mirror FreeBSD.

freebsd-isp

Questioni riguardanti gli Internet Service Provider

Questa mailing list è per la discussione di argomenti riguardanti gli Internet Service Provider (ISP) che usano FreeBSD. È una mailing list tecnica per a quale ci si attende materiale strettamente tecnico.

freebsd-newbies

Discussioni sulle attività dei nuovi adepti

Copriamo ogni attività riguardante i nuovi utenti che non sia coperta altrove, inclusi: tecniche di apprendimento e soluzione dei problemi indipendenti, la ricerca e l'uso di risorse in rete e la richiesta di aiuto ad altri utenti, come usare mailing list e quali liste usare, chat generiche, gli errori, i pregi, la condivisione di idee, storie, supporto morale (ma non tecnico), e prendere parte attiva nella comunità FreeBSD. Prendiamo i nostri problemi e le richieste di supporto a freebsd-questions, e usiamo freebsd-newbies per incontrare altra gente che sia impegnata nelle stesse attività in quanto nuovo utente.

freebsd-openoffice

OpenOffice.org

Questione concernenti il porting ed il mantenimento di OpenOffice.org e StarOffice.

freebsd-performance

Discussioni riguardo la calibrazione o la velocizzazione di FreeBSD

Questa mailing list esiste per procurare ad hackers, amministratori di sistema, e/o parti interessate un luogo dove discutere argomenti legati alla performance di FreeBSD. Argomenti accettabili includono installazioni di FreeBSD ad alto carico, con problemi di performance o che stanno spingendo ai limiti delle sue possibilità FreeBSD. Le parti interessate che sono disposte a lavorare per un miglioramento delle prestazioni di FreeBSD sono altamente incoraggiate a sottoscrivere questa lista. Questa è una lista estremamente tecnica, idealmente adatta per utenti FreeBSD esperti, hackers o amministratori intenzionati a mantenere FreeBSD veloce, robusto e scalabile. Questa lista non è una lista domanda-e-risposta che sostituisce l'uso della documentazione, quanto piuttosto un luogo dove apportare i propri contributi o porre domande che non hanno avuto risposta altrove riguardo a tematiche di prestazione.

freebsd-platforms

Il porting sulle piattaforme non Intel

Questione concernenti FreeBSD fra le varie piattaforme, discussioni generiche e proposte per ports ad architetture non Intel. È una maliling list tecnica per la quale ci si attende materiale strettamente tecnico.

freebsd-policy

Le decisioni della politica del Core Team

Questa è una mailing list a scarso traffico, di sola lettura, per le decisioni politiche del Core Team.

freebsd-ports

Discussioni sui ``port''

Discussioni riguardanti la collezione dei ``port'' di FreeBSD (/usr/ports), l'infrastruttura dei port, e sforzi generali per la coordinazione dei port. È una mailing list a carattere tecnico per la quale ci si attende materiale strettamente tecnico.

freebsd-ports-bugs

Discussione dei bug dei ``port''

Discussioni concernenti report di problemi sulla ``collezione dei port'' di FreeBSD (/usr/ports), proposte di nuovi port, o modifiche ai port. È una mailing list a carattere tecnico per la quale ci si attende materiale strettamente tecnico.

freebsd-questions

Domande degli utenti

Questa è una mailing list per domande riguardanti FreeBSD. Non dovreste por