BSD-FAQ-it - I gufi siamo noi

Transcript

BSD-FAQ-it - I gufi siamo noi
BSD-FAQ-it
Matteo Riondato
Membro dello Staff del GUFI
[email protected]
Massimiliano Stucchi
Membro dello Staff del GUFI
[email protected]
BSD-FAQ-it
Matteo Riondato
Massimiliano Stucchi
Pubblicato $Id: book.sgml,v 1.49 2004/02/16 16:07:11 rionda Exp $
Copyright © 2003-2004 Il team di BSD-FAQ-it
Domande e risposte relative a BSD
BSD-FAQ-it è un progetto di documentazione nato con l’intento di creare un insieme di domande e risposte sul
mondo BSD che possa dare una mano sia a chi si accosta da novizio a questo particolare tipo di sistemi operativi, sia
agli esperti che cercano una soluzione ai propri problemi.
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 BSD-FAQ-it TEAM "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.
Apple, FireWire, Mac, Macintosh, Mac OS, Quicktime, and TrueType are trademarks of Apple Computer, Inc., registered in the United States and
other countries.
CVSup is a registered trademark of John D. Polstra.
Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are trademarks or registered trademarks of Intel Corporation or its
subsidiaries in the United States and other countries.
Linux is a registered trademark of Linus Torvalds.
Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media and Windows NT are either registered trademarks or trademarks of
Microsoft Corporation in the United States and/or other countries.
Motif, OSF/1, and UNIX are registered trademarks and IT DialTone and The Open Group are trademarks of The Open Group in the United States
and other countries.
XFree86 is a trademark of The XFree86 Project, Inc.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations
appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the “™” or the “®”
symbol.
Sommario
Benvenuti a BSD-FAQ-it................................................................................................................................................i
I. FAQ di FreeBSD .........................................................................................................................................................i
1. Introduzione a FreeBSD....................................................................................................................................1
1.1. Cosa è FreeBSD?..................................................................................................................................1
1.2. Qual è lo scopo del progetto FreeBSD? ...............................................................................................1
1.3. La FreeBSD license ha qualche restrizione? ........................................................................................1
1.4. Può FreeBSD rimpiazzare il mio attuale sistema operativo? ...............................................................2
1.5. Perché è chiamato FreeBSD? ...............................................................................................................2
1.6. Qual è l’ultima versione di FreeBSD?..................................................................................................2
1.7. Che cos’è FreeBSD-CURRENT?.........................................................................................................3
1.8. Qual è il concetto di FreeBSD-STABLE? ............................................................................................4
1.9. Quando vengono fatte le release di FreeBSD? .....................................................................................5
1.10. Chi è responsabile per FreeBSD? .......................................................................................................5
1.11. Dove posso trovare FreeBSD?............................................................................................................5
1.12. Come posso preparare un mirror di FreeBSD?...................................................................................6
1.13. Come posso avere accesso al database dei Problem Report? .............................................................6
1.14. Come divento un mirror web di FreeBSD? ........................................................................................6
1.15. Quali altre fonti di informazione ci sono? ..........................................................................................6
2. Documentazione e Supporto .............................................................................................................................7
2.1. Che bei libri ci sono che parlano di FreeBSD?.....................................................................................7
II. Domande e Risposte.................................................................................................................................................8
3. Amministrazione del Sistema............................................................................................................................9
3.1. Come posso usare le accentate in console? ..........................................................................................9
3.2. Come posso eseguire un comando a una determinata ora di un determinato giorno?..........................9
3.3. Il prompt di default della shell è bruttino, come posso cambiarlo?......................................................9
3.4. Come posso fare eseguire un comando ogni determinato lasso di tempo? ........................................11
3.5. Esiste un modo per evitare di scrivere un intero comando molto lungo ogni volta?..........................11
3.6. Come posso aggiornare il sistema?.....................................................................................................12
3.7. Come ricompilo il sistema? ................................................................................................................14
3.8. Ho ricompilato il sistema ma al riavvio ci sono dei problemi. Cosa posso fare?...............................17
3.9. Come posso ottenere i sorgenti relativi a una data precisa? ...............................................................17
3.10. Come mai ogni 497 giorni uptime(1) riazzera il conteggio dei giorni? ...........................................18
3.11. Come formatto i floppy disk? ...........................................................................................................18
3.12. Come aggiungo un utente a un gruppo? ...........................................................................................18
3.13. Come cambio l’hostname? ...............................................................................................................19
3.14. Come faccio a sapere il mio indirizzo IP? ........................................................................................19
3.15. Come posso sapere quali utenti hanno effettuato il login ultimamente? ..........................................20
3.16. Come posso sapere quali utenti sono connessi al momento? ...........................................................20
3.17. Come si caricano i moduli del kernel? .............................................................................................21
3.18. Come faccio a sapere quali moduli del kernel sono caricati?...........................................................22
3.19. Come posso usare la lingua italiana nei programmi che la supportano?..........................................22
3.20. Cosa sono i permessi di un file? .......................................................................................................23
3.21. Come cambio i permessi di un file?..................................................................................................24
3.22. Posso aumentare la risoluzione dello schermo in console? ..............................................................25
iv
3.23. Come configuro il mio sistema FreeBSD affinché faccia da gateway tra la mia rete locale e
Internet? ...........................................................................................................................................25
3.24. Come cambio l’utente e/o il gruppo proprietario di un file? ............................................................27
3.25. Come regolo l’orologio di sistema?..................................................................................................27
3.26. Come vengono identificati i dischi rigidi e i lettori cdrom in FreeBSD? .........................................28
3.27. Come partiziono un disco per FreeBSD? .........................................................................................30
3.28. Come posso sapere quali porte sono aperte nel mio sistema? ..........................................................31
3.29. Che differenza c’è tra APM e ACPI ? ..............................................................................................34
3.30. Come attivo APM su una 5.x ? .........................................................................................................34
3.31. Come disattivo ACPI ? .....................................................................................................................34
3.32. Come posso utilizzare tutto lo spazio possibile della partizione? ....................................................34
3.33. Ho perso il file /etc/master.passwd, come lo ricreo?................................................................35
3.34. Perché non riesco ad avere l’output di ls(1) a colori?.......................................................................35
3.35. Come posso sapere quanta memoria di swap sto usando? ...............................................................35
3.36. Come posso rivedere il messaggi di probe delle device al boot? .....................................................36
3.37. Come posso montare un immagine ISO? .........................................................................................36
3.38. Mi si è rovinato l’MBR, come posso reinstallarlo? ..........................................................................36
3.39. Chi è l’utente toor? .........................................................................................................................37
3.40. Non riesco a diventare root utilizzando su(1). Come posso fare? ..................................................37
3.41. Posso cambiare il messaggio che viene mostrato ad ogni login? .....................................................37
3.42. Come installo le applicazioni? Cos’è un port? Cos’è un package?..............................................37
3.43. Come rimuovo un port o un package? ..............................................................................................39
3.44. Come aggiorno i ports/packages installati? ......................................................................................39
4. XFree86 ...........................................................................................................................................................42
4.1. Come posso usare le applicazioni X via SSH?...................................................................................42
4.2. Come installo i driver proprietari per le schede grafiche NVIDIA®?................................................42
4.3. Come posso usare la rotella del mouse? .............................................................................................44
4.4. Come configuro il server grafico X?...................................................................................................44
5. Applicazioni e Varie ........................................................................................................................................46
5.1. Come posso crackare le password del mio sistema per verificare se sono sicure?.............................46
5.2. Come posso vedere un DVD?.............................................................................................................47
5.3. Come compilo ipfw2 su una 4.X?.....................................................................................................47
5.4. Come aggiorno il database di locate(1)? ............................................................................................48
5.5. Come posso creare file MP3? .............................................................................................................48
5.6. Come creo un’immagine ISO? ...........................................................................................................49
5.7. Come creo i cd di dati? .......................................................................................................................49
5.8. Come creo i CD audio?.......................................................................................................................50
5.9. Posso giocare a Quake 3 Arena™ con FreeBSD?..............................................................................52
5.10. Come posso ricevere la posta con fetchmail? ..............................................................................53
5.11. Come cambio shell?..........................................................................................................................53
5.12. Come posso usare il mio modem Alcatel® Speedtouch USB? ........................................................53
5.13. Posso usare l’OpenSSH incluso nei ports, invece di quello di sistema? ..........................................54
III. Appendici ..............................................................................................................................................................56
A. Suggeritori, Correttori, Critici, Supporters, Amici.........................................................................................57
Colophon......................................................................................................................................................................58
v
Benvenuti a BSD-FAQ-it
Come è solito fare con le FAQ (o Frequently Asked Questions, domande poste più di sovente), questo documento
cerca di coprire le domande che più frequentemente sono state poste su mailing list o su IRC da utenti spesso
considerati ’inesperti’ nel mondo BSD, mentre altre arrivano dalle esperienze personali dei partecipanti al progetto.
Come punto di partenza abbiamo deciso di tradurre le FAQ di FreeBSD, anche se il progetto ha come intento quello
di riunire documentazione riguardante tutti e tre i sistemi operativi della famiglia. Questo sarà utile per avere una
base consistente dalla quale partire per fornire un insieme completo di domande con le relative risposte.
Un ringraziamento speciale va al GUFI (Gruppo Utenti FreeBSD Italia) che supporta ufficialmente questo progetto,
offrendo continuo supporto e risorse.
Questo insieme di domande e risposte è in continua evoluzione e non sarebbe mai stato possibile crearlo senza
l’aiuto di tutte quelle persone che con la loro costanza e passione, ma soprattutto con una grande curiosità hanno
posto domande a tutti coloro che erano pronti ad ascoltarle e fornire una risposta esaustiva. Saremmo dunque grati
se, trovando una domanda alla quale non viene data risposta nel nostro documento, ci mandaste una email
comunicandola. L’indirizzo è <[email protected]>.
i
I. FAQ di FreeBSD
I capitoli che seguono sono la traduzione delle FAQ ufficiali del progetto FreeBSD, che si trovano all’indirizzo
http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/
Capitolo 1. Introduzione a FreeBSD
1.1. Cosa è FreeBSD?
In parole povere, FreeBSD è un sistema operativo di tipo UN*X per le architetture i386, PC-98, Alpha/AXP, e le
piattaforme UltraSPARC basato sulla release “4.4BSD-Lite”, con alcuni miglioramenti provenienti da
“4.4BSD-Lite2”. È anche basato indirettamente sul port di William Jolitz di “Net/2” dell’università di Berkeley su
i386, conosciuto come “386BSD”, anche se rimane poco del codice di 386BSD. Una descrizione più completa
riguardo a cosa sia FreeBSD e cosa potrebbe fare per te la trovi sul sito del GUFI (http://www.gufi.org), Gruppo
Utenti FreeBSD Italia.
FreeBSD è usato da aziende, Internet Service Providers, ricercatori, professionisti dell’informatica, studenti e utenti
casalinghi in tutto il mondo per lavoro, educazione e ricreazione.
Per informazioni più dettagliate su FreeBSD, prova a dare un’occhiata all’handbook
(http://www.freebsd.org/handbook), di cui esiste una parziale traduzione in italiano
(http://www.gufi.org/~alex/books/handbook/book.html).
1.2. Qual è lo scopo del progetto FreeBSD?
L’obiettivo del progetto FreeBSD è fornire del software che può essere usato per qualsiasi scopo e senza fronzoli.
Molti di noi hanno investito significativamente nel codice (e nel progetto) e non importa ricevere riconoscimenti
economici di tanto in tanto, pur non insistendo su questo fatto. Crediamo che la nostra “missione” primaria sia
fornire codice a chiunque, per qualsiasi scopo, cosicchè il codice trovi il suo ampio spazio di utilizzo e produca i
benefici maggiori. Questo, crediamo, è uno degli obiettivi fondamentali del Software Libero, un’idea che
supportiamo con entusiasmo.
Quel codice che è nel nostro albero dei sorgenti che si trova sotto la GNU General Public License (GPL)
(http://www.FreeBSD.org/copyright/COPYING) o sotto la GNU Library General Public License (LGPL)
(http://www.FreeBSD.org/copyright/COPYING.LIB) viene distribuito con dei fronzoli in più, sebbene si tratti di un
accesso più restrittivo, piuttosto che l’esatto contrario di quello che pensiamo noi. Date le generali complessità che
possono scaturire dall’utilizzo commerciale di software GPL, consigliamo di rimpiazzare tale software con prodotti
rilasciati sotto la più rilassata FreeBSD license (http://www.FreeBSD.org/copyright/freebsd-license.html) quando
possibile.
1.3. La FreeBSD license ha qualche restrizione?
Certo. Quelle restrizioni non controllano come usi il codice, piuttosto come tratti il progetto FreeBSD stesso. Se hai
delle serie preoccupazioni riguardo la licenza, leggi la licenza attuale
(http://www.FreeBSD.org/copyright/freebsd-license.html). Per i più curiosi, la licenza può essere riassunta in questo
modo.
•
Non assumerti i meriti per aver scritto questo.
•
Non farci causa se si rompe o non funziona.
1
Capitolo 1. Introduzione a FreeBSD
1.4. Può FreeBSD rimpiazzare il mio attuale sistema
operativo?
Per molte persone sì. Ma questa domanda non ha una risposta generica.
Molte persone non usano realmente un sistema operativo. Usano applicazioni. Sono le applicazioni che in realtà
usano il sistema operativo. FreeBSD è disegnato per fornire un ambiente robusto e pienamente attrezzato per le
applicazioni. Supporta una varietà infinita di Browser per internet, Suite per ufficio, client di posta elettronica,
programmi di grafica, ambienti di programmazione, server di rete, e qualsiasi altra cosa si potrebbe volere. Molte di
queste applicazioni possono essere utilizzate attraverso l’uso dei Ports (http://www.FreeBSD.org/ports/).
Se hai bisogno di una applicazione che è disponibile solo su un determinato sistema operativo, non puoi rimpiazzare
quel sistema operativo. La possibilità è che ci sia un’applicazione simile per FreeBSD. Se vuoi un server solido per
internet o per il tuo ufficio, una workstation su cui fare affidamento, o solo la possibilità di lavorare senza
interruzioni, FreeBSD farà certamente al caso tuo. Molti possessori di computer al Mondo, inclusi sia novizi che
esperti amministratori UNIX® usano FreeBSD come loro unico sistema operativo.
Se stai migrando a FreeBSD da qualche altro tipo di ambiente UNIX, di sicuro saprai molte delle cose che ti serve
sapere. Se il tuo background è un sistema operativo grafico, come Windows e versioni non recenti di Mac OS,
preparati ad investire tempo per imparare il modo di fare le cose tipico di UNIX. Questo documento e il FreeBSD
Handbook (http://www.freebsd.org/handbook/index.html), in parte tradotto in italiano
(http://www.gufi.org/~alex/book/handbook/book.html) rappresentano eccellenti punti di partenza.
1.5. Perché è chiamato FreeBSD?
•
Può essere usato gratuitamente, anche da utenti commerciali.
•
I sorgenti di tutto il sistema operativo sono liberamente a disposizione, e sono state poste le minori restrizioni
possibili sul loro uso, sulla loro distribuzione e sulla loro incorporazione in altri lavori (commerciali o non
commerciali).
•
Chiunque abbia un miglioramento o la soluzione ad un problema od errore del sistema è libero di sottoporre il
proprio codice e far sì che venga aggiunto all’albero dei sorgenti. (I cambiamenti sono soggetti a una o due ovvie
revisioni).
Vale il caso di notare che la parola “free” qui viene considerata in due modi, uno che significa “senza costi”, l’altro
“puoi farci ciò che vuoi”. A parte una o due cose che non puoi fare con il codice di FreeBSD, per esempio far finta di
averlo scritto tu, puoi realmente farci tutto quello che vuoi.
1.6. Qual è l’ultima versione di FreeBSD?
A questo punto nello sviluppo di FreeBSD, ci sono due rami di sviluppo paralleli; le release vengono tratte da tutti e
due i rami. Le release della serie 4.X vengono prese da -STABLE e le 5.X da -CURRENT.
La versione 5.2-RELEASE (ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/5.2-RELEASE/) è l’ultima release del
ramo -CURRENT; è stata rilasciata il 12 Gennaio 2004. La versione 4.9-RELEASE
2
Capitolo 1. Introduzione a FreeBSD
(ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/4.9-RELEASE/) è l’ultima release del ramo -STABLE; è stata
rilasciata il 28 Ottobre 2003
In parole povere, -STABLE è mirata agli ISP, agli utenti aziendali, o qualsiasi utente che voglia stabilità e un minimo
numero di modifiche alle nuove (e potenzialmente instabili) features dell’ultimo sviluppo di -CURRENT. Le release
possono arrivare da ciascuno dei due rami, ma -CURRENT dovrebbe essere usata solo se sei sicuro di essere pronto
per la maggior volatilità (relativamente a -STABLE).
Le release vengono fatte a distanza di pochi mesi l’una dall’altra. Sebbene molte persone stanno molto più
aggiornate rispetto alle release grazie ai sorgenti (guarda le domande su FreeBSD-CURRENT e FreeBSD-STABLE),
farlo è più una scelta, poichè i sorgenti sono un bersaglio mobile.
Più informazioni sulle release di FreeBSD possono essere reperite sulla Pagina di Release Engineering
(http://www.FreeBSD.org/releng/index.html) sul sito web di FreeBSD.
1.7. Che cos’è FreeBSD-CURRENT?
FreeBSD-CURRENT (http://www.freebsd.org/handbook/cutting-edge.html#CURRENT) è la versione di sviluppo
del sistema operativo, che nel suo corso diverrà 6.0-RELEASE. Come tale, è di interesse solamente agli sviluppatori
che lavorano sul sistema e agli hobbisti considerati duri a morire. Guarda la sezione relativa
(http://www.freebsd.org/handbook/cutting-edge.html#CURRENT) nell’handbook
(http://www.freebsd.org/handbook/index.html) per dettagli su come utilizzare -CURRENT.
Se non hai familiarità con il sistema operativo o non sei capace di capire la differenza tra un problema momentaneo e
un problema reale, non dovresti utilizzare FreeBSD-CURRENT. Questo ramo spesso si evolve velocemente e può
accadere che non lo si possa compilare per giorni. Ci si aspetta che la gente che usa FreeBSD-CURRENT sia capace
di analizzare qualsiasi problema e riportarli se si capisce che sono errori piuttosto che “scatti”. Domande come
“make world produce un errore a proposito dei gruppi” sulla mailing list -CURRENT potrebbero non essere viste di
buon occhio.
Ogni giorno, degli snapshot (http://www.freebsd.org/releases/snapshots.html) di release vengono creati in base allo
stato corrente dei rami -CURRENT e -STABLE. Le distribuzioni degli snapshot occasionali vengono resi disponibili.
Gli obiettivi di ciascuno snapshot sono:
•
Per provare l’ultima versione del software di installazione.
•
Per dare l’opportunità a persone che vorrebbero utilizzare -CURRENT o -STABLE, ma non hanno tempo o banda
disponibile per seguirle su base giornaliera, un sistema facile e veloce per poterle installare sul proprio sistema.
•
Per preservare un punto fisso di riferimento per il codice in questione, solo in caso rompessimo qualcosa in futuro.
(Sebbene CVS evita che qualcosa di così orribile possa accadere)
•
Per essere sicuri che tutte le nuove funzionalità e tutte le correzioni al codice possano avere il maggior numero
possilbe di potenziali tester.
Non c’è nessuna pretesa che alcuno snapshot di -CURRENT possa essere considerato di “qualità di produzione” per
qualsiasi scopo. Se vuoi avere un sistema stabile e completamente testato, devi rimanere con le release, oppure puoi
utilizzare gli snapshot di -STABLE.
Le release di snapshot sono disponibili direttamente da current.FreeBSD.org/pub/FreeBSD/
(ftp://current.FreeBSD.org/pub/FreeBSD/) per la 5.2-CURRENT, e releng4.freebsd.org
3
Capitolo 1. Introduzione a FreeBSD
(ftp://releng4.FreeBSD.org/pub/FreeBSD) per gli snapshot di 4-STABLE. Gli snapshot di 3-STABLE non vengono
più prodotti nel momento in cui viene scritto questo documento.
Gli snapshot vengono generati, in genere, giornalmente per tutti i rami di sviluppo su cui si lavora al momento.
1.8. Qual è il concetto di FreeBSD-STABLE?
Quando FreeBSD 2.0.5 venne rilasciato, lo sviluppo di FreeBSD si divise in due parti. Una parte (o ramo) chiamata
“-STABLE” e una chiamata “-CURRENT”. FreeBSD-STABLE è intesa per gli Internet Service Provider e altre
imprese commerciali per le quali cadute improvvise o features sperimentali sono cose indesiderate. Riceve solamente
le soluzioni già testate e altri piccoli cambiamenti incrementali. FreeBSD-CURRENT, invece, è una linea interrotta
che ha portato a 5.2.1 (e oltre) fin dai tempi in cui la versione 2.0 venne rilasciata. Se una ‘ASCII art‘ può aiutare a
capire, ecco come sarebbe:
2.0
|
|
| [2.1-STABLE]
*BRANCH*
2.0.5 -> 2.1 -> 2.1.5 -> 2.1.6 -> 2.1.7.1 [2.1-STABLE fine]
|
|
|
| [2.2-STABLE]
*BRANCH*
2.2.1 -> 2.2.2-RELEASE -> 2.2.5 -> 2.2.6 -> 2.2.7 -> 2.2.8 [fine]
|
|
|
3.0-SNAPs (inizio Q1 1997)
|
|
3.0-RELEASE (Ott 1998)
|
| [3.0-STABLE]
*BRANCH* 3.1-RELEASE (Feb 1999) -> 3.2 -> 3.3 -> 3.4 -> 3.5 -> 3.5.1
|
|
| [4.0-STABLE]
*BRANCH*
4.0 (Mar 2000) -> 4.1 -> 4.1.1 -> 4.2 -> [SNIP] -> 4.9
|
|
\|/
+
[5.2-RELEASE] continua...
Il ramo 2.2-STABLE è stato ritirato con la release 2.2.8. Il ramo 3-STABLE è finito con la release 3.5.1, la release
finale della serie 3.X. Le uniche modifiche che verranno effettuate su questi rami saranno, per la maggior parte,
correzioni a problemi di sicurezza.
4-STABLE è il ramo su cui si sta sviluppando in questo momento. L’ultima release della serie 4-STABLE è la
4.9-RELEASE
4
Capitolo 1. Introduzione a FreeBSD
Il ramo 5-CURRENT procederà lentamente verso 5.3-RELEASE ed oltre. Leggi "Cos’è FreeBSD-CURRENT"
(Sezione 1.7) per avere maggiori informazioni su questo ramo.
1.9. Quando vengono fatte le release di FreeBSD?
Release Engineering rilascia una nuova versione di FreeBSD in media ogni quattro mesi. Le date di rilascio vengono
annunciate tempo prima, cosicchè la gente che lavora al sistema possa sapere quando il proprio progetto deve essere
finito e testato. Un periodo di test precede ogni release, in modo da assicurarsi che l’aggiunta di nuove features non
comprometta la stabilità della release. Molti utenti pensano che questa premura sia una delle parti migliori di
FreeBSD, sebbene aspettare che tutte le novità migliori arrivino su -STABLE possa essere un pò frustrante.
Altre informazioni sul processo di release engineering possono essere trovate sulla pagina di release engineering
(http://www.FreeBSD.org/releng/index.html) all’interno del sito web di FreeBSD.
Per coloro che volessero più divertimento, degli snapshot binari vengono creati giornalmente, come precedentemente
detto.
1.10. Chi è responsabile per FreeBSD?
Le decisioni chiave che riguardano il progetto FreeBSD, come la direzione generale da seguire e chi è abilitato ad
aggiungere codice all’albero dei sorgenti, vengono prese dal core team
(http://www.freebsd.org/doc/en_US.ISO8859-1/articles/contributors/article.html#STAFF-CORE), composto da 9
persone. C’è un team più grande, composto da circa 200 committers
(http://www.freebsd.org/doc/en_US.ISO8859-1/articles/contributors/article.html#STAFF-COMMITTERS), che sono
autorizzati a fare dei cambiamenti direttamente all’albero dei sorgenti di FreeBSD.
Ad ogni modo, cambiamenti secondari vengono decisi anticipatamente sulle mailing list
(http://www.freebsd.org/support.html#mailing-list) , e non ci sono restrizioni su chi possa prendere parte alla
discussione.
1.11. Dove posso trovare FreeBSD?
Ogni release significativa di FreeBSD è disponibile via FTP anonimo dal sito FTP di FreeBSD
(ftp://ftp.FreeBSD.org/pub/FreeBSD/):
•
Per la release corrente del ramo 3.X-STABLE, 3.5.1-RELEASE, guarda la directory 3.5.1-RELEASE
(ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/3.5.1-RELEASE/).
•
L’ultima release del ramo 5.X, 5.2-RELEASE può essere trovata nella directory 5.2-RELEASE
(ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/5.2-RELEASE/).
•
L’ultima release di 4-STABLE, 4.9-RELEASE può essere trovata nella directory4.9-RELEASE
(ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/4.9-RELEASE/).
•
Glisnapshot 4.X (ftp://releng4.FreeBSD.org/pub/FreeBSD/) vengono fatti giornalmente.
5
Capitolo 1. Introduzione a FreeBSD
•
Gli snapshot 5-CURRENT (ftp://current.FreeBSD.org/pub/FreeBSD/) vengono fatte giornalmente per il ramo
-CURRENT pur essendo utili solo a sviluppatori e testers.
Informazioni su come ottenere FreeBSD su CD, DVD, ed altri supporti, possono essere reperite nell’handbook
(http://www.gufi.org/~alex/books/handbook/).
1.12. Come posso preparare un mirror di FreeBSD?
Informazioni su come settare un mirror di FreeBSD possono essere reperite nell’articolo Mirroring FreeBSD
(http://www.freebsd.org/doc/en_US.ISO8859-1/articles/hubs/), non ancora tradotto in italiano.
1.13. Come posso avere accesso al database dei
Problem Report?
Il database dei Problem Report può essere interrogato (o vi si può sottomettere una informazione) usando le due
interfacce, di sottomissione (http://www.FreeBSD.org/send-pr.html) e query
(http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query). Il comando send-pr(1) può essere utilizzato per spedire
dei problem report usando la posta elettronica.
Prima di spedire un problem report si prega di leggere Writing FreeBSD Problem Reports
(http://www.freebsd.org/doc/en_US.ISO8859-1/articles/problem-reports/article.html), un articolo su come scrivere
dei buoni problem reports, non ancora tradotto in italiano.
1.14. Come divento un mirror web di FreeBSD?
Ci sono diversi modi per fare il mirror delle pagine Web.
•
Puoi scaricare i files formattati dal server CVSup di FreeBSD usando l’applicazione net/cvsup. Il file
/usr/share/examples/cvsup/www-supfile contiene un esempio di file di configurazione per i mirror web.
•
Puoi scaricare i sorgenti del sito web da qualsiasi FTP server di FreeBSD usando il tuo client FTP preferito.
Ricordati che devi compilare questi sorgenti prima di pubblicarli. Comincia il download da
ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/www.
1.15. Quali altre fonti di informazione ci sono?
Controlla la lista della documentazione (http://www.FreeBSD.org/docs.html) sul sito web principale di FreeBSD
(http://www.FreeBSD.org), oppure consulta il sito del GUFI (http://www.gufi.org), il Gruppo Utenti FreeBSD
Italiano.
6
Capitolo 2. Documentazione e Supporto
2.1. Che bei libri ci sono che parlano di FreeBSD?
Il progetto produce una ampia gamma di documentazione, disponibile online all’indirizzo:
http://www.FreeBSD.org/docs.html. La stessa documentazione è disponibile come package, che puoi facilmente
installare sul tuo sistema FreeBSD. Altri dettagli sui packages di documentazione possono essere trovati nei prossimi
paragrafi.
In aggiunta, la Bibliografia alla fine di questa FAQ, e quella dell’handbook refernziano alcuni libri raccomandati.
7
II. Domande e Risposte
Nei prossimi capitoli si trovano le risposte alle domande che un utente alle prime armi, ma anche un amministratore
già esperto potrebbero porsi utilizzando FreeBSD
Capitolo 3. Amministrazione del Sistema
Sarebbe stato difficile cominciare con qualcosa di diverso dall’Amministrazione di Sistema, perché è praticando
questa sana attività che ci si pone domande più o meno serie.
3.1. Come posso usare le accentate in console?
Per utilizzare le lettere accentate in console, occorre impostare in /etc/rc.conf i caratteri che andranno caricati
all’avvio del sistema:
font8x8="iso15-8x8"
font8x14="iso15-8x14"
font8x16="iso15-8x16"
Inoltre potrebbe essere necessario esportare la variabile d’ambiente TERM con valore cons25l1 e questo può essere
fatto sia da ogni utente nel file di configurazione della propria shell, sia l’amministratore di sistema tramite
/etc/ttys.
Un altro sistema consiste nel creare nella propria home directory il file .inputrc ed editarlo nel seguente modo:
set meta-flag on
set convert-meta off
set output-meta on
Eseguiamo nuovamente il login e potremo ora usare le vocali accentate anche in console. Questo ultimo metodo
funziona però solo con la shell bash e le versioni di FreeBSD precedenti alla 5.x.
3.2. Come posso eseguire un comando a una
determinata ora di un determinato giorno?
Può capitare la necessità di dover eseguire un comando in uno specifico momento della giornata, quando magari non
saremo nei pressi della nostra macchina ma dovremmo compiere un’importante operazione. Il comando at(1) serve
proprio a questo, ed ha una sintassi molto semplice:
at {ORA} {GIORNO}
% at 0:00 14/02/2003
mail $indirizzofidanzata < ~/sanvalentino.txt
Per uscire dalla modalità di inserimento comandi basta premere CTRL+D. Per verificare la coda di comandi che
abbiamo impostato con at(1), possiamo usare il comando atq(1).
9
Capitolo 3. Amministrazione del Sistema
3.3. Il prompt di default della shell è bruttino, come
posso cambiarlo?
Cambiando la variabile d’ambiente PS1 è possibile modificare il prompt della shell. Ci sono alcuni caratteri di
escape che possono essere utili per personalizzare ulteriormente il prompt. Questi sono solo alcuni per la shell bash:
\u
\h
\w
\@
\t
\d
:
:
:
:
:
:
l’user corrente
l’hostname
la directory corrente
l’ora corrente, in formato 12H am/pm
l’ora corrente, in formato 24-ore HH:MM:SS
la data, in formato Giorno della Settimana Mese Data
Per la shell tcsh, ovvero quella di default, è necessario impostare la variabile prompt, che accetta i seguenti caratteri
di escape:
%n : l’user corrente
%m : l’hostname
%/ o %~ : la directory corrente
%@ : l’ora corrente in formato 12H am/pm
%T : l’ora corrente in formato 24-ore HH:MM
"%d %w %D" : sequenza per la data corrente in formato Giorno della Settimana Mese Data
Per ulteriori sequenze di escape, le man page delle due shell, bash(1) e tcsh(1), sono più che esaustive.Un PS1 tipico
è user@hostname$ corrisponde a
\u@\h$
in bash e a
%n@%m$
per quanto riguarda la variabile prompt di tcsh. A volte può essere utile visualizzare l’ora o la directory corrente
quindi un prompt adatto sarebbe [ora][directory corrente]$ che è la risultante di
[\@][\w]$
e di
[%@][%~]$
rispettivamente in bash e in tcsh. Per la shell sh(1) non esistono caratteri di escape, tuttavia è possibile modificare il
prompt agendo sempre sulla variabile PS1, assegnandole quindi qualsiasi valore si voglia anche facendo uso di
espressioni come in
~paperoga% exportPS1=$(/usr/bin/whoami)$;
paperoga$
10
Capitolo 3. Amministrazione del Sistema
per settare il prompt con il nome utente attuale.
3.4. Come posso fare eseguire un comando ogni
determinato lasso di tempo?
Il comando crontab(1) è utile per eseguire un comando o una serie di comandi a ogni determinato periodo. Per
inserire comandi nella lista occorre lanciare
%crontab -e
che ci consente di editare un file con l’editor definito dalla variabile d’ambiente $EDITOR (di default questa
variabile punta a vi(1). Le righe di questo file devono avere il seguente formato:
minuti ore giorno del mese mese giorno_della_settimana comando
Con questa riga il comando viene eseguito ogni e solo ogni Martedì 1 gennaio alle 12,15:
15 12 1 Jan Tue echo "buon anno!
È possibile usare anche il carattere jolly *. Ad esempio:
15 * * * * /usr/local/bin/fetchmail
esegue il comando ogni 15 minuti di un’ora: alle 0:15, 1:15 ecc. Per eseguire il comando ogni quarto d’ora, la linea
del file dovrà essere:
00,15,30,45 * * * * /usr/local/bin/fetchmail
Per visualizzare il file di crontab(1) lanciamo
% crontab -l
11
Capitolo 3. Amministrazione del Sistema
3.5. Esiste un modo per evitare di scrivere un intero
comando molto lungo ogni volta?
Gli alias sono delle scorciatoie per risparmiare tempo associando una breve parola a un comando molto lungo.
alias(1) serve proprio a questo e la sua sintassi è:
% alias ALIAS=’COMANDO’
dove COMANDO è il comando con le sue opzioni che vogliamo associare ad ALIAS. Gli alias settati in questo
modo però sono validi solo per la sessione corrente e per definirli una volta per tutte, basta aggiungerli nel file di
configurazione della propria shell.
3.6. Come posso aggiornare il sistema?
FreeBSD permette di scaricare i sorgenti aggiornati e di ricompilare tutto il sistema base e il kernel in modo da avere
un sistema perfettamente aggiornato. L’utility fondamentale per compiere quest’operazione si chiama cvsup(1) ed è
compreso nell’albero dei ports sotto net/cvsup-without-gui. Abbiamo la possibilità di installarlo sia con i ports
sia con i packages, opzione sicuramente più veloce, dal momento che cvsup-without-gui dipende da pacchetti che
impiegano abbastanza tempo a compilarsi. Mentre viene effettuata l’installazione, cominciamo a editare i file di
configurazione per essere subito operativi. Creiamo la directory /usr/local/etc/cvsup e, aperto il nostro editor
preferito, cominciamo a scrivere il file cvsup.stable:
*default
*default
*default
*default
*default
*default
src-all
host=cvsup.it.freebsd.org
prefix=/usr
release=cvs tag=RELENG_5
delete use-rel-suffix
umask=0022
compress
Questo file serve per aggiornare i sorgenti del sistema base, occupiamoci ora di quello per aggiornare i ports,
cvsup.ports:
*default host=cvsup.it.freebsd.org
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default umask=0022
*default compress
ports-all
Si nota subito che è quasi identico al precedente, salvo per l’ultima riga che è quella che identifica quale "collezione"
di fil3 vogliamo scaricare, e per il valore di tag=, la cui funzione spiegheremo più oltre.
Per aggiornare anche la documentazione creiamo un file cvsup.docs uguale ai precedenti eliminando solo la riga
*default umask=0022 e sostituendo l’ ultima riga con doc-all.
12
Capitolo 3. Amministrazione del Sistema
Le uniche altre righe importanti da tenere in considerazione sono: *default host=cvsup.it.freebsd.org che
identifica l’host da cui vogliamo scaricare i sorgenti (l’elenco completo dei mirror è disponibile all’indirizzo
http://www.freebsd.org/doc/handbook/cvsup.html#CVSUP-MIRRORS ), e *default release=cvs tag=, dove
viene indicato che ramo di sviluppo vogliamo seguire nell’aggiornamento del sistema. Come spiegato alla domanda
"Qual è l’ultima versione di FreeBSD?" (Sezione 1.6), FreeBSD viene sviluppata in settori diversi e ognuno può
scegliere quale ramo seguire a seconda delle preferenze personali e dell’ambiente di utilizzo della macchina. Nel
nostro esempio abbiamo scelto di seguire il ramo di sviluppo -STABLE, specificando quindi RELENG_5 per quanto
riguarda i sorgenti, mentre per i ports e i documenti abbiamo messo . (punto), che identifica l’ultima versione
possibile per quanto riguarda questi due componenti; se avessimo specificato . (punto) anche per i sorgenti avremmo
seguito il ramo di sviluppo -CURRENT, molto più instabile, che richiede maggiore esperienza e capacità di risolvere
i problemi per contro proprio. La spiegazione dettagliata di ogni riga dei file di configurazione di CVSup si trova in
una pagina dell’handbook di FreeBSD (http://www.freebsd.org/doc/handbook/cvsup.html).
Se eseguissimo l’aggiornamento del sistema con solo questi file, otterremmo una grande quantità di materiale di cui
non faremmo utilizzo, come ad esempio i ports localizzati in lingue asiatiche o differenti dall’italiano e inglese; per
evitare questo, creiamo la directory /usr/local/etc/cvsup/sup e il file
/usr/local/etc/cvsup/sup/refuse:
ports/arabic/*
ports/chinese/*
ports/french/*
ports/german/*
ports/hebrew/*
ports/hungarian/*
ports/japanese/*
ports/korean/*
ports/russian/*
ports/polish/*
ports/portuguese/*
ports/russian/*
ports/ukrainian/*
ports/vietnamese/*
doc/bn*
doc/da*
doc/de*
doc/el*
doc/es*
doc/fi*
doc/fr*
doc/ja*
doc/no*
doc/nl*
doc/pl*
doc/po*
doc/pt*
doc/ru*
doc/sr*
doc/tr*
doc/zh*
13
Capitolo 3. Amministrazione del Sistema
Un ultimo file è necessario per poter finalmente compiere l’aggiornamento del sistema: make.conf, da posizionare
in /etc:
USA_RESIDENT=NO
SUP_UPDATE=yes
SUP=/usr/local/bin/cvsup
SUPFLAGS= -g -L 2
SUPFILE=/usr/local/etc/cvsup/cvsup.stable
PORTSSUPFILE=/usr/local/etc/cvsup/cvsup.ports
DOCSUPFILE=/usr/local/etc/cvsup/cvsup.docs
SUPHOST=cvsup.it.freebsd.org
XFREE86_VERSION=4
Cosa significa ogni riga di questo file? La prima rende noto al server che noi non siamo residenti negli Stati Uniti,
cosicchè i sorgenti di quei programmi che per motivi legali non possono uscire dagli USA, non verranno scaricati sul
nostro computer. SUP_UPDATE indica che vogliamo servirci del sistema CVSup per l’aggiornamento dei sorgenti. La
riga seguente segnala il percorso completo dell’eseguibile cvsup. Dopo la specificazione delle flag da passare a
cvsup, troviamo le locazioni dei file di configurazione, rispettivamente quello dei sorgenti, dei ports e della
documentazione, infine la versione di XFree86 che vogliamo usare, tipicamente la 4.
Portiamoci ora in /usr/src ed eseguiamo
# make update
per aggiornare i sorgenti, i ports e la documentazione. Qualora volessimo aggiornare solo i ports, eseguiamo la stessa
operazione da /usr/ports.
Ora i nostri sorgenti sono equivalenti a quelli sul CVS di FreeBSD ma per avere il sistema "up to date" dobbiamo
ricompilare world (ovvero il sistema base) e kernel (il nocciolo del sistema operativo) come spiegato alla domanda
"Come ricompilo il sistema?" (Sezione 3.7)
3.7. Come ricompilo il sistema?
Capita spesso di voler ricompilare il sistema base e il kernel e i motivi sono i più disparati: si passa dal volerli
semplicemente aggiornare per motivi di sicurezza o per poter usufruire delle ultime versioni di alcuni driver fino al
voler semplicemente ricompilare perché si è aggiunta un’opzione nel kernel e vogliamo verificarne il funzionamento.
La prima cosa da fare è impostare le opzioni per del compilatore così da ottenere un sistema ottimizzato per le
caratteristiche della nostra macchina; editiamo /etc/make.conf (le seguenti righe vanno aggiunte a quelle
eventualmente già presenti):
CFLAGS= -O2 -pipe
#CXXFLAGS+= -fmemoize-lookups -fsave-memoized <= temporaneamente non supportata
COPTFLAGS= -O2 -pipe
La compilazione si svolge in più fasi:
14
Capitolo 3. Amministrazione del Sistema
1. aggiornamento dei sorgenti (opzionale)
2. lettura del file UPDATING
3. compilazione del world
4. compilazione del kernel
5. installazione del kernel
6. reboot in single-user mode
7. installazione del world
8. aggiornamento dei file di configurazione
9. riavvio del sistema
Cominciamo a vederli uno per uno.
1. Vedere la domanda "Come posso aggiornare il sistema?" (Sezione 3.6)
2. Importante è anche la lettura del file /usr/src/UPDATING che contiene alcune informazione riguardo gli
aggiornamenti dell’albero dei sorgenti di FreeBSD e contiene indicazioni quali la necessità di aggiungere utenti,
gruppi o altre opzioni per avere un sistema funzionante.
3. Per compilare il world entriamo in /usr/src e lanciamo
# make buildworld
Il tempo di compilazione varia a seconda della frequenza del processore e della quantità di memoria del sistema.
4. La compilazione del kernel non è diversa da quella del word, in quanto è sufficiente lanciare, sempre da
/usr/src
# make buildkernel
Non viene qui trattata la configurazione del kernel, perché un argomento che dipende molto dalle esigenze
personali di ognuno. Si veda il capitolo Configuring the FreeBSD Kernel (
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html) dell’handbook per maggiori
informazioni.
5. Dopo aver effettuato la compilazione del world e del kernel si passa alla fase di installazione, che avviene in
ordine contrario rispetto alla compilazione:
# make installkernel
Verranno così installati il file del nuovo kernel ovvero /boot/kernel/kernel, i nuovi moduli sotto
/boot/kernel/, inoltre il vecchio kernel sarà rinominato in boot/kernel.old/kernel .
AvvertimentoNelle versioni precedenti alla 5.0-RELEASE, il kernel è /kernel, i moduli si trovano in
/modules e il kernel precedente è /kernel.OLD .
15
Capitolo 3. Amministrazione del Sistema
6. Prima di installare il world è necessario passare in single-user mode, ovvero in modalità utente singolo, con i
soli servizi di base attivi e la possibilità per il solo utente root di usare il sistema. Per passare in single user
mode, occorre eseguire il comando
# shutdown now
7. Naturalmente avere un kernel aggiornato non è sufficiente e anzi la discrasia tra kernel e world porta spesso
gravi problemi. Per installare il sistema base:
# make installworld
8. Il processo di sviluppo di FreeBSD coinvolge anche i file di configurazione, aggiungendo o togliendo opzioni,
utenti, gruppi. È importante, per avere un sistema aggiornato in maniera corretta, che anche questi file vengano
installati; tuttavia molti di questi sono oggetto di modifiche e personalizzazioni da parte di ognuno per
ottimizzare il sistema ed è quindi necessario prestare molta attenzione nella scelta dei file da aggiornare.
Fortunatamente FreeBSD mette a disposizione mergemaster(8), uno script di shell che, utilizzando
/usr/src/etc/Makefile crea un ambiente temporaneo e lo riempe dei nuovi file di configurazione; fatto ciò
li confronta uno ad uno con quelli installati nel nostro sistema e ci chiede se vogliamo installare il nuovo file,
lasciare intoccato quello installato oppure effettuare un merge dei due file, ovvero una loro fusione. Lanciamo
quindi:
# mergemaster -cvs
(mergemaster(8) ha moltissime opzioni, la man page è il luogo dove trovare la spiegazione di ognuna). Ora
avremo lo schermo diviso in due parti uguali orizzontalmente: in alto troveremo il contenuto del file attuale, in
basso quello del nuovo file di configurazione. Ecco quindi che avremo la possibilità di scegliere cosa fare del
nuovo file:
Use
Use
Use
Use
’d’
’i’
’m’
’v’
to
to
to
to
delete the temporary ./etc/mail/mailer.conf
install the temporary ./etc/mail/mailer.conf
merge the temporary and installed versions
view the diff results again
È chiaro a cosa corrisponde ogni opzione. Una sola nota sull’opzione m: se scegliamo questa possibilità, lo
schermo si dividerà verticalmente e a sinistra troveremo il file attuale, a destra il nuovo e per ogni differenza tra i
due potremo scegliere se tenere la vecchia o la nuova riga corrispondente, selezionando tramite la pressione di r
per la parte destra (quella nuova) e l per la parte sinistra, ovvero quella attualmente installata, per finire e
installare il file così fatto, premiamo i. La procedura di confronto si ripete per ogni file del sistema che abbiamo
cambiato o è stato modificato nella versione CVS e potrebbe durare un po’ di tempo, anche perché è necessario
prestare molta attenzione: un errore in questa fase potrebbe portare alcuni problemi.
9. Alla fine di tutto, per poter utilizzare il sistema aggiornato riavviamo la macchina con
# reboot
Ora il nostro sistema è aggiornato e lo si può verificare dall risultato di
# uname -a
FreeBSD pdp.paperopoli 4.8-STABLE FreeBSD 4.8-STABLE #4: Wed Jul
23 09:32:03 CEST 2003 [email protected]:/usr/obj/usr/src/sys/DEPOSITO
i386
16
Capitolo 3. Amministrazione del Sistema
La risposta a eventuali problemi si trova alla domanda "Ho ricompilato il sistema ma al riavvio ci sono dei
problemi. Cosa posso fare?" (Sezione 3.8).
3.8. Ho ricompilato il sistema ma al riavvio ci sono dei
problemi. Cosa posso fare?
I problemi che si possono riscontrare al riavvio del sistema dopo aver effettuato la ricompilazione possono essere di
vario genere: si va dalla mancanza di qualche supporto fondamentale nel kernel a qualche errore durante la fase di
mergemaster. La via più comoda e veloce per risolvere questi problemi è il caricamento del kernel precedente e una
nuova ricompilazione del sistema dopo aver accertato la causa del danno che sarà da rilevarsi quindi o nel file di
configurazione del kernel o nei file di configurazione del sistema, e in quest’ultimo caso è sufficiente rieffettuare il
mergemaster o cercare un eventuale errore di battitura in un file di configurazione quale /etc/rc.conf Per caricare
il kernel precedente dobbiamo, al boot del sistema, effettuare i seguenti passi:
Loading /boot/defaults/loader.conf
/kernel text=0x161db8 data=0x218ac+0x223fc syms=[0x4+0x23040+0x4+0x243e4]
/modules/splash_bmp.ko text=0x10f9 data=0xc8+0x66c syms=[0x4+0x420+0x4+0x230]
/modules/vesa.ko text=0x2330 data=0xea0+ox23c syms=[0x4+0x7a0+0x4+0x585]
Hit [Enter] to boot immediately, or any other key for command prompt. Invio
unload
load /boot/kernel.old/kernel
boot
Fatto questo, il sistema caricherà il kernel precedente (funzionante) e potremo ora risolvere l’errore come spiegato
sopra.
3.9. Come posso ottenere i sorgenti relativi a una data
precisa?
L’utilizzo di CVS come base per il sistema di aggiornamento di FreeBSD consente di effettuare un "passo indietro"
nello sviluppo del sistema ed ottenere l’albero dei sorgenti esattamente com’era in una certa data. Prendiamo il file di
configurazione di cvsup per i sorgenti, /usr/local/etc/cvsup/cvsup.stable, e cambiamo la riga:
*default release=cvs tag=RELENG_5_2
in
*default release=cvs tag=RELENG_5_2 date=2004.02.05.17.30.00
I numeri divisi da punti significano che vogliamo ricevere l’albero dei sorgenti com’era in quel momento esatto.
Come è intuibile, il formato è il seguente anno.mese.giorno.ora.minuti.secondi. Naturalmente si possono
17
Capitolo 3. Amministrazione del Sistema
ottenere anche i ports e i doc relativi ad un certo istante, è sufficiente modificare i file di configurazione
corrispondenti.
3.10. Come mai ogni 497 giorni uptime(1) riazzera il
conteggio dei giorni?
Sulle macchine a 32 bit, ogni 497 giorni il conteggio dell’uptime viene riazzerato. Ciò è dovuto all’architettura stessa
della macchina e al fatto che il sistema operativo registra l’uptime in jiffy1 in una variabile a 32 bit e quindi risulta la
seguente equazione: 232 ÷ (100 jiffy × 60 secondi × 60 minuti × 24 giorni) ∼
= 497.1 ovvero: il numero massimo
contenibile da una variabile a 32 bit (232), diviso per i jiffy di un giorno, da come risultato circa 497 giorni. Nelle
macchine con processore/i a 64 bit non si riscontra questo problema se non dopo 5.845.420.460 anni di uptime.
3.11. Come formatto i floppy disk?
La formattazione dei floppy disk si svolge in tre fasi:
1.
Formattazione a basso livello
2.
Scrittura dell’etichetta2 del floppy
3.
Creazione del filesystem
Procediamo con la prima fase: come utente root, dopo aver inserito un floppy nel lettore, lanciamo
# fdformat -n /dev/fd0
L’opzione -n evita il controllo dei settori del floppy dopo aver completato la formattazione. Ora dobbiamo editare
l’etichetta del floppy, specificando che si tratta di un floppy a 1440 Kb; per fare questo utilizzeremo disklabel(8):
# disklabel -r -w /dev/fd0 fd1440
Ultima fase: la creazione del filesystem. Solitamente, il filesystem dei floppy disk è FAT12, quindi creiamo il
filesystem nel seguente modo:
# newfs_msdos -f 1440 /dev/fd0
L’opzione -f serve naturalmente a specificare la capacità del dischetto. Molto utili nella gestione dei floppy sono gli
mtools (emulators/mtools), una suite di comandi per interagire con periferiche removibili (e non) formattate con
filesystem FAT senza bisogno di montarle, utilizzando la sintassi tipica dei comandi DOS.
3.12. Come aggiungo un utente a un gruppo?
A volte può essere necessario che un utente appartenga a più gruppi; ad esempio occorre aggiungere un utente al
gruppo wheel affinchè abbia la possibilità di elevarsi a root mediante su(1) oppure se abbiamo molti utenti, creare
18
Capitolo 3. Amministrazione del Sistema
un nuovo gruppo utenti può semplificare l’amministrazione degli stessi. Il file che contiene le informazioni
riguardo ai gruppi è /etc/group, il cui formato è
wheel:*:0:root
Sono 4 campi separati da il segno ":". Il primo campo identifica il nome del gruppo, in questo caso wheel ovvero il
gruppo a cui di default appartiene root e gruppo proprietario della maggior parte dei binari e dei file del sistema. Il
secondo campo è la password di sistema che, a detta della stessa man di group(5) è molto raramente usata ed è infatti
normalmente presente un asterisco per indicare l’assenza di password. Successivamente troviamo il gid ovvero il
numero identificativo corrispondente al gruppo. Infine ci sono i membri del gruppo, separati da virgole. Per
aggiungere l’utente paperino al gruppo wheel, dovremo quindi editare /etc/group nel seguente modo:
wheel:*:0:root,paperino
La presenza dei gruppi è utilissima quando, in sistemi con molti utenti, si vuole avere molta flessibilità nella gestione
degli stessi, concedendo permessi e mettendo divieti a seconda del gruppo di appartenenza.
3.13. Come cambio l’hostname?
L’hostname ovvero il nome della macchina, viene di solito settato all’avvio del sistema tramite la lettura di un riga
del file /etc/rc.conf, precisamente una linea simile alla seguente:
hostname="deposito.pdp.paperopoli"
Modificando la riga corrispondente, l’hostname sarà cambiato al prossimo riavvio, mentre se vogliamo modificarlo
"al volo", usiamo il comando hostname(1), usato anche per sapere l’hostname attuale:
# hostname
paperino.peropoli
# hostname paperoga.paperopoli
# hostname
paperoga.paperopoli;
Una raccomandazione, probabilmente superflua: non usare nomi di host già esistenti per il proprio hostname, in
quanto questo potrebbe creare problemi di vario genere.
3.14. Come faccio a sapere il mio indirizzo IP?
Le informazioni riguardanti le interfaccie di rete vengono fornite dal comando ifconfig(8):
# ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet6 fe80::203:47ff:fee1:ccd4%fxp0 prefixlen 64 scopeid 0x1
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:03:47:e1:cc:d4
media: Ethernet autoselect (10baseT/UTP)
status: active
19
Capitolo 3. Amministrazione del Sistema
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet 127.0.0.1 netmask 0xff000000
ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
inet 123.45.67.89 --> 192.168.100.1 netmask 0xffffffff
Opened by PID 71
Senza spiegare il significato di ogni riga e ogni elemento in quanto sarebbe troppo lungo, notiamo subito che
l’indirizzo IP di ogni interfaccia che ne ha uno, è specificato nella riga che comincia con inet, quindi nel caso
dell’intefaccia tun0, tipicamente utilizzata per la connessione a Internet, l’indirizzo IP si trova alla linea:
inet 123.45.67.89 --> 192.168.100.1 netmask 0xffffffff
ed è 123.45.67.89. Se vogliamo avere solo l’indirizzo IP, dobbiamo concatenare una serie di comandi con i pipe:
ifconfig tun0 |awk ’{if ($1 == "inet") print$2;}’
L’output di questo comando può essere passato come argomento per uno script.come ipcheck.py (net/ipcheck)
o qualsiasi altro.
3.15. Come posso sapere quali utenti hanno effettuato il
login ultimamente?
A volte può essere utile sapere quali utenti hanno effettuato il login negli ultimi tempi, soprattutto se offriamo servizi
SSH a parecchi utenti. Il comando usato per avere queste informazioni è last(1) che ha un output del tipo:
paperoga
qui
qui
qui
gastone
archimede
qua
ttyv2
ttyp2
ttyp1
ttyp1
ttyv2
ttyv1
ttyv0
123.45.6.123
123.45.6.123
123.45.6.123
Ven 14 Mar 21:51 - 21:33
Ven 14 Mar 15:12 - 15:17
Ven 14 Mar 15:01 - 15:08
Ven 14 Mar 14:52 - 14:59
Ven 14 Mar 14:51 - 21:51
Gio 13 Mar 19:46
still
Gio 13 Mar 19:46
still
(1+23:41)
(00:05)
(00:07)
(00:07)
(07:00)
logged in
logged in
La prima colonna da, com’è facile intuire, il nome dell’utente, la seconda indica il terminale al quale l’utente si è
collegato; quindi, qualora l’utente abbia effettuato il login via rete, troviamo l’indirizzo IP del pc da cui è partita la
richiesta di login; la quarta colonna indica la data di login e quella di logout, mentre tra parentesi si trova la durata
della connessione. last(1) ha moltissime opzioni, di cui la man page fornisce una accurata descrizione.
20
Capitolo 3. Amministrazione del Sistema
3.16. Come posso sapere quali utenti sono connessi al
momento?
Da sempre il comando per sapere chi è connesso al sistema è who(1) che da come output rispettivamente il nome
dell’utente, il terminale al quale è collegato e la data e l’ora di login:
qui
quo
quo
ttyv0
ttyv1
ttyp0
13 Mar 19:46
13 Mar 19:46
18 Mar 12:38 (:0.0)
Se vogliamo avere altre informazioni riguardo agli utenti collegati e un minimo di statistiche riguardanti il sistema, si
può usare w(1):
2:32pm
USER
qui
quo
quo
qua
up 4 days, 18:53, 4 users, load averages: 0,30 0,26 0,19
TTY
FROM
LOGIN@ IDLE WHAT
v0
Gio07pm 1:00 -bash (bash)
v1
Gio07pm 4days xinit /home/quo/.xinitrc -- -nolisten tcp
p0
:0.0
12:38pm
- w
p1
123.4.56.123
Ven03am 2:52 -bash (bash)
w(1) ci fornisce anche l’indirizzo IP della macchina dalla quale si è collegato l’utente, il tempo di inattività e cosa sta
facendo in questo momento. Inoltre nella prima riga ci informa dell’ora corrente, dell’uptime del sistema, del numero
di utenti collegati e infine la media del carico del sistema calcolata in un periodo di 1, 5, 15 minuti.
3.17. Come si caricano i moduli del kernel?
Può accadere che, per motivi di licenza, non sia possibile includere staticamente il supporto per una periferica nel
kernel, oppure, per motivi di ottimizzazione delle risorse, può essere conveniente non includere il supporto
staticamente. Si ricorre dunque ai moduli, che possono essere inseriti e rimossi "al volo" a seconda del bisogno. La
locazione standard dei moduli è /boot/kernel/ e la loro estensione è .ko.
Avvertimento: Nelle versioni di FreeBSD precedenti alla 5.0-RELEASE i moduli si trovano in /boot/kernel/.
kldload(8) serve a caricare i moduli e solo root ha i permessi di esecuzione su questo comando:
# kldload msdos
I nomi dei moduli identificano chiaramente il loro utilizzo: quello dell’esempio, msdos.ko fornisce il supporto per il
filesystem FAT, usato da MS-DOS® e Windows®. I moduli del kernel possono essere caricati anche all’avvio del
sistema tramite il file /boot/loader.conf, le cui righe relative al caricamento dei moduli hanno il formato
seguente:
linux_load="YES"
agp_load="YES"
Le righe precedenti caricano rispettivamente il modulo per l’esecuzione dei binari Linux e il modulo per l’AGP3.
21
Capitolo 3. Amministrazione del Sistema
Per rimuovere i moduli caricati si usa kldunload(8):
# kldunload linux
rimuove il modulo relativo alla compatibilità dei binari Linux.
3.18. Come faccio a sapere quali moduli del kernel sono
caricati?
kldstat(8) serve a conoscere quali moduli sono stati caricati:
Id Refs Address
Size
1
9 0xc0100000 2b6c10
2
1 0xc03b7000 18a88
3
1 0xc03d0000 ac8c
4
1 0xc03db000 149f44
5
4 0xc16f8000 9000
6
1 0xc1706000 3000
7
1 0xc170b000 5000
8
1 0xc1711000 3000
9
1 0xc178c000 2000
Name
kernel
linux.ko
agp.ko
nvidia.ko
netgraph.ko
ng_ether.ko
ng_pppoe.ko
ng_socket.ko
star_saver.ko
Ci viene mostrato, da destra a sinistra, non solo il nome del modulo caricato, ma anche il suo indirizzo in memoria,
la sua grandezza e il numero di moduli che dipendono da questo.
3.19. Come posso usare la lingua italiana nei programmi
che la supportano?
Moltissimi programmi, sia tra quelli compresi nel sistema base sia tra i ports, hanno il supporto per la lingua italiana.
Tuttavia per utilizzarla è necessario mettere mano ad alcuni file di configurazione e aggiungere una variabile
d’ambiente. Il file da editare è /etc/login.conf se si desidera che ogni utente segua le impostazioni definite
dall’amministratore di sistema, oppure $HOME/.login_conf qualora si voglia lasciare libertà di configurazione agli
utenti. Nel primo caso il file dovrà contenere le seguenti righe:
italian:paperino:\
:charset=iso-8859-15:\
:lang=it_IT.ISO8859-15:\
mentre nel secondo caso bisogna cambiare la prima delle precedenti righe in
me:\
Fatto questo occorre esportare la variabile d’ambiente
22
Capitolo 3. Amministrazione del Sistema
LANG=it_IT.ISO_8859-15
da shell o mettendola nel file di configurazione della vostra shell.
3.20. Cosa sono i permessi di un file?
Tutti i file hanno dei permessi, come ben si può verificare analizzando l’output di
% ls -l
total 122
-rw-r--r--rw-r--r-drwxr-xr-x
-rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r-drwxr-xr-x
-rwxr--r--rw-r--r--rw-r--r--rw-r--r-drwxr-xr-x
1
1
2
1
1
1
1
1
1
2
1
1
1
1
8
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
2015
1513
512
325
2839
2015
65058
22805
909
1536
253
4234
3417
1436
512
31
16
1
24
1
31
2
24
26
1
20
6
3
23
10
Mar
Feb
Apr
Mar
Apr
Mar
Apr
Mar
Mar
Apr
Mar
Mar
Mar
Mar
Mar
21:03
17:21
17:02
12:56
17:02
13:03
15:07
21:54
14:25
17:00
20:55
21:58
14:27
14:05
18:12
debiti
sfortune
paperina
debitiPDP
lettera
paperinik
Avviso
ciccio.jpg
deposito.html
quiquoqua
dormire.sh
mailbox
DaFare
mailtopolino
foto_nonna
Senza spiegare il significato di ogni colonna, reperibile comunque dalla man page di ls(1), diciamo che la prima
colonna è quella dei permessi, la terza identifica l’utente proprietario e la quarta il gruppo proprietario. La prima
colonna contiene 10 spazi, che possono contenere ognuno un carattere, a loro volta suddivisi in 4 sezioni
rispettivamente da 1, 3, 3, 3 spazi ognuna; la prima sezione identifica se la entry in questione è una directory, un link,
un socket o un altro tipo di file, la seconda i permessi del proprietario di questo file o directory, la terza i permessi del
gruppo proprietario e la quarta i permessi di tutti gli altri utenti. Ogni spazio può contenere uno solo tra i seguenti
caratteri:
d
l
s
r
:
:
:
:
identifica le directory e può stare solo nella prima sezione
il file in questione e’ un link ad un altro file ,solo nella prima sezione
UNIX socket, solo nella prima sezione
permesso di lettura (read), si trova al primo posto della seconda,
terza e quarta sezione
w : permesso di scrittura (write), al secondo posto di tutte le
sezioni tranne la prima
x : permesso di esecuzione (execution) (o di attraversamento per le
directory), al terzo posto.
Ad esempio sul file
-rw-r--r--
1 paperino
paperino
1513 16 Feb 17:21 sfortune
23
Capitolo 3. Amministrazione del Sistema
hanno il permesso di lettura sia il proprietario, sia il gruppo, sia tutti gli altri utenti, mentre solo il proprietario può
modificarlo in quanto è l’unico ad avere il permesso di scrittura.
3.21. Come cambio i permessi di un file?
Il comando chmod(1) serve a cambiare i permessi di un file. Occorre specificare al comando se vogliamo cambiare i
permessi per il proprietario, il gruppo, o il "resto del mondo", specificare se vogliamo aggiungere o togliere permessi
e quali siano questi permessi. Per identificare l’utente proprietario, il gruppo e gli altri utenti si usano i seguenti
caratteri:
u : proprietario
g : gruppo
o : altri utenti
Se vogliamo aggiungere permessi useremo il simbolo + mentre se vogliamo toglierne, il simbolo -. I permessi si
identificano con la lettera che corrisponde ad ognuno di essi: r per la lettura, w per la scrittura e x per l’esecuzione.
Per cambiare i permessi di un ipotetico file
-rw-r--r--
1 paperino
paperino
1513 16 Feb 17:21 sfortune
e aggiungere il permesso di scrittura anche per il gruppo proprietario, dovremo lanciare il seguente comando:
% chmod g+w sfortune
oppure, per togliere il permesso di lettura a tutti gli altri utenti:
% chmod o-r sfortune
Vi è anche un altro sistema per cambiare i permessi, basato su cifre incece che su caratteri: è sempre presente la
divisione in 4 sezioni, ma ognuna di esse può contenere solo un numero, risultato della somma dei permessi che si
vogliono assegnare o 0 se non si vogliono assegnare permessi. Tralasciando la prima sezione, che assume valori
particolari, ritrovabili nella man di chmod(1), queste sono le valenze di ogni permesso:
4 : permesso in lettura
2 : permesso in scrittura
1 : permesso di esecuzione
Ad esempio per ripristinare i permessi del file sfortune, dovremo eseguire il seguente comando:
% chmod 0644 sfortune
in quanto:
0 : prima sezione vuota
6 = 4 + 2 : permesso in lettura e scrittura per il proprietario
24
Capitolo 3. Amministrazione del Sistema
4 : permesso in lettura per il gruppo
4 : permesso in lettura per tutti gli utenti
Un permesso in lettura, scrittura ed esecuzione avrà naturalmente valore 7, uno in lettura ed esecuzione valore 5 e
così via. L’utilizzo dei permessi è un ottimo modo per aumentare la riservatezza personale e un’attenta politica
consente di non correre il rischio di trovare compromessi i nostri dati importanti.
3.22. Posso aumentare la risoluzione dello schermo in
console?
Ovviamente sì! In tre semplici passi, possiamo cambiare le dimensioni dei terminali:
1.
Ricompiliamo il kernel con le seguenti opzioni:
options SC_PIXEL_MODE
options VGA_WIDTH90
options VESA
2.
Dopo aver riavviato, proviamo ad usare la nuova risoluzione con
# vidcontrol VESA_132x25
VESA_132x25 indica la modalità prescelta (colonne x righe) in questo caso. Tutti gli altri valori sono disponibili
in vidcontrol(1)
3.
Questo passo è opzionale e riguarda solo la modifica di /etc/rc.conf per utilizzare la modalità prescelta su
tutti i terminali. Il file in questione deve contenere la riga:
allscreens_flags="VESA_132x25"
Dal prossimo riavvio, tutti i terminali avranno la risoluzione specificata.
3.23. Come configuro il mio sistema FreeBSD affinché
faccia da gateway tra la mia rete locale e Internet?
Quasi sicuramente, uno degli utilizzi più frequenti di FreeBSD è come sistema gateway tra due reti, solitamente tra
un rete locale e Internet. Bastano pochi passi per impostare il sistema. Occorre sapere che gli indirizzi ip usati sulle
reti locali non possono essere usati in Internet, per una questione di standard e tuttavia è difficile avere a disposizione
un indirizzo IP pubblico per ogni macchina, occorre quindi effettuare un mascheramento degli indirizzi privati in
modo che vengano visti come un solo indirizzo pubblico, quello del gateway; il termine tecnico di quest’operazione
è NAT 4. Ci sono due modi di effettuare il NAT: utilizzando l’opzione -nat del PPP5 di sistema oppure facendo uso
25
Capitolo 3. Amministrazione del Sistema
del demone natd. Ma andiamo con ordine: prima di tutto occorre abilitare la trasmissione dei pacchetti da una rete
all’altra (forwarding), inserendo la seguente riga nel file /etc/rc.conf:
gateway_enable="yes"
Al prossimo riavvio il forwarding sarà abilitato; tuttavia, se non possiamo riavviare il sistema in quanto esso offre dei
servizi che non possono essere interrotti, possiamo cambiare il valore di una sysctl:
# sysctl net.inet.ip.forwarding=1
In questo modo possiamo utilizzare subito la trasmissione dei pacchetti tra due reti. Fatto questo possiamo scegliere
se usare il NAT offertoci fa ppp(8) oppure se usare il natd(8). Vediamo come agire in entrambi i casi. Prima di tutto
però occorre ricompilare il kernel con l’opzione
options
IPDIVERT
per abilitare il NAT, sia quello del PPP sia natd.
3.23.1. Utilizzare il NAT di PPP
Configurare la propria connessione in modo che utilizzi il NAT offerto da PPP è semplicissimo. Basta specificare
l’opzione -nat quando lanciamo la connessione a Internet oppure inserire nel file di configurazione di PPP,
/etc/ppp/ppp.conf, la riga
nat enable yes
Se facciamo partire la connessione all’avvio del sistema, è sufficiente aggiungere/etc/rc.conf la riga
ppp_nat="YES"
3.23.2. Utilizzare natd(8)
Usare natd è facile quanto utilizzare il NAT del PPP, tuttavia di solito si preferisce quest’ultimo quando non si ha a
che fare con più reti locali. Per prima cosa apriamo /etc/rc.conf in un editor e aggiungiamo le righe:
natd_enable="YES"
natd_interface="fxp0"
fxp0 indica l’interfaccia connessa ad Internet. Creiamo inoltre il file /etc/natd.conf:
interface fxp0
use_sockets yes
same_ports yes
26
Capitolo 3. Amministrazione del Sistema
La prima riga indica nuovamente l’interfaccia di rete connessa ad Internet, mentre le altre due servono per assicurare
il funzionamento di FTP e delle DCC6 di IRC. Dal prossimo riavvio del sistema il natd sarà funzionante. Ovviamente
bisogna configurare appropriatamente anche i client della rete locale, in modo che usino la macchina su cui è in
esecuzione natd come gateway principale per uscire in Internet.
3.24. Come cambio l’utente e/o il gruppo proprietario di
un file?
Ogni file ha un utente proprietario e un gruppo proprietario. Questi sono indicati rispettivamente nella terza e nella
quarta colonna dell’output di
% ls -l
total 60
-rw-r--r--rw-r--r-drwxr-xr-x
-rw-r--r--rw-r--r--rw-r--r--
1
1
2
1
1
1
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
paperino
2015
1513
512
325
2839
2015
31
16
1
24
1
31
Mar
Feb
Apr
Mar
Apr
Mar
21:03
17:21
17:02
12:56
17:02
13:03
debiti
sfortune
paperina
debitiPDP
letteraPaperina
paperinik
Il comando usato per cambiare proprietario e gruppo è chown(8), da sempre presente in UNIX. La sua sintassi è
semplicissima:
% chown gastone letteraPaperina
per cambiare il proprietario da paperino a gastone, oppure
% chown :gastone letteraPaperina
se vogliamo cambiare il gruppo proprietario. Ovviamente si possono sommare le due sintassi per cambiare
contemporaneamente utente e gruppo proprietari:
% chown gastone:gastone letteraPaperina
Posssiamo utilizzare l’opzione -R per cambiare proprietario e/o gruppo a tutti i file di una directory e delle sue
sottodirectory. Piccola nota finale: per cambiare solo il gruppo si può usare anche il comando chgrp(1), che ha la
seguente sintassi:
% chgrp gastone letteraPaperina
.
27
Capitolo 3. Amministrazione del Sistema
3.25. Come regolo l’orologio di sistema?
Il sistema utilizza un orologio software che serve, oltre ad informare l’utente dell’ora corrente, anche per la corretta
gestione del sistema Cron e quindi di tutto il sistema di pianificazione dei processi. Tuttavia questo orologio non è
precisissimo e dev’essere quindi sincronizzato con quello di alcuni server che hanno proprio questo compito
specifico: tenere l’ora esatta. È stato scritto un protocollo specifico per questo: NTP7 e ovviamente non poteva
mancare un corrispondente demone: ntpd(8). Questo demone si occupa di collegarsi a un server da noi specificato nel
file /etc/ntp.conf e aggiornare l’ora dell’orologio di sistema. Il formato del file di configurazione dev’essere il
seguente, come specificato nella man page di ntp.conf:
server time.ien.it prefer
server tempo.ien.it
driftfile /var/db/ntp.drift
Vediamo di analizzarlo riga per riga: la prime due indicano i server NTP da usare, e quelli specificati sono quelli
normalmente usati in Italia, gestiti dal CNR di Torino; tra l’altro la prima riga contiene anche la parola prefer per
specificare il server da usare preferibilmente. L’ultima riga indica il file che dev’essere usato per indicare la frequenza
delle oscillazioni dell’orologio di sistema, e viene aggiornato ogni volta che viene eseguito ntpd(8). Possiamo
lanciare ntpd(8) manualmente oppure ad ogni avvio del sistema, specificando, nel file /etc/rc.conf, la riga:
xntpd_enable="YES"
Bisogna notare che ntpd(8) lascia dei messaggi di questo tipo nel syslog, facendoci sapere di quanto era sbagliato
l’orologio di sistema:
Apr 22 16:47:33 localhost ntpd[19103]: time reset 0.154413 s
Per aggiornare l’orologio solo di tanto in tanto si può usare anche ntpdate(8), specificandogli come argomento il
server NTP che vogliamo usare. Tuttavia bisogna evidenziare che ntpdate(8) verrà tolto dal sistema tra un po’ di
tempo.
3.26. Come vengono identificati i dischi rigidi e i lettori
cdrom in FreeBSD?
FreeBSD assegna i nomi alle periferiche in maniera diversa da Linux o da altri sistemi UNIX e questo è
particolarmente evidente con i dischi rigidi e i lettori di CD-ROM.
3.26.1. Denominazione dei dischi rigidi sotto FreeBSD
Prima di tutto bisogna fare una distinzione tra dischi rigidi ATA-EIDE e dischi rigidi SCSI: i primi utilizzano il driver
ad(4) mentre i secondi da(4). In linea con la tradizione BSD di nominare le periferiche in base al driver utilizzato, gli
hard disk ATA-EIDE saranno identificati con adN con N numero positivo intero compreso tra 0 e 3 mentre i dischi
SCSI avranno nome daN, con N numero positivo intero:
/dev/ad0
28
Capitolo 3. Amministrazione del Sistema
/dev/ad1
/dev/da0
Dopo il driver e il numero identificativo, si trovano le slice ovvero le suddivisioni del disco, che vengono chiamate
"partizioni" dagli utenti di altri sistemi operativi. Le slice vengono identificate con sN, con N numero intero positivo
compreso tra 1 e 4 per le slice primarie e tra 5 e 21 per le logiche:
/dev/ad0s1 #prima slice primaria sul primo disco ATA/IDE
/dev/ad0s6 #seconda slice logica sul primo disco ATA/IDE
/dev/da1s4 #quarta slice primaria sul secondo disco SCSI
Oltre alle slice, FreeBSD fa un ulteriore suddivisione logica delle slice formattate in UFS8: le partitions che vengono
indicate con le lettere dell’alfabeto a partire dalla a e fino alla h. Solitamente ogni partition rappresenta un punto di
mount di un filesystem, eccezion fatta per la partition c che individua l’intera slice. È facile capire questo guardando
all’interno del file /etc/fstab, che contiene la tabella dei filesystem che possono essere montati sul sistema:
# Device
/dev/ad0s3b
/dev/ad0s4a
/dev/ad0s4e
/dev/ad0s4f
/dev/ad0s4d
/dev/acd0
/dev/acd1
/dev/fd0
/dev/ad1s1
/dev/ad0s1
/dev/ad0s4
/dev/ad0s3g
Mountpoint
none
/
/tmp
/usr
/var
/cdrom
/cdrom1
/mnt/floppy
/archivio2
/mnt/win
/archivio1
/oldusr
FStype
swap
ufs
ufs
ufs
ufs
cd9660
cd9660
msdos
msdos
ntfs
msdos
ufs
Options
sw
rw
rw
rw
rw
ro,noauto
ro,noauto
rw,noauto
rw,noauto
rw,noauto
rw,noauto
rw
Dump
0
1
2
2
2
0
0
0
0
0
0
2
Pass#
0
1
2
2
2
0
0
0
0
0
0
2
Quindi, per esemplificare la cosa:
/dev/ad0s3b #seconda partition della terza slice del primo disco ATA/IDE
/dev/ad1s4d #quarta partition della quarta slice del primo disco ATA/IDE
/dev/da1s3g #sesta partition della terza slice del secondo disco SCSI
Se uno schema può aiutare a capire, ecco come viene suddiviso un disco:
---------------------------------------------------------------| disco ad0
|
----------------------------------------------------------------| s1
| s2
| s3
| s4
|
|------------------|--------------|--------------|--------------|
| sliceFreeBSD
| NTFS
| Ext3 FS
| FAT32
|
|------------------|--------------|--------------|--------------|
| /| / | / | / | s |
|
|
|
| | u | v | t | w |
|
|
|
| | s | a | m | a |
|
|
|
| | r | r | p | p |
|
|
|
29
Capitolo 3. Amministrazione del Sistema
|--|---|---|---|---|--------------|--------------|--------------|
| a| b | c | d | e |
|
|
|
----------------------------------------------------------------|
3.26.2. Denominazione dei lettori CDROM sotto FreeBSD
Anche i lettori di CDROM usano una denominazione differente a seconda del driver utilizzato e, dipendendo il driver
quasi sempre dall’interfaccia utilizzata, i nomi delle device che identificano i drive CDROM cominciano con acd per
le periferiche ATAPI, e cd per i lettori SCSI. Dopo l’identificativo del driver si trova il numero progressivo di drive a
partire da 0:
/dev/acd0 #primo lettore CDROM su interfaccia ATAPI
/dev/cd0 #primo lettore CDROM su SCSI
Solitamente i CDROM non hanno le partitions, quindi il numero di identificazione è l’ultimo componente del nome
del device.
3.27. Come partiziono un disco per FreeBSD?
Il partizionamento di un disco in un sistema FreeBSD è un processo un pò complesso se paragonato con quello
relativo ad altri sistemi UNIX like come GNU/Linux, la procedura di partizionamento del disco può essere suddivisa
in due parti.
1. La prima parte è quella relativa alla suddivisione della nuova unità a disco in partizioni fisiche che, come
abbiamo visto in precedenza, prendono il nome di slice, una di queste partizioni o più slice possono essere
assegnate a FreeBSD.
2. La slice che abbiamo dedicato a FreeBSD deve essere a sua volta suddivisa in ulteriori partizioni nelle quali
verranno creati i relativi filesystem UFS oltre che alla partizione dedicata allo spazio per il file di swap.
Per suddividere il disco e creare le partizioni fisiche, le slide, può essere utilizzata l’utility di installazione
/stand/sysinstall, in alternativa può anche essere utilizzata l’utility fdisk(8) che ci aiuterà a suddividere fisicamente il
disco in slices. Nell’esempio sottostante creiamo una slice che include l’intero disco
# fdisk -i /dev/ad1
La slice è pronta a ricevere una label, una label BSD consente di creare sino ad 8 partitions. Il comando disklabel ci
aiuterà a creare le partizioni FreeBSD all’interno della slice, il parametro auto consente di generare un layout di
default per questa slice
# disklabel -r -w ad1 auto
30
Capitolo 3. Amministrazione del Sistema
Il flag -r consente di accedere al disco in modo diretto, il flag -w richiede anche di indicare il dispositivo del disco
(ad1 nel nostro caso). grazie al comando disklabel -e è ora possibile editare le label impostate di default, l’opzione -e
specifica la variabile editor con la quale si avvia una sessione testuale che consentirà di editare e modificare il
partizionamento. Dopo aver creato le partizioni possiamo finalmente generare il filesystem UFS utilizzando il
comando newfs
# newfs /dev/ad1s1a
Con il comando fsck possiamo verificare che il filesystem sia realmente funzionante
# fsck /dev/ad1s1a
ora è possibile montare il filesystem con:
# mount /dev/ad1s1a /
per abilitare lo spazio disco dedicato al file di paginazione della memoria (file di swap) dovremmo utilizzare il
comando swapon(8)
# swapon /dev/ad1s1b
le entry contenute nel file /etc/fstab consentiranno di caricare automaticamente tutti i filesystems all’abbiamento
del sistema, a questo punto riassumiamo come FreeBSD vede le device disco:
ad0
ad0s1e
ad1
ad1s1a
ad2
ad2s1c
ad3
ad3s1f
#
#
#
#
#
#
#
#
primo disco IDE
partizione "e" della
secondo disco IDE
partizione "a" della
terzo disco IDE
partizione "c" della
quarto disco IDE
partizione "f" della
slice1 del primo disco IDE
slice1 del secondo disco IDE
slice1 del terzo disco IDE
slice1 del quarto disco IDE
dopo aver analizzato come utilizzare le unità a disco possiamo concludere questo paragrafo affermando che un
semplice errore in fase di creazione di una slice può compromettere per sempre il funzionamento del Vostro sistema,
è quindi sempre una buona idea utilizzare il comando sysinstall(8).
3.28. Come posso sapere quali porte sono aperte nel mio
sistema?
Sapere quali porte di rete siano aperte sul nostro sistema è fondamentale per la sicurezza del sistema stesso. Vi sono
diversi modi per identrificare le porte aperte e le eventuali connessioni ad esse ed il primo e più conosciuto di questi
è:
# netstat -an -f inet
31
Capitolo 3. Amministrazione del Sistema
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address
Foreign Address
tcp4
0
0 12.123.45.67.50033
195.22.198.15.80
tcp4
0
0 12.123.45.67.50018
195.22.198.15.80
tcp4
0
0 192.168.0.1.65232
217.220.29.16.6667
tcp4
0
0 192.168.0.1.65231
213.92.8.4.6667
tcp4
0
0 192.168.0.1.139
*.*
tcp4
0
0 127.0.0.1.3493
127.0.0.1.49154
tcp4
0
0 127.0.0.1.49154
127.0.0.1.3493
tcp4
0
0 127.0.0.1.3493
127.0.0.1.49153
tcp4
0
0 127.0.0.1.49153
127.0.0.1.3493
tcp4
0
0 *.3493
*.*
tcp46
0
0 *.80
*.*
tcp4
0
0 *.25
*.*
tcp4
0
0 *.22
*.*
tcp6
0
0 *.22
*.*
tcp4
0
0 *.515
*.*
tcp6
0
0 *.515
*.*
tcp4
0
0 127.0.0.1.53
*.*
tcp4
0
0 192.168.0.1.53
*.*
udp4
0
0 192.168.0.1.138
*.*
udp4
0
0 192.168.0.1.137
*.*
udp4
0
0 *.138
*.*
udp4
0
0 *.137
*.*
udp4
0
0 *.3493
*.*
udp4
0
0 127.0.0.1.123
*.*
udp4
0
0 192.168.0.1.123
*.*
udp4
0
0 *.123
*.*
udp4
0
0 *.49152
*.*
udp4
0
0 127.0.0.1.53
*.*
udp4
0
0 192.168.0.1.53
*.*
udp4
0
0 *.514
*.*
(state)
ESTABLISHED
ESTABLISHED
ESTABLISHED
ESTABLISHED
LISTEN
ESTABLISHED
ESTABLISHED
ESTABLISHED
ESTABLISHED
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
L’output di netstat può sembrare un po’ oscuro a prima vista: dopo l’identificazione del protocollo si trovano il
numero dei pacchetti nelle code di ricezione e di invio, quindi l’indirizzo locale, composto da 4 campi per l’indirizzo
IP e un quinto per la porta utlizzata. Un eventuale * (asterisco) in sostituzione dell’indirizzo IP evidenzia che la porta
è attiva in ogni indirizzo locale. La quinta colonna indica l’host remoto e la porta dell’host remoto qualora ci sia una
connessione, oppure *.* in caso la porta sia in ascolto e in attesa di una connessione. L’ultima colonna mostra lo
stato della connessione: ESTABLISHED se è attiva e pronta a trasmettere e/o ricevere, LISTEN se il sistema è in attesa
di una connessione su quella porta. Ci sono altri stati possibili e la consultazione della man page di netstat(1) può
chiarire tutti i dubbi. L’output di netstat è utile per sapere le connessioni attive, tuttavia se vogliamo chiuderne una
e impedire che vengano effettuate altre connessione da/a quella porta occorre sapere almeno quali applicazioni e/o
servizi utilizzano quella porta e il modo più veloce per venirne a conoscenza è l’analisi del file /etc/services:
# cat /etc/services | grep 3493
nut
nut
3493/tcp
3493/udp
#Network UPS Tools
#Network UPS Tools
Un altro tool molto utile per conoscere le porte che stiamo utilizzando in questo momento è sockstat, che ci
fornisce anche utente, comando e processo di ogni connessione e di ogni porta in ascolto:
32
Capitolo 3. Amministrazione del Sistema
# sockstat -46
USER
bind
paperino
paperino
paperino
paperino
paperino
paperino
www
www
www
www
www
root
root
root
root
root
root
uucp
uucp
uucp
uucp
uucp
COMMAND
named
evolutionevolutionevolutionssh
irssi
irssi
httpd
httpd
httpd
httpd
httpd
nmbd
nmbd
nmbd
nmbd
smbd
upslog
upsmon
upsd
upsd
upsd
upsd
PID
59998
59406
59406
59406
56858
14717
14717
56922
56921
56920
5115
791
639
639
639
639
637
631
630
626
626
626
626
FD
3
26
27
28
3
3
5
3
3
3
3
3
8
9
10
11
9
3
3
3
4
8
9
PROTO
udp4
tcp4
tcp4
tcp4
tcp4
tcp4
tcp4
tcp46
tcp46
tcp46
tcp46
tcp46
udp4
udp4
udp4
udp4
tcp4
tcp4
tcp4
udp4
tcp4
tcp4
tcp4
LOCAL ADDRESS
*:58314
12.123.45.67:51970
12.123.45.67:51971
12.123.45.67:51972
12.123.45.67:50565
192.168.0.1:65232
192.168.0.1:65231
*:80
*:80
*:80
*:80
*:80
*:137
*:138
192.168.0.1:137
192.168.0.1:138
192.168.0.1:139
127.0.0.1:49154
127.0.0.1:49153
*:3493
*:3493
127.0.0.1:3493
127.0.0.1:3493
FOREIGN ADDRESS
*:*
216.136.204.117:80
63.236.73.26:80
204.152.186.46:80
212.171.15.152:22
217.220.29.16:6667
213.92.8.4:6667
*:*
*:*
*:*
*:*
*:*
*:*
*:*
*:*
*:*
*:*
127.0.0.1:3493
127.0.0.1:3493
*:*
*:*
127.0.0.1:49153
127.0.0.1:49154
I titoli sopra le colonne spiegano chiaramente i dati di ognuna. Tuttavia l’analisi non è ancora completa, in quanto
sappiamo che porte sono aperte e quali sono in attesa di una connessione, però alcune potrebbero essere filtrate o
chiuse da un firewall e quindi diventa importante sapere quali porte siano effettivamente raggiungibili
dall’esterno.Un ottimo tool e probabilmente anche il più diffuso per conoscere eventuali "falle" è security/nmap,
uno scanner che interroga tutte le porte dell’IP specificato e informa su quali siano aperte, filtrate o chiuse.
Ovviamente è necessario eseguire nmap da una macchina posizionata su una rete esterna rispetto al sistema che
vogliamo testare. Ad esempio, per fare una scansione di target da base:
base# nmap -sS -O target
Starting nmap 3.27 ( www.insecure.org/nmap/ ) at 2003-06-17 13:03 CEST
Insufficient responses for TCP sequencing (3), OS detection may be less accurate
Interesting ports on target (12.34.56.78):
(The 1619 ports scanned but not shown below are in state: closed)
Port
State
Service
22/tcp
open
ssh
25/tcp
open
smtp
53/tcp
open
domain
80/tcp
open
http
Remote OS guesses: Mac OS X 10.1.4 (Darwin Kernel 5.4) on iMac, Mac OS X 10.1.5, FreeBSD 4.3 - 4.4PRE
Uptime 13.967 days (since Tue Jun 3 13:51:42 2003)
Nmap run completed -- 1 IP address (1 host up) scanned in 16.704 seconds
33
Capitolo 3. Amministrazione del Sistema
nmap fornisce la porta e il protocollo, lo stato della porta stessa e il servizio che è attivo su quella porta. Inoltre cerca
di individuare il sistema operativo che gira su target. Ovviamente l’essere a conoscenza delle porte aperte è solo un
primo passo verso la sicurezza di un sistema.
3.29. Che differenza c’è tra APM e ACPI ?
Sia APM9 sia ACPI10 servono per monitorare le risorse della macchina in fatto di energia disponibile e consumo della
stessa. Fino alla versione 4.x di FreeBSD veniva forntio il supporto solo per apm, mentre tra le novità della versione
5.x c’è ACPI, seppure al momento attuale (5.2-CURRENT) non sia prefetto, anche a causa dei produttori hardware
che non seguono correttamente lo standard.
3.30. Come attivo APM su una 5.x ?
Di default le release di FreeBSD superiori alla 5.0 hanno acpi(4) attivo di default, ma ci sono alcuni sistemi più
vecchi che non supportano questo standard e devono utilizzare apm(4). Per utilizzarlo è necessario inserire le
seguenti righe nel nostro file di configurazione del kernel:
device
device
pmtimer
apm
Mentre il nostro nuovo kernel viene compilato, editiamo /etc/rc.conf, aggiungendo le opzioni
apm_enable="YES"
apmd_enable="YES"
L’ultima operazione da compiere prima di riavviare è disabilitare acpi(4) come spiegato alla domanda "Come
disattivo ACPI ?" (Sezione 3.31).
3.31. Come disattivo ACPI ?
A causa dell’importante ruolo che riveste nella gestione del sistema, ACPI può essere disabilitato solo a boot time.
Per far ciò effettuiamo un normale avvio del sistema, effettuiamo il login come root e aggiungiamo la seguente riga
al file /boot/loader.conf:
hint.acpi.0.disabled="1"
Al prossimo reboot, acpi(4) non entrerà in funzione. A partire dalla 5.1-RELEASE è presente un menu di start, che
viene mostrato prima di effettuare il boot: possiamo scegliere che ACPI non sia avviato anche da qui, solitamente
selezionando l’opzione 2.
34
Capitolo 3. Amministrazione del Sistema
3.32. Come posso utilizzare tutto lo spazio possibile
della partizione?
Analizzando l’output di
% df
Filesystem 1K-blocks
Used
Avail Capacity
/dev/ad0s4a
257838
93228
143984
39%
devfs
1
1
0
100%
/dev/ad0s4e
257838
67010
170202
28%
/dev/ad0s4f
9541210 4636766 4141148
53%
/dev/ad0s4d
257838
99172
138040
42%
/dev/ad0s3g
9172610 6273632 2165170
74%
/dev/ad1s1
39076608 27335488 11741120
70%
Mounted on
/
/dev
/tmp
/usr
/var
/oldusr
/data
si può notare che la somma tra i blocchi usati e quelli disponibili non è uguale al numero di blocchi totali. Infatti
93228 + 143984 = 237212 e non 257838: ci sono 20626 blocchi di differenza, pari all’8% di spazio non usato.
Questo spazio in più serve al sistema per impedire un effettivo riempimento totale del filesystem. Si può ridurre
questo margine utilizzando il comando tunefs(8) :
# tunefs -m5
tunefs(8) è l’utility principale per modificare le impostazioni di un certo filesystem.
3.33. Ho perso il file /etc/master.passwd, come lo
ricreo?
Può capitare anche ad un esperto sysadmin di cancellare per errore il file delle password di sistema. Non c’è nessun
problema, in quanto ricrearlo è molto semplice:
# pwd_mkdb /etc/master.passwd
pwd_mkdb(8) ricrea il file in questione e altri 2 piccoli database contenenti le stesse informazioni /etc/spwd.db e
/etc/pwd.db .
3.34. Perché non riesco ad avere l’output di ls(1) a
colori?
Molti utenti provenienti da GNU/Linux, cercano di ottenere l’output di ls(1) a colori passando l’opzione --colour a
ls stesso. In FreeBSD invece l’opzione corretta è -G.
35
Capitolo 3. Amministrazione del Sistema
3.35. Come posso sapere quanta memoria di swap sto
usando?
La risposta è breve: swapinfo(8). Tuttavia anche top(1) nella quarta riga del suo output, fornisce informazioni
riguardanti l’utilizzo della partizione di swap. Per ottenere solo questa riga possiamo reindirizzare l’output di top(1)
come in
# top | grep Swap
3.36. Come posso rivedere il messaggi di probe delle
device al boot?
L’output completo che appare sulla console all’avvio del sistema è recuperabile in ogni momento nel file
/var/log/dmesg.boot. Anche dmesg(8) contiene i messaggi del boot, almeno finché essi non vengono sostituiti
da altri messaggi (infatti dmesg(8) prendere le sue informazioni da un buffer).
3.37. Come posso montare un immagine ISO?
Può capitare la situazione di voler montare un’immagine ISO per accedere ai dati in essa contenuti senza scrivere un
CD, oppure per verificare la sua integrità Innanzi tutto bisogna creare un Memory Disk, tramite il comando
mdconfig(8):
# mdconfig -a -t vnode -f image.iso -u 0;
Questo comando creerà un nuovo device: /dev/mdN , che può essere montato con un normale
# mount -t cd9660 /dev/md0 /mountpoint
Per eliminare il Memory Disk, si usano, dopo aver smontato l’immagine, le opzioni -d -u di mdconfig(8):
# mdconfig -d -u 0
3.38. Mi si è rovinato l’MBR, come posso reinstallarlo?
Può capitare che il Master Boot Record del nostro disco venga sovrascritto da un sistema operativo possessivo,
dall’installazione mal riuscita di un altro OS o da altri fattori. Ripristinarlo è molto semplice: bootiamo il sistema con
36
Capitolo 3. Amministrazione del Sistema
un live cd come FreeSBIE (http://www.freesbie.org) oppure con il cd 2 della nostra -RELEASE, e lanciamo il
comando
# boot0cfg -B /dev/ad0
La man page di boot0cfg(8) fornisce moltissime informazioni riguardo le opzioni che possono essere passate a
questo comando.
3.39. Chi è l’utente toor?
toor svolge le funzioni di "superuser di comodo" su un sistema FreeBSD. L’utente toor ha infatti tutti i privilegi di
root, ma non è fondamentale per la sopravvivenza del sistema ed è quindi più atto ad essere configurabile secondo
le preferenze dell’amministratore di sistema. Ad esempio, si potrebbe volere utilizzare la shell Bash invece della tcsh
per amministrare il sistema: non essendo Bash inclusa di default in un sistema FreeBSD, non è opportuno sceglierla
come shell di root, in quanto in caso di corruzione del filesystem /usr, si sarebbe impossibilitati (o quasi) ad
effettuare il login come root senza essere fisicamente presenti alla console. È quindi preferibile impostare la shell di
toor a /usr/local/bin/bash, non quella di root. Ovviamente questo è solo un esempio dell’utilità di toor.
3.40. Non riesco a diventare root utilizzando su(1). Come
posso fare?
Per acquisire i privilegi di superuser è necessario che l’utente sia membro del gruppo wheel (gid 0). root dovrà
dunque editare /etc/groups, aggiungendo gli utenti al gruppo wheel.
3.41. Posso cambiare il messaggio che viene mostrato
ad ogni login?
Quel messaggio viene chiamato motd ossia Message of The Day. Per cambiare il testo visualizzato è sufficiente
editare a piacimento il file /etc/motd.
3.42. Come installo le applicazioni? Cos’è un port?
Cos’è un package?
Molta gente non usa un sistema operativo, ma usa applicazioni. È quindi fondamentale che un sistema operativo ben
fatto consenta all’utente di installare, rimuovere, aggiornare, configurare facilmente i programmi che preferisce.
FreeBSD ha un sistema di gestione pacchetti molto efficiente, denominato ports. Il sistema dei ports è costituito da
un albero di directory che comincia in /usr/ports contententi Makefile: il software è suddiviso in diverse
categorie a seconda della tipologia: audio, editors, net, security, x11, www...
37
Capitolo 3. Amministrazione del Sistema
Installare un port è molto semplice: innanzi tutti è necessario individuare in quale directory si trovi il port. Per fare
questo spostiamoci in /usr/ports/ ed eseguiamo la ricerca nel seguente modo:
# make search name=wmnd
Port:
wmnd-0.4.7
➊
Path:
/usr/ports/net/wmnd
➋
Info:
Improved network monitoring dock app (with tons of features)
Maint: [email protected]
➍
Index: net ➎
B-deps: XFree86-libraries-4.3.0_6 expat-1.95.6_1 fontconfig-2.2.90_3
freetype2-2.1.5_1 gettext-0.12.1 gmake-3.80_1 imake-4.3.0_1
libiconv-1.9.1_3 perl-5.6.1_15 pkgconfig-0.15.0
➏
R-deps: XFree86-libraries-4.3.0_6 expat-1.95.6_1 fontconfig-2.2.90_3
freetype2-2.1.5_1 imake-4.3.0_1 perl-5.6.1_15 pkgconfig-0.15.0
➌
➐
Questo comando esegue la ricerca di wmnd tra i nomi di tutti i ports, e se trova risultati, li mostra indicandone:
➊
Nome e versione del software
➋
Percorso completo della directory del port
➌
Una brevissima descrizione del software
➍
L’indirizzo email del maintainer del port, ossia del responsabile del port, al quale vanno segnalati bug,
aggiornamenti, patches, ecc.
➎
Le categorie di cui fa parte questo software
➏
I pacchetti necessari alla compilazione di questo software (più oltre si vedrà esattamente cosa significa ciò).
➐
I pacchetti necessari al corretto funzionamento di questo software.
È possibile sostituire la parola key a name per allargare la ricerca a tutti i campi e non solo al nome.
Entriamo quindi nella directory del port indicata dal campo Path: ed esaminiamo il suo contenuto:
# cd /usr/ports/net/wmnd
# ls
Makefile
pkg-descr
README.html
pkg-message
distinfo
pkg-plist
Makefile contiene le istruzioni per la compilazione e l’installazione del port. README.html e pkg-descr
contengono una descrizione del port in una decina di righe. pkg-message è un messaggio per l’utente che viene
visualizzato una volta completata l’installazione. L’impronta md5 del pacchetto sorgente è contenuta nel file
distinfo.
L’installazione avviene con un semplice comando:
# make install clean distclean
Ora saranno scaricati i sorgenti del programma, che verranno patchati se necessario, compilati ed installati. Quindi
verrà rimossa la directory di lavoro ./work e il pacchetto dei sorgenti che era posto in /usr/ports/distfiles/.
38
Capitolo 3. Amministrazione del Sistema
È molto importante che tutte le applicazioni vengano installate attraverso i ports, perché solo così si potrà garantire
un perfetto funzionamento delle applicazioni stesse.
I packages non sono altro che ports già compilati dal cluster di FreeBSD.org. Sono utili in caso si voglia risparmiare
il tempo di compilazione, quindi specialmente per le macchine più lente e/o i pacchetti più grossi (OpenOffice, KDE,
Gnome). Per installare un package si agisce in questo modo:
# pkg_add -r wmnd
Il pacchetto precompilato verrà scaricato ed installato. Se si ha già il pacchetto disponibile sul proprio computer è
sufficiente
# pkg_add pacchetto
3.43. Come rimuovo un port o un package?
Per rimuovere un’applicazione installata sul nostro sistema si usa pkg_delete(1); seguito dal nome del pacchetto. Il
nome dev’essere composto nella forma nome-versione, ottenibile eseguendo pkg_info(1) e mandando l’output a
grep(1):
# pkg_info | grep wmnd
wmnd-0.4.7
Improved network monitoring dock app (with tons of features
# pkg_delete wmnd-0.4.7
Il pacchetto wmnd sarà completamente rimosso dal nostro sistema.
3.44. Come aggiorno i ports/packages installati?
Non è affatto utile mantenere vecchie versioni di programmi, in quanto solitamente le nuove contengono molti
bugfixes. Per aggiornare i pacchetti installati, bisogna prima di tutto eseguire l’update dell’albero dei ports come
spiegato in "Come posso aggiornare il sistema?" (Sezione 3.6). Fatto ciò si aprono due strade: possiamo utilizzare le
utilità incluse nel sistema, oppure installare sysutils/portupgrade. Scelta una di queste due vie, bisogna capire
quali pacchetti sono da aggiornare. Nel sistema base è compreso il programma pkg_version(1) mentre la suite
portupgrade comprende anche un comando portversion. Per conoscere quali pacchetti aggiornare si usa
# pkg_version |grep \
oppure
# portversion -l "<"
39
Capitolo 3. Amministrazione del Sistema
Ora che sappiamo quali pacchetti aggiornare, vediamo come procedere all’aggiornamento in entrambi i modi, con
portupgrade e con le utilità del sistema base.
3.44.1. Aggiornare i ports con portupgrade
Per aggiornare un singolo pacchetto con portupgrade, è sufficiente un
# portupgrade wmnd
Il port in questione verrà scaricato, compilato, ed installato. In caso di errore in una qualsiasi di queste fasi,
portupgrade ripristinerà la versione precedente di cui aveva fatto un backup. È possibile istruire portupgrade ad
usate i packages specificando le opzioni -PP o -P. La differenza tra le due è che -PP utilizza solo i packages, mentre
-P ricorre ai packages solo se è possibile, ossia solo se il package viene trovato in locale o sul repository remoto.
portupgrade basa il suo funzionamento sul database dei package /var/db/pkg, e per evitare inconsistenze nel
database stesso, è utile sistemarlo prima di utilizzare portupgrade. Quest’operazione si esegue nel seguente modo:
# pkgdb -F
Può risultare utile per il buon funzionamento di portupgrade anche mantenere aggiornato il database dei ports con
# portsdb -uU
Questo comando creerà il file /usr/ports/INDEX.db, utilizzato da alcuni programmi forniti con portupgrade.
Si può ordinare a portupgrade di passare uno o più argomenti a make(1), se stiamo utilizzando i ports, tramite
l’opzione -m, come in
# portupgrade mplayer* -m WITH_GUI=yes
Molte altre opzioni, come -a per aggiornare tutti i pacchetti e -r per aggiornare i pacchetti che dipendono da quello
specificato, sono disponibile nella man page di portupgrade.
3.44.2. Aggiornare i ports con le utility pkg_*
Il secondo modo per aggiornare i pacchetti è molto facile: si rimuove il pacchetto in questione e tutti i pacchetti da
cui questo dipende e che da questo dipende e lo si reinstalla. Può non sembrare una cosa sensata, eppure non ci si
può fidare completamente di portupgrade, in quanto, seppur la situazione sia molto migliorata rispetto al passato, si
verificano ancora alcuni casi di errore da parte di questa applicazione.
Note
1. Un jiffy è pari a 1/100 di secondo.
2. Per etichetta si intende quella parte interna del floppy, contenente varie informazioni riguardanti il floppy stesso
40
Capitolo 3. Amministrazione del Sistema
3. Accelerated Graphics Port: porta per le chede grafiche.
4. NAT: Network Addresses Translation (Traduzione degli indirizzi di rete). In ambiente Linux viene anche
chiamato Masquerading IP.
5. PPP: Point to Point Protocol.
6. DCC: Direct Client Connection, particolari opzioni di IRC per lo scambio di file e altro.
7. NTP: Network Time Protocol
8. Unix File System: è il filesystem originario dei sistemi di derivazione UNIX
9. Advanced Power Management (Gestione avanzata del consumo): strumento per monitorare il consumo di
energia di un sistema basandosi sull’attività dello stesso.
10. Advanced Configuration and Power Interface (Interfaccia Avanzata per la Configurazione e il Consumo):
standard scritto da un insieme di produttori di hardware per fornire un’interfaccia standard per gestire le risorse
hardware e la gestione del consumo.
41
Capitolo 4. XFree86
Il server grafico X svolge un ruolo ormai fondamentale: fornisce la base per l’interfaccia grafica delle applicazioni.
Nonostante sia estremamente avanzato e supporti le schede video di ultimissima generazione, ha un architettura che
potrebbe sembrare "antiquata" alla maggior parte di coloro che non lo conoscono bene. È quasi naturale imbattersi in
problemi di vario genere durante l’utilizzo di questo sistema a finestre.
4.1. Come posso usare le applicazioni X via SSH?
Chiamiamo locale la macchina su cui stiamo lavorando e remoto la macchina a cui ci collegheremo e che sulla
quale è installata l’applicazione che vogliamo visualizzare su locale. Per cominciare bisogna dire a locale di
accettare le richieste di remoto:
locale:~% xhost +remoto
Ora ci colleghiamo via SSH a remoto e, dopo aver effettuato il login, esportiamo la variabile DISPLAY in modo che
punti al primo display di locale:
remoto:~% export DISPLAY=locale:0
oppure, se usiamo una shell C:
remoto:~% setenv DISPLAY locale:0
Ora, dopo aver lanciato X su locale, potremo lanciare l’applicazione da remoto e vederla sullo schermo di
locale.
Può risultare utile anche un altro metodo utilizzato molte volte, specialmente se è presente un firewall che ci consente
di utilizzare solo la porta 22, tipica di SSH. Su remoto, apriamo /etc/ssh/sshd_config, il file di configurazione
di sshd e inseriamo la riga
X11Forwarding yes
Fatto ciò aggiungiamo la riga
ForwardX11 yes
al file di configurazione /etc/ssh/ssh_config di locale se vogliamo valga per tutti gli utenti, oppure possiamo
usare il file $HOME/.ssh/config per solo un utente. Eseguiamo ora X su locale e, da remoto, lanciamo
l’applicazione che vogliamo far apparire sul monitor di locale.
42
Capitolo 4. XFree86
4.2. Come installo i driver proprietari per le schede
grafiche NVIDIA®?
A partire dal Novembre 2002, NVIDIA® ha cominciato a distribuire i driver per l’accelerazione grafica delle sue
schede video su FreeBSD. Effettivamente c’era bisogno di questi driver, perché quelli compresi in XFree86 non
erano soddisfacenti, specialmente per un uso multimediale del sistema. Purtroppo questi driver sono rilasciati sotto
licenza proprietaria e solo in formato binario.
AvvertimentoI driver binari NVIDIA® sono disponibili anche nel port x11/nvidia-drivers
Dopo aver scaricato il pacchetto dal sito della NVIDIA® (http://www.nvidia.com), possiamo procedere con la
decompressione e l’installazione:
#tar zxf NVIDIA_FreeBSD-X.Y-WZKH.tar.gz
#cd NVIDIA_FreeBSD-X.Y-WZKH
#make setup
L’ultimo comando compila i sorgenti, creando così un modulo per il kernel, installandolo e caricandolo subito. Crea
inoltre il device /dev/nvidia, rimuove le librerie OpenGL che potrebbero creare conflitto con quelle NVIDIA
OpenGL e modifica il file /boot/loader.conf in modo che carichi all’avvio del sistema il modulo dei driver e
quello per la compatibilità dei binari Linux qualora non avessimo il supporto integrato nel kernel. Dopo
l’installazione bisogna sistemare anche la configurazione di X tramite il file /etc/XF86Config e precisamente la
sezione "Modules" e quella "Device" corrispondente al device NVIDIA. Importante nella sezione "Modules è la
riga:
Load
"glx"
mentre nella sezione "Device" della scheda video bisogna sostuire la riga
Driver
"nv"
con
Driver
"nvidia"
Ora potremo utilizzare tranquillamente i driver NVIDIA® ufficiali, però occorre fare un discorso a parte riguardo al
driver per l’AGP, infatti si possono usare si quelli forniti da NVIDIA® sia quelli nativi di FreeBSD. Per specificare la
nostra scelta dobbiamo aggiungere una riga nella stessa sezione "Device" di cui sopra:
Option "NvAgp" "0"
se non vogliamo usare alcun driver AGP,
Option "NvAgp" "1"
per usare il driver NVIDIA®,
Option "NvAgp" "2"
43
Capitolo 4. XFree86
per utilizzare il driver fornito da FreeBSD e infine
Option "NvAgp" "3"
se vogliamo provare prima a utilizzare il driver di FreeBSD e poi, in caso il tentativo fallisca, quello ufficiale.
Solitamente i driver AGP NVIDIA® vengono preferiti a quelli nativi. Qualora però si scelga di utilizzare quelli nativi
occorre ricompilare il modulo con alcune opzioni particolari e caricare il modulo agp.ko all’avvio del sistema. Per
maggiori informazioni si veda il file README compreso nella directory NVIDIA_FreeBSD-X.Y-WZKH/doc.
4.3. Come posso usare la rotella del mouse?
Ormai quasi tutti i mouse in commercio sono dotati della rotellina centrale per scorrere verticalmente la schermata,
inoltre può essere usata anche come pulsante centrale del mouse. Per utilizzare questo comodo dispositivo sotto X
(ricordiamo che per effettuare lo scroll in console è sufficiente premere Scroll Lock e utilizzare le frecce oppure
PgUP e PgDOWN) bisogna avere la sezione "Device" di /etc/XF86Config simile alla seguente:
Section "InputDevice"
Identifier "Mouse0"
Driver
"mouse"
Option
"Protocol" "auto"
Option
"Device" "/dev/sysmouse"
Option
"ZAxisMapping" "4 5"
La riga fondamentale è, facile da intuire, l’ultima.
4.4. Come configuro il server grafico X?
Il server grafico X fornisce il supporto per l’interfaccia grafica a FreeBSD (e a tutti gli UNIX®). Quello usato
principalmente sugli UNIX® non commerciali è XFree86, discendente libero della sezione X386 del progetto X11
(1). Le versioni di FreeBSD successive alla 4.8-RELEASE contengono XFree86-4.3.0 installabile dai ports e una
versione precedente può essere installata in fase di configurazione del sistema. Il meta-port di XFree86 è
x11/XFree86-4. Una volta installato il pacchetto eseguiamo
#XFree86 -configure
e troveremo ora un file XF86Config.new nella home directory dell’utente root; per testarlo basta lanciare
#XFree86 -xf86config /root/XF86Config.new
Se il file di configurazione è corretto dovremmo vedere una schermata a sfondo grigio-bianco con il puntatore del
mouse a forma di X. Per uscire da questa configurazione è necessario premere in combinazione
Ctrl+Alt+Backspace. Il file di configurazione, così com’è ora non è ottimizzato e anzi contiene alcuni piccoli errori
a cui occorre apportare le necessarie correzioni. Prima di tutto aggiungiamo nella sezione Monitor i valori di
frequenza orizzontale e refresh verticale del nostro monitor:
44
Capitolo 4. XFree86
Section "Monitor"
Identifier
VendorName
ModelName
Horizsync
Vertrefresh
EndSection
"Monitor0"
"Monitor Vendor"
"Monitor Model"
37-70
50-120
Ora sistemiamo la profondità di colore e la risoluzine che desideriamo utilizzare:
Section "Screen"
Identifier "Screen0"
Device
"Card0"
Monitor
"Monitor0"
DefaultDepth 24
SubSection "Display"
Depth
24
Modes "1024x768"
EndSubSection
EndSection
X non utilizza la mappa caratteri che viene caricata dal sistema al boot, quindi è necessario specificarne una
inserendo la riga
Option
"XkbLayout" "it"
all’interno della sezione InputDevice che identifica la tastiera (Keyboard0). Ovviamente se non abbiamo una
tastiera, dovremo specificare il codice appropriato. Bene, la configurazione di base è terminata, tuttavia si possono
effettuare ulteriori "limature" per perfezionare il tutto a propria discrezione: installare ulteriori fonts, selezionare
opzioni particolari per la scheda video e molto altro.
Note
1. In inglese, la pronuncia di XFree86 è molto simile a quella di X386. Effettivamente i fondatori del progetto
XFree86, lavoravano alla sezione X386 di X11.
45
Capitolo 5. Applicazioni e Varie
Durante il normale utilizzo del sistema si incontrano problemi di qualsiasi tipo: applicazioni che non funzionano
come vorremmo (perché evidentemente non le abbiamo configurate bene), periferiche solo parzialmente supportate
(perché non abbiamo spulciato le Hardware Notes prima di comprarlo?) e quant’altro. Di seguito si trovano le
risposte e le soluzioni ad alcuni di questi problemi.
5.1. Come posso crackare le password del mio sistema
per verificare se sono sicure?
Per aumentare la sicurezza del sistema si può cercare di crackare le password degli utenti, ovvero tentare di scoprirle
per vedere se seguono una politica di sicurezza abbastanza efficace. È una pratica perfettamente legale, se svolta su
un sistema di cui siamo gli amministratori, ma è penalmente perseguibile se tentiamo di farlo su altri sistemi senza
l’autorizzazione dell’amministratore degli stessi. Installiamo /usr/ports/security/crack, un port adatto alle
nostre esigenze. Entriamo in /usr/local/crack (si notino i particolari permessi di questa directory e del suo
contenuto, accessibile solo da root) e lanciamo:
#./Crack -fmt bsd /etc/master.passwd
Crack cercherà ora di scoprire le password di tutti gli utenti del sistema in base alle informazioni GECOS 1 .
Eseguendo
#./Reporter -quiet
sapremo quali password sono state individuate da Crack e potremo provvedere a cambiarle o a informare i
corrispettivi utenti di cambiarle. Un ultimo passo è ancora necessario: occorre eliminiare tutti i workfile utilizzati da
Crack, perché potrebbero essere utilizzati per indovinare le nostre password; per fare ciò diamo un
#make tidy
find . -name "*~" -print | xargs -n50 rm -f
( cd src; for dir in * ; do ( cd ; make clean ) ; done )
rm -f dawglib.o debug.o rules.o stringlib.o *~
/bin/rm -f *.o tags core rpw destest des speed libdes.a .nfs* *.old
st rpw des speed
rm -f *.o *~
scripts/plaster
+ kill -TERM 26120
+ rm -f run/Klocalhost.26048
+ exit 0
scripts/fbmerge
rm -f run/[DIEGTKM]*
rm -f run/dict/gecos.*
rm -f run/dict/gcperm.*
#rm /usr/local/crack/run/F-merged
*.bak deste
Naturalmente questa è solo una delle precauzioni da prendere per evitare ospiti indesiderati nel nostro sistema.
46
Capitolo 5. Applicazioni e Varie
5.2. Come posso vedere un DVD?
Per la visione dei DVD sotto FreeBSD ci sono molti ports utilizzabili: multimedia/ogle-gui,
multimedia/mplayer, /multimedia/xine, solo per citare i più diffusi. Alcuni necessitano la ricompilazione del
kernel con l’aggiunta di due opzioni particolari:
options CPU_ENABLE_SSE
option USER_LDT
La prima opzione serve per attivare uno speciale set di istruzioni del processore, mentre la seconda consente alle
applicazioni a livello utente la gestione della Local Descriptor Table, che riguarda la gestione della memoria virtuale.
Lanciamo la compilazione del kernel e, nell’attesa, aggiustiamo altri piccoli particolari che miglioreranno le
prestazioni della nostra macchina durante l’utilizzo di programmi multimediali. Si tratta di alcuni valori di sysctl(8) e
precisamente dovremmo inserire in /boot/loader.conf:
hw.ata.atapi_dma="1"
hw.ata.ata_dma="1"
Entrambe servono per attivare il DMA2 dei dischi rigidi e dei cdrom ATA, quindi non sono necessari per chi ha
periferiche SCSI. Inoltre in /etc/sysctl.conf scriviamo le seguenti espressioni:
kern.ipc.shmmax=67108864
kern.ipc.shmall=32768
hw.snd.pcm0.vchans=4
hw.snd.maxautovchans=4
Le prime due righe migliorano il valore della memoria condivisa minima e massima per il server X e le sue
applicazioni. La terza riga, da inserire solo nel caso che la nostra scheda audio usi il device pcm, serve a far allocare 4
canali virtuali per la scheda audio, un valore accettabile per l’utilizzo quotidiano. hw.snd.maxautovchans alloca 4
canali virtuali per qualsiasi device sonora che sarà attaccata successivamente.Mentre avviene la ricompilazione del
kernel, cambiamo i permessi alla device del lettore DVD, consentendo a tutti gli utenti del sistema di leggere i DVD
stessi:
#chmod 666 /dev/acd0c
quindi creiamo 2 link simbolici:
#ln -s /dev/acd0c /dev/dvd
#ln -s /dev/racd0c /dev/rdvd
Dopo aver effettuato l’installazione del kernel e il riavvio del sistema, installiamo il port multimedia/ogle-gui (o
un qualsiasi player DVD tra i tanti presenti nei ports) e godiamoci lo spettacolo.
47
Capitolo 5. Applicazioni e Varie
5.3. Come compilo ipfw2 su una 4.X?
ipfw2 è il nuovo sistema di firewall di FreeBSD, che rimpiazza ed estende ipfw(8). Di default ipfw2 non viene
compilato nelle RELEASE precedenti alla 5.0, pur essendo tuttavia presente nei sorgenti, quindi per usufruire delle
nuove potenzialità offerte da questo lavoro dell’italiano Luigi Rizzo, bisogna procedere con la compilazione diretta
dai sorgenti: per prima cosa aggiungiamo nel file /etc/make.conf la riga
ipfw2=true
Quindi, nel nostro file di configurazione del kernel, mettiamo
options IPFW2
e ricompiliamo il kernel. Subito dopo il riavvio del sistema, entriamo nella directory /usr/src/sbin/ipfw e
lanciamo
#make
&& make
install && make clean
poi passiamo in /usr/src/lib/libalias e ridiamo la stessa serie di comandi. ipfw2 ora è installato e potremo
usufruirne utilizzando la stessa sintassi di ipfw(8)
5.4. Come aggiorno il database di locate(1)?
locate(1) è un potentissimo strumento per trovare file all’interno dei filesystem, però si basa su un database che ha
bisogno di essere aggiornato periodicamente. Il sistema si occupa di aggiornarlo una volta alla settimana o meglio,
ogni settimana di uptime, quindi chi necessita di un aggiornamento più frequente o non raggiunge tale periodo di
uptime, può utilizzare locate.updatedb, che si trova in /usr/libexec/.
5.5. Come posso creare file MP3?
Partendo da cd audio è possibile creare file MP3 usando cdda2wav, compreso nel port sysutils/cdrtools e
lame ( audio/lame). Installiamo questi ports e, dopo aver inserito il cd lanciamo:
#cdda2wav -D /dev/acd0c -B
se vogliamo convertire in formato wav tutto il disco, oppure, per solo alcune brani:
#cdda2wav -D /dev/acd0c -t 4
Il comando precedente converte solo il quarto brano. Ora, dopo aver registrato i brani in formato wav bisogna
convertirli in mp3:
#lame -h -b 160 audio.wav audio.mp3
48
Capitolo 5. Applicazioni e Varie
Il numero che segue l’opzione -b indica il bitrate, ovvero l’indice della qualità degli mp3, e 160 Kbps (Kilobits per
secondo) sono un valore medio accettabile nella gran parte dei casi.
5.6. Come creo un’immagine ISO?
Con immagine ISO si definiscono solitamente quei file che contengono un filesystem ISO9660 e sono l’immagine
del contenuto di un CD o di quello che sarà contenuto in un CD. Sicuramente il tool più usato per la creazioni di
filesystem ISO9660, è mkisofs, che trovate installando sysutils/cdrtools. Questa applicazione crea l’immagine
di un albero di directory e verrà posta sul cd. L’utilizzo di base di mkisofs è
#mkisofs -o immagine.iso /percorso/
A seconda che si voglia avere un’immagine Rock Ridge3, Joliet4 o HFS5, precisamente nell’ordine:
• -R
: Estensioni Rock Ridge
• -J
: Estensioni Joliet
• -hfs
: Filesystem HFS
• -D
: toglie il limite degli 8 livelli di sottodirectory
• -T
: crea il file TRANS.TBL per la transcodifica dei nomi lunghi (utile per la compatibilità con altri ambienti)
Queste immagini possono anche essere montate come normali filesystem, come spiegato alla domanda "Come posso
montare un immagine ISO?" (???).
5.7. Come creo i cd di dati?
La procedura per la creazione di cd di dati è divisa in due, a seconda che si utilizzi un masterizzatore ATAPI oppure
uno SCSI o un ATAPI con emulazione SCSI. Tuttavia il primo passaggio è identico per tutte e due le procedure: la
creazione dell’immagine ISO, come spiegato nella domanda "Come creo un’immagine ISO" (Sezione 5.6).
Ora passiamo alla masterizzazione vera e propria.
5.7.1. Scrittura dei CD con masterizzatori ATAPI
Solitamente per scrivere cd con masterizzatori ATAPI si usa burncd(8) che è compreso nel sistema base. Questo
programma può masterizzare sia CD di dati sia audio, per ora occupiamoci solo dei primi. Le opzioni principali di
burncd(8) sono:
-f
-s
-v
-e
/dev/acd0c/ : specifica il device del masterizzatore
N : specifica la velocita di NX
: stampa un numero maggiore di informazioni su ciò che sta eseguendo il programma
: una volta finito di scrivere il cd, lo espelle
49
Capitolo 5. Applicazioni e Varie
Per masterizzare quindi l’immagine FreeBSD.iso con il masterizzatore /dev/acd0c, a una velocità di 48x, con
espulsione del CD a scrittura ultimata e maggiori informazioni durante la scrittura, dovremo eseguire il seguente
comando:
# burncd -f /dev/acd0c -e -v -s 48 data FreeBSD.iso fixate
La man page di burncd è molto chiara e saprà chiarire qualsiasi dubbio.
5.7.2. Scrittura dei CD con masterizzatori SCSI o ATAPI con
emulazione SCSI
Se la nostra macchina ha un masterizzatore SCSI o ATAPI in emulazione SCSI, utilizzeremo cdrecord per la
scrittura dei CD. Questo programma è compreso nel port sysutils/cdrecord. A volte dopo aver aggiornato il
sistema, si possono avere problemi a usare cdrecord(1) ed è quindi consigliato aggiornare il pacchetto dopo aver
ricompilato. Usare cdrecord è davvero facile:
# cdrecord dev=device image.iso
L’unica parte da individuare è il valore di dev questo si può desumere dall’output di
# cdrecord -scanbus
Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jörg Schilling
Using libscg version ’schily-0.1’
scsibus0:
0,0,0
0) ’SEAGATE ’ ’ST39236LW
’ ’0004’ Disk
0,1,0
1) ’SEAGATE ’ ’ST39173W
’ ’5958’ Disk
0,2,0
2) *
0,3,0
3) ’iomega ’ ’jaz 1GB
’ ’J.86’ Removable Disk
0,4,0
4) ’NEC
’ ’CD-ROM DRIVE:466’ ’1.26’ Removable CD-ROM
0,5,0
5) *
0,6,0
6) *
0,7,0
7) *
scsibus1:
1,0,0
100) *
1,1,0
101) *
1,2,0
102) *
1,3,0
103) *
1,4,0
104) *
1,5,0
105) ’YAMAHA ’ ’CRW4260
’ ’1.0q’ Removable CD-ROM
1,6,0
106) ’ARTEC
’ ’AM12S
’ ’1.06’ Scanner
1,7,0
107) *
Questo output elenca i possibili valori di dev e in questo caso il masterizzatore è rappresentato al numero 1,5,0 che
sarà il valore da assegnare a dev. Ci sono altri modi per trovare questo valore e la man page ci fornisce queste e altre
informazioni per un miglior uso di cdrecord(1).
50
Capitolo 5. Applicazioni e Varie
5.8. Come creo i CD audio?
Per creare i CD musicali da ascoltare con i normali lettori CD, bisogna creare le tracce, estraendole da altri CD
musicali oppure convertendo le canzoni da un formato all’altro.
5.8.1. Estrarre tracce musicali da CD audio
La procedura per ottenere le tracce è differente a seconda che si usi un lettore CD ATAPI o uno SCSI. Nel primo caso
aver inserito il CD, è necessario creare il device corrispondente alla traccia e poi reindirizzare l’output del contenuto
del device su un file, usando un opportuna dimensione dei blocchi. Per estrarre la prima traccia di un cd, ad esempio,
bisogna lanciare i seguenti comandi:
# cd /dev && sh MAKEDEV acd0t01
# dd if=/dev/acd0t01 of=/audio/traccia1.cdr bs=2352
Naturalmente acd0t01 diventa acd0t02 per la seconda traccia, e così via.
Per i lettori CD SCSI invece si usa cdda2wav come spiegato alla domanda "Come posso creare file MP3?" (Sezione
5.5).
5.8.2. Convertire i file MP3 e WAV in tracce audio
Quando si vogliono creare compilation partendo da file MP3, bisogna convertire gli stess in tracce audio utilizzando
il port audio/lame:
# lame --decode -t file.mp3 file.cdr
oppure, partendo da file in formato WAV:
# lame --decode -t file.wav file.cdr
Naturalmente questo serve solo per i masterizzatori ATAPI, in quanto i programmi per quelli SCSI accettano file in
formato WAV.
5.8.3. Masterizzare i cd audio
Una volta ottenuti le tracce audio se si tratta di masterizzatori ATAPI, oppure i file WAV se si tratta di periferiche
SCSI o ATAPI con emulazione SCSI, possiamo eseguire la scrittura del CD usando rispettivamente burncd(8) o
cdrecord(1) (quest’ultimo viene installato dal port sysutils/cdrtools):
# burncd -f /dev/acd0c audio traccia1.cdr traccia2.cdr ... fixate
oppure
# cdrecord -v dev=2,0 -dao -useinfo
*.wav
51
Capitolo 5. Applicazioni e Varie
e ovviamente il valore di dev si trova come spiegato in "Scrittura dei CD con masterizzatori SCSI o ATAPI con
emulazione SCSI" (Sezione 5.7.2).
5.9. Posso giocare a Quake 3 Arena™ con FreeBSD?
La risposta è semplice: si, a patto di possedere un CD originale del gioco e avere attivo il layer di compatibilità dei
binari Linux. Il modo più semplice per installare il gioco è usare il port games/q3server, oppure si può effettuare
una installazione manuale. Vediamo come: IdSoftware® ha rilasciato il gioco in formato binario per Linux,
disponibile sul ftp di Id Software® (ftp://ftp.idsoftware.com/idstuff/quake3/linux/), quindi dopo averlo scaricato,
eseguiamolo come utente root:
# sh linuxq3point-X.YZ.x86.run
Specifichiamo il percorso in cui vogliamo installare (tipicamente /usr/compat/linux/usr/games/) e la
directory in cui mettere gli eseguibili (di solito /usr/local/bin). Eseguita l’installazione del port o della cosidetta
Point Release, montiamo il CD e copiamo i file necessari dal CD alla directory di installazione:
# cp /mnt/cdrom/Quake3/baseq3/pak0.pk3 /usr/local/games/quake3/baseq3
e, se vogliamo giocare anche alla modalità Team Arena:
# cp /mnt/cdrom/Setup/missionpack/pak0.pk3 /usr/local/games/quake3/missionpack
Fatto questo occorre ricompilare il kernel assicurandoci di avere la seguente opzione:
options SYSVSHM
Durante la compilazione ci possiamo occupare dell configurazione grafica. Nel file di configurazione del server X,
/etc/XF86Config, devono essere presenti le seguenti righe nella sezione "Modules":
Load
Load
Load
Load
"extmod"
"glx"
"dri"
"bitmap"
e naturalmente, se abbiamo una scheda grafica NVIDIA®, dobbiamo usarne i driver come spiegato alla domanda
"Come installo i driver proprietari per le schede grafiche NVIDIA®?"(Sezione 4.2). I possessori di schede grafiche
ATI, dovranno invece installare il port graphics/linux_dri. Il comando
% quake3
serve per lanciare il gioco.
52
Capitolo 5. Applicazioni e Varie
Seguendo gli stessi passi si può installare anche "Return To Castle Wolfenstein", i cui binari per Linux si trovano
sempre sul server FTP di Id Software® oppure nel port games/rtcw.
AvvertimentoI possessori di schede grafica ATI dovranno anche creare un link simbolico da
/usr/compat/linux/usr/X11R6/lib/libGL.so.1 a /usr/compat/linux/usr/games/rtcw/libGL.so
5.10. Come posso ricevere la posta con fetchmail?
Il port mail/fetchmail è un’applicazione usatissima per la ricezione delle mail da server POP o altri da terminale.
La sua sintassi fondamentale è
% fetchmail pop.paperopoli.com -u paperino
nel caso la nostra mail fosse <[email protected]>. Possiamo anche specificare a fetchmail di eseguire
la ricezione ogni tot secondi, specificando l’opzione -d SECONDI. Ovviamente se si hanno tanti account di posta
elettronica, diventa scomodo dover lanciare il comando ogni volta e conviene quindi utilizzare il file di
configurazione .fetchmailrc da mettere nella propria home directory. Questo file deve avere la seguente struttura:
poll paperopoli.com protocol POP3 username paperino password paperinik
Ogni account deve avere la sua riga all’interno del file e ovviamente, per salvaguardare la nostra riservatezza,
.fetchmailrc dovrà essere leggibile ed editabile solo da noi.
5.11. Come cambio shell?
Per cambiare la shell con la quale effettuiamo il login, possiamo usare chsh(1), specificando l’opzione -s e il
percorso della nuova shell. Per passare da sh a bash, ad esempio:
% chsh -s /usr/local/bin/bash
chsh: updating the database...
chsh: done
chsh(1) serve anche a molte altre cose: lanciato senza argomenti ci permette di modificare le informazioni GECOS
dell’utente.
53
Capitolo 5. Applicazioni e Varie
5.12. Come posso usare il mio modem Alcatel®
Speedtouch USB?
Questo modem è tristemente famoso in quanto è stato il primo modem usb distribuito da Telecom Italia ai suoi clienti
ADSL e per aver fatto impazzire quanti volevano usarlo sotto sistemi operativi diversi da Windows. Attualmente è
l’unica periferica che usa PPPoA6 supportata da FreeBSD, grazie ai driver scritti da Benoit Papillault. Un’ottima e
completa guida per configuare questo modem si trova nella pagina ufficiale (http://speedtouch.sourceforge.net) dei
driver.
5.13. Posso usare l’OpenSSH incluso nei ports, invece di
quello di sistema?
FreeBSD viene distribuito completo di una versione di OpenSSH, solitamente la più recente disponibile al momento
dell’uscita della -RELEASE. Tuttavia OpenSSH è disponibile anche nei ports come
security/openssh-portable e la versione del port è più recente di quella inclusa nel sistema. Se si ha dunque la
necessità di installare l’ultimissima versione, si può sostituire l’OpenSSH di sistema con quello dei ports. Si procede
nel seguente modo: prima di tutto installiamo il port come già spiegato nella sezione Sezione 3.42, quindi editiamo il
file /etc/rc.conf, modificando la riga relativa a OpenSSH da
sshd_enable="YES"
a
sshd_enable="NO"
Così facendo impediremo l’avvio dell’sshd(8) di sistema al boot. Visto che abbiamo scelto di utilizzare quello dei
port, possiamo evitare di compilare l’OpenSSH durante il buildworld, quindi inseriamo nel /etc/make.conf la
riga
NO_OPENSSH=true
L’opera di trasferimento è quasi finita, si tratta solo di rinominare /usr/local/etc/rc.d/sshd.sh.sample in
/usr/local/etc/rc.d/sshd.sh.
Note
1. Acronimo di General Electric Comprehensive Operating System, sono le informazioni sugli utenti reperibili dal
file master.passwd.
2. Direct Memory Access (Accesso Diretto alla Memoria): sistema che consente ai dispositivi che lo usano la
scrittura diretta dei dati all’interno della memoria RAM.
3. Le estensioni Rock Ridge servono per creare un filesystem ISO9660 che segua le stesse regole dei normali
filesystem UNIX.
4. Le estensioni Joliet sono usate per i cd che verranno utilizzati anche su sistemi Microsoft e impongono
particolari limitazioni al filesystem.
54
Capitolo 5. Applicazioni e Varie
5. Il filesystem HFS viene usato sui sistemi MacOS.
6. PPPoA: Point to Point Protocol over ATM.
55
III. Appendici
Appendice A. Suggeritori, Correttori, Critici,
Supporters, Amici...
Sono di seguito elencati, in ordine puramente casuale, tutte le persone che ringraziamo perché hanno contribuito e/o
supportato BSD-FAQ-it. Chiunque pensi di essere stato dimenticato può segnalarlo.
•
Luigi Semenzato
•
Alessandro de Manzano
•
Cristiano Deana
•
Dario Freni
•
Davide D’Amico
•
Simone Fonda
•
Riccardo Torrini
•
Marta Pagan
•
Paolo Didonè
•
Michele Marchetto
•
Salvatore Ferrucci
•
Francesco Mattia
•
Francesco Levorato
•
Ernesto Mudu
•
Stefano Trentini
•
Gianluca Trimarchi
•
Oberon
•
Giorgio Inglese
•
Gianluigi Spagnuolo
•
Guido Sintoni
... e ovviamente un grazie speciale a:
57
Colophon
Questo libro è frutto del lavoro combinato di molte persone che hanno contribuito a “BSD-FAQ-it”. Il testo è stato
scritto in SGML seguendo le specifiche del DocBook DTD ed è stato formattato dall’SGML in molti formati di
presentazione differenti usando Jade, un motore DSSSL open source. Sono stati usati i fogli di stile DSSSL di Norm
Walsh con un livello aggiuntivo di personalizzazione per fornire a Jade le istruzioni di presentazione. La versione
stampata di questo documento non sarebbe stata possibile senza il linguaggio di composizione TeX di Donald Knuth,
LaTeX di Leslie Lamport, o il pacchetto di macro JadeTeX di Sebastian Rahtz.
58