Copyright © 2003-2004 Il team di BSD-FAQ-it
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:
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.
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.
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 è <bsdfaqit@willystudios.com>
.
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/
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, 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, di cui esiste una parziale traduzione in italiano.
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) o sotto la GNU Library General Public License (LGPL) 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 quando possibile.
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. 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.
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 .
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, in parte tradotto in italiano rappresentano eccellenti punti di partenza.
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.
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 è l'ultima release del ramo -CURRENT; è stata rilasciata il 12 Gennaio 2004. La versione 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 sul sito web di FreeBSD.
FreeBSD-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 nell'handbook 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 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/ per la 5.2-CURRENT, e releng4.freebsd.org 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.
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
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.
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 all'interno del sito web di FreeBSD.
Per coloro che volessero più divertimento, degli snapshot binari vengono creati giornalmente, come precedentemente detto.
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, composto da 9 persone. C'è un team più grande, composto da circa 200 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 , e non ci sono restrizioni su chi possa prendere parte alla discussione.
Ogni release significativa di FreeBSD è disponibile via FTP anonimo dal sito FTP di FreeBSD:
Per la release corrente del ramo 3.X-STABLE, 3.5.1-RELEASE, guarda la directory 3.5.1-RELEASE.
L'ultima release del ramo 5.X, 5.2-RELEASE può essere trovata nella directory 5.2-RELEASE.
L'ultima release di 4-STABLE, 4.9-RELEASE può essere trovata nella directory4.9-RELEASE.
Glisnapshot 4.X vengono fatti giornalmente.
Gli snapshot 5-CURRENT 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.
Informazioni su come settare un mirror di FreeBSD possono essere reperite nell'articolo Mirroring FreeBSD, non ancora tradotto in italiano.
Il database dei Problem Report può essere interrogato (o vi si può sottomettere una informazione) usando le due interfacce, di sottomissione e 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, un articolo su come scrivere dei buoni problem reports, non ancora tradotto in italiano.
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.
Controlla la lista della documentazione sul sito web principale di FreeBSD, oppure consulta il sito del GUFI, il Gruppo Utenti FreeBSD Italiano.
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.
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
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.
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 onEseguiamo 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.
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.txtPer 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).
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 : l'user corrente \h : l'hostname \w : la directory corrente \@ : l'ora corrente, in formato 12H am/pm \t : l'ora corrente, in formato 24-ore HH:MM:SS \d : la data, in formato Giorno della Settimana Mese DataPer 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 DataPer 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$per settare il prompt con il nome utente attuale.
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 -eche 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 comandoCon 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/fetchmailesegue 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/fetchmailPer visualizzare il file di crontab(1) lanciamo
% crontab -l
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.
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 host=cvsup.it.freebsd.org *default prefix=/usr *default release=cvs tag=RELENG_5 *default delete use-rel-suffix *default umask=0022 *default compress src-allQuesto 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-allSi 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.
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.
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*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=4Cosa 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 updateper 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)
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 -pipeLa compilazione si svolge in più fasi:
aggiornamento dei sorgenti (opzionale)
Vedere la domanda "Come posso aggiornare il sistema?" (Sezione 3.6)
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.
Per compilare il world entriamo in /usr/src e lanciamo
# make buildworldIl tempo di compilazione varia a seconda della frequenza del processore e della quantità di memoria del sistema.
La compilazione del kernel non è diversa da quella del word, in quanto è sufficiente lanciare, sempre da /usr/src
# make buildkernelNon 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 dell'handbook per maggiori informazioni.
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 installkernelVerranno 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 .
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
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
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 'd' to delete the temporary ./etc/mail/mailer.conf Use 'i' to install the temporary ./etc/mail/mailer.conf Use 'm' to merge the temporary and installed versions Use 'v' to 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.
Alla fine di tutto, per poter utilizzare il sistema aggiornato riavviamo la macchina con
# rebootOra 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 root@pdp.paperopoli:/usr/obj/usr/src/sys/DEPOSITO i386La 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).
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 bootFatto questo, il sistema caricherà il kernel precedente (funzionante) e potremo ora risolvere l'errore come spiegato sopra.
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_2in
*default release=cvs tag=RELENG_5_2 date=2004.02.05.17.30.00I 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 ottenere anche i ports e i doc relativi ad un certo istante, è sufficiente modificare i file di configurazione corrispondenti.
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 jiffy[1] 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.
La formattazione dei floppy disk si svolge in tre fasi:
Formattazione a basso livello
Scrittura dell'etichetta[2] del floppy
Creazione del filesystem
Procediamo con la prima fase: come utente root, dopo aver inserito un floppy nel lettore, lanciamo
# fdformat -n /dev/fd0L'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 fd1440Ultima fase: la creazione del filesystem. Solitamente, il filesystem dei floppy disk è FAT12, quindi creiamo il filesystem nel seguente modo:
# newfs_msdos -f 1440 /dev/fd0L'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.
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 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:rootSono 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,paperinoLa 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.
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.
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 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 71Senza 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 0xffffffffed è 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.
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 ttyv2 Ven 14 Mar 21:51 - 21:33 (1+23:41) qui ttyp2 123.45.6.123 Ven 14 Mar 15:12 - 15:17 (00:05) qui ttyp1 123.45.6.123 Ven 14 Mar 15:01 - 15:08 (00:07) qui ttyp1 123.45.6.123 Ven 14 Mar 14:52 - 14:59 (00:07) gastone ttyv2 Ven 14 Mar 14:51 - 21:51 (07:00) archimede ttyv1 Gio 13 Mar 19:46 still logged in qua ttyv0 Gio 13 Mar 19:46 still logged inLa 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.
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 ttyv0 13 Mar 19:46 quo ttyv1 13 Mar 19:46 quo ttyp0 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 up 4 days, 18:53, 4 users, load averages: 0,30 0,26 0,19 USER TTY FROM LOGIN@ IDLE WHAT qui v0 - Gio07pm 1:00 -bash (bash) quo v1 - Gio07pm 4days xinit /home/quo/.xinitrc -- -nolisten tcp quo p0 :0.0 12:38pm - w qua 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.
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 msdosI 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'AGP[3].
Per rimuovere i moduli caricati si usa kldunload(8):
# kldunload linuxrimuove il modulo relativo alla compatibilità dei binari Linux.
kldstat(8) serve a conoscere quali moduli sono stati caricati:
Id Refs Address Size Name 1 9 0xc0100000 2b6c10 kernel 2 1 0xc03b7000 18a88 linux.ko 3 1 0xc03d0000 ac8c agp.ko 4 1 0xc03db000 149f44 nvidia.ko 5 4 0xc16f8000 9000 netgraph.ko 6 1 0xc1706000 3000 ng_ether.ko 7 1 0xc170b000 5000 ng_pppoe.ko 8 1 0xc1711000 3000 ng_socket.ko 9 1 0xc178c000 2000 star_saver.koCi 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.
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
LANG=it_IT.ISO_8859-15da shell o mettendola nel file di configurazione della vostra shell.
Tutti i file hanno dei permessi, come ben si può verificare analizzando l'output di
% ls -l total 122 -rw-r--r-- 1 paperino paperino 2015 31 Mar 21:03 debiti -rw-r--r-- 1 paperino paperino 1513 16 Feb 17:21 sfortune drwxr-xr-x 2 paperino paperino 512 1 Apr 17:02 paperina -rw-r--r-- 1 paperino paperino 325 24 Mar 12:56 debitiPDP -rw-r--r-- 1 paperino paperino 2839 1 Apr 17:02 lettera -rw-r--r-- 1 paperino paperino 2015 31 Mar 13:03 paperinik -rw-r--r-- 1 paperino paperino 65058 2 Apr 15:07 Avviso -rw-r--r-- 1 paperino paperino 22805 24 Mar 21:54 ciccio.jpg -rw-r--r-- 1 paperino paperino 909 26 Mar 14:25 deposito.html drwxr-xr-x 2 paperino paperino 1536 1 Apr 17:00 quiquoqua -rwxr--r-- 1 paperino paperino 253 20 Mar 20:55 dormire.sh -rw-r--r-- 1 paperino paperino 4234 6 Mar 21:58 mailbox -rw-r--r-- 1 paperino paperino 3417 3 Mar 14:27 DaFare -rw-r--r-- 1 paperino paperino 1436 23 Mar 14:05 mailtopolino drwxr-xr-x 8 paperino paperino 512 10 Mar 18:12 foto_nonnaSenza 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 : identifica le directory e può stare solo nella prima sezione l : il file in questione e' un link ad un altro file ,solo nella prima sezione s : UNIX socket, solo nella prima sezione r : 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 sfortunehanno 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.
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 utentiSe 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 sfortunee aggiungere il permesso di scrittura anche per il gruppo proprietario, dovremo lanciare il seguente comando:
% chmod g+w sfortuneoppure, per togliere il permesso di lettura a tutti gli altri utenti:
% chmod o-r sfortuneVi è 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 esecuzioneAd esempio per ripristinare i permessi del file sfortune, dovremo eseguire il seguente comando:
% chmod 0644 sfortunein quanto:
0 : prima sezione vuota 6 = 4 + 2 : permesso in lettura e scrittura per il proprietario 4 : permesso in lettura per il gruppo 4 : permesso in lettura per tutti gli utentiUn 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.
Ovviamente sì! In tre semplici passi, possiamo cambiare le dimensioni dei terminali:
Ricompiliamo il kernel con le seguenti opzioni:
options SC_PIXEL_MODE options VGA_WIDTH90 options VESA
Dopo aver riavviato, proviamo ad usare la nuova risoluzione con
# vidcontrol VESA_132x25VESA_132x25 indica la modalità prescelta (colonne x righe) in questo caso. Tutti gli altri valori sono disponibili in vidcontrol(1)
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.
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 PPP[5] di sistema oppure facendo uso 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=1In 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 IPDIVERTper abilitare il NAT, sia quello del PPP sia natd.
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 yesSe facciamo partire la connessione all'avvio del sistema, è sufficiente aggiungere/etc/rc.conf la riga
ppp_nat="YES"
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 yesLa prima riga indica nuovamente l'interfaccia di rete connessa ad Internet, mentre le altre due servono per assicurare il funzionamento di FTP e delle DCC[6] 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.
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-- 1 paperino paperino 2015 31 Mar 21:03 debiti -rw-r--r-- 1 paperino paperino 1513 16 Feb 17:21 sfortune drwxr-xr-x 2 paperino paperino 512 1 Apr 17:02 paperina -rw-r--r-- 1 paperino paperino 325 24 Mar 12:56 debitiPDP -rw-r--r-- 1 paperino paperino 2839 1 Apr 17:02 letteraPaperina -rw-r--r-- 1 paperino paperino 2015 31 Mar 13:03 paperinikIl comando usato per cambiare proprietario e gruppo è chown(8), da sempre presente in UNIX. La sua sintassi è semplicissima:
% chown gastone letteraPaperinaper cambiare il proprietario da paperino a gastone, oppure
% chown :gastone letteraPaperinase vogliamo cambiare il gruppo proprietario. Ovviamente si possono sommare le due sintassi per cambiare contemporaneamente utente e gruppo proprietari:
% chown gastone:gastone letteraPaperinaPosssiamo 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.
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: NTP[7] 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.driftVediamo 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 sPer 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.
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.
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 /dev/ad1 /dev/da0Dopo 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 SCSIOltre alle slice, FreeBSD fa un ulteriore suddivisione logica delle slice formattate in UFS[8]: 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 Mountpoint FStype Options Dump Pass# /dev/ad0s3b none swap sw 0 0 /dev/ad0s4a / ufs rw 1 1 /dev/ad0s4e /tmp ufs rw 2 2 /dev/ad0s4f /usr ufs rw 2 2 /dev/ad0s4d /var ufs rw 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 /dev/acd1 /cdrom1 cd9660 ro,noauto 0 0 /dev/fd0 /mnt/floppy msdos rw,noauto 0 0 /dev/ad1s1 /archivio2 msdos rw,noauto 0 0 /dev/ad0s1 /mnt/win ntfs rw,noauto 0 0 /dev/ad0s4 /archivio1 msdos rw,noauto 0 0 /dev/ad0s3g /oldusr ufs rw 2 2Quindi, 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 SCSISe 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 | | | | |--|---|---|---|---|--------------|--------------|--------------| | a| b | c | d | e | | | | ----------------------------------------------------------------|
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 SCSISolitamente i CDROM non hanno le partitions, quindi il numero di identificazione è l'ultimo componente del nome del device.
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.
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.
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/ad1La 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 autoIl 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/ad1s1aCon il comando fsck possiamo verificare che il filesystem sia realmente funzionante
# fsck /dev/ad1s1aora è 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/ad1s1ble 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 # primo disco IDE ad0s1e # partizione "e" della slice1 del primo disco IDE ad1 # secondo disco IDE ad1s1a # partizione "a" della slice1 del secondo disco IDE ad2 # terzo disco IDE ad2s1c # partizione "c" della slice1 del terzo disco IDE ad3 # quarto disco IDE ad3s1f # partizione "f" della slice1 del quarto disco IDEdopo 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).
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 Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp4 0 0 12.123.45.67.50033 195.22.198.15.80 ESTABLISHED tcp4 0 0 12.123.45.67.50018 195.22.198.15.80 ESTABLISHED tcp4 0 0 192.168.0.1.65232 217.220.29.16.6667 ESTABLISHED tcp4 0 0 192.168.0.1.65231 213.92.8.4.6667 ESTABLISHED tcp4 0 0 192.168.0.1.139 *.* LISTEN tcp4 0 0 127.0.0.1.3493 127.0.0.1.49154 ESTABLISHED tcp4 0 0 127.0.0.1.49154 127.0.0.1.3493 ESTABLISHED tcp4 0 0 127.0.0.1.3493 127.0.0.1.49153 ESTABLISHED tcp4 0 0 127.0.0.1.49153 127.0.0.1.3493 ESTABLISHED tcp4 0 0 *.3493 *.* LISTEN tcp46 0 0 *.80 *.* LISTEN tcp4 0 0 *.25 *.* LISTEN tcp4 0 0 *.22 *.* LISTEN tcp6 0 0 *.22 *.* LISTEN tcp4 0 0 *.515 *.* LISTEN tcp6 0 0 *.515 *.* LISTEN tcp4 0 0 127.0.0.1.53 *.* LISTEN tcp4 0 0 192.168.0.1.53 *.* LISTEN 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 *.*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 3493/tcp #Network UPS Tools nut 3493/udp #Network UPS ToolsUn 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:
# sockstat -46 USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS bind named 59998 3 udp4 *:58314 *:* paperino evolution- 59406 26 tcp4 12.123.45.67:51970 216.136.204.117:80 paperino evolution- 59406 27 tcp4 12.123.45.67:51971 63.236.73.26:80 paperino evolution- 59406 28 tcp4 12.123.45.67:51972 204.152.186.46:80 paperino ssh 56858 3 tcp4 12.123.45.67:50565 212.171.15.152:22 paperino irssi 14717 3 tcp4 192.168.0.1:65232 217.220.29.16:6667 paperino irssi 14717 5 tcp4 192.168.0.1:65231 213.92.8.4:6667 www httpd 56922 3 tcp46 *:80 *:* www httpd 56921 3 tcp46 *:80 *:* www httpd 56920 3 tcp46 *:80 *:* www httpd 5115 3 tcp46 *:80 *:* www httpd 791 3 tcp46 *:80 *:* root nmbd 639 8 udp4 *:137 *:* root nmbd 639 9 udp4 *:138 *:* root nmbd 639 10 udp4 192.168.0.1:137 *:* root nmbd 639 11 udp4 192.168.0.1:138 *:* root smbd 637 9 tcp4 192.168.0.1:139 *:* root upslog 631 3 tcp4 127.0.0.1:49154 127.0.0.1:3493 uucp upsmon 630 3 tcp4 127.0.0.1:49153 127.0.0.1:3493 uucp upsd 626 3 udp4 *:3493 *:* uucp upsd 626 4 tcp4 *:3493 *:* uucp upsd 626 8 tcp4 127.0.0.1:3493 127.0.0.1:49153 uucp upsd 626 9 tcp4 127.0.0.1:3493 127.0.0.1:49154I 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.4PRERELEASE, FreeBSD 5.0-CURRENT (Jan 2003), FreeBSD 5.0-RELEASE (x86) 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 secondsnmap 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.
Sia APM[9] sia ACPI[10] 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.
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 pmtimer device apmMentre 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).
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.
Analizzando l'output di
% df Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/ad0s4a 257838 93228 143984 39% / devfs 1 1 0 100% /dev /dev/ad0s4e 257838 67010 170202 28% /tmp /dev/ad0s4f 9541210 4636766 4141148 53% /usr /dev/ad0s4d 257838 99172 138040 42% /var /dev/ad0s3g 9172610 6273632 2165170 74% /oldusr /dev/ad1s1 39076608 27335488 11741120 70% /datasi 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 -m5tunefs(8) è l'utility principale per modificare le impostazioni di un certo filesystem.
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.passwdpwd_mkdb(8) ricrea il file in questione e altri 2 piccoli database contenenti le stesse informazioni /etc/spwd.db e /etc/pwd.db .
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.
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
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).
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 /mountpointPer eliminare il Memory Disk, si usano, dopo aver smontato l'immagine, le opzioni -d -u di mdconfig(8):
# mdconfig -d -u 0
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 un live cd come FreeSBIE oppure con il cd 2 della nostra -RELEASE, e lanciamo il comando
# boot0cfg -B /dev/ad0La man page di boot0cfg(8) fornisce moltissime informazioni riguardo le opzioni che possono essere passate a questo comando.
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.
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.
Quel messaggio viene chiamato motd ossia Message of The Day. Per cambiare il testo visualizzato è sufficiente editare a piacimento il file /etc/motd.
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...
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: flag@gufi.org 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.0Questo comando esegue la ricerca di wmnd tra i nomi di tutti i ports, e se trova risultati, li mostra indicandone:
Entriamo quindi nella directory del port indicata dal campo Path: ed esaminiamo il suo contenuto:
# cd /usr/ports/net/wmnd # ls Makefile README.html distinfo pkg-descr pkg-message pkg-plistMakefile 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 distcleanOra 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/.
È 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 wmndIl pacchetto precompilato verrà scaricato ed installato. Se si ha già il pacchetto disponibile sul proprio computer è sufficiente
# pkg_add pacchetto
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.7Il pacchetto wmnd sarà completamente rimosso dal nostro sistema.
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 "<"Ora che sappiamo quali pacchetti aggiornare, vediamo come procedere all'aggiornamento in entrambi i modi, con portupgrade e con le utilità del sistema base.
Per aggiornare un singolo pacchetto con portupgrade, è sufficiente un
# portupgrade wmndIl 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 -FPuò risultare utile per il buon funzionamento di portupgrade anche mantenere aggiornato il database dei ports con
# portsdb -uUQuesto 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=yesMolte 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.
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.
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.
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 +remotoOra 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:0oppure, se usiamo una shell C:
remoto:~% setenv DISPLAY locale:0Ora, 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 yesFatto ciò aggiungiamo la riga
ForwardX11 yesal 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.
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
#tar zxf NVIDIA_FreeBSD-X.Y-WZKH.tar.gz #cd NVIDIA_FreeBSD-X.Y-WZKH #make setupL'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"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.
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.
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 ([11]). 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 -configuree troveremo ora un file XF86Config.new nella home directory dell'utente root; per testarlo basta lanciare
#XFree86 -xf86config /root/XF86Config.newSe 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:
Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model" Horizsync 37-70 Vertrefresh 50-120 EndSectionOra 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 EndSectionX 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.
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.
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.passwdCrack cercherà ora di scoprire le password di tutti gli utenti del sistema in base alle informazioni GECOS [12] . Eseguendo
#./Reporter -quietsapremo 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 *.bak deste 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-mergedNaturalmente questa è solo una delle precauzioni da prendere per evitare ospiti indesiderati nel nostro sistema.
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_LDTLa 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 DMA[13] 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=4Le 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/acd0cquindi creiamo 2 link simbolici:
#ln -s /dev/acd0c /dev/dvd #ln -s /dev/racd0c /dev/rdvdDopo 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.
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=trueQuindi, nel nostro file di configurazione del kernel, mettiamo
options IPFW2e ricompiliamo il kernel. Subito dopo il riavvio del sistema, entriamo nella directory /usr/src/sbin/ipfw e lanciamo
#make && make install && make cleanpoi 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)
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/.
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 -Bse vogliamo convertire in formato wav tutto il disco, oppure, per solo alcune brani:
#cdda2wav -D /dev/acd0c -t 4Il 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.mp3Il 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.
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 Ridge[14], Joliet[15] o HFS[16], 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)
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.
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 /dev/acd0c/ : specifica il device del masterizzatore -s N : specifica la velocita di NX -v : stampa un numero maggiore di informazioni su ciò che sta eseguendo il programma -e : una volta finito di scrivere il cd, lo espellePer 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 fixateLa man page di burncd è molto chiara e saprà chiarire qualsiasi dubbio.
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.isoL'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).
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.
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=2352Naturalmente 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).
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.cdroppure, partendo da file in formato WAV:
# lame --decode -t file.wav file.cdrNaturalmente questo serve solo per i masterizzatori ATAPI, in quanto i programmi per quelli SCSI accettano file in formato WAV.
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 ... fixateoppure
# cdrecord -v dev=2,0 -dao -useinfo *.wave 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).
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®, quindi dopo averlo scaricato, eseguiamolo come utente root:
# sh linuxq3point-X.YZ.x86.runSpecifichiamo 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/baseq3e, se vogliamo giocare anche alla modalità Team Arena:
# cp /mnt/cdrom/Setup/missionpack/pak0.pk3 /usr/local/games/quake3/missionpackFatto questo occorre ricompilare il kernel assicurandoci di avere la seguente opzione:
options SYSVSHMDurante 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 "extmod" Load "glx" Load "dri" Load "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
% quake3serve per lanciare il gioco.
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.
Avvertimento I 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
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 paperinonel caso la nostra mail fosse
<paperino@paperopoli.com>
. 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 paperinikOgni 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.
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: donechsh(1) serve anche a molte altre cose: lanciato senza argomenti ci permette di modificare le informazioni GECOS dell'utente.
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 PPPoA[17] supportata da FreeBSD, grazie ai driver scritti da Benoit Papillault. Un'ottima e completa guida per configuare questo modem si trova nella pagina ufficiale dei driver.
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=trueL'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.
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:
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.
[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 |
[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. |
[11] |
In inglese, la pronuncia di XFree86 è molto simile a quella di X386. Effettivamente i fondatori del progetto XFree86, lavoravano alla sezione X386 di X11. |
[12] |
Acronimo di General Electric Comprehensive Operating System, sono le informazioni sugli utenti reperibili dal file master.passwd. |
[13] |
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. |
[14] |
Le estensioni Rock Ridge servono per creare un filesystem ISO9660 che segua le stesse regole dei normali filesystem UNIX. |
[15] |
Le estensioni Joliet sono usate per i cd che verranno utilizzati anche su sistemi Microsoft e impongono particolari limitazioni al filesystem. |
[16] |
Il filesystem HFS viene usato sui sistemi MacOS. |
[17] |
PPPoA: Point to Point Protocol over ATM. |