Sei sulla pagina 1di 92

Manuale Gentoo Linux AMD64

Sven Vermeulen Autore Grant Goodyear Autore Roy Marples Autore Daniel Robbins Autore Chris Houser Autore Jerry Alexandratos Autore Seemant Kulleen Sviluppo x86 Tavis Ormandy Sviluppo Alpha Jason Huebel Sviluppo AMD64 Guy Martin Sviluppo HPPA Pieter Van den Abeele Sviluppo PPC Joe Kallar Sviluppo SPARC John P. Davis Redazione Pierre-Henri Jondot Redazione Eric Stockbridge Redazione Rajiv Manglani Redazione Jungmin Seo Redazione Stoyan Zhekov Redazione Jared Hudson Redazione Colin Morey Redazione Jorge Paulo Redazione Carl Anderson Redazione Jon Portnoy Redazione Zack Gilburd Redazione Jack Morgan Redazione Benny Chuang Redazione Erwin Redazione Joshua Kinard Redazione Tobias Scherbaum Redazione Xavier Neys Redazione Joshua Saddler Redazione Gerald J. Normandin Jr. Revisione Donnie Berkholz Revisione Ken Nowack Revisione Lars Weiler Contributi Marco Mascherpa Traduzione Stefano Pacella Traduzione Enrico Morelli Traduzione Davide Cendron Traduzione Aggiornato il 14 novembre 2010 La versione originale di questo documento pi recente ed stata aggiornata il 5 novembre 2011 Indice: Installazione di Gentoo In questa parte si tratta dell'installazione di Gentoo Linux su un sistema. 1. A proposito dell'installazione di Gentoo Questo capitolo introduce il metodo di installazione trattato in questo manuale. 2. Scelta della modalit di installazione Gentoo Linux pu essere installato in vari modi: in questo capitolo si illustra come

installare Gentoo con il CD di installazione minimale. 3. Configurazione della rete Per poter scaricare gli ultimi codici sorgenti, necessario configurare la rete. 4. Preparazione dei dischi Per poter installare Gentoo necessario creare delle partizioni. Questo capitolo descrive come partizionare un disco. 5. Copia dei file di installazione di Gentoo L'installazione Gentoo funziona tramite un file chiamato stage3. Il capitolo tratta dell'estrazione dell'archivio stage3 e della configurazione di Portage. 6. Installazione del sistema base Gentoo Dopo la configurazione e l'installazione di uno stage3, il risultato finale un sistema base Gentoo a disposizione dell'utente. Il capitolo descrive come arrivare a questo punto. 7. Configurazione del Kernel Il kernel di Linux il cuore di ogni distribuzione. Il capitolo tratta della configurazione del Kernel. 8. Configurazione del sistema E' necessario modificare alcuni importanti file di configurazione. In questo capitolo si d una panoramica di questi file e dei cambiamenti da eseguire. 9. Installazione degli strumenti di sistema Questo capitolo riguarda la scelta della versione e l'installazione degli strumenti di sistema. 10.Configurazione del Bootloader In questo capitolo sar descritto il Bootloader GRUB, e si vedr la sua configurazione in base alle proprie necessit. 11.Termine dell'installazione Gentoo E' quasi finita. Si creano uno o pi utenti nel nuovo sistema. 12.Cosa fare adesso? Il sistema Gentoo pronto, e adesso? Lavorare con Gentoo Si comincia a lavorare con Gentoo: installare software, impostare parametri, cambiare il comportamento di portage ecc. 1. Una introduzione di Portage Questo capitolo spiega i "semplici" passi che un utente dovrebbe conoscere per mantenere il software del proprio sistema. 2. Flag USE Le flag USE sono un aspetto molto importante di Gentoo. In questo capitolo, si spiega come lavorare con le flag USE e comprendere come queste interagiscono con il sistema. 3. Caratteristiche di Portage Il sistema Portage di Gentoo mette a disposizione diverse caratteristiche di personalizzazione, come il tempo di compilazione. Questo capitolo illustra le attuali possibilit. 4. Initscripts Gentoo usa un formato speciale di initscript che, tra le altre caratteristiche, permette risoluzioni guidate delle dipendenze e initscript virtuali. Questo capitolo spiega tutti questi aspetti e spiega come utilizzare questi script.

5. Variabili di ambiente Con Gentoo si possono controllare facilmente le variabili di ambiente per il sistema. Questo capitolo spiega come farlo e descrive anche le variabili utilizzate con maggior frequenza. Lavorare con Portage "Lavorare con Portage" offre una completa panoramica di Portage, il sistema di gestione dei pacchetti caratteristico di Gentoo. 1. File e directory Una volta che si conosce a fondo Portage, necessario sapere dove memorizza i propri file e dati. 2. Configurazione e variabili Portage completamente configurabile attraverso l'uso di variabili impostate in file di configurazione o in variabili ambiente. 3. Combinare Software affidabile e non Gentoo fornisce software separato in alcune branche a seconda della stabilit e architettura supportata. "Mixare branche software" d informazioni su come possono essere configurate queste branche e come sia possibile separare queste branche individualmente. 4. Ulteriori strumenti di Portage Portage fornisce alcuni strumenti extra che possono migliorare la gestione di Gentoo. La lettura fornisce informazioni sull'utilizzo di dispatch-conf ed altri strumenti. 5. Separarsi dalla collezione di software originale "Deviare dall'albero ufficiale" mostra alcuni trucchi e suggerimenti su come utilizzare il proprio albero del Portage, come sincronizzare solo alcune categorie, fare l'inject dei pacchetti ed altro ancora. Configurazione di rete di Gentoo Una guida esaustiva alla configurazione di rete in Gentoo. 1. Configurazione comune Una guida per far funzionare rapidamente la propria connessione di rete nella maggior parte dei casi. 2. Configurazione Avanzata La guida di riferimento per capire come funziona la configurazione, un prerequisito per capire le impostazioni modulari. 3. Impostazioni modulari Gentoo fornisce delle impostazioni di rete flessibili, dando la possibilit di scegliere diversi client DHCP, impostare bonding, bridging, VLAN ed altro. 4. Reti Wireless La configurazione delle reti Wireless potrebbe essere complessa, comunque questa guida cercher di aiutare il lettore a farle funzionare! 5. Ulteriori funzionalit Per gli esperti ecco le istruzioni per personalizzare l'infrastruttura di rete. 6. Gestione della rete Per i portatili o per chi cambia frequentemente rete.

A. Installazione di Gentoo
1. A proposito dell'installazione di Gentoo
1.a. Introduzione Benvenuto Innanzitutto un caldo benvenuto a Gentoo. Si sta per entrare nel mondo delle possibilit e delle prestazioni. Tutto Gentoo gira intorno alle possibilit. Durante l'installazione di Gentoo questo concetto viene chiarito pi volte; possibile scegliere quanto si voglia compilare autonomamente, come installare Gentoo, che logger di sistema utilizzare, e molto altro. Gentoo una veloce e moderna metadistribuzione con una architettura semplice e flessibile. Gentoo stata costruita con software libero e non nasconde agli utenti i meccanismi che ne stanno alla base. Portage, il sistema di gestione dei pacchetti utilizzato da Gentoo, scritto in Python: semplice quindi esaminare e modificare il sorgente. Il sistema di pacchetti di Gentoo basato sui sorgenti, sebbene sia anche compreso il supporto per precompilati, e la configurazione di Gentoo avviene tramite semplici file di testo. In altre parole tutto alla luce del sole. E' molto importante comprendere che le scelte sono ci che sta alla base di Gentoo. L'obiettivo di non forzare mai l'utente a qualcosa che non desidera. Nel caso sia abbia un'impressione diversa possibile segnalarlo. Struttura dell'installazione L'installazione di Gentoo pu essere divisa in una procedura di dieci passi elementari, corrispondenti ai capitoli 2-11. Ogni passo ha come risultato uno stato intermedio: Al termine del passo 1, pronto l'ambiente di lavoro per l'installazione di Gentoo Al termine del passo 2, stata configurata la connessione ad internet per l'installazione Al termine del passo 3, gli hard disk sono stati inizializzati ad accogliere l'installazione Gentoo Al termine del passo 4, l'ambiente di installazione pronto e si effettua il chroot all'interno di quest'ultimo Al termine del passo 5, i pacchetti di sistema, identici per ogni genere di installazione, sono stati installati Al termine del passo 6, stato configurato il kernel Al termine del passo 7, sono stati scritti la maggior parte dei file di configurazione Gentoo Al termine del passo 8, sono stati installati una serie di strumenti di sistema, da scegliere da una lista Al termine del passo 9, il proprio bootloader preferito stato installato e configurato e si ha a disposizione il proprio ambiente Gentoo Al termine del passo 10, si pronti ad utilizzare Gentoo Al momento in cui si presenta una scelta viene fatto il possibile per illustrare quali siano i pro e i contro. La guida continua con una scelta predefinita, identificata come "Predefinito:" nel titolo. Le restanti possibilit vengono indicate come "Alternativa: ". La scelta predefinita in generale non quella raccomandata, tuttavia quella che si pensa venga usata dalla maggior parte degli utenti. A volte pu essere intrapreso un passo opzionale. In questo caso il passo viene segnato come "Opzionale:" e non dunque indispensabile per l'installazione di Gentoo. In ogni caso alcuni

passi opzionali dipendono strettamente da decisioni prese in precedenza. Viene quindi messa in luce la questione in tali occasioni, sia prima che venga intrapresa la scelta, sia prima della descrizione del passo opzionale. Quali sono le opzioni? Si pu installare Gentoo in molti modi differenti. Si pu scaricare e installare da uno dei CD di installazione, da una distribuzione gi installata, da un CD avviabile non Gentoo (come Knoppix), da un ambiente avviato via rete, da un floppy, ecc. Questo documento tratta dell'installazione tramite un CD di Installazione di Gentoo e in alcuni casi boot via rete. Nelle istruzioni di installazione si presuppone che si desideri installare l'ultima versione disponibile di ogni pacchetto. Nota: For help on the other installation approaches, including using non-Gentoo CDs, please read our Alternative Installation Guide. Per un aiuto riguardo agli altri metodi d'installazione, incluso l'utilizzo di CD non Gentoo, si prega di leggere la nostra Guida ai metodi di installazione alternativi. Per effettuare una installazione in assenza di un collegamento ad Internet possibile consultare il Manuale Gentoo 2008.0 che contiene le istruzioni per l'installazione in ambiente senza collegamento ad Internet. Notare inoltre che se si pensa di utilizzare la GRP (Gentoo Reference Platform, un insieme di pacchetti precompilati da utilizzare subito dopo l'installazione) indispensabile seguire le informazioni del Manuale Gentoo 2008.0. inoltre disponibile una raccolta di suggerimenti che potrebbero essere una lettura altrettanto utile. Per gli utenti Gentoo esperti che necessitano solamente di una breve lista di controllo per i vari passaggi dell'installazione disponibile una guida pi rapida disponibile nella pagina della documentazione ufficiale. Sono disponibili molte altre opzioni: si pu compilare il sistema da zero o utilizzare un ambiente precompilato per ottenere un ambiente di Gentoo funzionante in poco tempo. E naturalmente esistono soluzioni intermedie in cui non si compila tutto quanto ma si inizia da un sistema semi-pronto. Problemi Se durante l'installazione o nella documentazione si riscontrassero dei problemi possibile consultare il sistema di gestione dei bug e, nel caso non fosse un problema gi noto, segnalarlo per una rapida soluzione. Non c' motivo di temere la reazione degli sviluppatori a cui vengono assegnati i bug: sono innocui. Notare che, nonostante il presente documento sia specifico per ogni architettura, non mancano riferimenti ad altre architetture. Questo avviene a causa del fatto che diverse parti del manuale sono comuni a tutte le architetture per evitare duplicazioni e problemi vari. L'intento comunque quello di limitare i riferimenti alle altre architetture per evitare confusioni. Se, nonostante l'attenta lettura del manuale, non ben chiaro se il problema riguardi un errore dell'utente, o un bug software, cosa effettivamente plausibile nonostante i numerosi test, possibile entrare nel canale #gentoo su irc.freenode.net. Ovviamente si sempre benvenuti! Se ci fossero domande riguardanti Gentoo, possibile consultare l'elenco delle Domande frequenti, disponibili nella Documentazione Gentoo. E' possibile inoltre sfruttare le FAQ disponibili sui forum. Se ancora il dubbio rimanesse irrisolto si pu entrare in #gentoo su irc.freenode.net dove parecchi esperti sono sempre disponibili.

2. Scelta della modalit di installazione


2.a. Richieste Hardware Introduzione

Prima ancora di cominciare vengono elencate le richieste hardware necessarie per installare Gentoo sulla propria macchina. Requisiti Hardware CD Minimale LiveCD Tutte le CPU AMD64 o EM64T (i processori Core 2 Duo & Quad sono CPU EM64T) Memoria 64 MB 256 MB Spazio su disco 1.5 GB (escluso lo spazio per swap) Spazio per Almeno 256 MB swap Si dovrebbe controllare la Gentoo AMD64 Project Page prima di continuare. 2.b. I CD di Installazione Gentoo Introduzione I CD di Installazione Gentoo sono CD avviabili che contengono un ambiente Gentoo autonomo. Consentono di avviare Linux da CD. Durante il processo di boot viene rilevato l'hardware e vengono caricati i relativi driver. I CD vengono mantenuti dagli sviluppatori Gentoo. Tutti i CD di Installazione consentono di avviare, configurare la rete, inizializzare le partizioni e iniziare l'installazione di Gentoo da Internet. CD di Installazione Gentoo Minimale L'immagine del CD di Installazione minimale si chiama install-amd64-minimal<release>.iso ed occupa solo 119MB di spazio. possibile utilizzarlo per installare Gentoo ma solo nel caso si disponga di una connessione ad Internet. Lo Stage3 Un archivio stage3 un tar che contiene un ambiente Gentoo minimale, fatto apposta per continuare l'installazione Gentoo, come indicato in questo manuale. In precedenza il Manuale Gentoo descriveva l'installazione mediante l'utilizzo di uno dei tre stage disponibili. Adesso per, pur continuando ad essere disponibili tutti e tre gli stage, il metodo ufficiale di installazione adotta lo stage3. Se si interessati a condurre una installazione Gentoo utilizzando un archivio stage1 o stage2 possibile consultare le Domande frequenti (FAQ) su Gentoo alla voce Come installare Gentoo mediante uno stage1 o stage2. Gli archivi stage3 possono essere scaricati da releases/amd64/autobuilds/currentstage3/ in uno qualsiasi dei Mirror ufficiali Gentoo e non vengono forniti sul LiveCD. 2.c. Scaricare, masterizzare ed avviare un CD di Installazione Gentoo Scaricare e masterizzare i CD di Installazione Questa la sezione che tratta l'utilizzo di un CD di Installazione Gentoo. Si inizia scaricando uno dei differenti set di CD a cui si accennato. possibile scaricare qualsiasi CD di Installazione da uno dei mirror di Gentoo. Il CD di Installazione risiedono nella directory releases/amd64/autobuilds/current-iso/. All'interno della directory segnalata si possono trovare le ISO. Si tratta di immagini complete di CD che si possono masterizzare. Nel caso che si voglia controllare l'integrit del file che si scaricato, possibile controllare il checksum MD5 e confrontarlo con quelli forniti (come install-amd64-minimal<release>.iso.DIGESTS). Si pu controllare il checksum con lo strumento md5sum sotto Linux/Unix o con md5sum per Windows. Un altro modo di controllare la validit del file scaricato di utilizzare GnuPG per verificare la

firma che viene fornita insieme ad esso. (il file con estensione .asc). Scaricare il file con la firma e procurarsi la chiave pubblica: Codice 3.1: Ottenere la chiave pubblica
$ gpg --keyserver subkeys.pgp.net --recv-keys 2D182910

Verificare la firma: Codice 3.2: Verificare i file


(Verificare la firma crittografata) $ gpg --verify <downloaded iso.DIGESTS.asc> (Verificare il checksum) $ sha1sum -c <downloaded iso.DIGESTS.asc>

Per masterizzare l'immagine ISO scelta necessario scegliere la modalit RAW. Come impostarla dipende dal programma: seguono le istruzioni per cdrecord e K3B; ulteriori informazioni possono essere reperite nelle Domande frequenti su Gentoo. Con cdrecord, scrivere semplicemente cdrecord dev=/dev/hdc <file iso scaricato> (dove /dev/hdc la periferica del masterizzatore) Con K3B, selezionare Tools > Burn CD Image (Strumenti > Scrivi immagine CD se localizzato in italiano, ndt). Si pu individuare il file ISO nell'area 'Image to Burn' ('Immagine da scrivere', ndt). Poi cliccare suStart (Avvia, ndt). Avviare i CD di Installazione Una volta masterizzati i CD di installazione tempo di avviare. Riavviare il sistema ed entrare nel BIOS, di solito premendo i tasti DEL, F1 o ESC a seconda della marca del BIOS. All'interno del BIOS cambiare l'ordine del boot in modo tale che il CD-ROM preceda l'hard disk. Spesso questa opzione si trova sotto "CMOS Setup". Nella maggior parte dei casi saltare questo passo porta a non poter bootare direttamente da CD. Inserire il CD di installazione nel lettore CD-ROM e riavviare il sistema. Dovrebbe comparire una graziosa schermata con il logo di Gentoo Linux. A questo punto, premendo invio possibile far partire il processo di boot con le opzioni predefinite oppure far avviare il CD di Installazione con opzioni personalizzate specificando un kernel seguito dalle opzioni desiderate e premendo invio. Vengono forniti diversi kernel sui CD di Installazione. Quello predefinito gentoo. Esistono altri kernel per esigenze hardware specifiche e la variante -nofb che disabilita il framebuffer. Di seguito possibile consultare una breve descrizione per ognuno dei kernel disponibili: Descrizione Kernel predefinito con supporto per CPU K8 con NUMA ed gentoo EM64T gentoo-nofb Come gentoo ma senza supporto framebuffer memtest86 Avvia un controllo della memoria RAM possibile anche selezionare opzioni per il kernel. Si tratta di direttive particolari che possono essere attivate o meno a piacere. Opzioni hardware: acpi=on Carica il supporto per ACPI e attiva l'avvio del demone insieme al CD. L'opzione necessaria solo se il sistema necessita di ACPI per funzionare correttamente. Non necessario per il supporto Hyperthreading. acpi=off Disabilita completamente ACPI. utile su alcuni sistemi un po' datati ed prerequisito per utilizzare APM. L'opzione disabilita il supporto Hyperthreading del processore. console=X Imposta una console seriale per il CD. La prima opzione la periferica, di solito ttyS0 su Kernel

x86, seguita da ulteriori opzioni di connessione, separate da virgola. Le opzioni predefinite sono 9600,8,n,1. dmraid=X Consente il passaggio di opzioni al sistema device-mapper RAID. Le opzioni devono essere passate tra virgolette. doapm Carica il driver APM. prerequisito che sia impostato acpi=off. dopcmcia Carica il supporto per hardware PCMCIA e Cardbus e imposta l'avvio automatico sul CD del pcmcia cardmgr. richiesto solo quando si sta effettuando il boot da periferiche PCMCIA/Cardbus. doscsi Carica il supporto per la maggior parte di controller SCSI. prerequisito per effettuare il boot da molte periferiche USB, visto che utilizzano il supporto SCSI del kernel. sda=stroke Consente di partizionare l'intero disco fisso anche quando il BIOS non in grado di vedere dischi grandi. Questa opzione viene usata solo su macchine con BIOS vecchio. Sostituire sda con la periferica che richiede l'opzione. ide=nodma Forza a disabilitare il DMA nel kernel ed necessario per alcuni chipset IDE e alcuni lettori CDROM. Se il sistema ha problemi a leggere dal CDROM possibile provare quest'opzione. Disabilita inoltre le impostazioni predefinite di hdparm. noapic Disabilita l'Advanced Programmable Interrupt Controller che presente sulle schede madri pi recenti. Sembra che abbia alcuni problemi con hardware pi vecchio nodetect Disabilita tutta la fase di rilevazione da parte del CD, tra cui la rilevazione delle periferiche e il DHCP. utile per il debugging di un CD o un driver non funzionante nodhcp Disabilita la ricerca DHCP per le interfacce di rete rilevate. Utile per le reti con indirizzi IP statici. nodmraid Disabilita il supporto per il device-mapper RAID, come quello usato per il controller IDE/SATA RAID onboard nofirewire Disabilita il caricamento dei moduli Firewire. Dovrebbe essere necessario solo se l'hardware Firewire causa di problemi in fase di boot nogpm Disabilita il mouse in console via gpm nohotplug Disabilita l'esecuzione degli script hotplug e coldplug al boot. Utile per il debug di un driver o un CD difettoso. nokeymap Disabilita la selezione della keymap per configurazioni non US. nolapic Disabilita l'APIC locale su kernel monoprocessore. nosata Disabilita il caricamento dei moduli Serial ATA. Da usare se il proprio sistema ha problemi con il sottosistema SATA. nosmp Disabilita SMP, il Symmetric Multiprocessing, su kernel che lo supportano. utile per il debug di problemi SMP per specifiche schede madri e driver. nosound Disabilita il supporto per il suono e il volume. Utile nei casi in cui il suono causa problemi.

nousb Disabilita il caricamento automatico dei moduli USB, utile per il debug di problemi con USB slowusb Aggiunge pause extra nel processo di boot per CDROM USB lenti, come quelli contenuti nei BladeCenter di IBM. Gestione dei Volumi e delle periferiche: doevms Abilita il supporto per l'EVMS di IBM, conosciuto anche come Enterprise Volume Management System. Non consigliato per l'utilizzo con lvm. dolvm Abilita il supporto per il Logical Volume Management di Linux. Da non abilitarsi con evms. Altre opzioni: debug Abilita la modalit di debug. L'opzione pu confondere in quanto provoca la visualizzazione di grosse quantit di testo a video. docache Produce l'archiviazione in cache dell'intera parte runtime del CD in RAM, in modo da consentire di smontare /dev/cdrom e montarne un altro. L'opzione richiede di avere almeno il doppio della RAM rispetto alla dimensione del CD. doload=X Consente al ramdisk iniziale di caricare tutti i moduli elencati oltre alle dipendenze. Sostituire X con il nome del modulo. Possono essere specificati diversi moduli separati da virgola. dossh Avvia sshd al boot, utile per installazioni non presidiate. passwd=foo Imposta la password di root al valore specificato dopo il segno di uguale, richiesto da sshd in quanto la password viene offuscata. noload=X Impedisce al ramdisk iniziale il caricamento di un modulo specifico che potrebbe causare problemi. La sintassi la medesima di doload. nonfs Disabilita l'avvio di portmap/nfsmount al boot. nox Impedisce ai LiveCD con X di caricare l'interfaccia grafica e propone direttamente l'interfaccia testuale. scandelay Forza il CD a effettuare pause di 10 secondi durante alcune parti del processo di boot per consentire alle periferiche lente di caricarsi correttamente. scandelay=X Consente di specificare un adeguato ritardo in secondi da aggiungere in alcune parti del processo di boot per consentire alle periferiche lente di caricarsi correttamente. Sostituire X con il numero di secondi di pausa. Nota: Il CD controller le opzioni "no*" prima di quelle "do*", si avr cos il modo di sovrascrivere qualsiasi opzione nell'esatto ordine impartito. Adesso possibile avviare il CD selezionando il kernel (se non si vuole utilizzare quello predefinito) e le opzioni di boot. Ad esempio ecco come avviare il kernel gentoo, con il parametro dopcmcia: Codice 3.3: Avviare un CD di Installazione

boot: gentoo dopcmcia

Si dovrebbe presentare ora un altra schermata con una barra che indica lo svolgersi delle operazioni. Se si sta installando Gentoo su un sistema privo di tastiera statunitense, assicurarsi di premere Alt-F1 per passare alla modalit testuale e seguire le operazioni. Se non viene selezionato nulla, dopo 10 secondi viene automaticamente scelta la tastiera statunitense ed il boot continua. Una volta completato il processo di boot si automaticamente nell'ambiente Live di Gentoo come "root", l'utente amministratore. Ci dovrebbe essere un prompt di root a schermo ("#") e dovrebbe essere possibile passare ad altre console premendo Alt-F2, Alt-F3 e Alt-F4 e tornare alla precedente premendo Alt-F1. Continuare ora con la configurazione dell'hardware aggiuntivo. Configurazione dell'hardware aggiuntivo Al momento del boot il CD prova a rilevare tutte le periferiche hardware e caricare i corrispondenti moduli del kernel di supporto. Nella grande maggior parte dei casi l'operazione va a buon fine. A volte per potrebbero non essere caricati tutti i moduli necessari. Se la rilevazione automatica PCI ha saltato qualche periferica, necessario caricare manualmente il modulo corrispondente. Nel seguente esempio si prova a caricare il modulo 8139too (che supporta un certo tipo di interfacce di rete): Codice 3.4: Caricamento dei moduli del kernel
# modprobe 8139too

Opzionale: Account utente Se si pensa di dare accesso ad altri al proprio ambiente di installazione o si desidera chattare usando irssi senza i privilegi di amministrazione per motivi di sicurezza, necessario creare gli opportuni account utente e cambiare la password di root. Per cambiare la password di root utilizzare l'utilit passwd: Codice 3.5: Cambiare la password di root
# passwd New password: (Inserire la nuova password) Re-enter password: (Inserire nuovamente la nuova password)

Per creare un account utente necessario inserire i suoi dati seguiti dalla sua password. possibile utilizzare useradd e passwd per farlo, come mostra il prossimo esempio in cui si crea l'utente "john". Codice 3.6: Creare un account utente
# useradd -m -G users john # passwd john New password: (Inserire la password di john) Re-enter password: (Inserire nuovamente la password di john)

possibile dunque cambiare utente da root al nuovo utente tramite su: Codice 3.7: Cambiare utente
# su - john

Opzionale: Consultare la documentazione durante l'installazione Se si desidera visualizzare il manuale Gentoo durante l'installazione, bisogna assicurarsi di aver creato un account utente (consultare la sezione Opzionale: Account utente), premere poi Alt-F2 per passare ad un nuovo terminale ed inserire le credenziali. possibile leggere il manuale usando links, ma solo dopo aver completato le fasi descritte nel capitolo riguardante la Configurazione di rete (in caso contrario potrebbe non essere disponibile la connessione): Codice 3.8: Visualizzare la documentazione online
# links http://www.gentoo.org/doc/it/handbook/handbook-amd64.xml

ora possibile tornare al terminale originale premendo Alt-F1.

Opzionale: Avviare un demone SSH Se si desidera consentire ad altri utenti l'accesso al pc durante l'installazione di Gentoo (magari perch qualcuno di essi potrebbe essere di aiuto o addirittura condurre personalmente l'installazione), necessario creare un account per ciascuno di essi o condividere con loro la password di root (solo se si confida pienamente in tale utente). Per avviare il demone SSH, eseguire il seguente comando: Codice 3.9: Avviare il demone SSH
# /etc/init.d/sshd start

Per utilizzare sshd per prima necessario configurare la rete. Passare ora al capitolo riguardante la Configurazione della rete.

3. Configurazione della rete


3.a. Rilevamento automatico della rete Potrebbe gi funzionare Se il sistema collegato ad una rete Ethernet attraverso un server DHCP, molto probabile che la configurazione di rete sia gi stata completata automaticamente. In questo caso gi possibile usufruire dei vari comandi di rete inclusi nel CD di Installazione quali ssh, scp, ping, irssi, wget, links e molti altri. Se la rete gi stata configurata il comando /sbin/ifconfig dovrebbe elencare alcune interfacce di rete oltre a lo, come ad esempio eth0: Codice 1.1: Output di /sbin/ifconfig per una configurazione corretta
# /sbin/ifconfig (...) eth0 Link encap:Ethernet HWaddr 00:50:BA:8F:61:7A inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::50:ba8f:617a/10 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0 TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0 collisions:1984 txqueuelen:100 RX bytes:485691215 (463.1 Mb) TX bytes:123951388 (118.2 Mb) Interrupt:11 Base address:0xe800

Opzionale: Configurare i Proxy

Se l'accesso a Internet avviene attraverso un proxy, si potrebbe aver bisogno di configurare i parametri del proxy durante l'installazione. E' molto facile definire un proxy: basta definire una variabile che contiene le informazioni del server proxy. Nella maggior parte dei casi, si definisce la variabile usando l'hostname del server. Ad esempio, si assuma che il proxy sia chiamato proxy.gentoo.org e che la porta sia la 8080. Codice 1.2: Definire i server proxy
(Se il proxy filtra il traffico HTTP) # export http_proxy="http://proxy.gentoo.org:8080" (Se il proxy filtra il traffico FTP) # export ftp_proxy="ftp://proxy.gentoo.org:8080" (Se il proxy filtra il traffico RSYNC) # export RSYNC_PROXY="rsync://proxy.gentoo.org:8080"

Se il proxy richiede una username e una password, si dovrebbe usare la seguente sintassi per la variabile: Codice 1.3: Aggiungere username/password alla variabile del proxy
http://username:password@proxy.gentoo.org:8080

Testare la Rete

Potrebbe essere utile fare il ping sul server DNS dell'ISP (si pu trovare in /etc/resolv.conf) e su un sito Web a scelta, per assicurarsi che i pacchetti stiano raggiungendo la rete, che la risoluzione dei domi di dominio stia funzionando correttamente,

eccetera. Codice 1.4: Ulteriore test della rete


# ping -c 3 www.gentoo.org

La rete funzionante? Se cos, si pu saltare il resto di questa sezione e continuare con la Preparazione dei Dischi. Se non cos, sfortunatamente, si deve proseguire in altro modo. 3.b. Configurazione Automatica della Rete Se la rete non funziona immediatamente, alcune modalit di installazione permettono di usare net-setup (per le reti normali o wireless) o pppoe-setup (per gli utenti ADSL) o pptp (per gli utenti PPTP, disponibile solo per sistemi x86, amd64, alpha, ppc e ppc64). Se la modalit di installazione non prevede nessuno di questi strumenti o la rete non funziona ancora, continuare con la Configurazione Manuale della Rete. I normali utenti Ethernet dovrebbero continuare con Predefinito: Usare net-setup Gli utenti ADSL dovrebbero continuare con Alternativa: Usare PPP Gli utenti PPTP dovrebbero continuare con Alternativa: Usare PPTP Predefinito: Usare net-setup Il modo pi semplice di installare la rete se non configurata automaticamente eseguire lo script net-setup: Codice 2.1: Eseguire lo script net-setup
# net-setup eth0

net-setup pone alcune domande sull'ambiente di rete. Al termine si dovrebbe avere una connessione di rete attiva: verificare il collegamento. Se i test sono positivi, congratulazioni! Si pronti per installare Gentoo. Saltare il resto di questa sezione e continuare con la Preparazione dei Dischi. Se la rete ancora non funziona, continuare con la Configurazione Manuale della Rete. Alternativa: Usare PPP Se c' bisogno di PPPoE per connettersi a internet, il CD di Installazione (qualsiasi versione) rende le cose facili perch include ppp. Usare lo script fornito pppoe-setup per configurare la connessione. Viene richiesto di inserire il dispositivo Ethernet che collegato al modem adsl, lo username e la password, gli IP dei server DNS e se si ha bisogno un firewall di base o meno. Codice 2.2: Usare ppp
# pppoe-setup # pppoe-start

Se qualcosa andasse storto, ricontrollare di avere digitato correttamente lo username e la password controllando /etc/ppp/pap-secrets o /etc/ppp/chap-secrets e assicurarsi che il dispositivo ethernet che si sta utilizzando sia quello giusto. Se il dispositivo ethernet non esiste, si deve caricare il modulo appropriato di rete. In questo caso si dovrebbe continuare con la Configurazione Manuale della Rete dove si spiega come caricare l'appropriato modulo di rete. Se funziona tutto, continuare con la Preparazione dei Dischi. Alternativa: Usare PPTP Se si ha bisogno del supporto PPTP, si pu usare pptpclient, il quale viene fornito dal CD di Installazione. Prima per bisogna assicurarsi che la configurazione sia corretta. Modificare /etc/ppp/pap-secrets o/etc/ppp/chap-secrets in modo che contenga la corretta combinazione username/password: Codice 2.3: Modificare /etc/ppp/chap-secrets
# nano -w /etc/ppp/chap-secrets

Modificare se necessario /etc/ppp/options.pptp: Codice 2.4: Modificare /etc/ppp/options.pptp


# nano -w /etc/ppp/options.pptp

Quando si finito, eseguire pptp (con le opzioni che non si possono impostare in options.pptp) per connettere il server: Codice 2.5: Connessione a un server dial-in
# pptp <server ip>

Ora continuare con la Preparazione dei Dischi. 3.c. Configurazione Manuale della Rete Caricare gli Appropriati Moduli di Rete Quando si effettua il boot con il CD di Installazione, quest'ultimo prova a rilevare tutti i dispositivi hardware e carica i moduli (driver) appropriati del kernel per supportare l'hardware. Nella grande maggioranza dei casi, l'operazione ha successo. Tuttavia, in alcuni casi, potrebbe non caricare automaticamente i moduli del kernel di cui si ha bisogno. Se net-setup o pppoe-setup non dessero buoni risultati, si pu di sicuro supporre che la scheda di rete non sia stata trovata immediatamente. Ci significa che necessario caricare gli appropriati moduli del kernel manualmente. Per scoprire quali moduli del kernel sono disponibili per la rete, usare ls: Codice 3.1: Cercare i moduli disponibili
# ls /lib/modules/`uname -r`/kernel/drivers/net

Se si trova un driver per la scheda di rete, utilizzare modprobe per caricare il modulo del kernel: Codice 3.2: Utilizzare modprobe per caricare un modulo del kernel
(Come esempio, si carica il modulo pcnet32) # modprobe pcnet32

Per controllare se la scheda di rete stata rilevata, eseguire ifconfig. Una scheda di rete rilevata dovrebbe produrre un risultato simile a questo: Codice 3.3: Test della disponibilit della scheda di rete andato a buon fine
# ifconfig eth0 eth0 Link encap:Ethernet HWaddr FE:FD:00:00:00:00 BROADCAST NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

Se invece si riceve il seguente errore, la sheda di rete non rilevata: Codice 3.4: Test della disponibilit della scheda di rete non andato a buon fine
# ifconfig eth0 eth0: error fetching interface information: Device not found

Se si possiedono pi schede di rete nel sistema, esse vengono etichettate rispettivamente eth0, eth1, ecc. Assicurarsi che la scheda che si desidera utilizzare sia funzionante e ricordarsi di utilizzare il nome corretto nelle operazioni successive. Nel resto del documento si fa riferimento alla scheda eth0. Una volta rilevata una scheda di rete, si pu eseguire di nuovo net-setup o pppoesetup (che adesso dovrebbero funzionare), ma per i puristi ecco come configurare la rete a mano. Scegliere una delle seguenti sezioni a seconda della propria configurazione: Usare un DHCP per ottenere un IP automaticamente Configurare un accesso Wireless se si dispone di scheda wireless Terminologia di rete illustra ci che necessario conoscere a proposito delle tecnologie

di rete Usare ifconfig e route spiega come impostare la rete manualmente Usare un DHCP Il DHCP (Dynamic Host Configuration Protocol) rende possibile ricevere automaticamente le informazioni sulla rete (indirizzo IP, netmask, indirizzo broadcast, gateway, nameserver ecc.). Funziona soltanto se si ha un server DHCP nella rete (o se il provider fornisce un servizio DHCP). Per avere una interfaccia di rete che riceva queste informazioni automaticamente, utilizzare dhcpcd: Codice 3.5: Utilizzo di dhcpcd
# dhcpcd eth0 Alcuni amministratori di rete richiedono di utilizzare gli hostname e nomi di dominio forniti dal server DHCP. Nel caso utilizzare # dhcpcd -HD eth0

Se funziona (provare a pingare alcuni server internet, come Google), allora stato tutto configurato e si pronti per continuare. Saltare il resto di questa sezione e continuare con la Preparazione dei Dischi. Configurare un accesso Wireless Nota: Il comando iwconfig disponbile solo sui CD di Installazione per x86, amd64 e ppc. Se il CD non lo contenesse possibile comunque mettere in funzione la periferica seguendo le istruzioni del linux-wlan-ng project. Se si sta utilizzando una scheda wireless (802.11), potrebbe essere necessario configurare i parametri wireless prima di continuare. Per visualizzare gli attuali parametri wireless della propria scheda possibile utilizzareiwconfig. una esecuzione di iwconfig dovrebbe produrre un risultato simile al seguente: Codice 3.6: Visualizzazione dei parametri wireless
# iwconfig eth0 eth0 IEEE 802.11-DS ESSID:"GentooNode" Mode:Managed Frequency:2.442GHz Access Point: 00:09:5B:11:CC:F2 Bit Rate:11Mb/s Tx-Power=20 dBm Sensitivity=0/65535 Retry limit:16 RTS thr:off Fragment thr:off Power Management:off Link Quality:25/10 Signal level:-51 dBm Noise level:-102 dBm Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:237 Invalid misc:350282 Missed beacon:84

Nota: Alcune schede possono avere un nome come wlan0 o ra0 invece che eth0. E' possibile eseguire iwconfig senza parametri per visualizzare il nome esatto della periferica. Per la maggior parte degli utenti sono solo due i parametri importanti da impostare, l'ESSID (il nome della rete wireless) e la chiave WEP. Se l'ESSID e l'indirizzo dell'access point visualizzati sono corretti e non si utilizza WEP, la configurazione completa e funzionante. Se invece necessario cambiare ESSID o aggiungere una chiave WEP necessario eseguire i seguenti comandi: Nota: Se la propria rete wireless configurata con WPA o WPA2, bisogner usare wpa_supplicant. Per maggiori informazioni su come configurare le funzionalit di rete wireless in Gentoo Linux, leggere il capitolo Reti Wireless nel Manuale Gentoo. Codice 3.7: Cambiare ESSID o aggiungere una chiave WEP
(Il comando imposta l'ESSID a "GentooNode") # iwconfig eth0 essid GentooNode (Imposta una chiave WEP esadecimale) # iwconfig eth0 key 1234123412341234abcd (Imposta una chiave ASCII preceduta da "s:") # iwconfig eth0 key s:some-password

Ora possibile confermare le proprie impostazioni utilizzando iwconfig. Una volta che la rete wireless funzionante possibile continuare a configurare le impostazioni del livello IP descritte nella sezione successiva (Terminologia di rete) o utilizzare net-setup come descritto

in precedenza. Terminologia di Rete Nota: Se si conosce l'indirizzo IP, l'indirizzo broadcast, netmask e nameserver, allora si pu saltare questa sottosezione e continuare con la sezione su come Usare ifconfig e route. Se i tentativi precedenti falliscono, necessario configurare la rete manualmente. Non si deve aver paura, non difficile. Ma necessario spiegare un po' di concetti riguardanti la rete per potere essere capaci di configurarla correttamente. Questo paragrafo illustra brevemente cosa sia un gateway, a cosa serva la netmask, come sia formato un indirizzo broadcast e perch ci sia bisogno dei nameserver. In una rete, gli host sono identificati dai loro indirizzi IP (indirizzi Internet Protocol). Un indirizzo una combinazione di 4 numeri tra 0 e 255. Almeno cos lo percepiamo. In realt, un indirizzo IP consiste di 32 bit (1 e 0). Ecco un esempio: Codice 3.8: Esempio di un indirizzo IP
IP Address (numbers): IP Address (bit): 192.168.0.2 11000000 10101000 00000000 00000010 -------- -------- -------- -------192 168 0 2

Un indirizzo IP deve essere unico per ogni host perch le reti siano accessibili (in pratica tutti gli host che si possono raggiungere devono avere un indirizzo IP unico). Per potere fare una distinzione tra host dentro una rete, e host fuori una rete, l'indirizzo IP diviso in due parti: la parte di network e la parte di host. La separazione demarcata tramite la netmask, un insieme di 1 seguito da un insieme di 0. La parte di IP corrispondente agli 1 la parte di network, l'altra la parte di host. Di solito, la netmask pu essere scritta come un indirizzo IP. Codice 3.9: Esempio della separazione network/host
IP-address: Netmask: 192 168 0 2 11000000 10101000 00000000 00000010 11111111 11111111 11111111 00000000 255 255 255 0 +--------------------------+--------+ Network Host

In altre parole, 192.168.0.14 fa ancora parte della rete dell'esempio, ma 192.168.1.2 no. L'indirizzo broadcast un indirizzo IP con la stessa parte di network, ma con solo una parte di host. Ogni host sulla rete ascolta questo indirizzo IP. Serve per i pacchetti di broadcast. Codice 3.10: Indirizzo broadcast
IP-address: 192 168 0 2 11000000 10101000 00000000 00000010 Broadcast: 11000000 10101000 00000000 11111111 192 168 0 255 +--------------------------+--------+ Network Host

Per potere navigare su internet, necessario sapere quale host condivida la connessione a Internet. Questo host chiamato gateway. E' un normale host ed ha un normale indirizzo IP (per esempio 192.168.0.1). In precedenza si detto che ogni host ha il suo indirizzo IP. Per potere raggiungere questo host tramite un nome (anzich un indirizzo IP) necessario un servizio che traduce un nome (come dev.gentoo.org) in un indirizzo IP (come 64.5.62.82). Questo servizio chiamato name service. Per utilizzarlo si deve definire il nameserver in /etc/resolv.conf. In alcuni casi, il gateway serve come nameserver. Altrimenti si dovr inserire il nameserver fornito dall'ISP. Per riassumere, si ha bisogno delle seguenti informazioni prima di continuare: Elemento di rete Esempio Indirizzo IP 192.168.0.2

Netmask Broadcast Gateway Nameserver(s) Usare ifconfig e

255.255.255.0 192.168.0.255 192.168.0.1 195.130.130.5, 195.130.130.133 route

Installare la rete consiste di tre passi. Nel primo si assegna l'indirizzo IP con ifconfig. Nel secondo si configura il routing verso gateway con route. Nel terzo infine si inserisce l'IP dei nameserver in /etc/resolv.conf. Per assegnare un indirizzo IP, si avr bisogno dell'indirizzo IP da assegnare, dell'indirizzo broadcast e della netmask. Eseguire il seguente comando, sostituendo ${IP_ADDR} con l'indirizzo IP, ${BROADCAST} con l'indirizzo broadcast e ${NETMASK} con la netmask: Codice 3.11: Usare ifconfig
# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up

Ora installare il routing con route. Sostituire ${GATEWAY} con l'indirizzo IP del gateway: Codice 3.12: Usare route
# route add default gw ${GATEWAY}

Aprire /etc/resolv.conf con un editor qualsiasi (per esempio nano): Codice 3.13: Creare /etc/resolv.conf
# nano -w /etc/resolv.conf

Inserire i nameserver secondo il seguente esempio. Assicurarsi di sostituire $ {NAMESERVER1} e ${NAMESERVER2} con gli appropriati indirizzi dei nameserver: Codice 3.14: Esempio di /etc/resolv.conf
nameserver ${NAMESERVER1} nameserver ${NAMESERVER2}

Testare la rete con il ping di alcuni server Internet (come Google). Se funziona, congratulazioni, si pronti per installare Gentoo. Continuare con la Preparazione dei Dischi.

4. Preparazione dei dischi


4.a. Introduzione ai dispositivi a blocchi Dispositivi a blocchi Si d ora un'occhiata approfondita agli aspetti relativi ai dischi in Gentoo Linux e in Linux in generale, tra cui i filesystem Linux, le partizioni e i dispositivi a blocchi. Quindi, una volta acquisita familiarit con i dischi e i filesystem, si viene guidati attraverso il processo di configurazione delle partizioni e dei filesystem per l'installazione di Gentoo Linux. Per cominciare, si introducono i dispositivi a blocchi. Il dispositivo a blocchi pi famoso probabilmente quello che rappresenta la prima unit IDE in un sistema Linux, /dev/sda. I dischi SCSI e Serial ATA vengono entrambi etichettati come /dev/sd*; anche i dischi IDE sono etichettati come /dev/sd* con il nuovo framework libata nel kernel. Se si sta usando un vecchio framework per le periferiche, allora il primo disco IDE sar /dev/hda. I dispositivi a blocchi rappresentano un'interfaccia astratta ai dischi. I programmi utente possono usare questi dispositivi a blocchi per interagire con i dischi, senza doversi chiedere se si tratta di unit IDE, SCSI o di qualsiasi altro tipo. Il programma pu semplicemente indirizzare la memorizzazione su disco attraverso dei blocchi contigui, accessibili in modalit casuale, e di dimensione pari a 512 byte ciascuno. Partizioni Nonostante sia possibile usare un intero disco per il sistema Linux, ci non quasi mai messo in pratica. Invece, i dispositivi a blocchi del disco sono divisi in parti pi piccole e pi maneggevoli. Sui sistemi AMD64 queste parti sono chiamate partizioni.

Le partizioni sono divise in tre tipi: primarie, estese e logiche. Una partizione primaria una partizione che ha le sue informazioni memorizzate nel MBR (master boot record). Poich MBR molto piccolo (512 byte), possono essere definite solo quattro partizioni primarie (per esempio, da/dev/sda1 a /dev/sda4). Una partizione estesa una speciale partizione primaria (cio deve essere una delle quattro), che contiene altre partizioni. In origine non esisteva una tale partizione, ma poich quattro partizioni erano troppo poche, stata data la possibilit di estendere lo schema di formattazione senza perdere la compatibilit. Una partizione (volume) logica una partizione compresa dentro la partizione estesa. Le informazioni di una partizione logica non sono posizionate nel MBR, ma sono dichiarate nella partizione estesa. Memorizzazione avanzata dei dati I CD di Installazione AMD64 forniscono anche il supporto per EVMS e LVM2. EVMS e LVM2 aumentano la flessibilit della propria configurazione di partizioni. Durante le istruzioni di installazione ci si concentra sulle partizioni tradizionali ma opportuno sapere che anche EVMS e LVM2 sono supportati. 4.b. Impostare uno schema di partizionamento Schema di partizionamento predefinito Se non si interessati a elaborare uno schema di partizionamento per il sistema, si pu usare quello di questo Manuale: Partizione Filesystem Grandezza Descrizione /dev/sda1 ext2 32M Partizione di boot /dev/sda2 (swap) 512M Partizione swap Resto dello spazio su /dev/sda3 ext3 Partizione root disco Se si interessati ad avere informazioni su quanto dovrebbe essere grande una partizione primaria (o volume logico), o anche su quante partizioni si ha bisogno, seguono alcuni suggerimenti. Altrimenti continuare con ilpartizionamento del disco. Numero e dimensione delle partizioni Il numero delle partizioni dipende fortemente dal proprio ambiente. Per esempio, se si hanno molti utenti su una stessa macchina, molto probabilmente si desidera tenere separate le directory /home, aumentando cos la sicurezza e rendendo pi facile il backup. Se si sta installando Gentoo per utilizzarlo come mailserver, /var dovrebbe essere separata poich tutta la posta viene memorizzata in essa. Una buona scelta del filesystem quella che massimizza le prestazioni. I gameserver bene che abbiano una partizione separata per /opt, visto che la maggior parte dei server di gioco sono installati l. La stessa cosa vale per /home: sicurezza e backup. E' importante che/usr sia grande a sufficienza, perch contiene oltre a tutte le applicazione anche l'archivio di Portage che occupa da solo 500MB, esclusi i sorgenti. Come si visto, molto dipende da cosa si desidera realizzare. Partizioni o volumi separati hanno i seguenti vantaggi: Si pu scegliere il filesystem con maggiori prestazioni per ogni partizione o volume L'intero sistema non pu esaurire lo spazio libero se uno strumento malfunzionante scrive all'infinito su una partizione od un volume Nel caso si rendano necessari, i controlli sul filesystem sono ridotti, poich possono essere condotti in parallelo diverse analisi (questo vantaggio pi per i dischi multipli che per le partizioni multiple)

La sicurezza pu essere aumentata montando alcune partizioni o volumi in sola lettura, nosuid (i bit setuid vengono ignorati), noexec (i bit executable sono ignorati) etc. Le partizioni multiple hanno per un grosso svantaggio: se non sono configurate correttamente, si potrebbe avere un sistema con molto spazio libero su una partizione e poco su un'altra. Inoltre per i dispositivi SCSI e SATA c' il limite di 15 partizioni. Come esempio di partizionamento, ecco quello di un disco da 20Gb, usato come un laptop di dimostrazione (contenente webserver, mailserver, gnome, ...): Codice 2.1: Esempio di uso del filesystem
$ df -h Filesystem Type Size Used Avail Use% Mounted on /dev/sda5 ext3 509M 132M 351M 28% / /dev/sda2 ext3 5.0G 3.0G 1.8G 63% /home /dev/sda7 ext3 7.9G 6.2G 1.3G 83% /usr /dev/sda8 ext3 1011M 483M 477M 51% /opt /dev/sda9 ext3 2.0G 607M 1.3G 32% /var /dev/sda1 ext2 51M 17M 31M 36% /boot /dev/sda6 swap 516M 12M 504M 2% <not mounted> (Spazio non partizionato per uso futuro: 2 Gb)

/usr quasi pieno (83% dello spazio gi in uso), ma una volta installato tutto il software, non cresce molto. Sebbene allocare diversi GigaByte per /var possa sembrare eccessivo opportuno ricordare che Portage utilizza questa locazione per compilare i pacchetti. Se si desidera mantenere /var su una dimensione ragionevole di 1GB necessario modificare la variabile PORTAGE_TMPDIR in /etc/make.conf in modo da farla puntare ad una partizione grande a sufficienza per compilare grossi software, quali OpenOffice. 4.c. Usare fdisk per partizionare il disco La parte seguente spiega come creare lo schema di partizione di esempio descritto precedentemente: Partizione Descrizione /dev/sda1 Partizione di boot /dev/sda2 Partizione swap /dev/sda3 Partizione root Cambiare le partizioni in base alle proprie impostazioni. Vedere la disposizione delle partizioni fdisk uno strumento popolare e potente per dividere il disco in partizioni. Eseguire fdisk per il disco (nell'esempio si usa /dev/sda): Codice 3.1: Eseguire fdisk
# fdisk /dev/sda

Si visualizzer un prompt come questo: Codice 3.2: Prompt di fdisk


Command (m for help):

Digitare p per visualizzare le attuali partizioni presenti sul disco: Codice 3.3: Un esempio di partizionamento
Command (m for help): p Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders Units = cylinders of 15120 * 512 bytes Device Boot /dev/sda1 * /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5 /dev/sda6 Start 1 15 50 71 71 210 End 14 49 70 2184 209 348 Blocks Id 105808+ 264600 158760 15981840 1050808+ 1050808+ System 83 Linux 82 Linux swap 83 Linux 5 Extended 83 Linux 83 Linux

/dev/sda7 /dev/sda8 /dev/sda9

349 627 905

626 904 2184

2101648+ 2101648+ 9676768+

83 83 83

Linux Linux Linux

Command (m for help):

Questo disco configurato per avere sette filesystem Linux (chiamati "Linux" nelle corrispondenti partizioni) e una partizione swap (chiamata "Linux swap"). Rimuovere tutte le partizioni Si procede ora alla rimozione dal disco di tutte le partizioni esistenti. Digitare d per eliminare una partizione. Per esempio, per eliminare /dev/sda1: Codice 3.4: Eliminare una partizione
Command (m for help): d Partition number (1-4): 1

E' stata memorizzata l'eliminazione della partizione. Non verr pi visualizzata se si digiter p, ma non sar eliminata fino a quando non si salveranno i cambiamenti. Se si commesso un errore e si vuole uscire senza salvare, digitare q e invio e la partizione non verr rimossa. Ora, se si desidera effettivamente eliminare tutte le partizioni sul sistema, digitare p per visualizzare l'elenco delle partizioni, e poi digitare d seguito dal numero della partizione, per eliminarle. Il risultato una tabella con nessuna partizione: Codice 3.5: Tabella con nessuna partizione
Disk /dev/sda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id System

Command (m for help):

Ora che la tabella vuota, si pronti a creare le partizioni. Come esempio, si fa riferimento allo schema di partizionamento visto precedentemente: non si deve seguire queste istruzioni alla lettera se non si desidera implementare lo stesso schema. Creare la partizione di boot Per prima cosa, creare una piccola partizione di boot. Digitare n per creare una nuova partizione, poi p per selezionare una partizione primaria, seguito da 1 per selezionare la prima partizione primaria. Quando si visualizza il prompt per il primo cilindro, premere enter. Quando si visualizza il prompt per l'ultimo cilindro, digitare +32M per creare una partizione di 32 Mbyte ed impostarla come avviabile. Codice 3.6: Creare la partizione di boot
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-3876, default 1): (Premere Enter) Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M

Quando si digita p, si dovrebbe vedere la seguente partizione: Codice 3.7: Partizione di boot creata
Command (m for help): p Disk /dev/sda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot /dev/sda1 Start 1 End 14 Blocks 105808+ Id 83 System Linux

E' necessario rendere questa partizione avviabile. Digitare a e selezionare 1 per rendere avviabile questa partizione. Se si preme di nuovo p, si noter che un * stato posto nella colonna "Boot". Creare la partizione swap Si procede ora alla creazione della partizione swap. Per farlo, digitare n per creare una nuova partizione, poi p per dire a fdisk che si desidera creare una partizione primaria. Digitare 2 per creare la seconda partizione primaria,/dev/sda2. Quando si visualizza il prompt per il primo cilindro, premere invio. Quando si visualizza il prompt per l'ultimo cilindro, digitare +512M per creare una partizione di 512MB. Dopo aver fatto questo, digitare t per impostare il tipo di partizione, 2 per selezionare la partizione che si creata e infine 82 per impostare il tipo di partizione a "Linux Swap". Finiti questi passaggi, digitando p si dovrebbe avere una tabella partizionata simile a questa: Codice 3.8: Elenco delle partizioni dopo aver creato la partizione swap
Command (m for help): p Disk /dev/sda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot /dev/sda1 * /dev/sda2 Start 1 15 End 14 81 Blocks 105808+ 506520 Id 83 82 System Linux Linux swap

Creare la partizione root Si procede ora alla creazione della partizione root. Digitare n per creare una nuova partizione, poi p per dire a fdisk che si vuole una partizione primaria. Digitare 3 per creare la terza partizione primaria, /dev/sda3. Quando si visualizza il prompt per il primo cilindro, premere invio. Quando si visualizza il prompt per l'ultimo cilindro, premere enter per creare una partizione che occupi il resto dello spazio su disco. Infine, digitando p si dovrebbe avere una tabella partizionata simile a questa: Codice 3.9: Elenco delle partizioni dopo aver creato la partizione root
Command (m for help): p Disk /dev/sda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot /dev/sda1 * /dev/sda2 /dev/sda3 Start 1 15 82 End 14 81 3876 Blocks 105808+ 506520 28690200 Id 83 82 83 System Linux Linux swap Linux

Salvare lo schema delle partizioni

Per salvare lo schema delle partizioni e uscire da fdisk, digitare w. Codice 3.10: Salvare e uscire da fdisk
Command (m for help): w

Ora che le partizioni sono create, si pu continuare con la sezione riguardante come Creare i filesystem. 4.d. Creare i filesystem Introduzione Ora che le partizioni sono state create, il momento di inserire il filesystem. Se non si interessati alla scelta del filesystem e vanno bene quelli che si usano in modo predefinito in questo Manuale, continuare con la sezione su come Applicare un filesystem ad una partizione. Altrimenti ecco una descrizione dei filesystem disponibili. Filesystem

Sono disponibili diversi filesystem. Alcuni di essi sono giudicati stabili sull'architettura amd64, altri no. I seguenti filesystem sono giudicati stabili: ext2, ext3 e XFS. JFS e ReiserFS potrebbero funzionare ma necessitano di ulteriori test. Se si ritiene di essere veramente audaci possibile provare gli altri filesystem. ext2 il vero e proprio filesystem di Linux ma non possiede il supporto per il metadata journaling, il che significa che le routine che effettuano all'avvio i controlli sul filesystem ext2 possono impiegare diverso tempo. Al momento esiste una scelta abbastanza ampia di filesystem journaled di nuova generazione che sono in grado di effettuare controlli sulla consistenza molto velocemente e sono generalmente preferiti alle controparti non-journaled. I filesystem journaled prevengono i lunghi tempi di attesa che solitamente si riscontrano quando viene riavviato il sistema e il filesystem si trova in uno stato inconsistente. Se si ha intenzione di installare Gentoo su un disco molto piccolo (meno di 4GB), in tal caso si dovr indicare ad ext2 di riservare un numero sufficiente di inode tramite l'esecuzione del comando mke2fs -T small /dev/<device>. ext3 la versione journaled del filesystem ext2, fornisce il metadata journaling per un veloce recupero dei dati in aggiunta ad altre caratteristiche di journaling avanzate come full data e ordered data journaling. Utilizza un indice Htree che abilita alte prestazioni in quasi tutte le situazioni. In breve, ext3 un filesystem davvero molto valido e affidabile, ed raccomandato per qualsiasi sistema e scopo. Se si ha intenzione di installare Gentoo su un disco molto piccolo (meno di 4GB), in tal caso si dovr indicare ad ext3 di riservare un numero sufficiente di inode tramite l'esecuzione del comando mke2fs -j -T small /dev/<device>. JFS il filesystem con journaling ad alte prestazioni di IBM. JFS un filesystem leggero, veloce ed affidabile basato su B+Tree con buone prestazioni in varie condizioni. ReiserFS un filesystem basato su B+tree che offre ottime prestazioni generali, specialmente nella gestione di una grande quantit di piccoli file, al costo di pi cicli di CPU. ReiserFS sembra avere una manutenzione pi ridotta degli altri filesystem. XFS un filesystem con metadata journaling ricco di caratteristiche interessanti e ottimizzato per una forte scalabilit. XFS sembra essere poco tollerante a vari problemi hardware. Applicare un filesystem a una partizione Per creare un filesystem su una partizione o volume, sono disponibili gli strumenti per ogni filesystem possibile: Filesystem Comando per la creazione mke2fs ext2 mke2fs -j ext3 mkreiserfs reiserfs mkfs.xfs xfs mkfs.jfs jfs Per esempio, per avere la partizione di boot (/dev/sda1) ext2 e la partizione root (/dev/sda3) ext3, si usa: Codice 4.1: Applicare un filesystem su una partizione
# mke2fs /dev/sda1 # mke2fs -j /dev/sda3

Ora si procede alla creazione dei filesystem sulle partizioni (o volumi logici) create precedentemente. Attivare la partizione swap mkswap il comando usato per inizializzare le partizioni swap: Codice 4.2: Inizializzare la partizione swap
# mkswap /dev/sda2

Per attivare la partizione swap, usare swapon: Codice 4.3: Attivare la partizione di swap
# swapon /dev/sda2

Creare e attivare lo swap con i comandi illustrati. 4.e. Montare Ora che le partizioni sono inizializzate e hanno un filesystem, il momento di montarle. Usare il comando mount. Non dimenticarsi di creare le necessarie directory di mount. Nell'esempio ecco come montare le partizioni root e boot: Codice 5.1: Montare le partizioni
# mount /dev/sda3 /mnt/gentoo # mkdir /mnt/gentoo/boot # mount /dev/sda1 /mnt/gentoo/boot

Nota: Se si vuole che /tmp risieda in una partizione separata, assicurarsi di cambiare i permessi dopo il mount: chmod 1777 /mnt/gentoo/tmp. Questo vale anche per /var/tmp. E' necessario inoltre montare il filesystem proc (una intefaccia virtuale con il kernel) su /proc. Ma prima si devono mettere i file sulle partizioni. Ora continuare con la Copia dei file di installazione di Gentoo.

5. Copia dei file di installazione di Gentoo


5.a. Installazione di uno stage Impostare la data e l'ora Prima di continuare necessario controllare la data e l'ora ed aggiornarle. Un orologio impostato male pu portare problemi in futuro. Per visualizzare l'ora e la data attuali eseguire date: Codice 1.1: Verificare la data e l'ora
# date Fri Mar 29 16:21:18 UTC 2005

Se la data o l'ora fossero errate, possibile aggiornarle utilizzando il comando date MMDDhhmmCCYY ( dove M il mese, D il giorno, h l'ora, m il minuto, C il secolo e Y l'anno). A questo punto consigliabile impostare l'ora UTC, possibile poi regolare il fuso orario (timezone) in seguito. Ad esempio per impostare la data al 29 marzo 2005 e l'ora alle 16:21: Codice 1.2: Impostare data e ora in UTC
# date 032916212005

La scelta Il passo successivo consiste nell'installazione dello stage3 sul sistema. possibile sia scaricare l'archivio tar da internet, sia, se il sistema stato avviato da un CD di Installazione Universale, copiarlo dal disco stesso. Nella maggior parte dei casi lanciare il comando uname -m pu essere utile per capire che tipo di stage necessario utilizzare. I CD minimali ed i LiveDVD di installazione non contengono alcun archivio stage3. 5.b. Predefinito: Scaricare lo stage da Internet Scaricare lo stage Andare al punto sul quale si montato il filesystem (molto probabilmente /mnt/gentoo): Codice 2.1: Andare al punto di mount di Gentoo
# cd /mnt/gentoo

Secondo la modalit di installazione, sono disponibili un paio di strumenti per scaricare lo stage. Se si ha links, allora si pu visitare immediatamente la lista dei mirror di Gentoo e scegliere un mirror vicino.

Se non si dispone di links, si dovrebbe poter almeno contare su lynx. Se necessario un proxy, espostare le variabili http_proxy e ftp_proxy: Codice 2.2: Impostare i proxy per lynx
# export http_proxy="http://proxy.server.com:port" # export ftp_proxy="http://proxy.server.com:port"

D'ora in poi si suppone che l'utente utilizzi links. Spostarsi nella directory releases/amd64/autobuilds/. Si dovrebbero vedere tutti gli stage disponibili per l'architettura, eventualmente suddivisi in sottodirectory a seconda della sottoarchitettura. Selezionarne uno e premere Dper scaricarlo. Quando si finito, premere Q per chiudere il browser. Codice 2.3: Cercare i mirror con links
# links http://www.gentoo.org/main/en/mirrors.xml (Se si necessita di proxy in links:) # links -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml

Assicurarsi di scaricare un archivio stage3, le installazioni con stage1 o stage2 non sono pi supportate. Se si desidera controllare l'integrit dello stage scaricato, usare md5sum e confrontare l'output con il checksum MD5 fornito sul mirror. Ad esempio per controllare la validit di un pacchetto x86: Codice 2.4: Controllare l'integrit di un tarball dello stage
# md5sum -c stage3-amd64-<release>.tar.bz2.DIGESTS stage3-amd64-<release>.tar.bz2: OK

Estrazione dello stage

Decomprimere ora lo stage nel sistema. Utilizzare l'utility tar per procedere poich risulta essere il metodo pi facile: Codice 2.5: Estrazione dello stage
# tar xvjpf stage3-*.tar.bz2

Assicurarsi di usare le stesse opzioni (xvjpf). La x sta per Estrarre, la v per Verbose e mostra ci che accade nel processo di estrazione (opzionale), la j per Decomprimere con bzip2, la p per Conservare i permessi e la f per denotare che si vuole estrarre un file, non un input standard. Ora si pronti per procedere con la prossima sezione riguardante come Installare Portage. 5.c. Installazione di Portage Estrarre lo snapshot di Portage Ora necessario procedere all'installazione dello snapshot di Portage: si tratta di un archivio che contiene tutto il software che possibile installare con le relative informazioni. Scaricare ed installare uno snapshot di Portage Posizionarsi nella directory in cui si montato il filesystem (di solito /mnt/gentoo): Codice 3.1: Posizionarsi sul punto di mount
# cd /mnt/gentoo

Avviare links (o lynx) e recarsi alla lista dei mirror Gentoo. Scegliere poi un mirror vicino ed entrare nella directory snapshots/. Scaricare l'ultimo snapshot di Portage (portagelatest.tar.bz2) selezionando il file e premendo D. Codice 3.2: Visitare la lista dei mirror
# links http://www.gentoo.org/main/en/mirrors.xml

Uscire dal browser premendo Q. Al momento si in possesso di uno snapshot di Portage in /mnt/gentoo. Se si desidera verificare l'integrit dello snapshot scaricato, possibile utilizzare il

comando md5sum e confrontarne l'output con il checksum MD5 fornito sul mirror. Codice 3.3: Controllo di integrit su uno snapshot di Portage
# md5sum -c portage-latest.tar.bz2.md5sum portage-latest.tar.bz2: OK

Il passo successivo consiste nell'estrarre l'archivio sul filesystem. Digitare il comando esattamente come indicato, l'ultima una C maiuscola, non una c. Codice 3.4: Estrazione dello snapshot di Portage
# tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr

5.d. Configurare le opzioni di compilazione Introduzione Per ottimizzare Gentoo, si possono impostare alcune variabili che hanno effetto sul comportamento di Portage. Tutte queste variabili possono essere impostate come variabili di ambiente (usando export), ma non in modo permanente. Per mantenere le impostazioni, Portage fornisce il file di configurazione /etc/make.conf. il file da modificare adesso. Nota: Un elenco commentato di tutte le variabili possibili si trova in /mnt/gentoo/usr/share/portage/config/make.conf.example. Ma per una installazione di Gentoo soltanto necessario impostare le variabili che sono menzionate sotto. Utilizzare il proprio editor preferito (in questa guida si usa nano) per poter cambiare le variabili di ottimizzazione che di cui si sta trattando. Codice 4.1: Aprire /etc/make.conf
# nano -w /mnt/gentoo/etc/make.conf

Come evidente, il file make.conf.example strutturato in modo molto semplice: le righe commentate iniziano con "#", le altre righe definiscono le variabili, usando la sintassi VARIABILE="valore". Molte di queste variabili vengono trattate in seguito. CFLAGS e CXXFLAGS Le variabili CFLAGS e CXXFLAGS definiscono le opzioni di ottimizzazione per i compilatori C e C++ rispettivamente di gcc. Anche se qui vengono definite in generale, le massime prestazioni si ottengono quando si impostano le variabili separatamente per ogni programma perch ogni programma differente. In make.conf si dovrebbero definire le impostazioni di ottimizzazione che si ritiene possano rendere il sistema pi reattivo in generale. Non mettere impostazioni sperimentali in questa variabile; troppa ottimizzazione pu far funzionare male i programmi (crash, o peggio ancora, malfunzionamento). Non vengono spiegate tutte le possibili opzioni di ottimizzazione. Chi volesse conoscerle, legga il Manuale Online GNU o la pagina di informazioni gcc (info gcc funziona solo su un sistema Linux). Lo stesso filemake.conf.example contiene molti esempi e informazioni da consultare. Una prima impostazione la flag -march= o -mtune= , che specifica il nome dell'architettura. Le possibili opzioni sono descritte nel file make.conf.example (come commenti). Una seconda impostazione la flag -O (o maiuscola, non zero), che specifica la classe di ottimizzazione di gcc. Possibili classi sono s (per ottimizzazioni sulla dimensione), O (per nessuna ottimizzazione), 1, 2 o perfino 3 per ulteriori ottimizzazioni sulla velocit (ogni classe ha le stesse flag di quella precedente, pi alcune aggiuntive). -O2 quanto viene raccomandato come impostazione predefinita. risaputo che l'ottimizzazione -O3 causa gravi problemi se usata a livello globale nel sistema, pertanto si consiglia vivamente di rimanere fermi all'ottimizzazione -O2. Un'altra flag di ottimizzazione molto usata -pipe (vengono usate le 'pipe' piuttosto che i file temporanei, per la comunicazione tra le varie fasi di compilazione). Non ha impatto sul codice generato, ma usa della memoria aggiuntiva. In alcuni sistemi con poca memoria, gcc

potrebbe venire interrotto generando degli errori; in tal caso, non usare questa flag. L'utilizzo di -fomit-frame-pointer (che non tiene il puntatore al frame per funzioni che non ne hanno bisogno) potrebbe avere serie ripercussioni nel caso sia necessario effettuare il debug dell'applicazione. Quando si definiscono CFLAGS e CXXFLAGS, si dovrebbero mettere insieme molte flag di ottimizzazione. I valori predefiniti contenuti nello stage3 che si decompresso dovrebbero essere gi sufficienti. Il seguente solo un esempio: Codice 4.2: Definizione delle variabili CFLAGS e CXXFLAGS
CFLAGS="-march=k8 -O2 -pipe" # Gli utenti Intel EM64T usino -march=core2 # Usare le stesse impostazioni per entrambe le variabili CXXFLAGS="${CFLAGS}"

Nota: Si consiglia inoltre di leggere la Guida all'Ottimizzazione della Compilazione per ulteriori informazioni su come le varie opzioni di compilazione possono influenzare il proprio sistema. MAKEOPTS Con MAKEOPTS si definisce quante compilazioni parallele possono essere eseguite durante l'installazione di un pacchetto. Una buona scelta il numero di CPU (o i core della/e CPU) nel sistema pi uno, ma non detto che sia sempre l'impostazione migliore. Codice 4.3: MAKEOPTS per un normale sistema con 1 CPU
MAKEOPTS="-j2"

Pronti Aggiornare /mnt/gentoo/etc/make.conf in base alle proprie preferenze, e salvarlo. Si ora pronti per continuare con l'Installazione del sistema base Gentoo.

6. Installazione del sistema base Gentoo


6.a. Effettuare il chroot Opzionale: Selezionare i mirror Per scaricare rapidamente i codici sorgenti si raccomanda di selezionare un mirror rapido. Portage cerca in make.conf la variabile GENTOO_MIRRORS ed utilizza i mirror in essa elencati. E' possibile visitare la lista dei mirror e cercare uno o pi mirror vicini, visto che spesso sono i pi rapidi. E' anche possibile utilizzare uno strumento chiamato mirrorselect che fornisce una comoda interfaccia per la seleziona dei mirror preferiti. Codice 1.1: Utilizzo di mirrorselect per la variabile GENTOO_MIRRORS
# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf

Una seconda impostazione importante la variabile SYNC di make.conf. La variabile contiene il server rsync che si desidera utilizzare al momento di aggiornare l'albero di Portage, ovverosia la collezione di ebuild e script che contengono tutte le informazioni necessarie a scaricare ed installare il software. Sebbene sia possibile impostare manualmente un server SYNC, mirrorselect pu farlo automaticamente: Codice 1.2: Selezionare un mirror rsync tramite mirrorselect
# mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf

Dopo l'esecuzione di mirrorselect consigliabile controllare la correttezza delle impostazioni in /mnt/gentoo/etc/make.conf ! Nota: Se si vuole impostare manualmente un server SYNC in make.conf, consigliabile controllare l'elenco dei server mirror della comunit per individuare quelli geograficamente pi vicini a s. Si raccomanda di sceglierne uno a rotazione, per esempio rsync.us.gentoo.org, piuttosto che sceglierne uno singolo. Questo aiuta a suddividere il carico e fornisce un meccanismo di sicurezza nel caso uno specifico mirror sia offline. Copiare le informazioni del DNS C' ancora una cosa da fare prima di poter entrare nel nuovo ambiente, si devono copiare le

informazioni del DNS in /etc/resolv.conf. Questo passo necessario per fare in modo che la rete funzioni ancora, anche dopo esser entrati nel nuovo ambiente. /etc/resolv.conf contiene i nameserver per la rete. Codice 1.3: Copiare le informazioni del DNS
(L'opzione "-L" serve per assicurarsi di non copiare un link simbolico) # cp -L /etc/resolv.conf /mnt/gentoo/etc/

Montare i filesystem /proc e /dev Montare il filesystem /proc su /mnt/gentoo/proc per permettere all'installazione di usare informazioni fornite dal kernel anche dentro l'ambiente in cui si effettuato il chroot; montare poi tramite bind il filesystem /dev. Codice 1.4: Montare /proc e /dev
# mount -t proc none /mnt/gentoo/proc # mount -o bind /dev /mnt/gentoo/dev

Entrare nel nuovo ambiente

Adesso che tutte le partizioni sono pronte e che l'ambiente di base installato, arrivato il momento di entrare nel nuovo ambiente di installazione effettuando il chroot. Significa che ci si sposta dall'attuale ambiente di installazione (CD di Installazione o altre modalit di installazione) al sistema di installazione nel proprio sistema (nelle partizioni create). Il chroot costituito di tre parti. Nella prima si cambia root, da / (sul supporto di installazione) a /mnt/gentoo (nelle partizioni create), usando chroot. Nella seconda si crea un nuovo ambiente usando env-update, il quale inizializza le variabili di ambiente. Nella terza si caricano queste variabili in memoria, con source. Codice 1.5: Chroot nel nuovo ambiente
# chroot /mnt/gentoo /bin/bash # env-update >> Regenerating /etc/ld.so.cache... # source /etc/profile # export PS1="(chroot) $PS1"

Congratulazioni! Da adesso si dentro Gentoo Linux. Naturalmente la fine dell'installazione lontana, poich mancano ancora alcune sezioni. 6.b. Configurazione di Portage Aggiornare Portage Si procede ora all'aggiornamento di Portage tramite il comando emerge --sync. Codice 2.1: Aggiornare Portage

# emerge --sync (Se si sta usando un terminale lento come alcuni framebuffer o una console seriale si pu utilizza # emerge --sync --quiet

Se si dietro ad un firewall che blocca il traffico rsync possibile usare emerge-webrsync che scarica ed installa una immagine completa di Portage. Se si riceve l'avviso che disponibile una nuova versione di Portage e che si dovrebbe aggiornarlo, necessario eseguire quest'operazione immediatamente tramite il comando emerge --oneshot portage. Scelta del profilo adatto Innanzitutto qualche definizione. Il profilo una parte integrante di ciascun sistema Gentoo. Non solo specifica i valori predefiniti per USE, CFLAGS ed altre impostanti variabili, ma posiziona il sistema all'interno di un certo intervallo di versioni di pacchetti. Il profilo viene mantenuto dagli sviluppatori Gentoo. In precedenza il profilo non doveva essere modificato dall'utente. Tuttavia esistono situazioni in cui pu essere necessario optare per un cambio di profilo.

E' possibile visualizzare l'attuale profilo in uso con il seguente comando: Codice 2.2: Visualizzare il profilo del sistema
# eselect profile list Available profile symlink targets: [1] default/linux/amd64/10.0 * [2] default/linux/amd64/10.0/desktop [3] default/linux/amd64/10.0/server

Il profilo predefinito implementa un sistema basato su kernel 2.6. Questa l'impostazione raccomandata, ma anche possibile scegliere un altro profilo. Per alcune architetture sono inoltre disponibili i sottoprofili desktop e server. L'esecuzione di eselect profile list visualizzer tutti i profili disponibili. Dopo aver consultato i vari profili disponibili per la propria architettura, possibile sceglierne uno differente, se lo si desidera. Codice 2.3: Cambiare profilo
# eselect profile set 2

Se si desidera avere un ambiente a 64 bit puro, senza applicazioni o librerie a 32 bit, necessario usare un profilo non-multilib. Codice 2.4: Passare ad un profilo non-multilib
# eselect profile list Available profile symlink targets: [1] default/linux/amd64/10.0 * [2] default/linux/amd64/10.0/desktop [3] default/linux/amd64/10.0/no-multilib [4] default/linux/amd64/10.0/server (Scegliere il profilo no-multilib) # eselect profile set 3 (Verificare la modifica) # eselect profile list Available profile symlink targets: [1] default/linux/amd64/10.0 [2] default/linux/amd64/10.0/desktop [3] default/linux/amd64/10.0/no-multilib * [4] default/linux/amd64/10.0/server

Nota: Il sottoprofilo developer specifico per operazioni riguardanti lo sviluppo di Gentoo Linux. Non pensato per aiutare a preparare degli ambienti generali di sviluppo. Configurare la variabile USE USE una delle variabili pi potenti che Gentoo fornisce agli utenti. Molti programmi possono essere compilati con o senza il supporto opzionale per certi elementi. Per esempio, alcuni programmi possono essere compilati con il supporto per gtk, o con il supporto per qt. Altri con o senza il supporto per SSL. Alcuni programmi possono essere compilati con il supporto per il framebuffer (svgalib), anzich con quello per X11 (server X). La maggior parte delle distribuzioni compila i propri pacchetti con il maggior numero possibile di supporti, aumentando le dimensioni dei programmi e il tempo di avvio, per non parlare dell'enorme quantit di dipendenze. Con Gentoo si pu definire con quali opzioni un pacchetto deve essere compilato. Questa la funzione di USE. Nella variabile USE si definiscono delle parole chiave (keyword) che vengono poi tradotte in opzioni di compilazione. Per esempio, ssl abilita il supporto ssl nei programmi che lo supportano. -X (notare il trattino davanti) rimuove il supporto per il server X. gnome gtk -kde -qt4 abilita i programmi al supporto gnome (e gtk), ma non a quello kde (e qt), rendendo il sistema ottimizzato per GNOME. Le impostazioni predefinite di USE sono conservate nel file make.defaults del proprio profilo. I file make.defaults si trovano nella directory a cui punta il collegamento /etc/make.profile e in tutte le directory a pari livello. L'impostazione USE che viene utilizzata in modo predefinito la somma di tutte le USE in tutti i file make.defaults. Ci che viene specificato in /etc/make.conf considerato rispetto alle impostazioni

predefinite. Se si aggiunge qualcosa alle impostazioni di USE, lo si aggiunge anche all'elenco predefinito. Se si rimuove qualcosa dalle impostazioni di USE (mettendo un trattino davanti), lo si rimuove anche dall'elenco predefinito (se era nell'elenco). Non si deve cambiare mai nessuna opzione nella directory /etc/make.profile; in quanto essa viene sovrascritta quando si aggiorna Portage. Una descrizione completa di USE si trova nella seconda parte del Manuale Gentoo, Capitolo 1: flag USE. Una descrizione completa sulle flag USE disponibili si trova in /usr/portage/profiles/use.desc. Codice 2.5: Vedere le flag USE disponibili
# less /usr/portage/profiles/use.desc (E' possibile muoversi con le frecce ed uscire con 'q')

Come esempio ecco le impostazioni di USE per un sistema basato su KDE, e con il supporto per DVD, ALSA e masterizzazione CD: Codice 2.6: Si apre /etc/make.conf
# nano -w /etc/make.conf

Codice 2.7: Impostazioni USE


USE="-gtk -gnome qt4 kde dvd alsa cdr"

Opzionale: Localizzazioni di glibc Di solito su un sistema vengono utilizzate le impostazioni per una o due lingue. E' possibile specificare le lingue di cui si ha bisogno nel file /etc/locale.gen. Codice 2.8: Modificare /etc/locale.gen
# nano -w /etc/locale.gen

L'esempio che segue imposta l'utilizzo dell'inglese (Stati Uniti) e tedesco (Germania) con i relativi formati di carattere (come UTF-8): Codice 2.9: Specificare le lingue
en_US ISO-8859-1 en_US.UTF-8 UTF-8 de_DE ISO-8859-1 de_DE@euro ISO-8859-15

Il passo successivo consiste nell'esecuzione di locale-gen. Il comando genera il supporto per tutte le lingue specificate nel file /etc/locale.gen. Continuare ora con la Configurazione del Kernel.

7. Configurazione del Kernel


7.a. Fuso Orario (Timezone) Innanzitutto necessario selezionare il proprio fuso orario (timezone), in modo che il sistema riconosca in che parte del globo collocato. Individuare il proprio fuso orario in /usr/share/zoneinfo, dopodich copiarlo in/etc/localtime. Si sconsiglia di utilizzare i fusi orari del tipo /usr/share/zoneinfo/Etc/GMT* poich i loro nomi non indicano le zone che ci si aspetterebbe. Per esempio GMT-8 indica GMT+8. Codice 1.1: Abilitare le informazioni sul fuso orario (timezone)
# ls /usr/share/zoneinfo (Per esempio GMT:) # cp /usr/share/zoneinfo/GMT /etc/localtime

7.b. Installare i sorgenti Scegliere un Kernel

Il cuore, intorno al quale sono sviluppate tutte le distribuzioni, il Kernel di Linux. E' la parte di software compresa tra i programmi e l'hardware. Gentoo d la possibilit ai suoi utenti di scegliere tra diversi sorgenti del kernel. Una lista completa delle descrizioni dei kernel disponibili, consultabile nella Guida ai Kernel Gentoo.

Per i sistemi basati sull'architettura AMD64 sono disponibili, tra gli altri, i gentoosources (sorgenti del kernel modificati con patch per caratteristiche aggiuntive). Ora possibile dunque scegliere ed installare i sorgenti del kernel tramite emerge. Codice 2.1: Installare un sorgente del kernel
# emerge gentoo-sources

Se si d un'occhiata a /usr/src, si dovrebbe vedere un link simbolico chiamato linux, che punta al sorgente del kernel. In questo caso si tratta di gentoo-sources-2.6.34-r1, ma ricordarsi che la versione potrebbe essere diversa: Codice 2.2: Il link simbolico al codice sorgente del kernel
# ls -l /usr/src/linux lrwxrwxrwx 1 root

Ora si procede a configurare e compilare il sorgente del kernel. Allo scopo possibile utilizzare genkernel, che compila un kernel generico come quello usato dal CD di Installazione. Si tratta per prima la configurazione "manuale", poich il miglior modo di ottimizzare l'ambiente. Se si desidera configurare il kernel manualmente, continuare con Predefinito: Configurazione manuale. Per chi preferisce usare genkernel, leggere Alternativa: Usare genkernel. 7.c. Predefinito: Configurazione manuale Introduzione La configurazione manuale del kernel spesso considerata la parte pi difficile che ogni utente Linux incontra. Non assolutamente vero: dopo aver configurato un po' di kernel, l'operazione risulta semplice. Una cosa per vera: si deve conoscere il proprio sistema quando si comincia una configurazione manuale del kernel. La maggior parte delle informazioni pu essere raccolta installando pciutils (emerge pciutils) che contienelspci. E' possibile tranquillamente ignorare gli errori di pcilib (ad esempio pcilib: cannot open /sys/bus/pci/devices) che a volte lspci stampa a video. In alternativa anche possibile eseguire lspci dal di fuori dell'ambiente chrootato, in quanto i risultati sono i medesimi. Si pu anche eseguire lsmod per vedere che moduli del kernel usa il CD di Installazione (potrebbe fornire un buon suggerimento su cosa abilitare). Andare nella directory del sorgente del kernel, e digitare make menuconfig per visualizzare un menu di configurazione basato su ncurses. Codice 3.1: Aprire menuconfig
# cd /usr/src/linux # make menuconfig

root

12 Oct 13 11:04 /usr/src/linux -> linux-2.6.34-r1

Vengono visualizzate molte sezioni di configurazione. Ecco ora alcune opzioni che devono essere attivate (altrimenti Gentoo non pu funzionare, o non funziona correttamente senza modifiche aggiuntive). Attivare le opzioni indispensabili E' importante verificare che ogni driver necessario al boot della propria macchina (ad esempio il controller SCSI, ..) sia compilato nel kernel e non come modulo. In caso contrario il sistema potrebbe non funzionare correttamente. Selezionare il tipo esatto di processore. Il mantenitore del kernel x86_64 raccomanda gli utenti di abilitare MCE features, in modo da poter essere avvisati se ci dovessero essere problemi hardware. Su x86_64, questi errori non sono visualizzati su dmesg come per le altre architetture, ma su /dev/mcelog, che richiede il pacchetto app-admin/mcelog. Assicurarsi di selezionare IA32 Emulation se si desidera poter eseguire programmi a 32-bit. Gentoo installer un sistema multilib (calcolo misto a 32/64-bit) in modo predefinito, per cui tale opzione necessaria.

Nota: Se si pensa di usare un profilo non-multilib (per un sistema a 64-bit puro), allora non si dovr selezionare il supporto all'Emulazione IA32. Tuttavia, bisogner anche seguire le instruzioni per passare ad un profilo non-multilib, e scegliere il bootloader corretto. Codice 3.2: Selezionare il tipo di processore e caratteristiche
Processor type and features ---> [ ] Machine Check / overheating reporting [ ] Intel MCE Features [ ] AMD MCE Features Processor family (AMD-Opteron/Athlon64) ---> ( ) Opteron/Athlon64/Hammer/K8 ( ) Intel P4 / older Netburst based Xeon ( ) Core 2/newer Xeon ( ) Intel Atom ( ) Generic-x86-64 Executable file formats / Emulations ---> [*] IA32 Emulation

Andare su File Systems e selezionare il supporto per i filesystem utilizzati. Non compilare tali supporti come moduli, altrimenti Gentoo non pu montare le partizioni. Selezionare anche Virtual memory, /proc file system. Codice 3.3: Selezionare il filesystem
File systems ---> Pseudo Filesystems ---> [*] /proc file system support [ ] /dev file system support (OBSOLETE) [*] Virtual memory file system support (former shm fs) (Selezionare una o pi delle seguenti, secondo necessit) <*> Reiserfs support <*> Ext3 journalling file system support <*> JFS filesystem support <*> Second extended fs support <*> XFS filesystem support

Se si sta usando PPPoE per connettersi a Internet, si ha bisogno delle seguenti opzioni nel kernel: Codice 3.4: Selezionare i driver necessari per PPPoE
Device Drivers ---> Networking Support ---> <*> PPP (point-to-point protocol) support <*> PPP support for async serial ports <*> PPP support for sync tty ports

Le due opzioni di compressione non sono dannose, ma neppure necessarie; lo stesso vale per PPP over Ethernet, che potrebbe essere usata soltanto da ppp se configurato in modalit kernel. Chi ne ha bisogno non deve dimenticare di includere nel kernel il supporto per la propria scheda di rete ethernet. Se si in possesso di pi CPU Opteron o un multi-core (es AMD64 X2), possibile attivare il supporto multiprocessore: Codice 3.5: Attivare il supporto multiprocessore
Processor type and features ---> [*] Symmetric multi-processing support

Nota: Nei sistemi multicore, ciascun core vale come un processore. Se si utilizzano periferiche USB (come mouse o tastiere) necessario abilitarle: Codice 3.6: Attivare il supporto USB per dispositivi di input
Device Drivers ---> [*] HID Devices ---> <*> USB Human Interface Device (full HID) support

Compilazione e Installazione

Ora che il kernel configurato, il prossimo passo la compilazione e l'installazione. Uscire dal menu di configurazione ed avviare la compilazione:

Codice 3.7: Compilare il kernel


# make && make modules_install

Quando la compilazione finita, necessario copiare l'immagine del kernel in /boot. E' possibile utilizzare qualsiasi nome per indicare il proprio kernel, sufficiente tenerlo a mente perch necessario nella configurazione del bootloader. Ricordare di sostituire kernel2.6.34-gentoo-r1 con il nome e la versione del proprio kernel. Codice 3.8: Installare il kernel
# cp arch/x86_64/boot/bzImage /boot/kernel-2.6.34-gentoo-r1

Ora proseguire con i Moduli del Kernel. 7.d. Alternativa: Usare genkernel Se si sta leggendo questa sezione, vuol dire che si scelto di usare lo script genkernel, che configura il kernel. Adesso che sono stati installati i sorgenti del kernel si pu utilizzare lo script genkernel per configurarlo e compilarlo automaticamente. genkernel configura il kernel in modo quasi identico a come configurato quello del CD di Installazione. Infatti quando si usa genkernel per compilare il kernel, il sistema rileva tutto l'hardware al boot, proprio come il CD di Installazione. Poich genkernel non richiede nessuna configurazione manuale del kernel, questa una soluzione ideale per quegli utenti che hanno qualche difficolt nel compilarsi il kernel da soli. Ecco come usare genkernel. Per prima cosa si deve emergere l'ebuild di genkernel: Codice 4.1: Emergere genkernel
# emerge genkernel

Ora copiare la configurazione del kernel del CD di Installazione nella directory dove genkernel si aspetta la configurazione predefinita per il kernel: Codice 4.2: Copia della configurazione del kernel del CD di Installazione
# zcat /proc/config.gz > /usr/share/genkernel/arch/x86_64/kernel-config

Compilare poi il kernel eseguendo genkernel all. Visto che genkernel compila un kernel che supporta quasi tutto l'hardware disponibile questa compilazione pu essere un processo piuttosto lungo. E' importante sapere anche che se non si usano ext2 o ext3 come filesystem potrebbe essere necessario configurare manualmente il kernel usando genkernel --menuconfig all e aggiungere il supporto per il filesystem scelto nel kernel (cio non come modulo). Gli utenti di EVMS2 o LVM2 devono anche aggiungere i parametri --evms2 or --lvm2. Codice 4.3: Esecuzione di genkernel
# genkernel all

Una volta completato genkernel, viene creato un kernel completo di moduli e root disk iniziale (initrd). Il kernel e initrd intervengono quando si configura un boot loader. E' consigliabile dunque annotare il nome del kernel e del initrd, poich servono quando si scrive il file di configurazione del bootloader. Initrd si avvia subito dopo il boot per effettuare un rilevamento automatico dell'hardware (come nel CD di Installazione), prima che si avvii il sistema "reale". Codice 4.4: Controllo dell'immagine del kernel e dell'initrd
# ls /boot/kernel* /boot/initramfs*

7.e. Moduli del Kernel Configurare i moduli Si dovrebbero inserire i moduli che si vogliono caricare in /etc/modules.autoload.d/kernel-2.6. Se si vuole, si possono anche aggiungere altre opzioni ai moduli. Per vedere tutti i moduli disponibili, eseguire il comando find. Non dimenticarsi di sostituire

"<versione kernel>" con la versione del kernel appena compilato: Codice 5.1: Vedere tutti i moduli disponibili
# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko'|less

Per esempio, per caricare automaticamente il modulo 3c59x.ko, modificare il file kernel2.6 inserirendovi il nome del modulo stesso. Codice 5.2: Modificare /etc/modules.autoload.d/kernel-2.6
# nano -w /etc/modules.autoload.d/kernel-2.6

Codice 5.3: /etc/modules.autoload.d/kernel-2.6


3c59x

Continuare l'installazione con la Configurazione del sistema.

8. Configurazione del sistema


8.a. Informazioni sul filesystem Cos' fstab? In Linux, tutte le partizioni usate dal sistema devono essere elencate in /etc/fstab. Questo un file che contiene i punti di montaggio delle partizioni (cio dove le partizioni compaiono nella struttura del filesystem), come devono essere montate (opzioni speciali), e quando (automaticamente o meno, se gli utenti possono montarle o meno, etc.). Creare /etc/fstab /etc/fstab usa una sintassi speciale. Ogni riga contiene sei parti, separate da spazio (spazio, tabulazioni o entrambi). Ogni parte ha un significato: La prima parte indica la partizione (il percorso al file dev) La seconda parte indica il mountpoint, al quale deve essere montata la partizione La terza parte indica il tipo di filesystem usato dalla partizione La quarta parte indica le opzioni di mount, usate da mount quando monta la partizione. Poich ogni filesystem ha le proprie opzioni di mount, consigliato leggere la pagina di manuale di mount per avere una lista completa (man mount). Se si specificano varie opzioni di mount, devono essere separate da una virgola. La quinta parte usata da dump per determinare se la partizione necessita dell'operazione di dump o no. Si pu lasciarla a 0. La sesta parte usata da fsck per determinare l'ordine in cui dovrebbero essere controllati i filesystem, se il sistema non stato spento correttamente. Il filesystem di root dovrebbe avere 1, mentre gli altri filesystem dovrebbero avere 2 (o 0 se non necessario un controllo del filesystem). Importante: Il file /etc/fstab fornito da Gentoo solo un esempio non valido per la produzione, quindi necessario creare il proprio /etc/fstab personalizzato: Codice 1.1: Aprire /etc/fstab
# nano -w /etc/fstab

Osservare ora le opzioni specificate per la partizione di /boot. Questo solo un esempio, non si potuto o voluto creare una partizione /boot non copiarla pari pari. In questo esempio di partizionamento AMD64 /boot corrisponde alla partizione /dev/sda1, con ext2 come filesystem. Ha bisogno di essere controllata, si pu dunque scrivere: Codice 1.2: Esempio di /boot per /etc/fstab
/dev/sda1 /boot ext2 defaults 1 2

Alcuni utenti preferiscono non montare /boot all'avvio per ragioni di sicurezza. In questo caso possibile sostituire defaults con noauto. Questo significa che necessario montare

manualmente la partizione ogni volta si desidera accedervi. Aggiungere le righe corrispondenti al proprio schema di partizionamento ed aggiungerne per le periferiche CD-ROM ed ovviamente per gli altri tipi di partizioni o dispositivi in uso. Usare ora l'esempio che segue per creare il proprio /etc/fstab: Codice 1.3: Un esempio completo di /etc/fstab
/dev/sda1 /dev/sda2 /dev/sda3 /dev/cdrom proc shm /boot none / /mnt/cdrom /proc /dev/shm ext2 swap ext3 auto proc tmpfs defaults,noatime sw noatime noauto,user defaults nodev,nosuid,noexec 1 2 0 0 0 1 0 0 0 0 0 0

L'impostazione auto fa in modo che mount rilevi automaticamente il filesystem (raccomandato per i media rimovibili poich possono essere creati con molti filesystem); l'impostazione user rende possibile montare il CD per gli utenti che non hanno il privilegio di root. Per migliorare la prestazioni, la maggior parte degli utenti potrebbe volere aggiungere l'opzione noatime come opzione di mount, con cui si ottiene un sistema pi veloce, poich i tempi di accesso non sono registrati (di solito comunque non c' bisogno di averli): Rileggere con attenzione /etc/fstab, salvarlo e uscire per continuare. 8.b. Informazioni di rete Hostname, nome di dominio e altro Una delle scelte che l'utente deve fare, quella di dare un nome al proprio PC. Sembra facile, ma molti utenti hanno delle difficolt nel trovare il nome appropriato per il loro pc Linux. Per velocizzare le cose, importante sapere che qualsiasi nome si scelga, si pu in seguito cambiarlo. Per quello che importa si pu chiamare il sistema tux e il dominio homenetwork. Codice 2.1: Impostare l'hostname
# nano -w /etc/conf.d/hostname (Impostare la variabile HOSTNAME con il nome dell'host scelto) HOSTNAME="tux"

Poi, se si necessita di un nome di dominio, impostarlo in /etc/conf.d/net. E' necessario un nome di dominio solo se il proprio provider o il proprio amministratore lo richiedono o se si ha un DNS ma non un DHCP. Non necessario preoccuparsi del dominio se i propri parametri di rete vengono impostati via DHCP. Codice 2.2: Impostare il nome di dominio
# nano -w /etc/conf.d/net (Valorizzare la variabile dns_domain al nome del proprio dominio) dns_domain_lo="homenetwork"

Nota: Se si sceglie di non impostare un nome di dominio, si pu evitare che venga mostrato al login il messaggio "This is hostname.(none)" semplicemente modificando /etc/issue. Basta eliminare la stringa .\O dal file. Se si utilizza un dominio NIS (se non si sa cosa sia la risposta no), necessario definirlo: Codice 2.3: Impostare il nome di dominio NIS
# nano -w /etc/conf.d/net (Valorizzare la variabile nis_domain al nome del proprio dominio NIS) nis_domain_lo="my-nisdomain"

Nota: Per ulteriori informazioni sulla configurazione di DNS e NIS, consultare gli esempi forniti nel file /etc/conf.d/net.example. E' possibile anche installare openresolv per gestire la configurazione DNS/NIS. Configurare la rete Si dovrebbe ricordare che la configurazione della rete fatta inizialmente era solo per

l'installazione di Gentoo. Adesso necessario configurare la rete per il sistema Gentoo in funzione. Nota: Ulteriori e pi dettagliate informazioni sulle impostazioni di rete, tra cui argomenti avanzati come bonding, bridging, 802.1Q VLAN o wireless vengono trattate nella sezione dedicata alla Configurazione di rete in Gentoo. Tutte le informazioni di rete sono raccolte in /etc/conf.d/net. Questo file usa una sintassi semplice ma non molto intuitiva per chi non sa installare la rete manualmente. Non si si deve preoccupare, in quanto verr spiegato tutto. Un esempio ampiamente commentato che copre i diversi tipi di configurazione disponibile in /etc/conf.d/net.example. Come impostazione predefinita viene utilizzato DHCP. Perch il DHCP funziono c' bisogno di un client adeguato. Questa operazione descritta in seguito nella Installazione degli strumenti di sistema. Non dimenticare di installare un client DHCP. Se si necessita di configurare la rete, sia perch si necessita di impostare il comportamento di DHCP, o perch non si utilizza affatto DHCP, aprire con il proprio editor preferito (in questo esempio si usa nano) /etc/conf.d/net. Codice 2.4: Modificare /etc/conf.d/net
# nano -w /etc/conf.d/net

Il file aperto il seguente: Codice 2.5: /etc/conf.d/net predefinito


# # # # This blank configuration will automatically use DHCP for any net.* scripts in /etc/init.d. To create a more complete configuration, please review /etc/conf.d/net.example and save your configuration in /etc/conf.d/net (this file :]!).

Per impostare l'indirizzo IP, la maschera di rete ed il gateway necessario impostare le variabili config_eth0 e routes_eth0: Codice 2.6: Impostare manualmente l'interfaccia eth0
config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" ) routes_eth0=( "default via 192.168.0.1" )

Per utilizzare DHCP, definire config_eth0:


config_eth0=( "dhcp" )

Codice 2.7: Ottenere automaticamente un indirizzo IP per eth0 Leggere /etc/conf.d/net.example per una lista di tutte le opzioni disponibili. Se si ha la necessit di impostare delle opzioni specifiche per DHCP assicurarsi di leggere la pagina di manuale del client DHCP. Se si dispone di diverse interfacce di rete, ripetere i passi precedenti per config_eth1, config_eth2, ecc. Salvare la configurazione ed uscire per continuare. Far partire automaticamente la rete all'avvio Per attivare le interfacce di rete all'avvio, si deve aggiungerle al runlevel di default. Codice 2.8: Aggiungere net.eth0 al runlevel di default
# rc-update add net.eth0 default

Se si hanno molte interfacce di rete, si devono creare gli script di init per net.eth1, net.eth2, ecc. Per farlo si pu usare ln: Codice 2.9: Creare gli initscripts aggiuntivi
# cd /etc/init.d # ln -s net.lo net.eth1 # rc-update add net.eth1 default

Scrivere le informazioni di rete E' necessario fornire a Linux informazioni sulla propria rete. Queste si trovano in /etc/hosts, e aiutano a mettere in corrispondenza gli hostname e gli indirizzi IP, per gli host che non sono risolti dal nameserver. E' necessario impostare una riga per il proprio sistema. Si potrebbe anche volerne impostare ulteriori per sistemi delle propria rete che non si desidera risolvere

tramite il DNS. Codice 2.10: Aprire /etc/hosts


# nano -w /etc/hosts

Codice 2.11: Inserire le informazioni di rete


(Definizione per il proprio sistema) 127.0.0.1 tux.homenetwork tux localhost

(Definire ulteriori host della propria rete. E' necessario che dispongano di un indirizzo IP stati 192.168.0.5 jenny.homenetwork jenny 192.168.0.6 benny.homenetwork benny

Salvare e uscire per continuare. Se non si ha PCMCIA, si pu continuare con le Informazioni sul sistema. Coloro che hanno PCMCIA possono invece leggere la parte seguente. Opzionale: Far funzionare PCMCIA Gli utenti PCMCIA devono innanzitutto installare il pacchetto pcmciautils. Codice 2.12: Installare pcmciautils
# USE="-X" emerge pcmciautils

8.c. Informazioni sul sistema Password di Root Inanzitutto si imposta la password di root scrivendo: Codice 3.1: Impostazione della password di root
# passwd

Informazioni sul sistema Gentoo usa /etc/rc.conf per la configurazione generale del sistema. Aprire /etc/rc.conf per vederne i contenuti e leggerne le spiegazioni. Codice 3.2: Aprire /etc/rc.conf
# nano -w /etc/rc.conf

Una volta terminata la configurazione di /etc/rc.conf, salvare e uscire. Come si pu vedere, questo file contiene tutte le spiegazioni necessarie per impostare le variabili di configurazione. E' possibile configurare il proprio sistema per utilizzare unicode e definire il proprio editor predefinito ed il proprio display manager (come gdm o kdm). Gentoo usa /etc/conf.d/keymaps anche per gestire la configurazione della tastiera. E' possibile modificarlo per cambiare le impostazioni della tastiera. Codice 3.3: Modificare /etc/conf.d/keymaps
# nano -w /etc/conf.d/keymaps

Si presti particolare attenzione alla variabile KEYMAP: impostare questo valore in maniera sbagliata significa avere problemi con l'uso della tastiera. Una volta terminata la configurazione di /etc/conf.d/keymaps, salvare e uscire. Gentoo usa /etc/conf.d/clock per impostare l'orologio. E' possibile modificarlo per personalizzare l'orologio. Codice 3.4: Modificare /etc/conf.d/clock
# nano -w /etc/conf.d/clock

Se il proprio orologio hardware non impostato su UTC necessario aggiungere l'impostazione CLOCK="local" al file. In caso contrario l'orologio non funziona correttamente. E' necessario definire il fuso orario che si precedentemente copiato in /etc/localtime in modo tale che gli aggiornamenti al pacchetto sys-libs/timezone-data possano automaticamente aggiornare /etc/localtime. Ad esempio se si dovesse usare l'impostazione GMT si dovrebbe aggiungere TIMEZONE="GMT".

Una volta terminata la configurazione di /etc/conf.d/clock, salvare e uscire. Continuare con l'Installazione degli strumenti di sistema necessari.

9. Installazione degli strumenti di sistema


9.a. Logger di sistema Alcuni strumenti non sono inclusi nello stage3 perch ci sono diversi pacchetti che offrono le medesime funzionalit, perci viene lasciata all'utente la libert di scegliere quali installare. Il primo strumento che si deve scegliere serve a fornire un facile logging per il sistema. Unix e Linux hanno una eccellente storia sulle possibilit di logging; se si desidera, nei file di log si pu osservare tutto quello che succede sul sistema. Ci avviene attraverso il logger di sistema. Gentoo offre molti logger di sistema. Ci sono sysklogd, che l'insieme tradizionale di demoni per i log di sistema, syslog-ng, un logger di sistema avanzato, e metalog che risulta essere un'alternativa altamente configurabile. Potrebbero gi esserne disponibili altri, visto che il numero di pacchetti cresce di giorno in giorno. Se si sceglie di utilizzare sysklogd o syslog-ng pu essere consigliabile l'installazione di logrotate visto che non viene fornito alcun sistema di archiviazione automatica dei log vecchi. Per installare il logger di sistema scelto, si deve emergerlo e aggiungerlo al runlevel di default con rc-update. L'esempio seguente installa syslog-ng. Ovviamente si deve sostituirlo con logger di sistema scelto: Codice 1.1: Installare un logger di sistema
# emerge syslog-ng # rc-update add syslog-ng default

9.b. Opzionale: Demone cron

Il prossimo strumento il demone cron. Anche se opzionale e non richiesto per il sistema, consigliato installarlo. Di che cosa si tratta? Il demone cron esegue comandi programmati. E' molto utile se si deve eseguire qualche comando regolarmente (per esempio, giornalmente, settimanalmente o mensilmente). Gentoo offre tre possibili demoni cron: dcron, fcron e vixie-cron. Installare uno di questi simile ad installare un logger di sistema. Tuttavia, dcron e fcron richiedono un comando extra di configurazione, che crontab /etc/crontab. Se si indecisi su quale scegliere, usare vixie-cron. Se si sta installando Gentoo senza il collegamento alla rete Internet, possibile scegliere solo vixie-cron. Se si desidera installarne un altro possibile attendere e farlo in seguito. Codice 2.1: Installare un demone cron
# emerge vixie-cron # rc-update add vixie-cron default (Solo se si scelto dcron o fcron:) # crontab /etc/crontab

9.c. Opzionale: indicizzazione dei file Se si desidera indicizzare i file del proprio sistema in modo da poterli localizzare rapidamente usando locate, necessario installare sys-apps/mlocate. Codice 3.1: Installazione di mlocate
# emerge mlocate

9.d. Strumenti per il file system In base al file system che si sta usando, si devono installare gli strumenti di utilit necessari (per controllare l'integrit del file system, per creare un file system supplementare etc.). Notare che gli strumenti per gestire i filesystem ext2/ext3 (e2fsprogs) sono gi installati

come parte del sistema. La seguente tabella elenca gli strumenti necessari da installare se si usa un determinato file system: File System Strumento Comando di installazione emerge xfsprogs XFS xfsprogs ReiserFS reiserfsprogs emerge reiserfsprogs emerge jfsutils JFS jfsutils Se si desidera usare EVMS, necessario installare emvs: Codice 4.1: Installazione degli strumenti EVMS
# USE="-gtk" emerge evms

L'uso di USE="-gtk" evita che vengano installate alcune dipendenze. Se si desidera abilitare gli strumenti grafici di evms possibile ricompilare il pacchetto in un secondo momento. 9.e. Strumenti di rete Se non si necessita di ulteriori strumenti per la rete (quali ppp o un client dhcp) continuare con la Configurazione del bootloader. Opzionale: Installare un client DHCP Se necessario che Gentoo ottenga automaticamente un indirizzo IP per una o pi interfacce di rete necessario installare dhcpcd (o qualsiasi altro client DHCP, consultare il capitolo Impostazioni modulari per una lista di possibili client). In caso contrario potrebbe non essere possibile utilizzare la rete al termine dell'installazione. Codice 5.1: Installazione di dhcpcd
# emerge dhcpcd

Opzionale: Installare un client PPPoE Se si ha bisogno di ppp per connettersi alla rete, bisogna installarlo: Codice 5.2: Installare ppp
# emerge ppp

Continuare ora con la Configurazione del Bootloader.

10. Configurazione del Bootloader


10.a. La scelta Introduzione Dopo aver configurato e compilato il kernel e inserito i necessari file di configurazione, venuto il momento di installare il programma che esegue il kernel nel momento in cui si avvia il sistema. Tale programma chiamatobootloader. Per la piattaforma AMD64, Gentoo Linux fornisce GRUB e LILO. Ma prima di installare il bootloader ecco come configurare il framebuffer (nel caso lo si desideri ovviamente). Con il framebuffer possibile eseguire la linea di comando Linux con alcune caratteristiche grafiche (come lo sfondo che viene fornito da Gentoo). Opzionale: Framebuffer Se il kernel stato configurato con supporto al framebuffer (o stato utilizzata la configurazione predefinita di genkernel), possibile attivarne l'utilizzo aggiungendo l'opzione video al file di configurazione del bootloader. Innanzitutto necessario conoscere la propria periferica framebuffer. Si dovrebbe utilizzare uvesafb come driver VESA. L'opzione video controlla i parametri del framebuffer. Necessita di avere il driver del framebuffer seguito dalle impostazioni da abilitare. Tutte le impostazioni attivabili sono

elencate in/usr/src/linux/Documentation/fb/uvesafb.txt. Quelle pi utilizzate sono: Parametro Descrizione Assume che la scheda grafica possa accedere circolarmente alla ywrap memoria e continuare dall'inizio una volta arrivati alla fine Imposta i registri MTRR. n pu essere: 0 - disabled 1 - uncachable mtrr:n 2 - write-back 3 - write-combining 4 - write-through Imposta la risoluzione, il numero di colori e la frequenza di refresh. Ad mode esempio 1024x768-32@85 per una risoluzione di 1024x768, 32 bit di colori e una frequenza di refresh di 85 Hz. Il risultato di queste due impostazioni pu essere del tipo video=uvesafb:mtrr,ywrap,1024x768-32@85. E' importante ricordare questa riga perch sar utile in seguito. Continuare ora con l'installazione di GRUB o LILO. 10.b. Predefinito: Usare GRUB Comprendere la terminologia di GRUB La parte pi critica da capire di GRUB, quella nella quale si deve prendere confidenza con il modo in cui GRUB si riferisce ai dischi e alle partizioni. La partizione di Linux /dev/sda1 (per le periferiche IDE) o /dev/sda1 (per le periferiche SATA/SCSI) probabilmente chiamata da GRUB (hd0,0). Prestare attenzione alle parentesi intorno ad hd0,0, sono necessarie. I dischi vengono contati da zero invece che da "a", e le partizioni partono da zero invece che da uno. Prestare ancora attenzione al fatto che tra le periferiche hd vengono inclusi solo gli hard disk e non le periferiche atapi-ide come i lettori cdrom e i masterizzatori. Lo stesso vale per i dischi SCSI. (Normalmente questi prendono numeri pi alti rispetto a quelli ide, eccetto quando il bios configurato per fare il boot dai dischi SCSI.) Quando si imposta il BIOS per fare boot da un disco diverso (ad esempio il primary slave) quel disco viene visto come hd0. Avendo quindi un hard disk in /dev/sda, un lettore cdrom in /dev/hdb, un masterizzatore in /dev/hdc, un secondo hard disk in /dev/hdd e nessun disco SCSI, /dev/hdd7 viene trasformato in (hd1,6). Potrebbe suonare complicato e lo in effetti, ma come si vedr, GRUB offre un meccanismo di completamento con il tasto TAB che si dimostra comodo per coloro che hanno un numero elevato di hard disk e partizioni, e per coloro che sono a disagio con lo schema numerico di GRUB. Dopo essere entrati nello spirito il momento di installare GRUB. Installare GRUB Per installare GRUB, si deve prima emergerlo: Importante: Se si sta utilizzando un profilo non multilib, not installare grub, ma installare grub-static. Se stato pianificato l'uso di un profilo non-multilib e si ha disabilitato l'emulazione IA-32 nel proprio kernel, allora si dovrebbe usarelilo. Codice 2.1: Installare GRUB
# emerge grub

Nonostante GRUB sia installato, si deve ancora modificare un file di configurazione perch GRUB venga installato nel MBR in modo che possa avviare il nuovo kernel. Creare /boot/grub/grub.conf con nano (o con un altro editor): Codice 2.2: Creare /boot/grub/grub.conf
# nano -w /boot/grub/grub.conf

Ora necessario modificare grub.conf. Seguono due possibili grub.conf per l'esempio di

partizione usato in questa guida. Viene per analizzato a fondo solo il primo grub.conf. Assicurarsi di personalizzare le impostazioni indicando la propria immagine del kernel e il proprio initrd. Il primo grub.conf per chi non ha usato genkernel per compilare il kernel Il secondo grub.conf per chi ha usato genkernel Nota: Grub assegna i dispositivi prendendo la configurazione dal BIOS. Se si cambiano le impostazioni di quest'ultimo, le lettere e la numerazione dei propri dispositivi potrebbero anche cambiare. Per esempio, se si cambia l'ordine di avvio dei dispositivi, potrebbe essere necessario cambiare la propria configurazione di grub. Nota: Se il proprio filesystem root JFS necessario aggiungere "ro" alla linea kernel perch JFS ha bisogno di esaminare il proprio log prima di concedere il mount in scrittura. Codice 2.3: grub.conf per utenti che non hanno usato genkernel
# Quale opzione viene avviata in modo predefinito. 0 la prima, 1 la seconda, ecc. default 0 # Quanti secondi attenedere prima di avviare l'opzione predefinita. timeout 30 # Un'immagine gradevole da commentare se non si dispone di scheda grafica splashimage=(hd0,0)/boot/grub/splash.xpm.gz title Gentoo Linux 2.6.34-r1 # La partizione dove si trova l'immagine del kernel (o il sistema operativo) root (hd0,0) kernel /boot/kernel-2.6.34-gentoo-r1 root=/dev/sda3 title Gentoo Linux 2.6.34-r1 (rescue) # Partizione dove si trova l'immagine del kernel o il sistema operativo root (hd0,0) kernel /boot/kernel-2.6.34-gentoo-r1 root=/dev/sda3 init=/bin/bb # Le prossime tre righe vanno messe solo se si ha un dualboot con Windows. # In questo caso, Windows in /dev/sda6. title Windows XP rootnoverify (hd0,5) makeactive chainloader +1

Codice 2.4: grub.conf per utenti che hanno usato genkernel


default 0 timeout 30 splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.34-r1 root (hd0,0) kernel /boot/kernel-genkernel-amd64-2.6.34-gentoo-r1 root=/dev/ram0 init=/linuxrc ramdisk=8192 rea initrd /boot/initramfs-genkernel-amd64-2.6.34-gentoo-r1 # Solo nel caso si desideri il dual-boot title Windows XP rootnoverify (hd0,5) makeactive chainloader +1

Se si usa uno schema di partizioni e/o un'immagine del kernel differenti da quelli dell'esempio, cambiare le impostazioni di conseguenza. Assicurarsi che qualsiasi cosa che segue un dispositivo GRUB (come (hd0,0)), sia relativa al punto di mount, e non a root. In altre parole, (hd0,0)/boot/grub/splash.xpm.gz /boot/grub/splash.xpm.gz poich (hd0,0) /boot. Inoltre, se si sceglie di utilizzare uno schema di partizionamento diverso e non si posto /boot in una partizione separata l'aggiunta di /boot negli esempi precedenti davvero essenziale. Se invece si seguito lo schema suggerito l'utilizzo del prefisso /boot non richiesto ma pu essere utilizzato con un link simbolico a boot. In breve, gli esempi proposti sono funzionanti sia che /boot sia stata definita come partizione separata sia no.

Se si ha bisogno di inserire opzioni ulteriori al kernel, aggiungerle alla fine del comando kernel. Si gi inserita una opzione (root=/dev/sda3 o real_root=/dev/sda3), ma se ne possono inserire altre, ad esempio l'istruzionevideo per il framebuffer, di cui si parlato precedentemente: Se il proprio file di configurazione del bootloader contiene il parametro real_root usare il parametro rootflags per impostare le opzioni di montaggio del filesystem di root. Se si utilizza un kernel successivo al 2.6.7 e il proprio BIOS non riconosce i drive grandi necessario aggiungere l'istruzione hdx=stroke. Coloro che usano genkernel devono sapere che i loro kernel hanno le stesse opzioni di boot del CD di Installazione. Per esempio, se si disponde di un disco SCSI, si dovrebbe aggiungere doscsi come opzione del kernel. Salvare ora il file grub.conf e uscire. Bisogna ancora installare GRUB nel MBR (Master Boot Record) in modo che GRUB venga eseguito automaticamente al boot del sistema. Gli sviluppatori di GRUB raccomandano l'utilizzo di grub-install. In ogni caso, se per qualche ragione grub-install non funzionasse ancora possibile installare GRUB manualmente. Continuare la lettura con Predefinito: Impostare GRUB con grub-install o Alternativa: Impostare GRUB manualmente. Predefinito: Impostare GRUB con grub-install Per installare GRUB necessario lanciare il comando grub-install. In questo caso per grub-install non pu funzionare come al solito, perch siamo in un ambiente in chroot. Dobbiamo prima aggiornare /etc/mtab (il file contenente le informazioni sui filesystem montati): fortunatamente c' un modo semplice per farlo, copiando /proc/mounts in /etc/mtab ed escludendo rootfs se non stata creata una partizione di boot separata. Il seguente comando valido in ogni caso: Codice 2.5: Aggiornamento di /etc/mtab
# grep -v rootfs /proc/mounts > /etc/mtab

Ora possibile installare GRUB con grub-install: Codice 2.6: Eseguire grub-install
# grub-install --no-floppy /dev/sda

Per ulteriori informazioni riguardanti GRUB consultare le domande frequenti su GRUB (FAQ) (in inglese, ndt), il Wiki di GRUB (in inglese, ndt) o leggere info grub dal proprio terminale. Continuare la lettura con il Riavvio del sistema. Alternativa: Impostare GRUB manualmente Per iniziare la configurazione di GRUB, digitare grub. Viene visualizzato il prompt della linea di comando di grub, grub>. Ora si pu procedere a digitare i comandi corretti per installare il boot record di GRUB sull'hard disk. Codice 2.7: Avviare la shell di GRUB
# grub --no-floppy

Nota: Se il sistema non dispone di un lettore floppy, aggiungere l'opzione --no-floppy al comando precedente per evitare che grub lo cerchi. Nella configurazione di esempio, si desidera installare GRUB in modo che legga le proprie informazioni dalla partizione di boot /dev/sda1 ed installare il boot record di GRUB nel MBR (master boot record) dell'hard disk, in modo che la prima cosa che si veda, quando si accende il computer, sia il prompt di GRUB. Se non si seguita la configurazione di esempio durante l'installazione, necessario cambiare i comandi di conseguenza. Il meccanismo di completamento con il tasto TAB, pu essere usato da dentro GRUB. Per

esempio, se si digita "root (" seguito da TAB, viene elencata una lista degli hard disk disponibili (come hd0). Se si digita "root (hd0," seguito da TAB, viene invece elencata una lista delle partizioni disponibili nel disco (come hd0,0). Con il tasto TAB non dovrebbe essere difficile impostare GRUB. Ecco ora la vera e propria configurazione di GRUB. Codice 2.8: Installare GRUB nel MBR
grub> root (hd0,0) grub> setup (hd0) grub> quit (Specifica dove la partizione /boot) (Installa GRUB nel MBR) (Esce dalla shell di GRUB)

Nota: Se si desidera installare GRUB in una specifica partizione invece che nell'MBR, bisogna alterare il comando setup per farlo puntare alla partizione corretta. Per esempio, se si vuole installare GRUB in /dev/sda3, allora il comando diventa setup (hd0,2). Tuttavia pochi utenti potrebbero avere questa necessit. Per ulteriori informazioni riguardanti GRUB consultare le domande frequenti su GRUB (FAQ) (in inglese, ndt), il Wiki di GRUB (in inglese, ndt) o leggere info grub dal proprio terminale. Continuare la lettura con il Riavvio del sistema. 10.c. Alternativa: Usare LILO Installare LILO LILO, il LInuxLOader, il pi provato e il pi usato tra i bootloader di Linux. Per a LILO mancano alcune caratteristiche che non mancano a GRUB ( per questo che GRUB sta guadagnando sempre pi popolarit). Tuttavia LILO ancora usato perch, su alcuni sistemi, GRUB non funziona, mentre LILO funziona. LILO usato anche perch le persone che lo usano non vogliono abbandonarlo. Gentoo li supporta entrambi: ecco come si usa LILO. Installare LILO veloce, utilizzare emerge cos: Codice 3.1: Installare LILO
# emerge lilo

Configurare LILO Per configurare LILO si deve creare /etc/lilo.conf. Aprire l'editor preferito (in questo manuale si usa nano) e creare il file. Codice 3.2: Creare /etc/lilo.conf
# nano -w /etc/lilo.conf

In una sezione precedente, si chiesto di ricordare il nome dell'immagine del kernel che si creata. Nel prossimo esempio di lilo.conf si usa lo schema di partizioni dell'esempio precedente. Ci sono due sezioni separate: Una per chi non ha usato genkernel per compilare il kernel Una per chi ha usato genkernel per compilare il kernel E' importante assicurarsi di usare la propria immagine del kernel ed eventualmente il proprio initrd. Nota: Se il proprio filesystem root JFS, necessario aggiungere una riga append="ro" alla fine di ogni elemento boot perch JFS deve poter esaminare il suo log prima di concedere il mount in scrittura. Codice 3.3: Esempio di /etc/lilo.conf
boot=/dev/sda prompt delay=50 default=gentoo # # # # Installa LILO nel MBR D possibilit di selezionare un'altra sezione Aspetta 5 secondi prima di avviare la scelta predefinita Passato il timeout, avvia la sezione "gentoo"

# Per utenti che non hanno usato genkernel image=/boot/kernel-2.6.34-gentoo-r1 label=gentoo # Il nome dato alla sezione read-only # Avvio con root di sola lettura. Non modificare! root=/dev/sda3 # Posizione del filesystem root

image=/boot/kernel-2.6.34-gentoo-r1 label=gentoo.rescue # Il nome dato alla sezione read-only # Avvio con root di sola lettura. Non modificare! root=/dev/sda3 # Posizione del filesystem root append="init=/bin/bb" # Lancia la shell statica di emergenza # Per utenti che hanno usato genkernel image=/boot/kernel-genkernel-amd64-2.6.34-gentoo-r1 label=gentoo read-only root=/dev/ram0 append="init=/linuxrc ramdisk=8192 real_root=/dev/sda3" initrd=/boot/initramfs-genkernel-amd64-2.6.34-gentoo-r1 # Le due righe seguenti sono necessarie solo per un dualboot con Windows. # In questo caso, Windows in /dev/sda6. other=/dev/sda6 label=windows

Nota: Se si usa uno schema di partizioni differente e/o un'immagine del kernel non uguale a quella dell'esempio, cambiare le impostazioni di conseguenza. Se si ha bisogno di inserire ulteriori opzioni al kernel, si deve aggiungere append alla sezione. Come esempio, si usa video per abilitare il framebuffer: Codice 3.4: Usare append per aggiungere opzioni al kernel
image=/boot/kernel-2.6.34-gentoo-r1 label=gentoo read-only root=/dev/sda3 >append="video=uvesafb:mtrr,ywrap,1024x768-32@85"

Se si utilizza un kernel successivo al 2.6.7 e il proprio BIOS non riconosce i drive grandi necessario aggiungere l'istruzione hdx=stroke. Coloro che usano genkernel devono sapere che i loro kernel hanno le stesse opzioni di boot del CD di Installazione. Per esempio, se si disponde di un disco SCSI, si deve aggiungere doscsi come opzione del kernel. Ora salvare il file e uscire. Per finire, si deve eseguire /sbin/lilo, cos LILO pu applicare /etc/lilo.conf al sistema (per esempio, installarsi sul disco). E' importante ricordare di eseguire /sbin/lilo ogni volta che si installa un nuovo kernel o si cambiano le impostazioni del menu. Codice 3.5: Finire l'installazione di LILO
# /sbin/lilo

Per ulteriori dubbi o perplessit riguardanti LILO possibile consultare la pagina wikipedia dedicata Continuare ora con il Riavvio del sistema. 10.d. Riavvio del sistema Uscire dall'ambiente in chroot e smontare tutte le partizioni. Ed eseguire poi l'ultimo comando, reboot. Codice 4.1: Umount delle partizioni e reboot
# exit cdimage ~# cd cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo cdimage ~# reboot

Non dimenticare di rimuovere il CD avviabile, altrimenti verr di nuovo avviato il CD al posto del sistema appena installato. Una volta effettuato il riavvio nella nuova installazione Gentoo, concludere con Termine dell'installazione di Gentoo.

11. Termine dell'installazione Gentoo


11.a. Gestione utente Aggiungere un utente per l'uso quotidiano Lavorare come root su un sistema Unix/Linux pericoloso e andrebbe evitato per quanto possibile. Per questo fortemente raccomandato aggiungere un utente per l'uso quotidiano. I gruppi a cui l'utente appartiene definiscono le attivit che l'utente autorizzato a effettuare. La seguente tabella elenca una serie dei pi comuni gruppi: Gruppo audio cdrom floppy games portage usb Descrizione abilita l'accesso ai dispositivi audio abilita l'accesso diretto ai dispositivi ottici abilita l'accesso diretto ai floppy abilita l'utilizzo dei giochi abilita l'utilizzo di emerge --pretend da utente normale

abilita l'accesso ai dispositivi USB concede la possibilit di montare ed utilizzre unit rimovibili quali plugdev memorie USB o macchine fotografiche. video abilita l'accesso all'hardware e all'accelerazione abilita l'utilizzo di su wheel Per esempio, per creare un utente chiamato john, che membro dei gruppi wheel, users e audio accedere come root ed eseguire useradd: Codice 1.1: Aggiungere un utente per l'uso quotidiano
Login: root Password: (inserire la password di root) # useradd john -m -G users,wheel,audio -s /bin/bash # passwd john Password: (Digitare la password per john) Re-enter password: (Ridigitare la password per verificare)

Se questo utente dovesse effettuare qualche operazione come root, pu usare su - per ricevere temporaneamente i privilegi di root. Un altro modo quello di usare il pacchetto sudo, che molto sicuro, se configurato correttamente. 11.b. Pulizia del disco Eliminare i tar Ora che l'installazione di Gentoo terminata ed stato effettuato il riavvio, se tutto si completato correttamente possibile rimuovere gli archivi tar stage3 e l'immagine di Portage dal disco. Ricordarsi che sono state scaricate nella directory /. Codice 2.1: Rimuovere gli archivi stage3
# rm /stage3-*.tar.bz2*

Codice 2.2: Rimuovere l'immagine di Portage


# rm /portage-latest.tar.bz2*

12. Cosa fare adesso?


12.a. Documentazione Congratulazioni! Adesso si ha un sistema funzionante con Gentoo. Ma cosa fare adesso? Quali sono le opzioni? Che cosa vedere per prima cosa? Gentoo fornisce ai suoi utenti molte possibilit e caratteristiche pi o meno documentate. consigliabile leggere la prossima parte del Manuale Gentoo, Lavorare con Gentoo, che spiega come mantenere aggiornato il software, come installare altro software, che cosa sono le flag USE, come funziona il sistema di inizializzazione (init) di Gentoo, ecc.

Se si interessati all'ottimizzazione del proprio sistema per il desktop, o si vuole imparare a configurare il sistema affinch diventi un desktop completamente funzionante, consultare le Guide alla configurazione del desktop. Inoltre possibile consultare la guida alla localizzazione per adattare il proprio sistema alla lingua locale. E' infine disponibile un ampio manuale riguardante la sicurezza con Gentoo di sicuro interesse. Per un elenco completo di tutta la documentazione disponibile, consultare le risorse della Documentazione Gentoo. 12.b. Gentoo Online Naturalmente si i benvenuti sui Forum Gentoo, o su uno dei tanti Canali IRC Gentoo. Ci sono anche molte mailing list aperte a tutti gli utenti. Informazioni su come unirsi sono contenute sulla pagina. Per ora si termina qui, buon divertimento con Gentoo.

B. Lavorare con Gentoo


1. Una introduzione di Portage
1.a. Benvenuti in Portage Portage probabilmente l'innovazione di Gentoo pi rilevante nella gestione software. La grande flessibilit e l'enorme quantit di caratteristiche ne fanno uno dei migliori programmi per la gestione del software disponibili per Linux. Portage completamente scritto in Python e Bash e perci completamente visibile agli utenti essendo entrambi linguaggi di scripting. Molti utenti useranno Portage attraverso il tool emerge. Questo capitolo non un duplicato delle informazioni disponibili attraverso le pagine man di emerge. Per avere la lista completa delle opzioni di emerge, consultare la pagina man: Codice 1.1: Leggere la pagina man di emerge
# man emerge

1.b. L'albero del Portage Gli ebuild Quando si parla di pacchetti si intendono spesso titoli software che sono disponibili agli utenti Gentoo attraverso l'albero del Portage. L'albero del Portage una collezione di file ebuild che contengono tutte le informazioni necessarie al Portage per manutenere il software (installare, ricercare,....). Questi ebuild risiedono di default in /usr/portage. Ogni qualvolta si chiede al Portage di eseguire alcune azioni riguardanti i titoli software, vengono usati gli ebuild del sistema come base. Diviene, cos, importante aggiornare regolarmente gli ebuild del sistema in modo tale che Portage sia a conoscenza del nuovo software, degli aggiornamenti, ecc. Aggiornamento dell'albero del Portage L'albero del Portage viene di solito aggiornato con rsync, una utility per il trasferimento incrementale di file. L'aggiornameto realmente semplice dato che il comando emerge fornisce un'interfaccia per rsync: Codice 2.1: Aggiornamento dell'albero del Portage
# emerge --sync

Se non si riesce ad usare rsync a causa di un firewall si pu aggiornare l'albero del Portage usando lo snapshot che viene generato giornalmente. Il tool emerge-webrsync scarica ed installa automaticamente l'ultimo snapshot dai sistemi Gentoo.

Codice 2.2: Eseguire emerge-webrsync


# emerge-webrsync

1.c. Manutenzione del software Ricerca del software La ricerca dei titoli software attraverso l'albero del Portage si esegue utilizzando la funzione di ricerca di emerge. Di default emerge --search restituisce i nomi dei pacchetti i cui titoli corrispondono (per intero o parzialmente) a quelli forniti per la ricerca. Per esempio, dovendo cercare tutti i pacchetti che hanno "pdf" nel loro nome: Codice 3.1: Cercare i pacchetti che contengono pdf nel nome
$ emerge --search pdf

Se si vuole cercare attraverso la descrizione si pu usare l'opzione --searchdesc ( o -S): Codice 3.2: Cercare i pacchetti che contengono pdf nella descrizione
$ emerge --searchdesc pdf

Da uno sguardo all'output si nota che vengono fornite diverse informazioni. I campi sono chiaramente identificativi per cui non si addentrer ulteriormente nel loro significato: Codice 3.3: Esempio dell'output di 'emerge --search'
* net-print/cups-pdf Latest version available: 1.5.2 Latest version installed: [ Not Installed ] Size of downloaded files: 15 kB Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/ Description: Provides a virtual printer for CUPS to produce PDF files. License: GPL-2

Installazione del software

Una volta trovato il titolo del software che interessa, lo si pu facilmente installare con emerge facendolo seguire dal nome del pacchetto. Per esempio, per installare gnumeric: Codice 3.4: Installare gnumeric
# emerge gnumeric

Dato che molte applicazioni dipendono da altre ogni tentativo di installare certi pacchetti software potrebbe portare all'installazione di alcuni pacchetti aggiuntivi. Se si vuol sapere cosa verr installato dal Portage quando viene richiesta un'installazione, si deve aggiungere l'opzione --pretend. Per esempio: Codice 3.5: Fingere di installare gnumeric
# emerge --pretend gnumeric

Quando si chiede al Portage di installare un pacchetto, verr scaricato il codice sorgente necessario da internet e memorizzato di default in /usr/portage/distfiles. Il pacchetti verr quindi estratto, compilato ed installato. Se si vuole che Portage scarichi solo i sorgenti senza installarli, aggiungere al comando emerge l'opzione --fetchonly: Codice 3.6: Scaricare il codice sorgente di gnumeric
# emerge --fetchonly gnumeric

Trovare la documentazione di pacchetti installati Molti pacchetti forniscono la propria documentazione. Alcune volte il flag USE doc determina se la documentazione del pacchetto verr installata o no. Si pu controllare l'esistenza di un flag USE doc con il comando emerge -vp <nome pacchetto>. Codice 3.7: Controllo dell'esistenza di un flag USE doc
(Naturalmente, alsa-lib solamente un esempio.) # emerge -vp alsa-lib [ebuild N ] media-libs/alsa-lib-1.0.14_rc1 -debug +doc 698 kB

La modalit di abilitazione migliore per la flag USE doc quella per singolo pacchetto tramite /etc/portage/package.use, in modo da avere la documentazione solo per i pacchetti desiderati. Abilitare globalmente questa flag pu introdurre dei problemi di dipendenze circolari. Per maggiori informazioni, si prega di consultare il capitolo Flag USE.

Una volta che il pacchetto stato installato, la sua documentazione viene generalmente trovata in una sottodirectory col nome del pacchetto nella directory /usr/share/doc. Si pu avere la lista dei file installati con lo strumentoequery che fa parte del pacchetto appportage/gentoolkit . Codice 3.8: Trovare la documentazione di un pacchetto
# ls -l /usr/share/doc/alsa-lib-1.0.14_rc1 total 28 -rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz -rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz drwxr-xr-x 2 root root 8560 May 17 21:54 html -rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz (Alternativamente, usare equery per localizzare file che interessano:) # equery files alsa-lib | less media-libs/alsa-lib-1.0.14_rc1 * Contents of media-libs/alsa-lib-1.0.14_rc1: /usr /usr/bin /usr/bin/alsalisp (output troncato)

Rimozione del software Se si vuole rimuovere un pacchetto dal sistema, usare emerge --unmerge. Questo comando rimuover tutti i file installati dal pacchetto eccetto i file di configurazione che sono stati alterati dopo l'installazione. In questo modo si permette di continuare a lavorare con il pacchetto nel caso si decidesse di installarlo nuovamente. Attenzione: Portage non controller se il pacchetto che si vuole rimuovere sia richiesto da un altro pacchetto. Verr solo emesso un avviso del fatto che la rimozione di pacchetti importanti potrebbe danneggiare il sistema. Codice 3.9: Rimozione di gnumeric
# emerge --unmerge gnumeric

Quando si rimuove un pacchetto dal sistema, le sue dipendenze saranno lasciate. Per far trovare al Portage tutte le dipendenze che potrebbero essere rimosse, usare la funzionalit -depclean di emerge. Se ne parler in seguito. Aggiornare il software Per mantenere il sistema in perfetta forma (e non solo con gli ultimi aggiornamenti sulla sicurezza) si dovr mantenere aggiornato il sistema regolarmente. Dato che Portage controlla gli ebuild dell'albero del Portage si dovr prima aggiornare l'albero. Quindi, si potr aggiornare il sistema con emerge --update world. Nell'esempio che segue, verr utilizzato il parametro --ask che istruisce il Portage a visualizzare la lista dei pacchetti da aggiornare e la richiesta se si vuole continuare: Codice 3.10: Aggiornare il sistema
# emerge --update --ask world

Portage cercher quindi le nuove versioni delle applicazioni installate. Verranno comunque verificate solo le versioni per le applicazioni che si sono esplicitamente installate (cio le applicazioni elencate in/var/lib/portage/world) e non le dipendenze. Se si vuole aggiornare ogni singolo pacchetto del sistema, occorre aggiungere l'argomento --deep: Codice 3.11: Aggiornare l'intero sistema
# emerge --update --deep world

Dato che aggiornamenti che riguardano la sicurezza possono essere correlati a pacchetti che non si sono esplicitamente installati nel sistema (ma che sono stati installati quali dipendenze di altri programmi), si raccomanda di eseguire questo comando una volta ogni tanto. Se stato alterato qualche USE flag si pu aggiungere l'opzione --newuse. Portage verificher se la modifica richiede l'installazione di nuovi pacchetti o la ricompilazione di quelli esistenti:

Codice 3.12: Eseguire un aggiornamento completo


# emerge --update --deep --newuse world

Metapacchetti

Alcuni pacchetti presenti nell'albero del Portage non hanno un contenuto reale ma sono usati per installare una collezione di pacchetti. Per esempio, il pacchetto kde-meta installa un ambiente KDE sul sistema ricercando tra i vari pacchetti legati al KDE come dipendenze. La rimozione di un tale pacchetto dal sistema usando emerge --unmerge, non avr successo dato che le numerose dipendenze rimarranno sul sistema. Portage ha anche la funzionalit di rimozione delle dipendenze orfane, ma dato che la disponibilit del software dinamicamente dipendente, occorre prima aggiornare completamente l'intero sistema, includendo, se ci sono state, le modifiche alle flag USE. Quindi sar possibile eseguire emerge --depclean per rimuovere le dipendenze orfane. Fatto ci, ci sar bisogno di ricompilare le applicazioni che erano dinamicamente linkate al software rimosso ma non pi richiesto. Tutto ci pu essere fatto con un seguenti tre comandi: Codice 3.13: Rimozione delle dipendenze orfane
# emerge --update --deep --newuse world # emerge --depclean # revdep-rebuild

revdep-rebuild viene fornito col pacchetto gentoolkit, che deve essere quindi preventivamente installato: Codice 3.14: Installazione del pacchetto gentoolkit
# emerge gentoolkit

1.d. Licenze

A partire dalla versione 2.1.7 di Portage, possibile accettare o rifiutare l'installazione di un software in base alla sua licenza. Tutti i pacchetti nell'albero di Portage contengono una voce LICENSE nelle rispettive ebuild. Eseguendoemerge --search nomepacchetto possibile visualizzare la licenza del pacchetto. Come impostazione predefinita, Portage permette tutte le licenze, eccetto le "End User License Agreements" (EULA) che richiedono la lettura e la sottoscrizione dell'accettazione di un accordo. La variabile che controlla le licenze permesse ACCEPT_LICENSE, che pu essere impostata in /etc/make.conf: Codice 4.1: Valorizzazione predefinita di ACCEPT_LICENSE in /etc/make.conf
ACCEPT_LICENSE="* -@EULA"

Con questa configurazione, i pacchetti che richiedono un'interazione durante l'installazione a causa dell'approvazione della loro licenza EULA non verranno installati. I pacchetti senza un licenza di tipo EULA verranno installati. possibile specificare globalmente ACCEPT_LICENSE all'interno di /etc/make.conf, o specificarla in base ad ogni pacchetti in /etc/portage/package.license. Per esempio, se si vuol permettere la licenza truecrypt-2.7 per app-crypt/truecrypt, aggiungere la voce seguente al file /etc/portage/package.license: Codice 4.2: Specificare una licenza truecrypt in package.license
app-crypt/truecrypt truecrypt-2.7

Questo permette l'installazione delle versioni di truecrypt che hanno una licenza truecrypt2.7, ma non delle versioni che hanno una licenza truecrypt-2.8 Importante: Le licenze sono memorizzate all'interno della directory /usr/portage/licenses, e i gruppi di licenze dentro a /usr/portage/profiles/license_groups. La prima voce di ogni linea avente lettere MAIUSCOLE il nome del gruppo delle licenze, e ogni voce successiva una licenza individuale.

I gruppi di licenze definiti in ACCEPT_LICENSE hanno il prefisso @ nel loro nome. Ecco un esempio di un sistema che permette globalmente il gruppo di licenze compatibile con GPL, oltre ad alcuni altri gruppi e singole licenze : Codice 4.3: ACCEPT_LICENSE in /etc/make.conf
ACCEPT_LICENSE="@GPL-COMPATIBLE @OSI-APPROVED @EULA atheros-hal BitstreamVera"

Se nel proprio sistema si vogliono solamente documentazione e software libero, consigliabile usare la seguente impostazione: Codice 4.4: Usare solo licenze libere
ACCEPT_LICENSE="-* @FREE"

In questo caso, "free" ("libero", ndt) viene solitamente definito da FSF e OSI. Qualsiasi pacchetto la cui licenza non soddisfi tali requisiti non potr essere installata nel proprio sistema. 1.e. Errori durante l'uso del Portage Slot, virtuals, branche, architetture e profili Portage estremamente potente e supporta molte caratteristiche che altri gestori di software omettono. Si vedranno ora altri aspetti del Portage senza andare troppo nei dettagli. Portage permette la coesistenza di differenti versioni dello stesso pacchetto. A differenza di altre distribuzioni che tendono a chiamare i propri pacchetti con le versioni (come freetype e freetype2), Portage usa una tecnica chiamata SLOT. Un ebuild dichiara un certo SLOT per le proprie versioni. Ebuild con SLOT differenti possono coesistere sullo stesso sistema. Per esempio, il pacchetto freetype ha un ebuild con SLOT="1" e SLOT="2". Ci sono anche pacchetti che provvedono la stessa funzionalit ma con un'implementazione diversa. Per esempio, metalogd, sysklogd e syslog-ng, tutti gestori di eventi di sistema. Applicazioni che fanno assegnamento sulla disponibilit di un gestore di eventi di sistema, non possono dipendere da uno in particolare. Per esempio, metalogd, come altri sistemi di gestione di eventi, sono tutti un'ottima scelta. Portage permette l'uso di virtuals: ogni sistema di gestione degli eventi provvede un virtual/syslog in modo tale che le applicazioni possano dipendere da tale virtual/syslog. Il software all'interno dell'albero del Portage, pu risiedere in differenti branche. Di default il sistema accetta solo pacchetti che Gentoo giudica stabili. Molti nuovi software una volta raccomandati, vengono aggiunti ad una branca di test, il che significa che sar necessario procedere ad ulteriori verifiche prima di marcarli come stabili. Anche se gli ebuild per tali software sono presenti nell'albero del Portage, non vengono aggiornati prima di raggiungere la branca stabile. Alcuni software sono disponibili solo per alcune architetture. Oppure il software non gira su altre architetture o ha necessit di essere ulteriormente testato o gli sviluppatori che raccomandano il software non sono in grado di verificare se il pacchetto gira su differenti architetture. Ogni installazione di Gentoo aderisce ad un certo profilo che contiene tra le altre informazioni, la lista dei pacchetti che sono richiesti affinch un sistema funzioni normalmente. Pacchetti bloccati Codice 5.1: Portage avverte riguardo ai pacchetti bloccati (con --pretend)
[blocks B ] mail-mta/ssmtp (from pkg mail-mta/postfix-2.2.2-r1)

Codice 5.2: Portage avverte riguardo ai pacchetti bloccati (senza --pretend)


!!! Error: the mail-mta/postfix package conflicts with another package. !!! both can't be installed on the same system together. !!! Please use 'emerge --pretend' to determine blockers.

Gli ebuild contengono specifici campi che informano il Portage sulle dipendenze. Ci sono due possibili dipendenze: dipendenze in fase di compilazione dichiarate in DEPEND e dipendenze

per l'esecuzione dichiarate in RDEPEND. Quando una di queste dipendenze marca un pacchetto o un virtuale come non compatibile, questo viene bloccato. Sebbene le versioni recenti di Portage siano sufficentemente avanzate nel risolvere dei semplici blocchi senza l'intervento dell'utente, occasionalmente bisogner correggerli manualmente, come spiegato qui di seguito. Per correggere il blocco, si pu scegliere tra il non installare il pacchetto o rimuovere prima il pacchetto che causa il conflitto. Nel precedente esempio si pu scegliere tra il non installare postfix o rimuovere prima ssmtp. Si possono anche avere blocchi a livello di versione del pacchetto, come <mediavideo/mplayer-1.0_rc1-r2. In questo caso, l'aggiornamento ad una versione pi recente potrebbe essere sufficiente a rimuovere il blocco. E' anche possibile che due pacchetti che devono essere ancora installati siano in conflitto tra loro. In questo raro caso, si dovrebbe capire perch si vogliono installare entrambi dato che in molti casi pu bastare l'installazione di un solo pacchetto. Se non questo il caso, aprire un bug sul Gentoo bugtracking system. Pacchetti mascherati Codice 5.3: Portage avverte riguardo ai pacchetti mascherati
!!! all ebuilds that could satisfy "bootsplash" have been masked.

Codice 5.4: Portage avverte riguardo ai pacchetti mascherati - la ragione


!!! possible candidates are: gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword) lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword) sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword) dev-util/cvsd-1.0.2 (masked by: missing keyword) games-fps/unreal-tournament-451 (masked by: package.mask) sys-libs/glibc-2.3.2-r11 (masked by: profile) net-im/skype-2.1.0.81 (masked by: skype-eula license(s))

Quando si desidera installare un pacchetto che non disponibile per il nostro sistema, si ricever un errore di pacchetto mascherato. Si dovr quindi installare un'applicazione differente disponibile per il nostro sistema oppure aspettare finch il pacchetto divenga disponibile. C' sempre una ragione perch un pacchetto viene mascherato: ~arch keyword significa che l'applicazione non stata sufficientemente testata per essere inserita nella branca stabile. Aspettare alcuni giorni o alcune settimane e provare nuovamente. -arch keyword o -* keyword significa che l'applicazione non funziona sulla nostra architettura. Se si crede che il pacchetto funzioni, aprire un bug sul bugzilla di Gentoo. missing keyword significa che l'applicazione non ancora stata testata sulla nostra architettura. Chiedere al gruppo che si occupa del porting per l'architettura di testare il pacchetto o testarlo per loro e riportare i risultati sulbugzilla di Gentoo. package.mask significa che il pacchetto corrotto, instabile o difettoso ed stato deliberatamente marcato come non-usare. profile significa che il pacchetto non stato trovato appropriatamente nel vostro profilo. Le applicazioni potrebbero danneggiare il sistema se installate o sono solo non compatibili col profilo in uso. license significa che la licenza del pacchetto non compatibile con la propria impostazione di ACCEPT_LICENSE. bisogna esplicitamente permettere la licenza o il gruppo nel quale essa contenuta inserendola in/etc/make.conf o in /etc/portage/package.license. Fare riferimento alla sezione Licenze per ricevere ulteriori informazioni sul loro funzionamento. Dipendenze omesse

Codice 5.5: Portage avverte riguardo le dipendenze omesse


emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4". !!! Problem with ebuild sys-devel/gcc-3.4.2-r4 !!! Possibly a DEPEND/*DEPEND problem.

L'applicazione che si sta provando ad installare dipende da un altro pacchetto che non disponibile per il sistema. Controllare su Bugzilla se la cosa segnalata altrimenti la si pu riportare. A meno che non si stia mescolando le branche, questo non dovrebbe accadere ed perci un bug. Nomi di ebuild ambigui Codice 5.6: Portage avverte circa l'ambiguit di nomi di ebuild
[ Results for search key : listen ] [ Applications found : 2 ] * dev-tinyos/listen Latest version Latest version Size of files: Homepage: Description: License: [ Masked ] available: 1.1.15 installed: [ Not Installed ] 10,032 kB http://www.tinyos.net/ Raw listen for TinyOS BSD

media-sound/listen [ Masked ] Latest version available: 0.6.3 Latest version installed: [ Not Installed ] Size of files: 859 kB Homepage: http://www.listen-project.org Description: A Music player and management for GNOME License: GPL-2

!!! The short ebuild name "listen" is ambiguous. Please specify !!! one of the above fully-qualified ebuild names instead.

L'applicazione che si vuole installare ha un nome che corrisponde con un altro pacchetto. Occorre specificare la categoria. Portage informa sulle scelte possibili. Dipendenze circolari Codice 5.7: Portage avverte circa le dipendenze circolari
!!! Error: circular dependencies: ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1 ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2

Due (o pi) pacchetti che si vuole installare dipendono l'uno dall'altro e non possono perci essere installati. Questo probabilmente un bug del Portage. Provare ad eseguire un rsync e provare nuovamente. Si pu anche controllare su bugzilla se un caso conosciuto oppure no, nel qual caso lo si pu riportare. Scaricamento non riuscito Codice 5.8: Portage avverte circa un download non riuscito
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing... (...) !!! Some fetch errors were encountered. Please see above for details.

Portage non riuscito a scaricare i sorgenti per una data applicazione e prover a proseguire con l'installazione delle altre applicazioni se ci sono. Questo problema pu essere causato da un mirror che non stato sincronizzato appropriatamente o perch l'ebuild punta ad una locazione incorretta. Il server dove risiedono i sorgenti potrebbe anche non essere disponibile per qualche ragione. Riprovare dopo un'ora e vedere se la situazione persiste. Protezione dei profili di sistema Codice 5.9: Portage avverte circa la protezione dei profili
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'

!!! This could be damaging to your system.

Si richiesto la rimozione di un pacchetto che fa parte del core del sistema. Tale pacchetto listato nel vostro profile come richiesto e dovrebbe perci non essere rimosso dal sistema. Insuccessi nella verifica del digest A volte durante il tentativo di emergere un pacchetto, si ottiene un errore col seguente messaggio: Codice 5.10: Insuccesso di verifica del digest
>>> checking ebuild checksums !!! Digest verification failed:

Questo un segno che c' qualche cosa di errato nell'albero del Portage. Spesso causato da uno sviluppatore che pu aver sbagliato l'inserimento del pacchetto nell'albero del Portage. Quando la verifica del digest fallisce, non provare a ricreare il digest. Eseguire ebuild foo manifest non risolve il problema, ma molto probabilmente lo peggiorer! Il suggerimento di aspettare un'ora o due perch venga sistemato l'albero del Portage. E' probabile che l'errore sia gi stato notato, ma occorre un po' di tempo affinch la correzione sia diramata. Durante l'attesa, controllare suBugzilla per vedere se qualcuno ha riportato il problema. In caso contrario segnalare il bug per il pacchetto oggetto del problema. Una volta controllato che il bug sia stato corretto, provare ad eseguire nuovamente il sync per ottenere il digest corretto. Importante: Questo non significa che si possa fare un sync tre volte di seguito! Come specificato nella politica di rsync (visibile quando si esegue emerge --sync), gli utenti che eseguono sync troppo spesso verranno interdetti. Infatti meglio aspettare il prossimo sync che si schedulato per evitare il sovraccarico dei server rsync.

2. Flag USE
2.a. Cosa sono le flag USE L'idea dietro le flag USE Durante l'installazione di Gentoo (o di altre distribuzioni o comunque di altri sistemi operativi), sono possibili diverse scelte a seconda dell'ambiente di lavoro. Le impostazioni per un server differiscono da quelle per una workstation, cos come una stazione per giocare differisce da una per il rendering 3D. Questo non vero soltanto per la scelta dei pacchetti da installare, ma anche per le caratteristiche che un certo pacchetto dovrebbe supportare. Ad esempio, se l'uso delle OpenGL non richiesto, perch installarle ed abilitarne il supporto nei pacchetti che ne farebbero uso? Per lo stesso motivo, se non si vuole usare KDE, perch preoccuparsi di compilare i pacchetti col supporto per KDE se questi pacchetti funzionano tranquillamente senza? Per aiutare gli utenti a decidere cosa installare/attivare e cosa no, necessario che l'utente specifichi il proprio ambiente nel modo pi semplice. Questo forza l'utente a decidere cosa desidera realmente e facilita Portage, il sistema per la gestione dei pacchetti, a prendere le decisioni appropriate. Definizione delle flag USE Concettualmente un flag USE una parola chiave che racchiude l'idea di supporto e di informazione sulla dipendenza. Se si definisce una certa flag USE, si indica a Portage la volont di avere il supporto per la parola chiave scelta. Questo, naturalmente, altera anche le informazioni sulle dipendenze per un dato pacchetto. Prendendo come esempio la parola chiave kde, si ottiene questo comportamento: se questa parola chiave non presente nella variabile USE, tutti i pacchetti che hanno il supporto opzionale per KDE vengono compilati senza tale supporto; conseguentemente tutti i pacchetti cha hanno una dipendenza opzionale con KDE vengono installati senza le relative

librerie KDE. Se invece la parola chiave kde stata definita, questi pacchetti vengono compilati col supporto di KDE e di conseguenza anche le sue librerie vengono installate come dipendenze. Definendo in maniera corretta le parole chiave si avr a disposizione un sistema perfettamente ritagliato sulle proprie esigenze. Quali sono le flag USE utilizzabili Ci sono due tipi di flag USE: globali e locali. Una flag USE globale usata da alcuni pacchetti a livello di sistema. Questo ci che molti utenti vedono come flag USE. Una flag USE locale usata da un singolo pacchetto per prendere decisioni specifiche sul pacchetto stesso. Una lista di flag USE globali disponibili pu essere trovata online o localmente in /usr/portage/profiles/use.desc. Un elenco delle flag USE locali disponibili pu essere trovata in /usr/portage/profiles/use.local.desc. 2.b. Usare le flag USE Dichiarare flag USE permanenti Seguono le informazioni su come dichiarare le flag USE in modo permanente. Come precedentemente menzionato, tutte le flag USE sono dichiarate attraverso la variabile USE. Per facilitare la ricerca e la scelta delle flag USE, viene fornita una configurazione USE predefinita. Questa configurazione una collezione di flag USE che dovrebbe essere comunemente usata dagli utenti Gentoo ed dichiarata nei file make.defaults che fanno parte del proprio profilo. Il collegamento simbolico /etc/make.profile punta al profilo di sistema utilizzato. Ogni profilo lavora insieme con un altro profilo superiore, ed il risultato la somma di tutti i profili. Quello superiore quello base, (/usr/portage/profiles/base). Dare una occhiata alle impostazioni predefinite per il profilo 10-0: Codice 2.1: Somma delle variabili USE make.defaults per il profilo 10.0

(Questo esempio la somma delle impostazioni in base, default/linux, default/linux/x86 e default/ USE="a52 aac acpi alsa branding cairo cdr dbus dts dvd dvdr emboss encode exif fam firefox flac gif gpm gtk hal jpeg lcms ldap libnotify mad mikmod mng mp3 mp4 mpeg ogg opengl pango pdf png ppds qt3support qt4 sdl spell startup-notification svg tiff truetype vorbis unicode usb X xcb x264 xml xulrunner xv xvid"

Come evidente, questa variabile contiene gi una serie di parole chiave. Non alterare nessun file make.defaults per adattare la variabile USE alle proprie esigenze in quanto le modifiche a questi file vengono sovrascritte ad ogni aggiornamento del Portage.

Per cambiare la configurazione predefinita, necessario aggiungere o rimuovere parole chiave dalla variabile USE e questo pu essere fatto globalmente definendo la variabile USE nel file /etc/make.conf. In questa variabile possibile aggiungere le flag USE aggiuntive richieste o rimuoverne di non richieste nel qual caso occorre anteporre alla parola chiave il segno meno ("-"). Per esempio, per rimuovere il supporto per KDE e QT ed aggiungere il supporto per ldap, pu essere definita la seguente dichiarazione della variabile USE in /etc/make.conf: Codice 2.2: Un esempio di dichiarazione USE in /etc/make.conf
USE="-kde -qt4 ldap"

Dichiarare flag USE per pacchetti individuali Qualche volta si desidera dichiarare una determinata flag USE per una (o per pi) applicazioni

ma non per tutto il sistema. Per fare questo, si deve creare la directory /etc/portage (se ancora non esiste) e modificare/etc/portage/package.use. Solitamente un file singolo, ma pu essere anche una directory: vedere man portage per ulteriori informazioni. Il seguente esempio presuppone che package.use sia un file singolo. Per esempio, se non si vuole che berkdb sia supportato globalmente, ma lo si desidera per mysql, si dovrebbe aggiungere: Codice 2.3: Esempio di /etc/portage/package.use
dev-db/mysql berkdb

Si possono naturalmente anche disabilitare le flag USE per una certa applicazione. Per esempio, se non si desidera il supporto java in PHP: Codice 2.4: Secondo esempio di /etc/portage/package.use
dev-php/php -java

Dichiarare flag USE temporanee In certi casi utile dichiarare flag USE una sola volta. Invece di modificare /etc/make.conf due volte (una per la modifica e l'altra per riportare il tutto all'origine) possibile dichiarare la variabile USE come fosse una variabile ambiente. Ricordarsi che, quando si ri-emerge o si aggiorna questa applicazione (in modo esplicito o parte di un aggiornamento del sistema), i cambiamenti saranno persi! Segue un esempio di come rimuovere temporaneamente il supporto java durante l'installazione di mozilla. Codice 2.5: Usare USE come una variabile ambiente
# USE="-java" emerge seamonkey

Precedenza

Naturalmente esiste un ordine definito riguardante la priorit delle dichiarazioni nelle configurazioni USE. Non necessario dichiarare USE="-java" solo per vedere se "java" ancora usato per una impostazione con un'alta priorit. L'ordine di precedenza per le impostazioni di USE il seguente (i primi hanno la priorit pi bassa): 1. USE predefinita dichiarata nei file make.defaults parte del proprio profilo 2. Configurazione USE definita dall'utente in /etc/make.conf 3. Configurazione USE definita dall'utente in /etc/portage/package.use 4. Dichiarazione USE definita dall'utente come variabile ambiente Per vedere la configurazione finale di USE che viene usata da Portage, eseguire emerge --info che visualizzer una lista di tutte le variabili rilevanti (incluso la variabile USE) col valore usato da Portage. Codice 2.6: Eseguire emerge --info
# emerge --info

Adattare il proprio sistema alle nuove flag USE Se si sono cambiate le proprie flag USE e si desidera aggiornare l'intero sistema, affinch utilizzi le nuove flag USE, si pu usare l'opzione --newuse di emerge: Codice 2.7: Ricompilare il sistema
# emerge --update --deep --newuse world

Dopo, eseguire il depclean di Portage per rimuovere le dipendenze condizionali che erano state emerse nel vecchio sistema, ma che sono diventate obsolete con l'uso delle nuove flag USE. Avvertenza: Eseguire emerge --depclean una operazione pericolosa e dovrebbe essere fatta con cura. Ricontrollare la lista fornita di pacchetti "obsoleti" per assicurarsi che non si rimuovano pacchetti di cui si ha bisogno. Nell'esempio seguente si aggiunto -p per avere solo la lista dei pacchetti senza rimuoverli.

Codice 2.8: Rimuovere pacchetti obsoleti


# emerge -p --depclean

Al termine del processo di depclean, eseguire revdep-rebuild per ricompilare le applicazioni che sono collegate in modo dinamico agli oggetti condivisi forniti dai pacchetti rimossi. revdep-rebuild parte del pacchettogentoolkit; non dimenticarsi di emergerlo prima. Codice 2.9: Eseguire revdep-rebuild
# revdep-rebuild

Quando tutto finito, il sistema user le nuove flag USE. 2.c. Flag USE specifiche per pacchetto Visualizzare le flag USE disponibili Ecco l'esempio di seamonkey per vedere quali flag sono disponibili. Per questo usare emerge con le opzioni --pretend e --verbose: Codice 3.1: Vedere le flag USE utilizzate
# emerge --pretend --verbose seamonkey These are the packages that I would merge, in order: Calculating dependencies ...done! [ebuild R ] www-client/seamonkey-1.0.7 USE="crypt gnome java -debug -ipv6 -ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznopango -moznoroaming -postgres -xinerama -xprint" 0 kB

emerge non il solo strumento che fa questo, infatti ci sono strumenti dedicati alla gestione delle informazioni sui pacchetti come equery che fa parte del pacchetto gentoolkit. Occorre prima installare gentoolkit: Codice 3.2: Installare gentoolkit
# emerge gentoolkit

Ora possibile usare equery con l'argomento uses per avere la lista dei flag USE usati da un dato pacchetto. Ad esempio per il pacchetto gnumeric: Codice 3.3: Usare equery per vedere le flag USE utilizzate
# [ [ [ [ [

equery --nocolor uses =gnumeric-1.6.3 -a Searching for packages matching =gnumeric-1.6.3... ] Colour Code : set unset ] Legend : Left column (U) - USE flags from make.conf ] : Right column (I) - USE flags packages was installed with ] Found these USE variables for app-office/gnumeric-1.6.3 ] U I - - debug : Enable extra debug codepaths, like asserts and extra output. If you want to get mean + + gnome : Adds GNOME support + + python : Adds support/bindings for the Python language - - static : !!do not set this during bootstrap!! Causes binaries to be statically linked instead

3. Caratteristiche di Portage
3.a. Caratteristiche di Portage Portage ha molte altre caratteristiche che rendono Gentoo ancora migliore. Molte di queste comprendono strumenti software che migliorano le prestazioni, l'affidabilit, la sicurezza, ... Per abilitare o disabilitare alcune caratteristiche di Portage, bisogna modificare la variabile FEATURES di /etc/make.conf, che contiene varie keyword separate da spazi bianchi. In molti casi si devono installare ulteriori strumenti sui quali sono basate le caratteristiche. Non sono elencate qui tutte le caratteristiche che Portage supporta. Per una descrizione completa si veda la manpage make.conf: Codice 1.1: Vedere la manpage make.conf
$ man make.conf

Per scoprire quali sono le caratteristiche di default, eseguire emerge --info e cercare la

variabile FEATURES o eseguire un grep: Codice 1.2: Scoprire quali caratteristiche sono gi impostate
$ emerge --info | grep FEATURES

3.b. Compilazione Distribuita Usare distcc distcc un programma per distribuire la compilazione su diverse macchine, non necessariamente identiche, su una rete. Il client distcc trasmette tutte le informazioni necessarie ai server distcc che vengono resi disponibili tramite l'esecuzione di distccd, in modo che possano compilare parte del codice sorgente per il client. Il risultato un tempo di compilazione inferiore. E' possibile trovare pi informazioni su distcc (e informazioni su come deve funzionare con Gentoo) nella nostra Documentazione Gentoo su distcc. Installare distcc Distcc include un strumento grafico per tenere sotto controllo i task che il computer sta inviando per la compilazione. Se si usa Gnome si inserisca 'gnome' nella variabile USE. Se non si usa Gnome e si desidera comunque utilizzare il monitor, si inserisca 'gtk' nella variabile USE. Codice 2.1: Installare distcc
# emerge distcc

Attivare il supporto di Portage Aggiungere distcc alla variabile FEATURES in /etc/make.conf. Modificare la variabile MAKEOPTS a proprio piacimento. In "-jX" la X il numero di CPU che eseguono distccd (incluso l'host attuale) pi uno, ma si potrebbero avere migliori risultati con altri numeri. Eseguire distcc-config e impostare la lista di server distcc disponibili. Per esempio si assume che i server distcc disponibili sono 192.168.1.102 (l'host attuale), 192.168.1.103 e 192.168.1.104 (due host remoti): Codice 2.2: Configurare distcc per usare tre server disponibili DistCC
# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Non dimenticarsi di eseguire anche il demone distccd: Codice 2.3: Avviare il demone distccd
# rc-update add distccd default # /etc/init.d/distccd start

3.c. Cache per la compilazione Cosa ccache ccache un veloce gestore cache per il compilatore. Dopo aver compilato un programma, esso immagazzina i risultati intermedi, in modo che se si dovesse ricompilare lo stesso programma, il tempo di compilazione sia notevolmente ridotto. La prima volta che si esegue ccache, la sua esecuzione sar molto pi lenta ad una normale compilazione. Ricompilazioni sequenziali dovrebbero invece essere pi veloci. ccache utile solamente se si sta ricompilando pi volte la stessa applicazione; ci praticamente utile solo agli sviluppatori software. Per maggiori informazioni su ccache, possibile consultare la homepage di ccache. Avvertenza: risaputo che ccache causa numerosi fallimenti nella compilazione. Talvolta ccache preserva oggetti di codice inutili o file corrotti, che portano alla mancata compilazione del pacchetto. Se ci accade (se si ricevono errori come "File not recognized: File truncated"), provare a ricompilare l'applicazione disabilitando ccache ((FEATURES="-ccache" in /etc/make.conf) prima di aprire un bug report. A meno che non si debbano eseguire lavori come sviluppatore, non abilitare ccache. Installare ccache

Per installare ccache, eseguire emerge ccache: Codice 3.1: Installare ccache
# emerge ccache

Attivare il supporto di Portage Aprire /etc/make.conf e aggiungere ccache alla variabile FEATURES. Poi, aggiungere una nuova variabile chiamata CCACHE_SIZE e impostarla a "2G": Codice 3.2: Editare CCACHE_SIZE in /etc/make.conf
CCACHE_SIZE="2G"

Per controllare se ccache funziona, si possono vedere le statistiche. Portage usa una diversa directory home ccache e si deve impostare la variabile CCACHE_DIR: Codice 3.3: Esaminare le statistiche di ccache
# CCACHE_DIR="/var/tmp/ccache" ccache -s

Il /var/tmp/ccache la directory home di default di Portage; se si desidera cambiare questa impostazione modificare la variabile CCACHE_DIR in /etc/make.conf. Se si esegue ccache, si usa la posizione di default di ${HOME}/.ccache, ed per questo che si deve impostare la variabile CCACHE_DIR quando si cercano le statistiche (Portage) ccache. Usare ccache per la compilazione di C non-Portage Se si desidera usare ccache per compilazioni non-Portage, si aggiunga /usr/lib/ccache/bin all'inizio della variabile PATH (prima di /usr/bin). Pu essere fatto modificando .bash_profile nella directory home del proprio utente. Usare .bash_profile un modo per definire la variabile PATH. Codice 3.4: Modificare .bash_profile
PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"

3.d. Supporto per pacchetti binari Creare pacchetti precompilati

Portage supporta l'installazione di pacchetti precompilati. Anche se Gentoo non fornisce pacchetti precompilati (tranne GRP), Portage pu essere informato dei pacchetti precompilati. Per creare un pacchetto precompilato si pu usare quickpkg se il pacchetto gi installato sul sistema, o emerge con le opzioni --buildpkg o --buildpkgonly. Se si desidera che Portage crei pacchetti precompilati di ogni singolo pacchetto che si installa, aggiungere buildpkg alla variabile FEATURES. Supporto pi esteso per le impostazioni sui pacchetti precompilati pu essere ottenuto con il catalyst. Per ulteriori informazioni sul catalyst leggere le Domande frequenti su Catalyst. Installare pacchetti precompilati Anche se Gentoo non li fornisce, si pu creare un repository centrale dove mettere i pacchetti precompilati. Se si desidera usare questo repository, si deve far puntare la variabile PORTAGE_BINHOST ad esso. Per esempio, se i pacchetti precompilati sono su ftp://buildhost/gentoo: Codice 4.1: Impostare PORTAGE_BINHOST in /etc/make.conf
PORTAGE_BINHOST="ftp://buildhost/gentoo"

Quando si desidera installare un pacchetto precompilato, si deve aggiungere l'opzione -getbinpkg al comando emerge accanto all'opzione --usepkg. Il primo (--getbinpkg) dice a emerge di scaricare il pacchetto precompilato dal server precedentemente definito mentre il secondo (--usepkg) chiede a emerge di cercare di installare il pacchetto precompilato prima di scaricare i sorgenti e compilarlo. Per esempio, per installare gnumeric con i pacchetti precompilati: Codice 4.2: Installare il pacchetto precompilato gnumeric

# emerge --usepkg --getbinpkg gnumeric

Pi informazioni sulle opzioni di emerge con i pacchetti precompilati possono essere trovate nella manpage emerge: Codice 4.3: Vedere manpage emerge
$ man emerge

3.e. Scaricare file Scaricamenti paralleli Quando si stanno emergendo una serie di pacchetti, Portage pu scaricare i file sorgenti del prossimo pacchetto nella lista, anche se sta compilando un altro pacchetto. Per usare questa opzione, aggiungere "parallel-fetch" alla propria FEATURES. Userfetch Quando Portage eseguito da root, FEATURES="userfetch" permette a Portage di levarsi dai privilegi di root mentre scarica i sorgenti di un pacchetto. Questo un piccolo miglioramento di sicurezza.

4. Initscripts
4.a. Runlevel Avviare il sistema All'avvio del sistema, ci sono molte scritte che scorrono e il testo il medesimo ad ogni avvio. La sequenza di tutte queste azioni viene chiamata sequenza di boot ed (pi o meno) definita staticamente. Per prima cosa, il boot loader carica l'imagine del kernel, definita nella configurazione in memoria, dopo di che dice alla CPU di eseguire il kernel. Quando il kernel caricato e in esecuzione, inizializza tutte le strutture e i lavori specifici del kernel ed avvia il processo init. Questo processo si assicura che tutti i filesystem (definiti in /etc/fstab) siano montati e pronti per l'uso. Poi esegue alcuni script situati in /etc/init.d, che avviano i servizi necessari per un corretto avvio del sistema. Alla fine, quando tutti gli script sono eseguiti, init attiva i terminali (nella maggior parte dei casi solo le console virtuali che sono nascoste in Alt-F1, Alt-F2, ecc.) attaccandogli un processo chiamato agetty. Questo processo per prima cosa si assicura che sia possibile eseguire il login su questi terminali eseguendo login. Init Script Ora init non esegue gli script in /etc/init.d casualmente. Inoltre, non lancia tutti gli script in /etc/init.d, ma solo quelli che gli stato detto di eseguire. Decide che script eseguire guardando in /etc/runlevels. Prima, init esegue tutti gli script da /etc/init.d che hanno un link simbolico in /etc/runlevels/boot. Solitamente, esegue gli script in ordine alfabetico, ma alcuni di essi hanno delle informazioni di dipendenze all'interno, che dicono al sistema che un altro script deve essere avviato prima che possa essere avviati loro stessi. Quando tutti gli script refenziati in /etc/runlevels/boot sono stati eseguiti, init continua eseguendo gli script che hanno un collegamento simbolico in /etc/runlevels/default. Ancora, usa l'ordine alfabetico per decidere che script avviare prima, a meno che lo script non abbia dipendenze, nel qual caso l'ordine viene cambiato per fornire una valida sequenza di boot. Come lavora init Certamente init non decide tutto da solo. Ha bisogno di un file di configurazione che specifica quali azioni debba eseguire. Questo file di configurazione /etc/inittab.

La prima azione di init di montare tutti i filesystem. Questo definito nella seguente linea di /etc/inittab: Codice 1.1: La linea di inizializzazione del sistema in /etc/inittab
si::sysinit:/sbin/rc sysinit

Questa linea dice a initche deve eseguire /sbin/rc sysinit per inizializzare il sistema. Lo script /sbin/rc si occupa dell'inizializzazione, init infatti non fa molto: esso delega altri compiti, come l'inizializzazione del sistema, ad un'altro processo. In secondo luogo init esegue gli script che hanno un collegamento in /etc/runlevels/boot. Questo definito dalla seguente linea: Codice 1.2: Inizializzazione del sistema, continua
rc::bootwait:/sbin/rc boot

Ancora lo script rc provvede ai compiti necessari. Notare che l'opzione passata a rc (boot) la stessa della sottodirectory /etc/runlevels. Ora init controlla il suo file di configurazione per vedere quale runlevel deve eseguire. Per deciderlo, legge la seguente linea da /etc/inittab: Codice 1.3: La linea initdefault
id:3:initdefault:

In questo caso (che la maggioranza di utenti Gentoo usa), l'id del runlevel 3. Usando questa informazione, init vede che deve avviare il runlevel 3: Codice 1.4: La definizione del runlevel
l0:0:wait:/sbin/rc shutdown l1:S1:wait:/sbin/rc single l2:2:wait:/sbin/rc nonetwork l3:3:wait:/sbin/rc default l4:4:wait:/sbin/rc default l5:5:wait:/sbin/rc default l6:6:wait:/sbin/rc reboot

La linea che definisce il livello 3, ancora, usa lo script rc per avviare il servizio (ora con argomento default). L'argomento di rc ancora lo stesso della sottodirectory in /etc/runlevels. Quando rc ha finito, init decide quale console virtuale attivare e quali comandi devono essere eseguiti su ciascuna console: Codice 1.5: Definizione delle console virtuali
c1:12345:respawn:/sbin/agetty c2:12345:respawn:/sbin/agetty c3:12345:respawn:/sbin/agetty c4:12345:respawn:/sbin/agetty c5:12345:respawn:/sbin/agetty c6:12345:respawn:/sbin/agetty 38400 38400 38400 38400 38400 38400 tty1 tty2 tty3 tty4 tty5 tty6 linux linux linux linux linux linux

Cos' un runlevel?

Init usa uno schema numerico per decidere quale runlevel attivare. Un runlevel uno stato nel quale il sistema viene avviato e contiene una collezione di script (runlevel script o initscript) che devono essere eseguiti quando si entra o si lascia un runlevel. In Gentoo, ci sono sette runlevel definiti: tre runlevel interni, e quattro runlevel definiti dall'utente. I runlevel interni si chiamano sysinit, shutdown e reboot e fanno esattamente quello che i nomi implicano: inizializzano il sistema, spengono il sistema e riavviano il sistema. I runlevel definiti dall'utente sono delle sottodirectory di /etc/runlevels: boot, default, nonetwork e single. Il runlevel boot avvia tutti i servizi necessari al sistema che tutti gli altri runlevel usano. I rimanenti tre differiscono per i servizi avviati: default viene usato per le operazioni di tutti i giorni, nonetwork usato in caso non sia necessaria alcuna connettivit, e single viene usato per riparare il sistema.

Lavorare con gli script di Init Gli script che il processo rc avvia sono chiamati init script. Ogni script in /etc/init.d pu essere eseguito con gli argomenti start, stop, restart, pause, zap, status, ineed, iuse, needsme, usesme o broken. Per avviare, fermare o riavviare un servizio (e tutti i servizi dipendenti), vengono usati start, stop e restart: Codice 1.6: Avviare Postfix
# /etc/init.d/postfix start

Nota: Solo i servizio necessari al servizio dato saranno fermati o riavviati. Gli altri servizi dipendenti (quelli che usa ma non gli sono necessari) non vengono toccati. Per fermare un servizio, ma non i servizi che dipendono da lui si pu usare l'argomento pause: Codice 1.7: Fermare Postfix ma mantenere in esecuzione i servizi dipendenti
# /etc/init.d/postfix pause

Per vedere un servizio in che stato si trova (started, stopped, paused, ...) si pu usare l'argomento status: Codice 1.8: Informazioni di stato per postfix
# /etc/init.d/postfix status

Se le informazioni di stato dicono che un servizio in esecuzione, ma non cos, si pu fare il reset delle informazioni di stato a "stopped" con l'argomento zap: Codice 1.9: reset delle informazioni di stato per postfix
# /etc/init.d/postfix zap

Per sapere quali dipendenze ha un servizio si pu usare iuse o ineed. Con ineed vengono mostrati i servizi veramente necessari per il corretto funzionamento del servizio. iuse invece mostra i servizi che vengono usati ma non sono necessari al servizio per il corretto funzionamento. Codice 1.10: Richiedere la lista di tutti i servizi da cui Postfix dipende
# /etc/init.d/postfix ineed

In modo simile si pu chiedere la lista dei servizi che dipendono da lui (needsme) o possono usarlo Codice 1.11: Richiedere la lista dei servizi che richiedono Postfix
# /etc/init.d/postfix needsme

Infine, si possono chiedere quali dipendenze, richieste da un servizio, sono mancanti: Codice 1.12: Richiedere la lista delle dipendenze mancanti per Postfix
# /etc/init.d/postfix broken

4.b. Lavorare con rc-update Cos' rc-update? Il sistema di init in Gentoo usa un albero di dipendenze per decidere quali dipendenze vanno avviate prima. Essendo un compito tedioso da eseguire manualmente c' uno strumento che rende semplice l'amministrazione dei runlevel e init script. Con rc-update si possono aggiungere e rimuovere init script da un runlevel. Lo strumento rc-update automaticamente interroga depscan.sh per ricostruire l'albero delle dipendenze. Aggiungere e rimuovere servizi Lo script rc-update richiede un secondo argomento che definisce l'azione: add, del o show. Per aggiungere o rimuovere un'init script, bisogna passare a rcupdate l'argomento add o del, seguito dallo script di init e dal runlevel. Per esempio: Codice 2.1: Rimuovere Postfix dal runlevel default

# rc-update del postfix default

Il comando rc-update -v show mostra tutti gli script di init disponibili e in quale runlevel vengono eseguiti: Codice 2.2: Ricevere informazioni sugli init script
# rc-update -v show

possibile anche usare rc-update show (senza -v) per vedere solamente gli script di init abilitati e il loro runlevel. 4.c. Configurare i servizi Perch una configurazione aggiuntiva? Gli Init script possono essere complessi. Qui non si interessati a far modificare direttamente gli init script, dato che sono piuttosto proni a errori. comunque importante saper configurare bene un servizio, ad esempio per per dare pi opzioni al servizio stesso. Un secondo motivo di avere la configurazione al di fuori dell'init script per aggiornare gli init script senza preoccuparsi di perdere i cambiamenti alla configurazione. La directory /etc/conf.d Gentoo fornisce un modo semplice per configurare i servizi: ogni init script che pu esser configurato ha un file in /etc/conf.d. Per esempio, l'init script di apache2 (chiamato /etc/init.d/apache2) ha un file di configurazione chiamato /etc/conf.d/apache2, che contiene le opzioni che si vogliono passare al server Apache 2 quando esso viene avviato: Codice 3.1: Variabili definite in /etc/conf.d/apache2
APACHE2_OPTS="-D PHP5"

I file di configurazione contengono variabili e solo quello (tipo /etc/make.conf), e rendono davvero facile configurare un servizio. Permettono inoltre di aggiungere molte informazioni sulle variabili (come commenti). 4.d. Scrivere Init Scripts necessario? No. Scrivere init script non solitamente necessario dato che Gentoo fornisce init script pronti all'uso per ogni servizio. Comunque, si potrebbe installare un servizio senza usare Portage, nel qual caso probabilmente necessario creare un init script. consigliabile non usare init script forniti dal servizio se non sono scritti esplicitamente per Gentoo: gli init script di Gentoo non sono compatibili con quelli usati dalle altre distribuzioni! Layout Il layout di base di un init script mostrato sotto. Codice 4.1: Layout di base di un init script
#!/sbin/runscript depend() { (Informazioni di dipendenza) } start() { (Comando necessario per avviare un servizio) } stop() { (Comando necessario per fermare un servizio) } restart() { (Comando necessario per riavviare un servizio) }

Ogni init script richiede che la funzione start() sia definita. Tutte le altre sezioni sono opzionali. Dipendenze Ci sono due tipi di dipendenze che possono essere definite: use e need. Come menzionato sopra, la dipendenza need pi restrittiva della dipendenza use. Secondo questo tipo di dipendenza si definisce il concetto di dipendenza virtuale. Una dipendenza virtuale una dipendenza che fornisce un servizio, ma non fornita solo da quel servizio. L'init script pu dipendere da logger di sistema, ma possono essercene molti altri disponibili (metalogd, syslog-ng, sysklogd, ...). Dato che non possibile mettere need per ognuno di loro (nessun sistema ha tutti questi logger di sistema installati e in esecuzione) ci si assicura che tutti questi servizi forniscano una dipendenza virtuale. Ora verranno esaminate le informazioni relative alle dipendenze del servizio postfix. Codice 4.2: Informazioni di dipendenze per Postfix
depend() { need net use logger dns provide mta }

Com' possibile vedere, il servizio postfix: richiede la dipendenza (virtuale) net(che fornita, per esempio, da /etc/init.d/net.eth0) usa la dipendenza (virtuale) logger (che fornita per esempio, da /etc/init.d/syslog-ng) usa la dipendenza (virtuale) dns (che fornita, per esempio da /etc/init.d/named) fornisce la dipendenza (virtuale) mta (che comune a tutti i mail server) Controllare l'ordine In alcuni casi si potrebbe non aver bisogno di un servizio, ma si pu voler avviare un servizio prima (o dopo) un'altro se disponibile sul sistema (notare il condizionale:questa non un'altra dipendenza) e eseguirle nello stesso runlevel. Si possono fornire queste informazioni usando before o after. Come esempio vengono esaminate le impostazioni del servizio Portmap: Codice 4.3: La funzione depend() nel servizio Portmap
depend() { need net before inetd before xinetd }

Si pu anche usare "*" per selezionare tutti i servizi nello stesso runlevel, ma non consigliabile. Codice 4.4: Eseguire un init script come primo script nel runlevel
depend() { before * }

Se il servizio deve scrivere su dischi locali, dovrebbe aver bisogno di localmount. Se non mette niente in /var/run, come un pidfile, allora dovrebbe partire dopo bootmisc: Codice 4.5: Esempio di funzione depend()
depend() { need localmount after bootmisc }

Funzioni Standard

Dopo la funzione depend(), necessario definire la funzione start(). Questa contiene tutti i comandi necessari ad inizializzare il servizio. consigliabile usare le funzioni ebegin e eend per informare l'utente su cosa sta accadendo: Codice 4.6: Esempio di funzione start()
start() { ebegin "Starting my_service" start-stop-daemon --start --exec /path/to/my_service \ --pidfile /path/to/my_pidfile eend $? }

Sia --exec che --pidfile dovrebbero essere usati nelle funzioni start e stop. Se il servizio non crea un pidfile, usare se possibile --make-pidfile. Altrimenti non usare pidfile. Si pu anche aggiungere --quiet alle opzionistart-stop-daemon, ma non raccomandato. L'uso di --quiet potrebbe ostacolare il debugging se il servizio non si avvia correttamente. Nota: Assicurarsi che --exec chiami un servizio e non uno script shell che lancia servizi e esce: a questo che serve l'init script. Se si ha bisogno di pi esempi della funzione start(), leggere il codice sorgente degli init script disponibili nella propria directory /etc/init.d. Altre funzioni che si possono definire sono: stop() e restart(). Non si obbligati a definire queste funzioni! Il sistema di init abbastanza intelligente da inserire da solo queste funzioni se si usa start-stop-daemon. Sebbene non occorra creare una funzione stop(), viene fornito un esempio: Codice 4.7: Esempio funzione stop()
stop() { ebegin "Stopping my_service" start-stop-daemon --stop --exec /path/to/my_service \ --pidfile /path/to/my_pidfile eend $? }

Se il servizio esegue qualche altro script (per esempio bash, python o perl), e questo script pi avanti cambia i nomi (per esempio da foo.py a foo), si deve aggiungere -name a start-stop-daemon. Si deve specificare il nome che sar cambiato dallo script. In questo esempio, un servizio fa partire foo.py, che cambia nome in foo: Codice 4.8: Un servizio che fa partire lo script foo
start() { ebegin "Starting my_script" start-stop-daemon --start --exec /path/to/my_script \ --pidfile /path/to/my_pidfile --name foo eend $? }

start-stop-daemon ha una eccellente pagina man per vedere maggiori opzioni: Codice 4.9: Pagina Man di start-stop-daemon
$ man start-stop-daemon

La sintassi di init script di Gentoo basata su Bourne Again Shell (bash) cos si possono usare costrutti compatibili bash nei propri init script. Aggiungere opzioni personalizzate Se si ha bisogno di maggiori opzioni negli init script, si pu aggiungere l'opzione alla variabile opts, e creare una funzione con lo stesso nome dell'opzione. Per esempio, per il supporto di un'opzione chiamata restartdelay: Codice 4.10: Aggiungere l'opzione restartdelay
opts="${opts} restartdelay" restartdelay() { stop

sleep 3 start

# Attendere 3 secondi prima di avviarsi nuovamente

Variabili di configurazione dei servizi Non occorre fare nulla per supportare un file di configurazione in /etc/conf.d: se l'init script viene eseguito, vengono automaticamente processati i seguenti file (e per esempio le variabili sono pronte per essere usate): /etc/conf.d/<vostro init script> /etc/conf.d/basic /etc/rc.conf Inoltre, se l'init script fornisce una dipendenza virtuale (come net), viene processato anche il file associato a questa dipendenza (come /etc/conf.d/net). 4.e. Cambiare il comportamento del Runlevel Pu effettivamente essere utile? Molti utenti di portatili conoscono la situazione: a casa si ha bisogno di avviare net.eth0 ma non si vuole avviare net.eth0 quando si in giro (se non c' nessuna rete disponibile). Con Gentoo si pu alterare il comportamento del runlevel per venire incontro alle proprie esigenze. Per esempio si pu creare un secondo runlevel "default" con cui effettuare il boot contenente altri init script assegnati ad esso. Si pu selezionare al momento del boot quale runlevel predefinito usare. Usare softlevel Per prima cosa, creare la directory di runlevel per il secondo "default" runlevel. Per esempio per creare il runlevel offline: Codice 5.1: Creare la directory di runlevel
# mkdir /etc/runlevels/offline

Aggiungere i necessari init script al nuovo runlevel creato. Per esempio, per avere una copia del corrente runlevel default ma senza net.eth0: Codice 5.2: Aggiungere gli init script necessari
(Copia tutti i servizi dal runlevel default al runlevel offline) # cd /etc/runlevels/default # for service in *; do rc-update add $service offline; done (Rimuove servizi non desiderati da runlevel offline) # rc-update del net.eth0 offline (Visualizza i servizi attivi per runlevel offline) # rc-update show offline (Parte di un output esempio) acpid | offline domainname | offline local | offline net.eth0 |

Anche se net.eth0 verr poi rimosso dal runlevel offline, udev prover ancora ad avviare ogni elemento che riesce a rilevare e invocher i servizi appropriati. Pertanto, sar necessario aggiungere ogni servizio di rete che non si vuole venga avviato (cos come tutti gli altri servizi per ogni altro componente che potrebbero essere avviati da udev) a /etc/conf.d/rc come mostrato di seguito. Codice 5.3: Disabilitare i servizi inizializzati per i diversi componenti in /etc/conf.d/rc
RC_COLDPLUG="yes" (Di seguito, specificare i servizi che non si vuole vengano inizializzati automaticamente") RC_PLUG_SERVICES="!net.eth0"

Nota: Per maggiori informazioni sui servizi inizializzati per i diversi componenti, si invita a porre attenzione nei

commenti del file /etc/conf.d/rc. Ora bisogna configurare il bootloader e aggiungere una nuova voce per il runlevel offline. Per esempio in /boot/grub/grub.conf: Codice 5.4: Aggiungere una voce per offline runlevel
title Gentoo Linux Offline Usage root (hd0,0) kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline

Se per il boot del sistema si seleziona la nuova voce il runlevel offline viene usato al posto del default. Usare bootlevel Usare bootlevel completamente analogo a softlevel. L'unica differenza che si sta definendo un secondo runlevel di "boot" invece di un secondo runlevel "default".

5. Variabili di ambiente
5.a. Variabile d'ambiente Cosa sono Una variabile ambiente un oggetto nominale che contiene informazioni usate da una o pi applicazioni. Questo risulta essere un po' misterioso o di difficile gestione da parte di molti utenti, specialmente coloro che si avvicinano per la prima volta a Linux. L'uso di variabili ambiente, invece, pu facilitare la modifica della configurazione per una o pi applicazioni. Esempi importanti Segue una tabella con la lista delle variabili usate su un sistema Linux e la loro descrizione. I valori di esempio sono presentati di seguito. Variabile Descrizione Variabile che contiene una lista di directory, separate dai due punti (:), nelle quali il sistema cerca file eseguibili. Se si digita un comando (come ls, rc-update o emerge) che non presente nella lista, il sistema non pu essere in grado di eseguirlo, a meno che non si digiti il comando preceduto da tutto il percorso, come /bin/ls. Variabile che ha la stessa funzione di PATH, con la sola differenza che le directory specificano il percorso di ricerca per comandi digitati dall'utente root. Variabile che contiene la lista di directory, separate dai due punti (:), per la ricerca delle librerie da parte del linker dinamico. Variabile che contiene la lista di directory, separate dai due punti (:), per la ricerca delle pagine man da parte del comando man. Variabile che contiene la lista di directory, separate dai due punti (:), per la ricerca delle pagine info da parte del comando info. Variabile che contiene il percorso del programma usato per visualizzare il contenuto di file di testo (come less o more). Variabile che contiene il percorso del programma usato per modificare il contenuto di file di testo (come nano o vi).

PATH

ROOTPATH

LDPATH MANPATH INFODIR PAGER EDITOR KDEDIRS

Variabile che contiene la lista di directory, separate dai due punti (:), nelle quali si trova materiale specifico per KDE. Variabile che contiene la lista di directory, separate da spazi, che CONFIG_PRO vengono protette durante il processo di aggiornamento del sistema TECT da parte del Portage. CONFIG_PRO Variabile che contiene la lista di directory, separate da spazi, che non TECT_MASK dovranno essere protette durante il processo di aggiornamento del

sistema da parte del Portage. Segue un esempio di definizione di tutte queste variabili: Codice 1.1: Esempio di definizioni
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin" ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3" MANPATH="/usr/share/man:/usr/local/share/man" INFODIR="/usr/share/info:/usr/local/share/info" PAGER="/usr/bin/less" EDITOR="/usr/bin/vim" KDEDIRS="/usr" CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \ /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \ /usr/share/texmf/tex/platex/config/ /usr/share/config" CONFIG_PROTECT_MASK="/etc/gconf"

5.b. Definire variabili globali La directory /etc/env.d Per centralizzare la definizione di queste variabili, stata introdotta in Gentoo la directory /etc/env.d. All'interno di questa directory si trovano un certo numero di file, come 00basic, 05gcc, ecc. che contengono le variabili necessarie alle applicazioni menzionate nel nome del file. Per maggiore chiarezza; quando si installa il gcc, viene anche creato dall'ebuild un file chiamato 05gcc, che contiene la definizione delle seguenti variabili: Codice 2.1: /etc/env.d/05gcc
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man" INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info" CC="gcc" CXX="g++" LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"

In altre distribuzioni la definizione di variabili ambiente viene fatta con modifiche o aggiunte al file /etc/profile o ad altre locazioni. D'altra parte l'uso di Gentoo facilita la manutenzione e la gestione delle variabili ambiente, dato che non occorre fare attenzione ai numerosi file che possono contenere variabili ambiente. Per esempio, durante l'aggiornamento del gcc viene anche aggiornato il file /etc/env.d/05gcc senza nessuna richiesta di interazione da parte dell'utente. Di questo sono beneficiari il Portage e anche l'utente. Occasionalmente potrebbe nascere l'esigenza di configurare una variabile ambiente a livello globale. Prendiamo per esempio la variabile http_proxy. Invece di modificare l'/etc/profile, basta creare un file /etc/env.d/99local, e inserire la seguente definizione: Codice 2.2: /etc/env.d/99local
http_proxy="proxy.server.com:8080"

L'uso dello stesso file per tutte le variabili utente, aiuta ad avere una panoramica delle variabili definite in seguito dall'utente stesso. Lo script env-update Alcuni file in /etc/env.d definiscono la variabile PATH. L'esecuzione di env-update appende le diverse definizioni prima di aggiornare le variabili ambiente, rendendo semplice l'aggiunta di variabili ambiente ai pacchetti (o agli utenti) senza interferire con i valori gi presenti. Lo script env-update appende i valori dei file in /etc/env.d in ordine alfabetico. I nomi dei file devono iniziare con due cifre decimali. Codice 2.3: Ordine di aggiornamento di env-update
00basic 99kde-env 99local

+-------------+----------------+-------------+ PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

La concatenazione di variabili non sempre possibile, solo con le seguenti variabili la si pu ottenere: KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK,PRELINK_PATH e PRELINK_PATH_MASK. Per tutte le altre variabili usato l'ultimo valore definito (in ordine alfabetico dei file in /etc/env.d). Durante l'esecuzione di env-update vengono create tutte le variabili ambiente e verranno poste in /etc/profile.env (usato a sua volta da /etc/profile). Vengono inoltre estratte le informazioni dalla variabile LDPATH per creare il file /etc/ld.so.conf. Dopo di che, viene eseguito il comando ldconfig per ricreare il file /etc/ld.so.cache usato dal linker dinamico. Per vedere l'effetto immediato di env-update dopo il suo uso, eseguire il seguente comando per aggiornare l'ambiente. Utenti che hanno installato Gentoo, si ricordano probabilmente questo dalle istruzioni di installazione: Codice 2.4: Aggiornare l'ambiente
# env-update && source /etc/profile

Nota: Il comando precedente aggiorna solo le variabili nel terminale corrente e nelle nuove console. Se si sta lavorando in X11 si dovr digitare source /etc/profile in ogni altro terminale che si aprir o se si riavvier X cos che tutti i nuovi terminali abbiano le nuove variabili. Se si usa un login manager passare a root e digitare /etc/init.d/xdm restart. Saltando questo ultimo comando si dovr fare il logout e di nuovo il login per X per ottenere i nuovi valori delle variabili. Importante: Non possibile sfruttare le variabili della shell quando vengono definite altre variabili. Questo significa che cose come FOO="$BAR" (dove $BAR un'altra variabile) non sono permesse. 5.c. Definire variabili locali Specifiche dell'utente Non sempre conveniente definire variabili ambiente a livello globale. Per esempio, l'aggiunta di /home/mioutente/bin e la attuale directory (quella in cui ci si trova) alla variabile PATH non dovrebbe riflettersi su tutti gli altri utenti. E' necessario definire una variabile ambiente locale e per questo occorre usare i file ~/.bashrc o ~/.bash_profile: Codice 3.1: Estendere PATH per uso locale in ~/.bashrc
(Due punti seguiti da nessuna directory inteso come la attuale directory) PATH="${PATH}:/home/mioutente/bin"

Dopo un nuovo login, la variabile PATH viene aggiornata. Specifiche alla sessione

A volte sono necessarie anche definizioni pi ristrette. Potrebbe essere il caso in cui necessario usare file binari di una directory temporanea senza usare il percorso dei binari di sistema o senza modificare ~/.bashrc per la temporaneit dell'uso. In questo caso si pu definire la variabile PATH nella sessione corrente usando il comando export. Finch non si esegue un'operazione di logout, la variabile PATH manterr la configurazione temporanea. Codice 3.2: Definire una variabile ambiente specifica per una sessione
# export PATH="${PATH}:/home/my_user/tmp/usr/bin"

C. Lavorare con Portage


1. File e directory
1.a. I file del Portage Direttive per la configurazione Portage usa le configurazioni predefinite memorizzate in /etc/make.globals. Scorrendo questo file, si noter che tutta la configurazione del Portage gestita da variabili. Quali sono

queste variabili ed il loro significato descritto in seguito. Dato che molte direttive di configurazione differiscono da architettura ad architettura, Portage ha dei file di configurazione predefiniti che fanno parte del proprio profilo. Il proprio profilo indicato dal link simbolico/etc/make.profile; le configurazioni del Portage sono definite dai file in make.defaults del proprio profilo e dei profili parenti. Verranno presi in considerazione i profili e la directory /etc/make.profile. Se si sta pianificando la modifica di una variabile di configurazione non alterare /etc/make.globals o make.defaults. Usare invece /etc/make.conf che ha la precedenza sui file precedenti. C' anche un file chiamato/etc/make.conf.example, che, come implica il nome stesso, non nient'altro che un esempio di configurazione, il quale viene ignorato completamente da Portage. Si pu anche definire una variabile di configurazione di Portale come una variabile ambiente, ma non raccomandato. Informazioni specifiche sul profilo Si gi avuto a che fare con la directory /etc/make.profile. Questa non esattamente una directory ma un link simbolico ad un profilo, come impostazione predefinita uno di quelli all'interno di /usr/portage/profilesanche se potete crearne uno vostro e farlo puntare a questo. Il profilo a cui punta il link il profilo al quale aderisce il sistema. Un profilo contiene informazioni specifiche dell'architettura cos come una lista di pacchetti che appartengono al sistema che corrisponde a questo profilo, una lista di pacchetti che non girano su questo profilo (o sono mascherati), ecc. Informazioni specifiche dell'utente Quando si vuole sovrascrivere il comportamento di Portage riguardo l'installazione del software, si dovranno modificare i file all'interno di /etc/portage. Si incoraggiati ad usare i file all'interno di /etc/portage e scoraggiati ad usare variabili ambiente. All'interno di /etc/portage si possono creare i seguenti file: package.mask una lista di pacchetti che si vuole che Portage non installi package.unmask una lista di pacchetti che si vuole installare anche se gli sviluppatori di Gentoo scoraggiano dal farlo package.keywords una lista di pacchetti che si vuole installare anche se il pacchetto non (ancora) considerato adatto per la propria architettura di sistema package.use una lista di flag USE che si vuole usare per certi pacchetti senza che l'intero sistema ne sia coinvolto Tuttavia non devono per forza essere dei file; possono essere anche delle directory contenenti un file per pacchetto. Maggiori informazioni sulla directory /etc/portage e la lista completa dei file che vi si possono creare, pu essere trovata nella pagina di manuale di Portage: Codice 1.1: Leggere la pagina di manuale di Portage
$ man portage

Modificare l'ubicazione dei file e delle directory di Portage Come menzionato precedentemente i file di configurazione non possono essere memorizzati in directory diverse da quelle predefinite. Comunque, Portage usa molte altre ubicazioni per vari scopi: memorizzazione del codice sorgente, directory di compilazione, albero di Portage, ... Tutti questi scopi hanno ubicazioni predefinite ma che possono essere alterate attraverso /etc/make.conf. Il resto di questo capitolo spiega quali sono le ubicazioni per scopi speciali usate da Portage e come alterare la loro collocazione nel filesystem.

Questo documento non deve essere usato come un riferimento. Se si desidera avere una panoramica, fare riferimento alle pagine man del Portage e di make.conf: Codice 1.2: Leggere le pagine man del Portage e del make.conf
$ man portage $ man make.conf

1.b. Ubicazione dei file L'albero del Portage L'ubicazione predefinita per l'albero del Portage /usr/portage. Questo definito dalla variabile PORTDIR. Se si vuole mettere l'albero di Portage da qualche altra parte (alterando questa variabile), non ci si deve dimenticare di modificare il link simbolico /etc/make.profile in accordo con la nuova ubicazione. Se si altera la variabile PORTDIR, si possono voler modificare anche le seguenti variabili in quanto non noteranno il cambio di PORTDIR (a causa del modo di gestire le variabili del Portage): PKGDIR, DISTDIR, RPMDIR. Binari precompilati Anche se Portage non usa pacchetti precompilati in modo predefinito, ha comunque un supporto esteso anche per questi. Quando si chiede al Portage di usare pacchetti precompilati, questi verranno cercati nella directory/usr/portage/packages. Questa ubicazione definita dalla variabile PKGDIR. Codice Sorgente Il codice sorgente delle applicazioni memorizzato in modo predefinito all'interno di /usr/portage/distfiles. Questa ubicazione definita dalla variabile DISTDIR. Portage Database Portage memorizza il proprio stato (quali pacchetti sono installati, che file appartengono ad un dato pacchetto, ...) in /var/db/pkg.Non alterare questi file manualmente! Si potrebbe alterare la conoscenza che il Portage ha del proprio sistema. Portage Cache La cache di Portage (con la data di modifica, i pacchetti virtuali, l'informazione sull'albero delle dipendenze,...) viene memorizzata in /var/cache/edb. Questa locazione realmente una cache: la si pu rimuovere se non si sta eseguendo nessuna applicazione collegata a portage. 1.c. Compilare il software File temporanei I file temporanei del Portage sono memorizzati in modo predefinito all'interno di /var/tmp. Questo definito dalla variabile PORTAGE_TMPDIR. Se si altera la variabile PORTAGE_TMPDIR, si potrebbe voler modificare anche le seguenti variabili dato che non noteranno la modifica di PORTAGE_TMPDIR (a causa di come Portage gestisce le variabili): BUILD_PREFIX. Directory di compilazione Portage crea specifiche directory di compilazione per ogni pacchetto emerso all'interno di /var/tmp/portage. Questa ubicazione definita dalla variabile BUILD_PREFIX. Ubicazione nel filesystem Portage installa in modo predefinito tutti i file sul filesystem corrente (/), ma si pu modificare questa definizione usando la variabile d'ambiente ROOT. 1.d. Caratteristiche di log Ebuild Logging

Portage pu creare file di log per ebuild, ma solo quando la variabile PORT_LOGDIR definita con una locazione che sia scrivibile dall'utente portage. Il valore predefinito per questa variabile nullo. Se non viene impostata PORT_LOGDIR, non si riceveranno i log delle compilazioni con il log system corrente bench si possano ricevere alcuni log dal nuovo elog. Se la variabile PORT_LOGDIR definita e si usa elog, si riceveranno i log di compilazione e qualsiasi log salvato da elog, come spiegato di seguito. In Portage possibile avere un controllo fine su ci che viene registrato nei log con l'uso di elog: PORTAGE_ELOG_CLASSES: attraverso questa variabile si impostano i tipi di messaggio che devono essere registrati. Si pu usare qualsiasi combinazione di info, warn, error, log e qa separata da spazi. info: Registra i messaggi "einfo" stampati da un ebuild warn: Registra i messaggi "ewarn" stampati da un ebuild error: Registra i messaggi "eerror" stampati da un ebuild log: Registra i messaggi "elog" che si trovano in alcuni ebuild qa: Registra i messaggi "QA notice" stampati da un ebuild PORTAGE_ELOG_SYSTEM: attraverso questa variabili si seleziona il modulo(i) per processare i messaggi di log. Se lasciata vuota, la registrazione dei log viene disabilitata. Si pu usare una qualsiasi combinazione disave, custom, syslog, mail, save_summary e mail_summary separata da spazi. Si deve selezionare almeno un modulo per poter utilizzare elog. save: Salva un log per pacchetto in $PORT_LOGDIR/elog, o /var/log/portage/elog se $PORT_LOGDIR non definita. custom: Passa tutti i messaggi ad un comando definito dall'utente in $PORTAGE_ELOG_COMMAND; discusso di seguito. syslog: Invia tutti i messaggi al sistema di log installato. mail: Passa tutti i messaggi al mailserver definito dall'utente in $PORTAGE_ELOG_MAILURI; discusso di seguito. Questa caratteristica di elog richiede >=portage-2.1.1. save_summary: Simile a save, ma unisce tutti i messaggi in $PORT_LOGDIR/elog/summary.log, o /var/log/portage/elog/summary.log se $PORT_LOGDIR non definita. mail_summary: Simile a mail, ma manda tutti i messaggi in una singola mail quando emerge termina l'operazione. PORTAGE_ELOG_COMMAND: usata solo quando il modulo custom abilitato. Attraverso questa variabile si pu specificare un comando per processare i messaggi di log. Si possono usare due variabili: ${PACKAGE} per il nome e la versione del pacchetto e $ {LOGFILE} per il path assoluto del file di log. Eccone un possibile uso: PORTAGE_ELOG_COMMAND="/path/to/logger -p '\${PACKAGE}' -f '\$ {LOGFILE}'" PORTAGE_ELOG_MAILURI: contiene i parametri per il modulo mail come indirizzo, utente, password, mailserver e numero di porta. Il valore predefinito "root@localhost localhost". Ecco un esempio per un server smtp che richiede username e password per

l'autenticazione su una particolare porta (la porta di default la 25): PORTAGE_ELOG_MAILURI="user@some.domain username:password@smtp.some.domain:995" PORTAGE_ELOG_MAILFROM: permette di impostare l'indirizzo "from" della mail di log; se non viene impostata, il valore predefinito "portage". PORTAGE_ELOG_MAILSUBJECT: permette di creare il soggetto per le mail di log. Si possono usare due variabili: ${PACKAGE} per mostrare il nome e la versione del pacchetto e ${HOST} per il nome completo dell'host dove in esecuzione Portage. Eccone un possibile uso: PORTAGE_ELOG_MAILSUBJECT="pacchetto \${PACKAGE} stato installato su \$ {HOST} con alcuni messaggi" Importante: Se si usa enotice con Portage-2.0.*, si deve completamente rimuovere enotice, in quanto incompatibile con elog.

2. Configurazione e variabili
2.a. Configurazione del Portage Si potuto notare come il Portage sia configurabile attraverso numerose variabili che si possono definire in /etc/make.conf. Si faccia riferimento alle pagine man di make.conf per maggiori e pi complete informazioni: Codice 1.1: Leggere le pagine man di make.conf
$ man make.conf

2.b. Opzioni specifiche per la compilazione Opzioni per la configurazione e la compilazione Quando Portage compila un'applicazione, passa il contenuto delle seguenti variabili al compilatore e allo script configure: CFLAGS & CXXFLAGS definiscono le flag per i compilatori C e C++. CHOST definisce l'informazione dell'host per lo script configure dell' applicazione. MAKEOPTS passata al comando make e di solito definisce l'ammontare del parallelismo usato durante la compilazione. Maggiori informazioni sulle opzioni di make possono essere trovate nella pagina man di make. Anche la variabile USE viene usata durante la configurazione e la compilazione ma gi stata spiegata minuziosamente nei precedenti capitoli. Opzioni di installazione tramite emerge Quando Portage deve effettuare l'emerge una nuova versione di un certo software, rimuover i file obsoleti delle vecchie versioni dal sistema. Portage aspetta cinque secondi prima di rimuovere le vecchie versioni. Questi cinque secondi sono definiti dalla variabile CLEAN_DELAY. Si pu usare emerge in modo che utilizzi certe opzioni ogni volta che viene eseguito, impostando la variabile EMERGE_DEFAULT_OPTS. Alcune utili opzioni potrebbero essere --ask, --verbose, --tree, etc. 2.c. Protezione dei file di configurazione Protezione delle locazioni del Portage Portage sovrascrive i file provvisti dalle nuove versioni di un software se i file non sono memorizzati in una locazione protetta. Queste locazioni protette sono definite dalla variabile CONFIG_PROTECT e sono generalmente locazioni di file di configurazione. La lista delle directory separata da spazi.

Un file che avrebbe dovuto essere scritto in tale locazione protetta viene rinominato e l'utente viene avvertito della presenza di una nuova versione del (presumibilmente) file di configurazione. Si pu avere la definizione corrente di CONFIG_PROTECT attraverso l'output di emerge --info: Codice 3.1: Avere la definizione di CONFIG_PROTECT
$ emerge --info | grep 'CONFIG_PROTECT='

Sono disponibili maggiori informazioni sulla protezione dei file di configurazione del Portage nella sezione CONFIGURATION FILES della pagina di manuale di emerge: Codice 3.2: Maggiori informazioni sulla protezione dei file di configurazione
$ man emerge

Escludere directory Per 'sproteggere' certe sottodirectory da locazioni protette si pu usare la variabile CONFIG_PROTECT_MASK. 2.d. Opzioni per il download Ubicazione dei server Quando le informazioni o i dati richiesti non sono disponibili sul sistema, Portage cerca di recuperarli da Internet. L'ubicazione dei server per le varie informazioni e i canali dati sono definite attraverso le seguenti variabili: GENTOO_MIRRORS definisce la lista dei server che contengono codice sorgente (distfiles) PORTAGE_BINHOST definisce un particolare server che contiene pacchetti precompilati per il sistema Una terza definizione coinvolge l'ubicazione del server rsync usato quando si aggiorna l'albero del Portage: SYNC definisce un particolare server che Portage usa per aggiornare il proprio albero Le variabili GENTOO_MIRRORS e SYNC possono essere definite attraverso il comando mirrorselect. Sar necessario emergere l'applicazione prima dell'uso con emerge mirrorselect. Per maggiori informazioni vedere l'aiuto in linea di mirrorselect: Codice 4.1: Maggiori informazioni su mirrorselect
# mirrorselect --help

Se il nostro ambiente richiede di usare un proxy server, si possono usare le variabili http_proxy, ftp_proxy e RSYNC_PROXY per dichiarare il proxy server. Comandi per il download Quando Portage necessita di scaricare codice sorgente, usa il comando wget di default. E' possibile modificarlo attraverso la variabile FETCHCOMMAND. Portage riesce e riprendere download parziali di codice sorgente. Per questo usa wget, ma si pu alterare con la variabili RESUMECOMMAND. Occorre assicurarsi che sia FETCHCOMMAND che RESUMECOMMAND memorizzino il codice sorgente nella collocazione corretta. Per questo si possono usare le variabile \${URI} e \$ {DISTDIR} per puntare all'ubicazione del codice sorgente e dei distfiles rispettivamente. Si possono anche definire dei gestori di protocollo specifici con FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP, ecc. Configurazione di rsync Non si pu alterare il comando rsync usato dal Portage per aggiornare il proprio albero, ma si possono definire delle variabili relative al comando rsync:

PORTAGE_RSYNC_OPTS imposta il numero predefinito di variabili da utilizzare durante il sync separate da spazi. Queste non dovrebbero essere modificate a meno che non si conosca esattamente cosa si sta facendo. Da notare che certe opzioni richieste verranno sempre usate anche se PORTAGE_RSYNC_OPTS vuota. PORTAGE_RSYNC_EXTRA_OPTS pu essere utilizzata per impostare opzioni aggiuntive durante il sync. Ogni opzione dovrebbe essere separata da spazi. --timeout=<number>: imposta il numero di secondi che definiscono il time-out della connessione. Il valore predefinito 180 ma utenti che utilizzano connessioni via modem o con computer lenti potrebbero voler impostare questo valore a 300 o maggiore. --exclude-from=/etc/portage/rsync_excludes: il valore della variabile un file contenente una lista di pacchetti e/o categorie che rsync dovrebbe ignorare dirante il processo di aggiornamento. In questo caso il file /etc/portage/rsync_excludes. Leggere Usare un Portage Tree Subset per la sintassi di questo file. --quiet: riduce l'output a schermo --verbose: stampa una lista completa dei file --progress: mostra il progressivo per ogni file PORTAGE_RSYNC_RETRIES definisce quante volte rsync dovrebbe provare a connettersi al mirror definito dalla variabile SYNC prima di rinunciarvi. Il valore predefinito per questa variabile 3. Per maggiori informazioni su queste ed altre opzioni, leggere la pagina di manuale di rsync. 2.e. Configurazione di Gentoo Selezione di una branca Si pu cambiare la branca predefinita con la variabile ACCEPT_KEYWORDS il cui valore predefinito l'architettura stabile del sistema. Maggiori informazioni sulle branche di Gentoo possono essere trovate nel prossimo capitolo. Caratteristiche del Portage Si possono attivare certe caratteristiche del Portage con la variabile FEATURES. Le caratteristiche del Portage sono state discusse nei capitoli precedenti, come in Caratteristiche del Portage. 2.f. Comportamento del Portage Gestione delle risorse Con la variabile PORTAGE_NICENESS si pu aumentare o ridurre il valore nice con cui viene eseguito il Portage. Il valore di PORTAGE_NICENESS viene aggiunto al valore corrente di nice. Per maggiori informazioni sui valori di nice fare riferimento alle pagine man del nice: Codice 6.1: Maggiori informazioni sul nice
$ man nice

Comportamento dell'output La variabile NOCOLOR, il cui valore predefinito "false", definisce se Portage deve disabilitare l'uso di output colorato.

3. Combinare Software affidabile e non


3.a. Usare una branca La branca stabile

La variabile ACCEPT_KEYWORDS definisce la branca usata dal sistema. Il suo valore predefinito la branca stabile per l'architettura del sistema in uso, per esempio x86 La raccomandazione di usare solo la branca stabile, comunque, se non si preoccupati eccessivamente per la stabilit e si vuole aiutare Gentoo sottomettendo rapporti di problemi su http://bugs.gentoo.org, si pu proseguire con la lettura. La branca di test Se si vogliono usare i software pi recenti si pu considerare l'uso della branca test. Per far usare al Portage la branca di test occorre aggiungere il simbolo ~ prima dell'architettura del sistema in uso. La branca di test esattamente ci che significa: In fase di test. Se un pacchetto in fase di test, significa che gli sviluppatori pensano che sia funzionante ma non ancora testato in maniera esauriente. Ci si potrebbe trovare ad essere i primi a scoprire un bug nel pacchetto, nel qual caso si dovrebbe aprire un bug su bugreport per farlo conoscere agli sviluppatori. Si potrebbero comunque notare problemi di stabilit, gestione imperfetta dei pacchetti (per esempio dipendenze errate od omesse), aggiornamenti troppo frequenti (risultante in compilazioni multiple) o pacchetti corrotti. Se non si conosce come lavora Gentoo e come risolvere i problemi, si raccomanda di usare le branche stabili e testate. Per esempio, per selezionare la branca di test per architetture x86, editare /etc/make.conf e definire: Codice 1.1: Definire la variabile ACCEPT_KEYWORDS
ACCEPT_KEYWORDS="~x86"

Se si aggiorna il sistema dopo questa modifica, si avranno molti pacchetti da aggiornare. Una cosa da tenere bene in mente che se si aggiorna il sistema in uso alla branca di test non c' un modo semplice per tornare alla branca stabile (eccetto l'uso di backup, naturalmente). 3.b. Miscelare branche stabili e test package.keywords Si pu chiedere al Portage di permettere la branca di test per particolari pacchetti ma usare la branca stabile per il resto del sistema. Per questo, si deve aggiungere la categoria ed il nome del pacchetto che si vuole usare dalla branca di test al file /etc/portage/package.keywords. E' anche possibile creare una directory (con lo stesso nome) ed elencare il pacchetto nei file in questa directory. Per esempio, per usare la branca di test di gnumeric: Codice 2.1: Definizione di /etc/portage/package.keywords per gnumeric
app-office/gnumeric

Sperimentare versioni particolari Se si vuole usare una versione specifica di software dalla branca di test ma non si vuole che Portage usi la branca di test per le versioni successive, si pu aggiungere la versione nel file package.keywords. In questo caso si deveusare l'operatore =. Si pu anche inserire un intervallo di versioni usando gli operatori <=, <, > o >=. In ogni caso, volendo aggiungere una versione si deve usare un operatore. Se non si specifica alcuna versione non si possono usare operatori. Il seguente esempio mostra come accettare gnumeric-1.2.13: Codice 2.2: Usare una particolare versione di gnumeric
=app-office/gnumeric-1.2.13

3.c. Usare pacchetti mascherati package.unmask Importante: Gli sviluppatori di Gentoo non supportano l'uso di questa locazione. Si prega di usare cautela nel loro uso. Le richieste di supporto in relazione a package.unmask e/o package.mask non avranno risposta. Si

avvertiti. Quando un pacchetto stato mascherato dagli sviluppatori di Gentoo e si vuole comunque installare il file a dispetto della ragione menzionata nel file package.mask (ubicato di default in /usr/portage/profiles), aggiungere la stessa identica linea in /etc/portage/package.unmask (o in un file in questa directory se questa una directory). Per esempio, se =net-mail/hotwayd-0.8 mascherato, si pu comunque installarlo aggiungendo la stessa identica linea nella locazione package.unmask: Codice 3.1: /etc/portage/package.unmask
=net-mail/hotwayd-0.8

package.mask Se non si vuole che Portage installi un certo pacchetto o una specifica versione di un pacchetto, lo si pu mascherare autonomamente aggiungendo una riga appropriata in /etc/portage/package.mask (sia in questo file o in un file in questa directory). Per esempio, se non si vuole che Portage installi nuove versioni del kernel dopo gentoosources-2.6.8.1, si aggiunga la seguente linea in package.mask: Codice 3.2: /etc/portage/package.mask esempio
>sys-kernel/gentoo-sources-2.6.8.1

4. Ulteriori strumenti di Portage


4.a. dispatch-conf dispatch-conf uno strumento il cui scopo di installare i file ._cfg0000_<name> generati da Portage quando quest'ultimo vuole sovrascrivere un file in una directory protetta dalla variabile CONFIG_PROTECT. Con dispatch-conf possibile applicare gli aggiornamenti ai propri file di configurazione tenendo traccia contemporaneamente di tutti i cambiamenti. dispatch-conf memorizza le differenze tra i file di configurazione sottoforma di patch o usando il sistema di revisione RCS. Ci significa che se si commette un errore nell'aggiornare un file di configurazione, possibile tornare indietro alla versione precedente del file in qualsiasi momento. Con dispatch-conf, viene richiesto di mantenere il file di configurazione invariato, usare il nuovo file, modificare il file corrente o fondere le modifiche interattivamente. Inoltre, dispatch-conf possiede anche alcune caratteristiche aggiuntive: Vengono aggiornati automaticamente i file di configurazione le cui modifiche coinvolgono solo commenti. Vengono automaticamente aggiornati i file di configurazione che differiscono solo per la quantit di spazi. Accertarsi di modificare /etc/dispatch-conf.conf e di creare la directory referenziata dalla variabile archive-dir. Codice 1.1: Eseguire dispatch-conf
# dispatch-conf

Durante l'esecuzione di dispatch-conf, verr analizzato ciascun file di configurazione, uno alla volta. Premete u per aggiornare (sostituire) il file di configurazione corrente con quello nuovo e continuare con il file successivo. Premere z per ignorare (cancellare) il nuovo file di configurazione e continuare con il file successivo. Una volta che tutti i file di configurazione sono stati processati, dispatch-conf uscir. anche possibile premere q in qualsiasi momento. Per maggiori informazioni, consultare le pagine di manuale di dispatch-conf. Essa spiega come fondere in modo interattivo i nuovi file di configurazione in quelli correnti, modificare i nuovi file di configurazione, esaminare le differenze tra i file, e altro ancora.

Codice 1.2: Leggere le pagine di manuale di dispatch-conf


$ man dispatch-conf

4.b. etc-update

In alternativa si pu usare etc-update per fondere i file di configurazione. La sua modalit d'utilizzo non semplice come quella di dispatch-conf, non cos ricco di funzionalit, ma fornisce comunque uno strumento interattivo di aggiornamento della configurazione e pu anche auto-aggiornare i cambiamenti minori. Tuttavia, diversamente da dispatch-conf, etc-update non preserva le vecchie versioni dei propri file di configurazione. Una volta aggiornato il file, la vecchia versione persa per sempre! Pertanto bisogna essere molto cauti, in quanto usare etcupdate significativamente meno sicuro che usare dispatch-conf. Codice 2.1: Eseguire etc-update
# etc-update

Dopo l'installazione dei file di configurazione non importanti, viene visualizzata una lista di file protetti che dovrebbero essere aggiornati. In fondo alla lista viene richiesto il da farsi tra le seguenti possibili opzioni: Codice 2.2: Opzioni di etc-update
Please select a file to edit by entering the corresponding number. (-1 to exit) (-3 to auto merge all remaining files) (-5 to auto-merge AND not use 'mv -i'):

Se si sceglie -1, si provoca l'uscita immediata di etc-update senza aver eseguito alcun cambiamento. Con le scelte -3 o -5, tutti i file di configurazione listati verrano sovrascritti con le nuove versioni. E' perci molto importante selezionare prima i file di configurazione che non si vorrebbero aggiornare automaticamente. Questo si pu fare semplicemente digitando il numero listato alla sinistra del file di configurazione. Come esempio selezioniamo il file di configurazione /etc/pear.conf: Codice 2.3: Aggiornare un file di configurazione specifico
Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf [...] End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf 1) Replace original with update 2) Delete update, keeping original as is 3) Interactively merge original with update 4) Show differences again

Si possono ora vedere le differenze tra i due file. Se si pensa che il file possa venire aggiornato senza problemi, digitare 1. Se si pensa che l'aggiornamento non sia necessario o non provveda nuove o utili informazioni, digitare 2. Se si vuole aggiornare il file di configurazione corrente in modo interattivo, digitare 3. Non ci sono punti a favore della fusione interattiva. Per completezza, segue la lista di comandi che possono essere usati mentre si sta interattivamente fondendo i due file. Vengono visualizzate due linee (quella originale e quella proposta nell'aggiornamento) e la richiesta sul da farsi tra uno dei seguenti comandi: Codice 2.4: Comandi disponibili per la fusione interattiva
ed: eb: el: er: e: l: r: s: v: q: Edit then use both versions, each decorated with a header. Edit then use both versions. Edit then use the left version. Edit then use the right version. Edit a new version. Use the left version. Use the right version. Silently include common lines. Verbosely include common lines. Quit.

Una volta terminato l'aggiornamento dei file di configurazione importanti, si pu procedere all'aggiornamento automatico dei restanti file, etc-update terminer la sua esecuzione

quando non ci saranno pi file di configurazione da aggiornare. 4.c. quickpkg Con quickpkg si possono creare archivi di pacchetti che sono gi installati sul sistema. Questi archivi possono essere usati come pacchetti precompilati. L'uso di quickpkg estremamente semplice, basta aggiungere i nomi dei pacchetti che si vuole archiviare. Per esempio, se si vogliono archiviare curl, orage e procps: Codice 3.1: Esempio dell'uso di quickpkg
# quickpkg curl orage procps

I pacchetti precompilati vengono memorizzati in $PKGDIR (/usr/portage/packages/ come impostazione predefinita). Questi pacchetti sono posti in $PKGDIR/<category>.

5. Separarsi dalla collezione di software originale


5.a. Usare un Portage Tree Subset Escludere pacchetti e/o categorie Si possono selettivamente aggiornare certe categorie/pacchetti ed ignorarne altre/i facendo in modo che rsync escluda categorie/pacchetti durante la fase di emerge --sync. Occorre definire il nome del file che contiene i pacchetti o le categorie da escludere nella variabile --exclude-from in /etc/make.conf. Codice 1.1: Definizione del file di esclusione in /etc/make.conf
PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"

Codice 1.2: Escludere tutti i giochi in /etc/portage/rsync_excludes


games-*/*

Si noti comunque che questo pu portare ad avere problemi di dipendenze nuove, aggiornando pacchetti che potrebbero dipendere da pacchetti nuovi ma esclusi. 5.b. Aggiungere ebuild non ufficiali Definizione di una propria directory Portage Il Portage pu usare ebuild che non sono disponibili attraverso l'albero ufficiale. Per far questo, si pu creare una nuova directory (per esempio /usr/local/portage) entro la quale memorizzare gli ebuild di terze parti usando la stessa struttura delle directory dell'albero del Portage. Si definisce quindi la variabile PORTDIR_OVERLAY in /etc/make.conf affinch punti alla directory creata precedentemente. Usando Portage dopo queste modifiche, si potranno usare questi nuovi ebuild senza che vengano rimossi o sovrascritti da un nuovo emerge --sync. Lavorare con diversi overlay Per gli utenti che sviluppano su diversi strati, testano pacchetti prima di porli nell'albero di Portage o vogliono semplicemente usare ebuild non ufficiali di varie sorgenti, il pacchetto app-portage/layman fornisce layman, uno strumento che aiuta a mantenere aggiornati gli overlay repository. Per prima cosa installare e configurare layman seguendo le istruzioni contenute nel documento Overlay Gentoo: Guida per gli Utenti, e aggiungere i propri repository desiderati tramite il comando layman -a <nome-overlay>. Si supponga di avere due repository chiamati java (per lo sviluppo di ebuild java) e entapps (per le applicazioni sviluppate per la propria azienda), si potranno aggiornare nel seguente modo: Codice 2.1: Usare layman per aggiornare tutti i repository
# layman -S

Per ulteriori informazioni su l'utilizzo degli overlay, si prega di consultare man layman e la guida utente per layman/overlay. 5.c. Software non mantenuto dal Portage Usare il Portage con software proprietario In alcuni casi si pu voler configurare, installare e manutenere software proprietario senza dover automatizzare il processo del Portage anche se Portage pu provvedere il titolo software. Casi conosciuti sono sorgenti del kernel e driver nvidia. Si pu configurare Portage in modo tale che sappia che certi pacchetti sono stati installati manualmente nel sistema. Questo processo chiamato injecting ed supportato dal Portage attraverso il file/etc/portage/profile/package.provided. Per esempio, per informare il Portage che gentoo-sources-2.6.11.6 stato installato manualmente, aggiungere la seguente linea a /etc/portage/profile/package.provided: Codice 3.1: Esempio di linea per package.provided
sys-kernel/gentoo-sources-2.6.11.6

D. Configurazione di rete di Gentoo


1. Configurazione comune
1.a. Iniziare Nota: Questo documento assume che il kernel e i suoi moduli per l'hardware siano stati configurati correttamente e che si conosca il nome della propria interfaccia hardware. Si assume inoltre di voler configurare eth0, ma potrebbe essere anche eth1, wlan0, ecc. Nota: Questo documento richiede l'esecuzione di baselayout-1.11.11 o versioni successive. Per iniziare la configurazione della scheda di rete, si deve far conoscere quest'ultima al sistema Gentoo RC, tramite la creazione di un collegamento simbolico da net.lo a net.eth0 in /etc/init.d. Codice 1.1: Collegamento simbolico di net.eth0 a net.lo
# cd /etc/init.d # ln -s net.lo net.eth0

Ora il sistema Gentoo RC conosce questa interfaccia, ma deve anche sapere come configurarla. Tutte le interfacce di rete sono configurate in /etc/conf.d/net. Segue un esempio di configurazione per DHCP e indirizzi statici. Codice 1.2: Esempi per /etc/conf.d/net
# Per DHCP config_eth0=( "dhcp" ) # Per IP statico usando la notazione CIDR config_eth0=( "192.168.0.7/24" ) routes_eth0=( "default via 192.168.0.1" ) # Per IP statico usando la notazione netmask config_eth0=( "192.168.0.7 netmask 255.255.255.0" ) routes_eth0=( "default via 192.168.0.1" )

Nota: Se non si specifica una configurazione per l'interfaccia, viene automaticamente utilizzato DHCP. Nota: CIDR significa Classless InterDomain Routing. In origine, gli indirizzi IPv4 erano classificati come A, B, o C. Questo sistema di classificazione non prevedeva la grande popolarit di Internet, e rischia di rimanere a corto di nuovi indirizzi univoci. CIDR uno schema di indirizzamento che permette ad un indirizzo IP di designare molti indirizzi IP. Un indirizzo CIDR IP assomiglia ad un indirizzo IP normale tranne per il fatto che finisce con uno slash seguito da un numero; per esempio, 192.168.0.0/16. CIDR descritto in RFC 1519. Ora che l'interfaccia stata configurata, si pu avviarla e fermarla con i comandi seguenti. Codice 1.3: Avviare e fermare gli script di rete
# /etc/init.d/net.eth0 start # /etc/init.d/net.eth0 stop

Importante: Quando si hanno problemi con la rete, raccomandato impostare RC_VERBOSE="yes" in /etc/conf.d/rc in modo da ottenere maggiori informazioni su quello che succede. Ora che l'interfaccia di rete stata avviata e fermata con successo, consigliabile farla partire durante l'avvio di Gentoo, utilizzando i comandi seguenti. L'ultimo comando "rc" dice a Gentoo di avviare qualsiasi script nel runlevel attuale che non ancora stato avviato. Codice 1.4: Configurare una interfaccia di rete che si carica al boot
# rc-update add net.eth0 default # rc

2. Configurazione Avanzata
2.a. Configurazione avanzata La variabile config_eth0 il cuore della configurazione di un'interfaccia, ed composta da un elenco di istruzioni di alto livello per la sua configurazione (in questo caso l'interfaccia eth0). Ogni comando di questo elenco effettuato sequenzialmente, e l'interfaccia viene considerata funzionante se almeno un comando viene eseguito con successo. Ecco un elenco delle istruzioni integrate. Descrizione Non fa niente Se l'interfaccia attiva e c' un indirizzo, chiude la noop configurazione con successo un indirizzo IPv4 o IPv6 Aggiunge l'indirizzo dell'interfaccia Esegue il modulo fornito dal comando. Per dhcp, adsl o apipa (o un comando personalizzato da un esempio dhcp esegue un modulo che fornisce dhcp, il quale pu essere uno tra dhcpcd, dhclient o pump. modulo di terze parti) Se un comando non funziona, si pu specificare un comando di riserva. Questo deve corrispondere con esattezza alla struttura di configurazione. Si possono unire insieme questi comandi. Ecco alcuni esempi reali: Codice 1.1: Esempi di configurazione
# Aggiungere tre indirizzi IPv4 config_eth0=( "192.168.0.2/24" "192.168.0.3/24" "192.168.0.4/24" ) # Aggiungere un indirizzo IPv4 e due indirizzi IPv6 config_eth0=( "192.168.0.2/24" "4321:0:1:2:3:4:567:89ab" "4321:0:1:2:3:4:567:89ac" ) # Mantenere l'indirizzo assegnato dal kernel, a meno che l'interfaccia # non venga disattivata e allora assegnarne un altro tramite DHCP. Se DHCP # fallisce aggiungere un indirizzo statico determinato tramite APIPA config_eth0=( "noop" "dhcp" ) fallback_eth0=( "null" "apipa" )

Comando null

Nota: Quando si usa il modulo ifconfig e si aggiunge pi di un indirizzo, per ogni ulteriore indirizzo vengono creati degli alias di interfaccia. Con gli esempi precedenti, si ottengono le interfacce eth0, eth0:1 e eth0:2. Non si pu fare niente di speciale con queste interfacce poich il kernel e gli altri programmi

trattano eth0:1 e eth0:2 come eth0. Importante: L'ordine dei comandi di riserva importante! Se non si specifica l'opzione null allora il comando apipa si esegue solo se fallisce il comando noop. Nota: APIPA e DHCP sono discussi pi avanti. 2.b. Dipendenze di rete Gli script di inizializzazione in /etc/init.d possono dipendere da una specifica interfaccia di rete o da net. net pu essere definita in /etc/conf.d/rc e pu voler significare diverse cose grazie alla variabileRC_NET_STRICT_CHECKING. Valore Descrizione none Il servizio net sempre considerato attivo Significa che almeno un servizio net.* oltre a net.lo deve essere attivo. Pu essere usato dagli utenti con notebook che usano la rete WIFI e una schede no di rete statica e ne vogliono solamente una attiva in qualsiasi momento per considerare come attivo il servizio net. lo stesso di no, ma viene preso in considerazione anche net.lo. Dovrebbe lo essere utile alle persone che non danno peso a quale specifica interfaccia venga attivata durante l'avvio. TUTTE le interfacce di rete DEVONO essere attive affinch il servizio net sia yes considerato attivo. Ma che succede se net.br0 dipende da net.eth0 e net.eth1? net.eth1 potrebbe essere un dispositivo wireless o ppp che deve essere configurato prima che sia aggiunto al bridge. Non pu essere fatto in/etc/init.d/net.br0 poich questo un collegamento simbolico a net.lo La risposta corretta quella di usare la funzione depend() in /etc/conf.d/net Codice 2.1: Dipendenza net.br0 in /etc/conf.d/net
# Si pu usare qualsiasi dipendenza (use, after, before) come si # trova negli script attuali depend_br0() { need net.eth0 net.eth1 }

Per una discussione pi dettagliata sulla dipendenza, consultare la sezione Scrivere Init Script nel Manuale Gentoo. 2.c. Nomi di variabili e valori

I nomi delle variabili sono dinamici. Di solito seguono la struttura variable_${interface| mac|essid|apmac}. Per esempio, la variabile dhcpcd_eth0 contiene il valore per le opzioni dhcpcd per eth0 e dhcpcd_essidcontiene il valore per le opzioni dhcpcd quando una interfaccia si connette a essid "essid". Non c' nessuna regola che dice che i nomi delle interfacce debbano essere ethx. Molte interfacce wireless hanno nomi come wlanx, rax e anche ethx. Alcune interfacce definite dagli utenti, come i bridge, possono avere qualsiasi nome, per esempio foo. Per rendere il tutto pi interessante, gli Access Point Wireless possono avere nomi che contengono caratteri alfa numerici - questo importante perch si possono configurare i parametri di rete per ESSID. Gentoo usa variabili bash per la rete - e bash non pu usare altro che caratteri alfanumerici inglesi. Per ovviare a questa limitazione si cambia ogni carattere non alfanumerico inglese nel carattere _ Altro problema con bash, il contenuto delle variabili - alcuni caratteri hanno bisogno di essere specificati in modo particolare. Si risolve mettendo un \ all'inizio di questi. I seguenti caratteri devono essere specificati in modo particolare: ", ' e \. In questo esempio si usa wireless ESSID poich contiene un vasto numero di caratteri. Si usa il ESSID My "\ NET:

Codice 3.1: Esempio di nomi di variabili


(Funziona, ma il domain invalido) dns_domain_My____NET="My \"\\ NET" (Il comando precedente imposta il domain dns a My "\ NET quando una scheda wireless si connette a un AP che ha ESSID come My "\ NET)

3. Impostazioni modulari
3.a. Moduli di rete Attualmente vengono supportati gli script di rete modulari, il che significa che si pu aggiungere il supporto per nuovi tipi di interfaccia e moduli di configurazione mantenendo allo stesso tempo la compatibilit con quelli esistenti. I moduli vengono caricati in modo predefinito se il pacchetto che essi necessitano installato. Se si specifica un modulo che non ha installato il suo pacchetto, si ottiene un errore che avvisa quale pacchetto necessita di essere installato. Idealmente, le impostazioni per i moduli sono da usare solamente quando si hanno due o pi pacchetti installati che forniscono lo stesso servizio e si deve preferire uno rispetto ad un altro. Nota: Tutte le impostazioni discusse, sono in /etc/conf.d/net, dove non diversamente specificato. Codice 1.1: Preferenza dei moduli
# Si preferisce iproute2 su ifconfig modules=( "iproute2" ) # Si possono anche specificare altri moduli per una interfaccia # In questo caso si preferisce pump su dhcpcd modules_eth0=( "pump" ) # Si possono anche specificare quali moduli non usare - per esempio # si potrebbe usare un supplicant o un linux-wlan-ng per controllare # la configurazione wireless ma volere ancora configurare le impostazioni di # rete per ESSID che sono associate. modules=( "!iwconfig" )

3.b. Utilit di configurazione delle interfacce

Sono fornite due utilit di configurazione delle interfacce: ifconfig e iproute2. C' bisogno di una di esse per fare qualsiasi tipo di configurazione di rete. ifconfig la scelta predefinita di Gentoo ed incluso nel profilo di sistema. iproute2 un pacchetto pi potente e flessibile, ma non incluso in modo predefinito. Codice 2.1: Installare iproute2
# emerge sys-apps/iproute2 # Preferire iproute2 su ifconfig se entrambi sono installati modules=( "iproute2" )

Poich ifconfig e iproute2 fanno un lavoro molto simile, viene permesso che le loro configurazioni di base funzionino l'una con l'altra. Per esempio entrambi i codici funzionano a prescindere dal modulo che si sta usando. Codice 2.2: Esempi di ifconfig e iproute2
config_eth0=( "192.168.0.2/24" ) config_eth0=( "192.168.0.2 netmask 255.255.255.0" ) # Si pu anche specificare il broadcast config_eth0=( "192.168.0.2/24 brd 192.168.0.255" ) config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )

3.c. DHCP DHCP la possibilit di ottenere informazioni di rete (indirizzo IP, server DNS, Gateway, ecc.) da un server DHCP. Ci significa che se c' un server DHCP funzionante sulla rete, basta dire ad ogni client di usare DHCP in modo da fargli impostare la rete da s. Bisogna configurare altre cose come wireless, ppp o altre se sono richieste, prima di usare DHCP.

DHCP pu essere fornito da dhclient, dhcpcd, o pump. Ogni modulo DHCP ha i suoi pro e i suoi contro, eccone un breve riassunto. Modulo DHCP Pacchetto Pro Contro

La configurazione complessa, il Fatto da ISC, gli stessi che software enorme, non si netdhclient misc/dhcp fanno il software BIND DNS. possono ottenere server NTP da Altamente configurabile DHCP, non invia l'hostname in modo predefinito Da tanto tempo scelta predefinita di Gentoo, netPu essere lento, non pu essere dhcpcd misc/dhcpc nessuna dipendenza da ancora eseguito come demone strumenti esterni, d quando il lease infinito attivamente sviluppato da Gentoo Non pi mantenuto dagli Leggero, nessuna sviluppatori originali, non sicuro, netpump dipendenza da altri specialmente su alcuni modem, misc/pump strumenti non si possono ottenere server NIS da DHCP Se si ha installato pi di un client DHCP, bisogna specificare quale usare, altrimenti la scelta predefinita sar dhcpcd, se disponibile. Per passare opzioni specifiche al modulo dhcp, usare module_eth0="..." (cambiare module con il module DHCP che si sta usando, es. dhcpcd_eth0) L'obiettivo quello di rendere DHCP pi semplice, perci vengono supportati i seguenti comandi usando la variabile dhcp_eth0. L'impostazione predefinita non impostare nessuna di queste. release - rilascia l'indirizzo IP per ri-usarlo nodns - non sovrascrivere /etc/resolv.conf nontp - non sovrascrivere /etc/ntp.conf nonis - non sovrascrivere /etc/yp.conf Codice 3.1: Esempio di configurazione DHCP in /etc/conf.d/net
# Necessario solamente se sono stati installati pi moduli DHCP modules=( "dhcpcd" ) config_eth0=( "dhcp" ) dhcpcd_eth0="-t 10" # Timeout dopo 10 secondi dhcp_eth0="release nodns nontp nonis" # Ottiene solo un indirizzo

Nota: dhcpcd e pump inviano l'attuale hostname al server DHCP predefinito, in questo modo non occorre pi specificarlo. 3.d. ADSL con PPPoe/PPPoA Prima bisogna installare il software ADSL. Codice 4.1: Installare il pacchetto ppp
# emerge net-dialup/ppp

Nota: Se c' la necessit di utilizzare PPPoA, assicurarsi di usare >=baselayout-1.12.x. Poi, creare lo script net per PPP e quello per l'interfaccia di rete usata da PPP. Codice 4.2: Creare gli script PPP e ethernet
# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0 # ln -s /etc/init.d/net.lo /etc/init.d/net.eth0

Assicurarsi di impostare RC_NET_STRICT_CHECKING="yes" in /etc/conf.d/rc.

Ora bisogna configurare /etc/conf.d/net. Codice 4.3: Una configurazione base per PPPoe
config_eth0=( null ) (Specificare la propria interfaccia ethernet) config_ppp0=( "ppp" ) link_ppp0="eth0" (Specificare la propria interfaccia ethernet) plugins_ppp0=( "pppoe" ) username_ppp0='user' password_ppp0='password' pppd_ppp0=( "noauth" "defaultroute" "usepeerdns" "holdoff 3" "child-timeout 60" "lcp-echo-interval 15" "lcp-echo-failure 3" noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp ) depend_ppp0() { need net.eth0 }

La password pu essere anche impostata in /etc/ppp/pap-secrets. Codice 4.4: Esempio /etc/ppp/pap-secrets


# L'asterisco * importante "username" * "password"

Se si utilizza PPPoE con un modem USB bisogna installare br2684ctl. Si prega di leggere /usr/portage/net-dialup/speedtouch-usb/files/README per ottenere informazioni su come configurarlo adeguatamente. Importante: Leggere attentamente le sezioni su ADSL e PPP in /etc/conf.d/net.example. Questo file contiene un gran numero di spiegazioni dettagliate riguardo a tutte le impostazioni per la propria configurazione particolare di PPP. 3.e. APIPA (Automatic Private IP Addressing) APIPA cerca di trovare un indirizzo libero tra 169.254.0.0-169.254.255.255 con un arping di un indirizzo casuale, incluso nella gamma di indirizzi summenzionati, sull'interfaccia. Se non c' nessuna risposta allora si assegna questo indirizzo all'interfaccia. L'uso di APIPA utile per le LAN in cui non c' nessun server DHCP e non ci si connette direttamente a Internet e tutti gli altri computer utilizzano APIPA. Per il supporto ad APIPA installare net-misc/iputils o net-analyzer/arping. Codice 5.1: Configurazione di APIPA in /etc/conf.d/net
# Cercare DHCP - se fallisce passare ad APIPA config_eth0=( "dhcp" ) fallback_eth0=( "apipa" ) # Usare APIPA config_eth0=( "apipa" )

3.f. Bonding

Per poter effettuare il bonding/trunking (ndT: unione/aggregazione) di collegamenti installare net-misc/ifenslave. Il bonding usato per aumentare la larghezza di banda della rete. Se si hanno due schede di rete sulla stessa rete, si possono collegare insieme in modo che le applicazioni vedano una sola interfaccia ma in realt utilizzino entrambe le due schede di rete. Codice 6.1: Configurazione per il bonding in /etc/conf.d/net
# Per collegare le interfacce slaves_bond0="eth0 eth1 eth2" # Si pu non assegnare un IP all'interfaccia collegata

config_bond0=( "null" ) # Dipende da eth0, eth1 e eth2 poich essi possono richiedere una configurazione extra depend_bond0() { need net.eth0 net.eth1 net.eth2 }

3.g. Bridging (supporto 802.1d)

Per il supporto al "bridging" installare net-misc/bridge-utils Il bridging usato per collegare insieme delle reti. Per esempio, si ha un server che si connette a Internet con un modem ADSL e una scheda wireless access che permette a altri computer di connettersi a Internet con il modem ADSL. Si pu creare un "bridge" (ponte) per unire le due interfacce. Codice 7.1: Configurazione per il bridge in /etc/conf.d/net
# Configurare il bridge - "man brctl" per ulteriori dettagli brctl_br0=( "setfd 0" "sethello 0" "stp off" ) # Per aggiungere delle porte al bridge br0 bridge_br0="eth0 eth1" # Si devono configurare le porte con valori null in modo da non avviare dhcp config_eth0=( "null" ) config_eth1=( "null" ) # Dare un indirizzo al bridge - si pu usare DHCP config_br0=( "192.168.0.1/24" ) # Dipende da eth0 e eth1 poich essi possono richiedere una configurazione aggiuntiva depend_br0() { need net.eth0 net.eth1 }

Importante: Per usare alcune impostazioni per il bridge di rete, consigliabile consultare la documentazione riguardante i nomi di variabili 3.h. Indirizzo MAC (MAC Address) Non occorre installare niente per cambiare l'indirizzo MAC di una interfaccia se si utilizza sysapps/baselayout-1.11.14 o superiore e si desidera cambiarlo in un indirizzo MAC specifico. Tuttavia, se lo si vuole cambiare con un indirizzo MAC a caso o si ha una versione di baselayout pi vecchia rispetto a quella appena nominata, allora per potere fare uso di questa caratteristica bisogna installare net-analyzer/macchanger. Codice 8.1: Esempio di cambio di un Indirizzo MAC
# Impostare l'indirizzo MAC all'interfaccia mac_eth0="00:11:22:33:44:55" # Per rendere casuali solo gli ultimi 3 byte mac_eth0="random-ending" # Per rendere casuale tra lo stesso tipo fisico di connessione (esempio # fibra, copper, wireless), tutti i fornitori mac_eth0="random-samekind" # Per rendere casuale tra qualsiasi tipo fisico di connessione (esempio # fibra, copper, wireless), tutti i fornitori mac_eth0="random-anykind" # Casualit completa - ATTENZIONE: alcuni indirizzi MAC generati # da questo esempio potrebberoNON funzionare come previso mac_eth0="random-full"

3.i. Tunnelling

Non occorre installare niente per il tunnelling in quanto il gestore dell'interfaccia lo fa gi da s. Codice 9.1: Configurazione per il tunnelling in /etc/conf.d/net
# Per tunnel GRE

iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255" # Per tunnel IPIP iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255" # Per configurare l'interfaccia config_vpn0=( "192.168.0.2 peer 192.168.1.1" )

3.j. VLAN (supporto 802.1q) Per il supporto alle VLAN installare net-misc/vconfig. Virtual LAN un gruppo di dispositivi di rete che si comportano come se fossero connessi ad un singolo segmento di rete, anche se realmente non lo sono. I membri della VLAN possono solo vedere i membri della stessa VLAN anche se potrebbero condividere la stessa rete. Codice 10.1: Configurazione per la VLAN in /etc/conf.d/net
# Specificare i numeri VLAN per le interfacce in questo modo # Assicurarsi che gli ID di VLAN NON abbiano degli zeri riempitivi vlans_eth0="1 2" # Si pu anche configurare la VLAN # vedere la pagina man di vconfig per ulteriori dettagli vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" ) vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" ) # Configurare l'interfaccia come al solito config_vlan1=( "172.16.3.1 netmask 255.255.254.0" ) config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )

Importante: Per usare alcune impostazioni di VLAN, consigliabile consultare la documentazione relativa ai nomi di variabili.

4. Reti Wireless
4.a. Introduzione Il networking Wireless su Linux solitamente abbastanza semplice. Ci sono due modi per configurare il wifi: tramite client grafici o tramite linea di comando. Il modo pi facile usare un client grafico, una volta installato un ambiente desktop. La maggior parte dei client grafici, come wicd e NetworkManager, sono abbastanza autoesplicativi. Offrono una comoda interfaccia punta-e-clicca che permette di collegarsi alla rete in pochi secondi. Nota: wicd offre uno strumento a linea di comando in aggiunta all'interfaccia grafica principale. Lo si pu ottenere effettuando l'emerge di wicd con la flag USE ncurses abilitata. L'utilit wicd-curses particolarmente indicata agli utenti che non usano un ambiente desktop basato sulle librerie gtk, ma che vogliono comunque uno strumento a linea di comando facile che non richiede la modifica manuale dei file di configurazione. Tuttavia, se non si desidera utilizzare un client grafico, possibile configurare wifi tramite la linea di comando modificando pochissimi file di configurazione. Ci comporta un po' pi di tempo per impostare il collegamento, ma richiede meno pacchetti da scaricare ed installare. Siccome i client grafici sono praticamente autoesplicativi (con schermate utilii nelle relative homepage), l'attenzione verr concentrate sulle alternative a linea di comando. possibile impostare il collegamento alla rete wireless tramite linea di comando installando wireless-tools o wpa_supplicant. La cosa importante da ricordare che possibile configurare le reti wireless a livello globale e non in base all'interfaccia. wpa_supplicant la scelta migliore. Per un elenco di tutti i driver supportati, leggere il sito di wpa_supplicant. wireless-tools supporta quasi tutte le schede e i driver, ma non pu connettersi ad Access Point configurati solamente con WPA. Se la propria rete offre solamente la criptazione WEP o completamente aperta, si potrebbe preferire la semplicit di wireless-tools. Avvertenza: Il driver linux-wlan-ng non supportato ancora da baselayout. Questo perch linux-wlanng ha la propria installazione e configurazione che differente da quella di tutti gli altri. Gli sviluppatori di linux-

wlan-ng sembra vogliano cambiare le impostazioni a wireless-tools - quando accadr si potr usare linuxwlan-ng con baselayout. 4.b. WPA Supplicant WPA Supplicant un pacchetto che permette di connettersi ad access point WPA abilitati. Codice 2.1: Installare wpa_supplicant
# emerge net-wireless/wpa_supplicant

Importante: Bisogna avere abilitato CONFIG_PACKET nel kernel per fare funzionare wpa_supplicant. Eseguire grep CONFIG_PACKET /usr/src/linux/.config per verificare se questa opzione abilitata nel proprio kernel. Nota: In base alle proprie flag USE, wpa_supplicant pu installare un'interfaccia grafica scritta in Qt4, che si integrer perfettamente con KDE. Per ottenerla, eseguire echo "net-wireless/wpa_supplicant qt4" >> /etc/portage/package.use come utente root prima di effettuare l'emerge di wpa_supplicant. Configurare /etc/conf.d/net, per specificare l'utilizzo preferito di wpa_supplicant rispetto a wireless-tools (se entrambi sono installati, wireless-tools quello predefinito). Codice 2.2: Configurazione di /etc/conf.d/net per wpa_supplicant
# Si preferisce wpa_supplicant a wireless-tools modules=( "wpa_supplicant" ) # E' importante dire a wpa_supplicant quale driver dovrebbe # essere usato in quanto non riesce ancora ad indovinarlo correttamente wpa_supplicant_eth0="-Dmadwifi"

Nota: Se si sta usando il driver host-ap si deve mettere la scheda in Managed mode prima di usarla con wpa_supplicant. Per ottenere ci, si pu usare iwconfig_eth0="mode managed" in /etc/conf.d/net. Semplice vero? Tuttavia c' ancora da configurare wpa_supplicant che risulta essere un po' pi difficile in base alla tipo di configurazione di sicurezza degli Access Point a cui si sta cercando di connettere. L'esempio seguente preso e semplificato da /usr/share/doc/wpa_supplicant-<versione>/wpa_supplicant.conf.gz il quale viene fornito insieme a wpa_supplicant. Codice 2.3: Un esempio di /etc/wpa_supplicant/wpa_supplicant.conf
# La riga sottostante non deve essere cambiata altrimenti non funziona ctrl_interface=/var/run/wpa_supplicant # Assicurarsi che solo root possa leggere la configurazione WPA ctrl_interface_group=0 # Lasciare che wpa_supplicant si occupi della scansione e della selezione AP ap_scan=1 # Caso semplice: WPA-PSK, PSK come un ASCII passphrase, permette tutte cifre valide network={ ssid="simple" psk="very secret passphrase" # Pi alta la priorit, prima c' riconoscimento priority=5 } # Lo stesso del precedente, ma richiesto la scansione specifica per # SSID (per AP che rifiutano il broadcast del SSID) network={ ssid="second ssid" scan_ssid=1 psk="very secret passphrase" priority=2 } # E' usato solo WPA-PSK. Qualsiasi combinazione di cifre valida accettata network={ ssid="example" proto=WPA key_mgmt=WPA-PSK

pairwise=CCMP TKIP group=CCMP TKIP WEP104 WEP40 psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb priority=2

# Connessione plaintext (no WPA, no IEEE 802.1X) network={ ssid="plaintext-test" key_mgmt=NONE } # Connessione condivisa WEP key (no WPA, no IEEE 802.1X) network={ ssid="static-wep-test" key_mgmt=NONE # Le chiavi tra doppi apici sono in formato ASCII wep_key0="abcde" # Le chiavi specificate senza doppi apici sono in formato esadecimales wep_key1=0102030405 wep_key2="1234567890123" wep_tx_keyidx=0 priority=5 } # Connessione condivisa WEP key (no WPA, no IEEE 802.1X) usando # autenticazione Shared Key IEEE 802.11 network={ ssid="static-wep-test2" key_mgmt=NONE wep_key0="abcde" wep_key1=0102030405 wep_key2="1234567890123" wep_tx_keyidx=0 priority=5 auth_alg=SHARED } # Rete IBSS/ad-hoc con WPA-None/TKIP network={ ssid="test adhoc" mode=1 proto=WPA key_mgmt=WPA-NONE pairwise=NONE group=TKIP psk="secret passphrase" }

4.c. Wireless Tools

Impostazione iniziale e Managed Mode Wireless Tools forniscono un modo generico di configurare le interfacce wireless di base fino al livello di sicurezza WEP. Sebbene WEP sia un metodo di sicurezza debole, anche quello prevalente. La configurazione di Wireless Tools controllata da poche variabili principali. L'esempio di configurazione seguente dovrebbe descrivere tutto il necessario. Una cosa da tenere in mente che nessuna configurazione significa "connesso al pi forte non criptato Access Point" - si cerca e ci si connette sempre a qualcosa. Codice 3.1: Installare wireless-tools
# emerge net-wireless/wireless-tools

Nota: Si possono mettere le impostazioni wireless in /etc/conf.d/wireless, ma questa guida raccomanda di metterle in /etc/conf.d/net. Importante: Si deve consultare la guida nomi di variabili. Codice 3.2: Esempio di impostazione iwconfig in /etc/conf.d/net
# Si preferisce iwconfig a wpa_supplicant modules=( "iwconfig" )

# Configurare le chiavi WEP per gli Access Point denominati ESSID1 e ESSID2 # Si potrebbero configurare fino a 4 chiavi WEP, ma si utilizzarne solamente 1 alla volta # per cui si fornisce un indice predeinito di [1] per impostare la chiave [1] e in # seguito cambiare la chiave attiva a [1] # Viene fatto questo in caso si definiscano altri ESSID per usare chiavi WEP diverse da 1 # # Prefissare la chiave con s: significa che una chiave ASCII, altrimenti una chiave esadecimal # # enc open specificata sicurezza aperta (pi sicura) # enc restricted specificata sicurezza ristretta (meno sicura) key_ESSID1="[1] s:tuachiavequi key [1] enc open" key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted" # Il seguente funziona solo quando si cercano Access Point disponibili # Qualche volta visibile pi di un Access Point per cui si deve # definire un ordine preferito per connettersi preferred_aps=( "ESSID1" "ESSID2" )

Regole personalizzate per la selezione degli Access Point Si possono aggiungere alcune opzioni extra per raffinare la selezione degli Access Point, ma normalmente non sono richieste. Si pu decidere se ci si connette solo a Access Point preferiti o no. Come regola predefinita se ogni configurazione fallisce e ci si pu connettere a un Access Point non criptato allora va bene. Questo pu essere controllato dalla variabile associate_order. Ecco una tabella di valori e come essi controllano questo aspetto. Descrizione Comportamento predefinito Ci si connette solo ad AP visibili nell'elenco preferito Ci si connette ad AP nell'ordine preferito se non sono stati forcepreferred trovati in una scansione forcepreferredonly Non fa la scansione per gli AP, invece cerca di connettere a ognuno di essi in ordine Uguale a forcepreferred, in pi si connette ad ogni altro AP forceany disponibile Infine sono disponibili alcune selezioni blacklist_aps e unique_ap. blacklist_aps funziona in modo simile a preferred_aps. unique_ap un valore yes o no che dice se una seconda interfaccia wireless pu connettersi allo stesso Access Point come la prima interfaccia. Codice 3.3: Esempio di blacklist_aps e unique_ap
# Qualche volta non ci si vuole connettere a alcuni access point blacklist_aps=( "ESSID3" "ESSID4" ) # Se si possiede pi di una scheda wireless, possibile dare il # permesso a ogni scheda di associarsi (o no) allo stesso Access Point # Valori sono "yes" e "no" # Predefinito "yes" unique_ap="yes"

Valore any preferredonly

Modi Ad-Hoc e Master

Si pu volere una impostazione Ad-Hoc se non si riesce a connettere a un Access Point con la modalit "managed". Codice 3.4: Tornare al modo ad-hoc
adhoc_essid_eth0="This Adhoc Node"

C' una configurazione apposita per connettersi a reti Ad-Hoc o funzionare in modo Master per trasformarsi in un Access Point, ricordarsi comunque di specificare le chiavi WEP come mostrato in precedenza. Codice 3.5: Esempio di configurazione ad-hoc/master
# Impostare il modo - pu essere managed (predefinito), ad-hoc o master

# Non tutti i driver supportano tutti i modi mode_eth0="ad-hoc" # Impostare il ESSID dell'interfaccia # Nel modo managed, questo forza l'interfaccia ad effettuare un tentativo di connessione # solamente al ESSID specificato essid_eth0="This Adhoc Node" # Viene usato il canale 3 se non ne viene specificato uno channel_eth0="9"

Importante: L'esempio precedente preso dalla documentazione BSD che si trova nella documentazione NetBSD. Sono possibili 14 canali; i canali 1-11 sono legali per il Nord America, canali 1-13 per la maggior parte dell'Europa, canali 10-13 per la Francia, e solo il canale 14 per il Giappone. Per ulteriori chiarimenti si rimanda alla documentazione della propria scheda o dell'access point. Assicurarsi che il canale selezionato sia lo stesso canale dell'access point (o dell'altra scheda in una rete ad-hoc). L'impostazione predefinita per le schede vendute in Nord America e nella maggior parte dell'Europa 3, quella predefinita per le schede vendute in Francia 11, e quella predefinita per le schede vendute in Giappone 14. Risoluzione di problemi con Wireless Tools Ci sono alcune variabili che possono aiutare a far funzionare la propria rete wireless, conseguentemente a problemi di driver o di ambiente. Ecco una tabella contenente altre opzioni che si possono provare. Valore Descrizione predefinito iwconfig_et Vedere la pagina man di iwconfig per dettagli su cosa h0 possibile indicare a iwconfig Variabile iwpriv_eth0 sleep_scan_ 0 eth0 sleep_assoc 5 iate_eth0 Vedere la pagina man di iwpriv per dettagli su cosa possibile indicare a iwpriv Il numero di secondi che aspetta prima di fare la scansione. E' necessario quando il driver/firmware ha bisogno di pi tempo per attivarsi prima che possa essere usato. Il numero di secondi che aspetta l'interfaccia per associarsi con l'Access Point prima di spostarsi al prossimo Alcuni driver non resettano l'indirizzo MAC associato con uno invalido quando perdono o cercano di effettuare un'associazione. Alcuni driver non resettano il livello di qualit quando perdono o cercano di effettuare un'associazione. Impostazioni valide sono MAC, quality e all. Alcuni driver devono fare la scansione nel modo ad-hoc, cos se questa fallisce cercano di impostare ad-hoc qui

associate_t MAC est_eth0

scan_mode_e th0 iwpriv_scan _pre_eth0

Manda alcuni comandi iwpriv all'interfaccia prima della scansione. Vedere la pagina man di iwpriv per altre informazioni Manda alcuni comandi iwpriv alla interfaccia dopo la iwpriv_scan scansione. Vedere la pagina man di iwpriv per altre _post_eth0 informazioni 4.d. Definire la configurazione di rete per ESSID Qualche volta quando ci si connette a ESSID1 si deve avere un IP statico e quando ci si connette a ESSID2 si deve avere DHCP. La maggior parte delle variabili dei moduli possono essere definite per ESSID. Ecco come farlo. Nota: Funzionano se si usa WPA Supplicant o Wireless Tools. Importante: Si deve consultare la guida nomi di variabili.

Codice 4.1: Sovrapporre le impostazioni di rete per ESSID

config_ESSID1=( "192.168.0.3/24 brd 192.168.0.255" ) routes_ESSID1=( "default via 192.168.0.1" ) config_ESSID2=( "dhcp" ) fallback_ESSID2=( "192.168.3.4/24" ) fallback_route_ESSID2=( "default via 192.168.3.1" ) # Si possono definire nameserver e altre cose # NOTARE: DHCP sovrappone queste impostazioni a meno che # gli venga detto di non farlo dns_servers_ESSID1=( "192.168.0.1" "192.168.0.2" ) dns_domain_ESSID1="some.domain" dns_search_domains_ESSID1="search.this.domain search.that.domain" # Si sovrappone dall'indirizzo MAC dell'Access Point # E' pratico se si va a posizioni differenti che hanno lo stesso ESSID config_001122334455=( "dhcp" ) dhcpcd_001122334455="-t 10" dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" )

5. Ulteriori funzionalit
2.a. Funzioni di hook (intercettazioni) standard Possono essere definite quattro funzioni in /etc/conf.d/net, che sono chiamate in prossimit delle operazioni di avvio/chiusura. Le funzioni sono chiamate con il nome dell'interfaccia in modo che una funzione possa controllare adattatori multipli. I valori di ritorno per le funzioni preup e predown dovrebbero essere 0 (successo) per indicare che la configurazione o la deconfigurazione dell'interfaccia pu continuare. Se preup ritorna con un valore diverso da zero, allora la configurazione dell'interfaccia viene chiusa. Se predown ritorna con un valore diverso da zero, allora all'interfaccia non viene permesso di continuare la deconfigurazione. I valori di ritorno per le funzioni postup e postdown sono ignorati poich non c' niente da fare se indicano un fallimento. ${IFACE} impostata sull'interfaccia che viene portata s/gi (up/down). ${IFVAR} $ {IFACE} convertita al nome della variabile che bash permette. Codice 1.1: Esempi di funzione pre/post up/down in /etc/conf.d/net
preup() { # Test per link sull'interfaccia prima di avviarla. Questo # funziona solo su alcuni adattatori di rete e richiede che il pacchetto # ethtool sia installato. if ethtool ${IFACE} | grep -q 'Link detected: no'; then ewarn "No link on ${IFACE}, aborting configuration" return 1 fi # Ricordarsi di restituire 0 in caso di successo return 0 } predown() { # L'azione predefinita nello script eseguire un test per NFS root e non permettere # che in quel caso le interfacce vengano disattivate. Notare che se si specifica una funzione # predown() si sovrappone questa logica, mostrata in dettaglio qui di seguito, in caso # la si voglia usare... if is_net_fs /; then eerror "root filesystem is network mounted -- can't stop ${IFACE}" return 1 fi # Ricordarsi di restituire 0 in caso di successo return 0 }

postup() { # Questa funzione potrebbe essere usata, per esempio, per # registrarsi ad un servizio dinamico DNS. Un'altra possibilit potrebbe essere # mandare/ricevere mail quando l'interfaccia avviata. return 0 } postdown() { # Questa funzione viene utilizzata perlopi per completezza. Attualmente # non c' mai stato bisogno di utilizzarla. return 0 }

Nota: Per maggiori informazioni su come scrivere le proprie funzioni, si prega di leggere /etc/conf.d/net.example. 5.b. Funzioni di hook (intercettazioni) per "Wireless Tools" Nota: Non funziona con WPA Supplicant - ma le variabili ${ESSID} e ${ESSIDVAR} sono disponibili nella funzione postup() Possono essere definite due funzioni /etc/conf.d/net, che sono chiamate in prossimit della funzione associata. Le funzioni sono chiamate con il nome dell'interfaccia in modo che una funzione possa controllare adattatori multipli. I valori di ritorno per la funzione preassociate dovrebbero essere 0 (successo) per indicare che la configurazione o la deconfigurazione dell'interfaccia pu continuare. Se la preassociate ritorna un valore diverso da zero, allora la configurazione dell'interfaccia viene chiusa. Il valore di ritorno per la funzione postassociate ignorato poich non c' niente da fare se indica un fallimento. ${ESSID} impostata all'esatto ESSID dell'AP con cui si connessi. ${ESSIDVAR} $ {ESSID} convertita al nome della variabile che bash permette. Codice 2.1: Funzioni di associazione pre/post in /etc/conf.d/net
preassociate() { # Il codice seguente aggiunge due variabili di configurazione # leap_user_ESSID e leap_pass_ESSID. Quando sono entrambe configurate per # essere connesse a ESSID, viene eseguito lo script CISCO LEAP local user pass eval user=\"\$\{leap_user_${ESSIDVAR}\}\" eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\" if [[ -n ${user} && -n ${pass} ]]; then if [[ ! -x /opt/cisco/bin/leapscript ]]; then eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils" return 1 fi einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\"" if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then ewarn "Login Failed for ${user}" return 1 fi fi return 0 } postassociate() { # Questa funzione viene utilizzata perlopi per completezza. Attualmente # non c' mai stato bisogno di utilizzarla. } return 0

Nota: ${ESSID} e ${ESSIDVAR} non sono disponibili nelle funzioni predown() e postdown() Nota: Per maggiori informazioni su come scrivere le proprie funzioni, si prega di leggere /etc/conf.d/net.example.

6. Gestione della rete


6.a. Gestione di rete Se si sempre in movimento con il proprio computer, non sempre disponibile un cavo ethernet o un access point. Inoltre, se un cavo di rete viene inserito o viene trovato un access point, si potrebbe desiderare che i propri servizi di rete funzionino automaticamente. Di seguito vengono elencati alcuni strumenti utili alla gestione della rete. Nota: Questo documento parla solo di ifplugd, ma ci sono alternative come netplug. netplug un'alternativa a ifplugd molto leggera, ma dipende dal corretto funzionamento dei driver di rete del kernel, e molti driver purtroppo non lo fanno. 6.b. ifplugd ifplugd un demone che avvia e chiude le interfacce quando si inserisce o rimuove un cavo ethernet. Pu anche gestire la rilevazione associazioni agli Access Point o quando dei nuovi Access Point entrano nel raggio di copertura. Codice 2.1: Installare ifplugd
# emerge sys-apps/ifplugd

La configurazione di ifplugd molto semplice. Il file di configurazione /etc/conf.d/ifplugd. Eseguire man ifplugd per dettagli sulle variabili disponibili. Inoltre vedere /etc/conf.d/net.example per ulteriori esempi. Codice 2.2: Configurazione d'esempio per ifplug
(Sostituire eth0 con l'interfaccia da monitorare) ifplugd_eth0="..." (Per monitorare un'interfaccia wireless) ifplugd_eth0="--api-mode=wlan"

In aggiunta alla gestione di connessioni di rete multiple, possibile aggiungere uno strumento che facilita il funzionamento con molteplici server DNS e configurazioni; ci molto pratico se si riceve l'indirizzo IP tramite DHCP. Per installarlo, effettuare l'emerge di openresolv. Codice 2.3: Installare openresolv
# emerge openresolv

Vedere man resolvconf per saperne di pi riguardo alle sue caratteristiche. I contenuti di questo documento sono rilasciati sotto la licenza Creative Commons Attribution / Share Alike.