Manuale Gentoo Linux/MIPS
Indice:
-
Installazione di Gentoo
In questa parte si tratta dell'installazione di Gentoo Linux su un sistema.
-
A proposito dell'installazione di Gentoo
Questo capitolo introduce il metodo di installazione trattato in questo manuale.
-
Scelta della modalità di installazione
Gentoo Linux può essere installato in vari modi: in questo capitolo si illustra
come installare Gentoo usando le immagini Netboot di MIPS.
-
Configurazione della rete
Per poter scaricare gli ultimi codici sorgenti, è necessario configurare la
rete.
-
Preparazione dei dischi
Per poter installare Gentoo è necessario creare delle partizioni. Questo
capitolo descrive come partizionare un disco.
-
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.
-
Installazione del sistema base Gentoo
Dopo l'installazione e la configurazione di uno stage3, il risultato finale è un
sistema base Gentoo a disposizione dell'utente. Il capitolo descrive come
arrivare a questo punto.
-
Configurazione del Kernel
Il kernel di Linux è il cuore di ogni distribuzione. Il capitolo tratta della
configurazione del Kernel.
-
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.
-
Installazione degli strumenti di sistema
Questo capitolo riguarda la scelta della versione e l'installazione degli
strumenti di sistema.
-
Configurazione del Bootloader
Sia macchine Silicon Graphics, sia server Cobalt, richiedono l'uso di un
bootloader per caricare il kernel. Questa sezione tratta l'impostazione di
arcboot/arcload (per macchine SGI) e colo per server Cobalt.
-
Termine dell'installazione Gentoo
E' quasi finita. Si creano uno o più utenti nel nuovo sistema.
-
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.
-
Una introduzione di Portage
Questo capitolo spiega i "semplici" passi che un utente dovrebbe conoscere per
mantenere il software del proprio sistema.
-
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.
-
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à.
-
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.
-
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.
-
File e directory
Una volta che si conosce a fondo Portage, è necessario sapere dove memorizza i
propri file e dati.
-
Configurazione e variabili
Portage è completamente configurabile attraverso l'uso di variabili impostate in
file di configurazione o in variabili ambiente.
-
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.
-
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.
-
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.
-
Configurazione comune
Una guida per far funzionare rapidamente la propria connessione di rete nella
maggior parte dei casi.
-
Configurazione Avanzata
La guida di riferimento per capire come funziona la configurazione, è un
prerequisito per capire le impostazioni modulari.
-
Impostazioni modulari
Gentoo fornisce delle impostazioni di rete flessibili, dando la possibilità di
scegliere diversi client DHCP, impostare bonding, bridging, VLAN ed altro.
-
Reti Wireless
Le reti Wireless non sono facili da configurare, comunque questa guida cercherà
di aiutare il lettore a farle funzionare!
-
Ulteriori funzionalità
Per gli esperti ecco le istruzioni per personalizzare l'infrastruttura di rete.
-
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 (come Knoppix), da un ambiente avviato via rete, da un floppy, ecc.
Questo documento tratta dell'installazione tramite CD di Installazione e in
alcuni casi boot via rete. Nelle istruzioni di installazione si presuppone che
si desideri installare l'ultima versione disponibile di ogni pacchetto. 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.
Per istruzioni riguardanti altri approcci consultare la Guida alternativa all'installazione. E'
inoltre disponibile una raccolta di suggerimenti che potrebbero
essere una lettura altrettanto utile. Nel caso queste istruzioni sembrassero
troppo complesse è possibile consultare 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.
Richieste hardware
| CPU (Big Endian port) |
MIPS3, MIPS4, MIPS5 o MIPS64-class CPU |
| CPU (Little Endian port) |
MIPS4, MIPS5 o MIPS64-class CPU |
| Memoria |
128 MB |
| Spazio su disco |
3.0 GB (escluso lo spazio per swap) |
| Spazio per swap |
Almeno 256 MB |
Si dovrebbe anche controllare Requisiti hardware Gentoo/MIPS Linu
sul sito di Gentoo.
2.b. Note di installazione
Una nota sui processori e sulle architetture
Su molte architetture, il processore cambia spesso, e quello nuovo si costruisce
sulla base di quello precedente. MIPS non fa eccezione. Ci sono molte CPU per la
architettura MIPS. Per scegliere il tarball dell'immagine dello stage netboot e
le CFLAGS appropriate, si deve conoscere il tipo di CPU che si usa.
Questi tipi sono riferiti a Instruction Set Architecture.
| MIPS ISA |
32/64-bit |
CPU |
| MIPS 1 |
32-bit |
R2000,
R3000
|
| MIPS 2 |
32-bit |
R6000
|
| MIPS 3 |
64-bit |
R4000,
R4400,
R4600,
R4700
|
| MIPS 4 |
64-bit |
R5000,
RM5000,
RM7000,
R8000,
R9000,
R10000,
R12000,
R14000,
R16000
|
| MIPS 5 |
64-bit |
Nessuna |
| MIPS32 |
32-bit |
AMD serie Alchemy, 4kc, 4km, molti altri... Ci sono alcune revisioni nella
versione MIPS32 ISA
|
| MIPS64 |
64-bit |
Broadcom SiByte SB1, 5kc ... etc... Ci sono alcune revisioni nella versione
MIPS64 ISA
|
Nota:
Il livello ISA MIPS5 è stato fatto dalla Silicon Graphics nel 1994, ma
non è mai stato usato su una CPU commerciale. È presente come parte del ISA
MIPS64.
|
Nota:
Le ISA MIPS32 e MIPS64 possono creare confusione. Il livello ISA
MIPS64 è un superset di ISA MIPS5, e include tutte le istruzioni
da MIPS5 e ISA precedenti. MIPS32 è il subset 32 bit di
MIPS64, esiste perchè la maggior parte delle applicazioni richiedono solo
32 bit.
|
Altro importante concetto è quello di endianness. Endianness si riferisce
al modo in cui una CPU legge le parole dalla memoria principale. Una parola può
essere letta sia con big endian (il byte più significativo), sia con
little endian (il byte meno significativo). Le macchine Intel x86 sono
principalmente Little endian, mentre le macchine Apple e Sparc sono Big Endian.
Su MIPS, possono essere entrambi. Per separarle, si aggiunge el
all'architettura per denotare le little endian.
| Architettura |
32/64-bit |
Endianness |
Macchine |
| mips |
32-bit |
Big Endian |
Silicon Graphics |
| mipsel |
32-bit |
Little Endian |
Cobalt Servers |
| mips64 |
64-bit |
Big Endian |
Silicon Graphics |
| mips64el |
64-bit |
Little Endian |
Cobalt Servers |
Per chi volesse sapere di più su ISA, può consultare i seguenti siti.
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.
2.c. Descrizione dell'avvio da rete (Netbooting)
In questa sezione si spiega tutto ciò che è necessario per fare l'avvio da rete
(network boot) con una workstation Silicon Graphics o Cobalt Server. È solo una
piccola guida, per altre informazioni si consiglia di leggere il documentoPostazioni diskless usando Gentoo Linux.
Di cosa si ha bisogno: In base alla macchina, ci sarà bisogno di determinato
hardware per completare con successo l'avvio da rete e l'installazioe di Linux.
-
In generale:
-
DHCP/BOAMD serie Alchemy, 4kc, 4km, molti altri. Ci sono diverse
modifiche nella versione MIPS32 ISA. server OTP (raccomandato ISC DHCPd)
- Molta pazienza
-
Per workstation Silicon Graphics:
- TFTP server (raccomandato tftp-hpa)
-
Se si desidera o è necessario usare la console seriale:
-
MiniDIN8 --> cavo seriale RS-232 (necessario per sistemi IP22 e
IP28)
- Null-modem cable
- VT100 o ANSI terminale compatibile con capacità di 9600 baud
-
Per Cobalt Servers (non l'originale Qube):
- NFS server
- Null-modem cable
- VT100 o ANSI terminale compatibile con capacità di 115200 baud
Nota:
Le macchine SGI usano un connettore MiniDIN 8 per le porte seriali. I cavi del
modem Apple funzionano bene come cavi seriali, ma per le macchine Apple che
hanno USB & modem interni, questi sono più difficili da trovare. Un buon
diagramma è disponibile nel Linux/MIPS Wiki, e la
maggior parte dei negozi di elettronica dovrebbero avere il plug richiesto.
|
Nota:
Il terminale può essere un reale VT100/ANSI o un PC che esegue un software di
emulazione terminale (come HyperTerminal, Minicom, seyon, Telex, xc, screen: uno
di questi va bene). Non è un problema quale piattaforma sia eseguita dalla
macchina, basta che abbia una porta seriale RS-232 che si possa usare, e un
software adatto.
|
Nota:
Notare che questa guida non tratta di Qube. Il server Qube non ha una porta
seriale nella sua configurazione predefinita, e non è possibile installare
Gentoo senza l'aiuto di un cacciavite e di una macchina sostitutiva per fare
l'installazione. Il seguente sito ha una guida per installare Gentoo su queste
macchine. http://www.metzner.org/projects/qube/
|
Impostare TFTP e DHCP -- una breve guida
Questa non è una guida completa, si può usare per cominciare una installazione
da zero, o usare i suggerimenti per una impostazione esistente per supportare
l'avvio da rete.
Notare che i server usati non devono per forza eseguire Gentoo Linux, si può
usare FreeBSD o un'altra piattaforma Unix-like. In questa guida, si assume però
di usare Gentoo Linux. Se lo si desidera, si può eseguire TFTP/NFS su una
macchina differente del server DHCP.
Avvertenza:
Il Team Gentoo/MIPS non può aiutare gli utenti che usano altri sistemi operativi
come server di netboot. Se si sceglie un sistema operativo differente, si assume
che l'utente conosca cosa sta facendo.
|
Il primo passo è configurare DHCP. Per fare rispondere il demone ISC DHCP alle
richieste BOOTP (richiesto da SGI & Cobalt BOOTROM), si deve abilitare il
BOOTP dinamico sul range di indirizzi in uso; poi impostare una voce per ogni
client che punta alla immagine boot.
Codice 3.1: Installare ISCs DHCP |
# emerge dhcp
|
Si deve creare il /etc/dhcp/dhcpd.conf. Qui c'è un esempio di
configurazione per cominciare.
Codice 3.2: dhcpd.conf |
ddns-update-style none;
subnet 192.168.10.0 netmask 255.255.255.0 {
pool {
range dynamic-bootp 192.168.10.1 192.168.10.254;
}
option domain-name-servers 203.1.72.96, 202.47.56.17;
option routers 192.168.10.1;
authoritative;
allow bootp;
}
|
Con questa impostazione, si può aggiungere qualsiasi numero di client nella
subnet. Si vedrà più avanti cosa è necessario mettere.
Il prossimo passo è impostare il server TFTP. È raccomandato usare
tftp-hpa poichè è l'unico demone TFTP conosciuto che funziona
correttamente. Si deve installarlo:
Codice 3.3: Installare tftp-hpa |
# emerge net-ftp/tftp-hpa
|
Questo crea /tftproot per immagazzinare le immagini netboot. Si può
spostarla in qualsiasi altra parte se lo si desidera. In questo manuale si
assume che venga lasciata nel suo percorso predefinito.
2.d. Avvio da rete su workstation SGI
Scaricare una immagine netboot
Ci sono molte immagini disponibili per essere scaricate, dipende su quale
sistema si vogliono installare. Sono tutte etichettate per il sistema e la CPU
sui quali saranno compilate. I tipi di macchine sono:
| Codename |
Macchine |
| IP22 |
Indy, *Indigo 2, Challenge S |
| IP26 |
*Indigo 2 Power |
| IP27 |
Origin 200, Origin 2000 |
| IP28 |
*Indigo 2 Impact |
| IP30 |
Octane |
| IP32 |
O2 |
Nota:
* È un errore comune scambiare IRIS Indigo (IP12 w/ R3000 CPU or IP20 w/ R4000
CPU, nessuna può eseguire Linux), Indigo 2 (IP22, che esegue bene Linux),
R8000-based Indigo 2 Power (non esegue bene Linux) e R10000-based Indigo 2
Impact (IP28, che è in fase di sperimentazione). Tenere a mente che queste
macchine sono differenti.
|
Nel filename r4k si riferisce ai processori R4000-series, r5k a R5000, rm5k
a RM5200 e r10k a R10000. Le immagini disponibili si trovano sui mirror Gentoo.
Configurazione DHCP per un client SGI
Dopo averlo scaricato, mettere il file della immagine decompressa nella
directory /tftpboot. (Usare bzip2 -d per decomprimerla)
Modificare /etc/dhcp/dhcpd.conf e aggiungere la voce per il client
SGI.
Codice 4.1: dhcpd.conf per SGI Workstation |
subnet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx {
host sgi {
hardware ethernet 08:00:69:08:db:77;
next-server 192.168.10.1;
fixed-address 192.168.10.3;
filename "/gentoo-r4k.img";
}
}
|
Opzioni del kernel
È quasi fatta, ma ci sono alcune ottimizzazioni da fare. Aprire una console con
i privilegi root, e dare i seguenti comandi.
Codice 4.2: Alcune ottimizzazioni per macchine SGI con lo scopo di far funzionare correttamente TFTP |
# echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc
# echo "2048 32767" > /proc/sys/net/ipv4/ip_local_port_range
|
Dovrebbe essere sufficiente per fare andare il server Linux con SGI Prom.
Avviare i demoni
A questo punto, si dovrebbe essere pronti a avviare i demoni. Quindi digitare i
seguenti comandi:
Codice 4.3: Avviare i demoni DHCP e TFTP |
# /etc/init.d/dhcp start
# /etc/init.d/in.tftpd start
|
Se è andato tutto bene, si dovrebbe poter proseguire con il manuale. Se il
server DHCP non si avvia, provare a eseguire 'dhcpd' da riga di comando (se si
visualizza un 'exiting', vedere sotto quali sono i problemi).
Un modo facile per verificare se il demone tftp sta funzionando, è quello di
digitare il seguente comando( se si visualizza un qualcosa di simile al
messaggio sottostante, tutto è andato bene.
Codice 4.4: Controllare che TFTPd funzioni |
# netstat -al | grep ^udp
udp 0 0 *:bootpc *:*
udp 0 0 *:631 *:*
udp 0 0 *:xdmcp *:*
udp 0 0 *:tftp *:*
|
Avvio da rete su una macchina SGI
Ora che tutto è impostato e DHCP e TFTP stanno funzionando, è tempo di accendere
la macchina SGI. Quando si vede sullo schermo "Running power-on diagnostics",
cliccare "Stop For Maintenance" o premere ESC. Si presenta un menu come il
seguente. Digitare i comandi come quelli sottostanti.
Codice 4.5: Menu Manutenzione SGI PROM |
Running power-on diagnostics
System Maintenance Menu
1) Start System
2) Install System Software
3) Run Diagnostics
4) Recover System
5) Enter Command Monitor
Option? 5
Command Monitor. Type "exit" to return to the menu.
>> bootp(): root=/dev/ram0
|
La macchina dovrebbe cominciare a scaricare la immagine e dopo 20 secondi
dovrebbe partire l'avvio di Linux. Se tutto funziona come dovrebbe, ci si
dovrebbe trovare in una shell Busybox ash come descritto di seguito, in
cui si può passare alla Configurazione della
rete.
Codice 4.6: Se tutto è andato bene |
init started: BusyBox v1.00-pre10 (2004.04.27-02:55+0000) multi-call binary
Gentoo Linux; http://www.gentoo.org/
Copyright 2001-2004 Gentoo Technologies, Inc.; Distributed under the GPL
Gentoo/MIPS Netboot for Silicon Graphics Machines
Build Date: April 26th, 2004
* To configure networking, do the following:
* For Static IP:
* /bin/net-setup <IP Address> <Gateway Address> [telnet]
* For Dynamic IP:
* /bin/net-setup dhcp [telnet]
* If you would like a telnetd daemon loaded as well, pass "telnet"
* As the final argument to /bin/net-setup.
Please press Enter to activate this console.
|
Risposte ad alcuni problemi
Se la macchina si rifiuta di scaricare la sua immagine, le cause possono essere
due, (1) si è fatto un errore in qualche parte, o (2) si ha bisogno di una
piccola persuasione. Ecco una lista delle cose che si possono controllare:
-
dhcpd sta dando un indirizzo IP alla macchina SGI. Si dovrebbe vedere
qualche messaggio sulla richiesta BOOTP nel log di sistema. Anche
tcpdump potrebbe essere utile.
-
I permessi sono impostati correttamente in tftp (/tftproot
dovrebbe essere leggibile)
-
Controllare i log del sistema per vedere cosa sta riportando il server tftp
(se ci sono errori)
Se si è controllato tutto sul server, e si stanno ottenendo timeout, ecc. sulla
macchina SGI, digitare quanto segue nella console.
Codice 4.7: Fare funzionare SGI PROM |
>> resetenv
>> unsetenv netaddr
>> unsetenv dlserver
>> init
>> bootp(): root=/dev/ram0
|
2.e. Metodo alternativo: Gentoo/MIPS SGI LiveCD
Descrizione
Su macchine Silicon Graphics, è possibile avviare il sistema da un CD da cui
installare successivamente il sistema operativo. (l'installazione di IRIX ad
esempio) Di recente, sono state fatte immagini per CD avviabili con cui si può
installare Gentoo.
Al momento il Live CD Gentoo/MIPS funziona solo su workstation SGI Indy, Indigo
2 e O2 con CPU serie R4000 e R5000, in fututo potrebbe essere possibile farlo
funzionare su altre piattaforme.
Si possono trovare le immagini del Live CD per il download sui Gentoo Mirror
nella directory experimental/mips/livecd.
Avvertenza:
Questi CD sono sperimentali. Potrebbero anche non funzionare. Si possono
riportare note sul loro funzionamento o meno su Bugzilla, in questa discussione del
forum o nel canale
IRC #gentoo-mips.
|
Masterizzare un Live CD
Una nota importante, SGI PROM non conosce il formato ISO9660, e neanche El
Torito boot standard. Queste immagini su CD sono state costruite come un SGI
disklabel con la immagine di boot nell'intestazione del volume come un disco
rigido. Prestare attenzione quando si masterizza il CD.
Qui di seguito si trova un comando di esempio che assume che la velocità sia di
24x su un masterizzatore IDE. Se si ha un masterizzatore SCSI cambiare
dev in un modo appropriato. Lo stesso per l'opzione speed: se si
riscontrano problemi, cambiare la velocità.
Codice 5.1: Masterizzare con cdrecord |
# bzip2 -d mips-livecd-prototype-rc2-20041027.img.bz2
# cdrecord -vv -pad speed=24 dev=ATAPI:0,0,0 -tao
mips-livecd-prototype-rc2-20041027.img
|
Nota:
Potrebbe essere possibile masterizzare questi CD con Windows, sempre che il
programma di masterizzazione copi l'immagine così come è. Nessuno è riuscito
a fare un CD funzionante in questo modo fino ad ora.
|
Nota:
Se non si sa cosa mettere in dev, eseguire cdrecord -scanbus da
root: verrà visualizzata la posizione del masterizzatore.
|
2.f. Avvio da rete su server Cobalt
Descrizione della procedura di avvio da rete
Al contrario delle macchine SGI, i server Cobalt usano NFS per trasferire i loro
kernel per l'avvio. Si avvia la macchina premendo i tasti freccia sinistra &
destra mentre si accende. La macchina tenterà di ottenere un numero IP via
BOOTP, monta la directory /nfsroot dal server con NFS, cerca di
scaricare e avviare il file vmlinux_raq-2800.gz (dipende dal
modello) che si assume essere un binario standard ELF.
Scaricare una immagine Netboot
In
http://dev.gentoo.org/~redhatter/mips/cobalt/netboots/ si troveranno
immagini boot per ottenere e eseguire Cobalt. I file di cui si ha bisogno si
chiamano nfsroot-KERNEL-COLO-DATE-cobalt.tar, selezionare quello
più recente e scompattarlo in / come mostrato sotto:
Codice 6.1: Scompattare l'immagine nfsroot |
# tar -C / -xvf nfsroot-2.6.13.4-1.19-20051122-cobalt.tar
|
Configurazione NFS Server
Siccome questa macchina usa NFS per scaricare la sua immagine, bisogna esportare
/nfsroot sul server. Se non lo si è già fatto, si deve installare
il pacchetto net-fs/nfs-utils.
Codice 6.2: Installare nfs-utils |
# emerge net-fs/nfs-utils
|
Una volta fatto, inserire quanto segue nel file /etc/exports. Si
possono impostare restrizioni più strette se lo si desidera.
Codice 6.3: Esportare la directory /nfsroot |
/nfsroot *(ro,sync)
|
Si può avviare il server NFS:
Codice 6.4: Avviare il server NFS |
# /etc/init.d/nfs start
|
Se il server NFS è già in esecuzione, si può dire di controllare nuovamente il
file exports con il comando exportfs.
Codice 6.5: Esportare un nuovo filesystem |
# exportfs -av
|
Configurazione DHCP per una macchina Cobalt
La cosa è relativamente diretta. Aggiungere la seguente informazione al file
/etc/dhcp/dhcpd.conf.
Codice 6.6: dhcpd.conf per server Cobalt |
subnet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx {
host qube {
option root-path "/nfsroot";
hardware ethernet 00:10:e0:00:86:3d;
next-server 192.168.10.1;
fixed-address 192.168.10.2;
filename "default.colo";
}
}
|
Avviare i demoni
Si dovrebbe essere pronti per avviare i demoni. Digitare quanto segue:
Codice 6.7: Avviare i demoni DHCP e NFS |
# /etc/init.d/dhcp start
# /etc/init.d/nfs start
|
Se è andato tutto bene, si dovrebbe poter proseguire con il manuale. Se il
server DHCP non si avvia, provare a eseguire 'dhcpd' da riga di comando (se si
visualizza un 'exiting', vedere sotto quali sono i problemi).
Avvio da rete sulla macchina Cobalt
Ora che tutto è impostato e DHCP e TFTP stanno funzionando, è tempo di accendere
la macchina Cobalt. Collegare il cavo del modem, e impostare il terminale
seriale per poter usare 115200 baud, 8 bits, nessuna parità, 1 stop bit, VT100
emulazione. Premere i tasti freccia sinistra & destra mentre l'unità si
accende.
Se tutto è andato bene, si dovrebbe visualizzare "Net Booting", si dovrebbero
vedere alcune attività di rete, seguiti da CoLo. Andare in basso nel menu fino a
trovare "Network (NFS)" e premere invio. Si dovrebbe notare che la macchina si
avvia nella console seriale.
Codice 6.8: Avviare il kernel |
elf: 80080000 <-- 00001000 6586368t + 192624t
elf: entry 80328040
net: interface down
CPU revision is: 000028a0
FPU revision is: 000028a0
Primary instruction cache 32kB, physically tagged, 2-way, linesize 32 bytes.
Primary data cache 32kB 2-way, linesize 32 bytes.
Linux version 2.4.26-mipscvs-20040415 (root@khazad-dum) (gcc version 3.3.3...
Determined physical RAM map:
memory: 08000000 @ 00000000 (usable)
Initial ramdisk at: 0x80392000 (3366912 bytes)
On node 0 totalpages: 32768
zone(0): 32768 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: console=ttyS0,115200 root=/dev/ram0
Calibrating delay loop... 249.85 BogoMIPS
Memory: 122512k/131072k available (2708k kernel code, 8560k reserved, 3424k dat)
|
Se tutto è andato bene, ci si dovrebbe trovare in una shell Busybox ash
come mostrato sotto, dalla quale si può passare alla Configurazione della rete.
Codice 6.9: Se tutto è andato bene |
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 280k freed
init started: BusyBox v1.00-pre10 (2004.04.27-02:55+0000) multi-call binary
Gentoo Linux; http://www.gentoo.org/
Copyright 2001-2004 Gentoo Technologies, Inc.; Distributed under the GPL
Gentoo/MIPS Netboot for Cobalt Microserver Machines
Build Date: April 26th, 2004
* To configure networking, do the following:
* For Static IP:
* /bin/net-setup <IP Address> <Gateway Address> [telnet]
* For Dynamic IP:
* /bin/net-setup dhcp [telnet]
* If you would like a telnetd daemon loaded as well, pass "telnet"
* As the final argument to /bin/net-setup.
Please press Enter to activate this console.
|
Risposte ad alcuni problemi
Se la macchina si rifiuta di scaricare la sua immagine, i casi possono essere
due, (1) si è fatto un errore in qualche parte, o (2) si ha bisogno di una
piccola persuasione. Questa è una lista delle cose che si possono controllare:
-
dhcpd sta dando un indirizzo IP alla Macchina Cobalt. Si dovrebbe
vedere qualche messaggio sulla richiesta BOOTP nel log di sistema. Anche
tcpdump potrebbe essere utile.
-
I permessi sono impostati correttamente in /nfsroot. (dovrebbe
essere leggibile)
-
Assicurarsi che il server NFS sia in esecuzione ed esportare la directory
/nfsroot. Controllare con exportfs -v sul server.
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 |
# export http_proxy="http://proxy.gentoo.org:8080"
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
# 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.
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 |
# 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 pppoe-setup (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
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
# 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 utilizzare
iwconfig. 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 |
# iwconfig eth0 essid GentooNode
# iwconfig eth0 key 1234123412341234abcd
# 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): 192.168.0.2
IP Address (bit): 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: 192 168 0 2
11000000 10101000 00000000 00000010
Netmask: 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 |
255.255.255.0 |
| Broadcast |
192.168.0.255 |
| Gateway |
192.168.0.1 |
| Nameserver(s) |
195.130.130.5, 195.130.130.133 |
Usare ifconfig e 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
Sebbene in linea teorica sia possibile usare un intero disco per il sistema
Linux, in pratica ciò non viene quasi mai fatto. Invece, i dispositivi a blocchi
del disco sono divisi in parti più piccole e più maneggevoli. Queste parti sono
chiamate partizioni.
4.b. Impostare uno schema di partizionamento
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. Si dovrebbe tenere una grande /usr: questa contiene non
solo la maggior parte delle applicazioni, il solo Portage tree occupa 500 MB di
spazio, esclusi i sorgenti che sono in esso.
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. C'è anche un limite di 15 partizioni per SCSI e
SATA.
4.c. Usare fdisk su MIPS per partizionare il disco
Macchine SGI: Creare un SGI Disk Label
Tutti i dischi in un sistema SGI richiedono un SGI Disk Label, che serve
per una funzione simile a quella di Sun & MS-DOS disklabels -- Memorizza
informazioni sulle partizioni dei dischi. Con la crezione di un nuovo SGI Disk
Label si creeranno due partizioni speciali sul disco:
-
Intestazione del volume SGI (9na partizione): Questa partizione è
importante. E' dove c'è il bootloader, e in alcuni casi, anche le immagini
del kernel.
-
Volume SGI (11ma partizione): Questa partizione è simile nello scopo
alla terza partizione del Sun Disklabel di "Whole Disk". Questa partizione
occupa l'intero disco, e non dovrebbe essere toccata. Non ha uno scopo
speciale, tranne quello di aiutare il PROM in qualche modo non documentato
(o è usata da IRIX).
Avvertenza:
L'intestazione del volume SGI deve iniziare al cilindro 0. Altrimenti non
si potrà fare il boot dal disco.
|
Il seguente, è un esempio preso da fdisk. Dopo averlo letto, adattarlo
in base alle proprie necessità.
Codice 3.1: Creare un SGI Disklabel |
# fdisk /dev/sda
Command (m for help): x
Expert command (m for help): m
Command action
b move beginning of data in a partition
c change number of cylinders
d print the raw data in the partition table
e list extended partitions
f fix partition order
g create an IRIX (SGI) partition table
h change number of heads
m print this menu
p print the partition table
q quit without saving changes
r return to main menu
s change number of sectors/track
v verify the partition table
w write table to disk and exit
Expert command (m for help): g
Building a new SGI disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content will be irrecoverably lost.
Expert command (m for help): r
Command (m for help): p
Disk /dev/sda (SGI disk label): 64 heads, 32 sectors, 17482 cylinders
Units = cylinders of 2048 * 512 bytes
----- partitions -----
Pt# Device Info Start End Sectors Id System
9: /dev/sda1 0 4 10240 0 SGI volhdr
11: /dev/sda2 0 17481 35803136 6 SGI volume
----- Bootinfo -----
Bootfile: /unix
----- Directory Entries -----
Command (m for help):
|
Nota:
Se il disco ha già un SGI Disklabel, allora fdisk non creerà una nuova label. Ci
sono due modi per evitare questo. Il primo è quello di creare un Sun o MS-DOS
disklabel, scrivere i cambiamenti sul disco, e far ripartire fdisk. Il secondo è
quello di sovrascrivere la tabella di partizioni con dati vuoti, con il seguente
comando: dd if=/dev/zero of=/dev/sda bs=512 count=1.
|
Ottenere l'intestazione del volume SGI della giusta dimensione
Importante:
Questo passo è spesso necessario, a causa di un bug in fdisk.
L'intestazione del volume non è creata in modo corretto, la fine comincia e
finisce al cilindro 0. Questo evita la creazione di partizioni multiple.
Continuare a leggere per sapere come superare questo problema.
|
Ora che è creato il SGI Disklabel, le partizioni devono essere definite.
Nell'esempio sopra, ci sono già due partizioni definite. Ci sono le partizioni
speciali che non dovrebbero essere cambiate. Tuttavia, per installare Gentoo, si
ha bisogno di caricare un bootloader, e immagini del kernel multiple (dipende
dal tipo di sistema) direttamente nell'intestazione del volume. L'intestazione
del volume può contenere otto immagini di ogni grandezza, un'immagine può
avere un nome di otto caratteri.
Il processo di rendere più larga l'intestazione del volume non è esattamente
diretto; c'è un piccolo trucco per farlo. Non si può cancellare e riaggiungere
l'intestazione del volume con fdisk. Nell'esempio sotto, si creerà
un'intestazione del volume di 50MB insieme a una partizione di boot di 50MB. La
disposizione del proprio disco può variare, ma l'esempio è solo a scopo
illustrativo.
Codice 3.2: Ridurre l'intestazione del volume SGI |
Command (m for help): n
Partition number (1-16): 1
First cylinder (5-8682, default 5): 51
Last cylinder (51-8682, default 8682): 101
Command (m for help): d
Partition number (1-16): 9
Command (m for help): n
Partition number (1-16): 9
First cylinder (0-50, default 0): 0
Last cylinder (0-50, default 50): 50
|
Se non si hanno conoscenze buone per usare fdisk leggere le istruzioni
sul partizionamento su Cobalts. I concetti sono gli stessi: ricordarsi di
lasciare l'intestazione del volume e le partizioni del disco.
Si può creare il resto delle partizioni. Dopo che tutte le partizioni sono state
create assicurarsi di impostare l'ID della partizione swap a 82, Linux
Swap. Il valore predefinito è 83, Linux Native.
Ora che le partizione sono create, si può continuare con Creare i filesystem.
Macchine Cobalt: Partizionare il disco
Sulle macchine Cobalt, il BOOTROM si aspetta di vedere un MS-DOS MBR, in modo
che il partizionamento del disco sia diretto: è lo stesso che si fa per una
macchina x86. Comunque ci sono alcune cose da tenere in mente.
-
Cobalt firmware si aspetterà che /dev/sda1 sia una partizione
Linux formattata EXT2 Revision 0. EXT2 Revision 1 partizioni non
funzioneranno! (Il Cobalt BOOTROM comprende solo EXT2r0)
-
La partizione appena menzionata deve contenere una immagine gzippata ELF,
vmlinux.gz in root di questa partizione, che carica il kernel
Per questa ragione, si raccomanda di creare una partizione /boot di
circa 20MB formattata EXT2r0, sulla quale installare CoLo & i kernel. Questo
permette di eseguire un filesystem moderno (EXT3 o ReiserFS) per la partizione
root.
Si assume che sia stata creato /dev/sda1 da montare successivamente
come partizione di /boot. Se si desidera renderla come
/, si dovranno ricordare le aspettative di PROM.
Per creare le partizioni digitare fdisk /dev/sda al prompt. I principali
comandi che si devono sapere sono questi:
-
o: Elimina la vecchia tabella di partizioni, comincia con una vuota
MS-DOS
-
n: Nuova Partizione
-
t: Cambia il tipo di partizione
- Usare 82 per Linux Swap, 83 per Linux FS
-
d: Elimina una partizione
-
p: Visualizza la tabella di partizioni
-
q: Quit -- lascia così come è la vecchia tabella di partizioni
-
w: Quit -- salva la tabella di partizioni
Codice 3.3: Partizionare il disco |
# fdisk /dev/sda
The number of cylinders for this disk is set to 19870.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): o
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
The number of cylinders for this disk is set to 19870.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): p
Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-19870, default 1):
Last cylinder or +size or +sizeM or +sizeK (1-19870, default 19870): +20M
Command (m for help): p
Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 40 20128+ 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (41-19870, default 41):
Using default value 41
Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870):
Using default value 19870
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (41-19870, default 41):<Press ENTER>
Using default value 41
Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870): +500M
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (17294-19870, default 17294): <Press ENTER>
Using default value 17294
Last cylinder or +size or +sizeM or +sizeK (1011-19870, default 19870): <Press ENTER>
Using default value 19870
Command (m for help): p
Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks ID System
/dev/sda1 1 21 10552+ 83 Linux
/dev/sda2 22 19870 10003896 5 Extended
/dev/sda5 22 1037 512032+ 83 Linux
/dev/sda6 1038 5101 2048224+ 83 Linux
/dev/sda7 5102 9165 2048224+ 83 Linux
/dev/sda8 9166 13229 2048224+ 83 Linux
/dev/sda9 13230 17293 2048224+ 83 Linux
/dev/sda10 17294 19870 1298776+ 83 Linux
Command (m for help): t
Partition number (1-10): 10
Hex code (type L to list codes): 82
Changed system type of partition 10 to 82 (Linux swap)
Command (m for help): p
Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks ID System
/dev/sda1 1 21 10552+ 83 Linux
/dev/sda2 22 19870 10003896 5 Extended
/dev/sda5 22 1037 512032+ 83 Linux
/dev/sda6 1038 5101 2048224+ 83 Linux
/dev/sda7 5102 9165 2048224+ 83 Linux
/dev/sda8 9166 13229 2048224+ 83 Linux
/dev/sda9 13230 17293 2048224+ 83 Linux
/dev/sda10 17294 19870 1298776+ 82 Linux Swap
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
#
|
Continuare con 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 a una partizione.
Altrimenti ecco una descrizione dei filesystem disponibili.
Filesystem
Sono disponibili molti filesystem. ReiserFS, ext2 e ext3 sono giudicati stabili
sull'architettura MIPS, gli altri sono sperimentali.
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 |
| ext2 |
mke2fs |
| ext3 |
mke2fs -j |
| reiserfs |
mkreiserfs |
| xfs |
mkfs.xfs |
| jfs |
mkfs.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.
Avvertenza:
Se si sta installando su un server Cobalt, ricordare che /dev/sda1
deve essere di tipo EXT2 revision 0; le altre (EXT2 revision 1, EXT3,
ReiserFS, XFS, JFS) non funzioneranno. Si può formattare la partizione
usando il comando mke2fs -r 0 /dev/sda1.
|
Attivare la partizione swap
mkswap è il comando usato per creare e 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 swap |
# swapon /dev/sda2
|
Creare e attivare swap con il comando menzionato sopra.
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 per ogni partizione creata. Come esempio si monta
la partizione 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 interfaccia 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. Installare uno stage
Impostare data e ora
Prima di continuare si dovrebbe controllare la data e l'ora della propria
macchina e aggiornarla. Un orologio configurato male potrebbe portare a strani
risultati in futuro.
Per verificare la data e l'ora attuale, eseguire date:
Codice 1.1: Verificare la data e l'ora |
# date
Fri Mar 29 16:21:18 CEST 2005
|
Se la data e l'ora è errata, aggiornarla con date MMDDhhmmYYYY
(M mese, D giorno, h ora, m minuti e Y
anno). Per esempio, per impostare come data il 29 Marzo, ore 16.21 dell'anno
2005:
Codice 1.2: Impostare data e ora |
# date 032916212005
|
La scelta
Il prossimo passo è quello di installare lo stage scelto nel proprio
sistema.
5.b. Scaricare lo stage
Andare nel punto di montaggio di Gentoo in cui è stato montato il proprio
filesystem (molto probabilmente /mnt/gentoo):
Codice 2.1: Andare nel punto di montaggio di Gentoo |
# cd /mnt/gentoo
|
La tabella sotto specifica quali stage servono per ogni sistema. Gli stage
possono essere scaricati dai mirror ufficiali
Gentoo nella directory releases/mips/current.
| Endianness |
CPU |
Scelta |
Big Endian
(Utenti SGI)
|
R4000
R4400
R4600
|
mips3/stage#-mips3-RELEASE.tar.bz2 |
Big Endian
(Utenti SGI)
|
R5000
RM5200
RM7000
R10000
R12000
R14000
|
mips4/stage#-mips4-RELEASE.tar.bz2 |
Little Endian
(Utenti Cobalt)
|
RM5230
RM5231
|
cobalt/stage#-mipsel4-RELEASE.tar.bz2 |
Little Endian
(Altri)
|
Tutti i tipi standard di CPU
|
cobalt/stage#-mipsel1-RELEASE.tar.bz2 |
Avvertenza:
Sebbene vengano offerti stage per little-endian MIPS1, il supporto per sistemi
MIPS little endian è ancora limitato alla gamma di server Cobalt. Vengono
comunque offerti per chiunque voglia sperimentare sulle piattaforme non ancora
supportate da Gentoo. Si assume dunque che l'utente sappia ciò che sta
facendo. |
Se si ha bisogno di un proxy, esportare le variabili http_proxy e
ftp_proxy:
Codice 2.2: Impostare le opzioni del proxy per wget |
# export http_proxy="http://proxy.server.com:port"
# export ftp_proxy="http://proxy.server.com:port"
|
Le immagini Gentoo/MIPS netboot usano wget per scaricare i file. A causa
di restrizioni di spazio, non è possibile fornire browser più capienti su
immagini SGI netboot. Gli utenti dei LiveCD possono usare elinks.
Codice 2.3: Scaricare il tarball con wget |
# wget -c
http://distfiles.gentoo.org/releases/mips/mips4/stage3-mips4-2008.0.tar.bz2
|
Se si vuole controllare l'integrità dello stage scaricato, usare md5sum o
sha1sum e comparare l'output con il checksum MD5 fornito sul mirror. Per
esempio, per controllare la validità dello stage mips4:
Codice 2.4: Esempio di controllo dell'integrità di uno stage |
# md5sum -c stage3-mips4-2008.0.tar.bz2.DIGESTS
stage3-mips4-2008.0.tar.bz2: OK
# sha1sum -c stage3-mips4-2008.0.tar.bz2.DIGESTS
stage3-mips4-2008.0.tar.bz2: OK
|
Estrazione dello stage
Decomprimere lo stage scaricato nel sistema. Si usa il tar GNU poichè è
il metodo più facile:
Codice 2.5: Estrazione dello stage |
# tar -xjpf stage?-*.tar.bz2
|
Assicurarsi di usare le stesse opzioni (-xjpf). La x sta per
Estrarre, la j per Decomprimere con bzip2, la p per
Preservare i permessi e la f per denotare che si vuole estrarre un
file, non un input standard.
Lo stage è installato, continuare con Installare
Portage.
5.c. Installare Portage
Decomprimere lo snapshot di Portage
Si deve installare uno snapshot di Portage, un insieme di file che informa
Portage quali software si possono installare, quali profili sono disponibili,
ecc.
Scaricare e installare uno snapshot di Portage
Andare nel mountpoint dove si sono montati i filesystem (di solito
/mnt/gentoo):
Codice 3.1: Andare nel punto di montaggio di Gentoo |
# cd /mnt/gentoo
|
Scaricare uno snapshot di portage da un mirror
locale. Sono nella directory snapshots/. Inserirlo nel
sistema nello stesso modo in cui si è scaricato lo stage.
Codice 3.2: Estrarre lo snapshot di Portage |
# tar -xjf portage-*.tar.bz2 -C /mnt/gentoo/usr
|
5.d. Configurare le opzioni di compilazione
Introduzione
Per ottimizzare Gentoo, si possono impostare alcune variabili che modificano il
comportamento di Portage. Tutte queste variabili possono essere impostate come
variabili d'ambiente (con export) ma non in modo permanente. Portage
fornisce /etc/make.conf, il suo file di configurazione. Si modifica
proprio questo file.
Nota:
Un elenco commentato di tutte le variabili possibili si trova in
/mnt/gentoo/etc/make.conf.example. Per una installazione
funzionante di Gentoo, bastano le variabili menzionate sotto.
|
Aprire un editor di testo. Sono forniti due editor, vi (parte di
Busybox) e nano. Si assume che si stia usando nano.
Codice 4.1: Aprire /etc/make.conf |
# nano -w /mnt/gentoo/etc/make.conf
|
Il file make.conf.example è strutturato in modo generico: le righe
comentate iniziano con "#", altre righe definiscono le variabili con la sintassi
VARIABLE="content". Il file make.conf usa la stessa
sintassi. Molte di queste variabili sono discusse sotto.
CFLAGS e CXXFLAGS
Le variabili CFLAGS e CXXFLAGS definiscono le flag di
ottimizzazione rispettivamente per il compilatore gcc C e C++. Nonostante
qui vengano definite in modo generale, si otterranno le massime performance
solo se si ottimizzeranno queste flag separatamente per ogni programma. La
ragione è perchè ogni programma è differente.
In make.conf si dovrebbero definire le flag di ottimizzazione che
rendono il sistema più reattivo in generale. Non mettere impostazioni
sperimentali in qesta variabile; troppe ottimizzazioni possono avere degli
effetti negativi sui programmi (crash o malfunzionamenti).
Non si spiegano tutte le possibili opzioni di ottimizzazione. Se si desidera
conoscerle tutte, leggere GNU
Online Manual(s) o la pagina di informazioni di gcc (info
gcc, funziona solo su un sistema Linux funzionante). Il file
make.conf.example stesso contiene molti esempi ed informazioni; non
dimenticare di leggerlo.
Una prima impostazione è la flag -march=, che specifica il nome
dell'architettura del sistema. Le opzioni possibili sono descritte nel file
make.conf.example (come commenti). Esempi includono livelli ISA
(mips1 ... mips4) e modelli delle CPU (r4400, r4600
... ecc). Per le architetture di livello ISA, si può semplicemente specificare
-mips3 piuttosto di -march=mips3.
Codice 4.2: Le impostazioni GCC -march e -mips# |
-march=r4600
-march=mips4
-mips4
|
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.
Codice 4.3: Impostazioni O di GCC |
-O2
|
Una importante impostazione in MIPS è la flag -mabi=. MIPS ha 3
differenti ABI; 32 (puro 32-bit, aka o32), 64 (totale
64-bit, aka n64) e n32 (un mix di strutture di dati 32 bit con
istruzioni 64 bit). Questa flag seleziona quali di questi si desidera usare. Si
ha bisogno delle librerie per l'ABI che si seleziona. Per esempio, non si può
usare -mabi=64 su un userland 32 bit (o anche su userland n32).
Altra flag di ottimizzazione comune è -pipe (usa pipe piuttosto che file
temporanei per la comunicazione tra vari stage di compilazione).
L'utilizzo di -fomit-frame-pointer (non mantiene il frame pointer in un
registro per le funzioni di cui non si ha bisogno) potrebbe portare a serie
ripercussioni nel debugging delle applicazioni.
Quando si definisce CFLAGS e CXXFLAGS, si dovrebbero combinare
molte flag di ottimizzazione, come nel seguente esempio:
Codice 4.4: Definire la varibile CFLAGS e CXXFLAGS |
CFLAGS="-mabi=32 -mips4 -pipe -O2"
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 nel sistema più uno, ma non è detto che sia sempre l'impostazione
migliore.
Codice 4.5: MAKEOPTS per un sistema con 1 CPU |
MAKEOPTS="-j2"
|
Pronti
Aggiornare /mnt/gentoo/etc/make.conf in base alle proprie
preferenze e salvarlo (gli utenti che usano nano devono premere
Ctrl-X). Si è 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
|
Avvertenza:
Non selezionare i mirror IPv6, gli stage non supportano ancora IPv6.
|
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 !
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 |
# 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
# 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/mips/2008.0/generic-be/o32/ *
[2] default/linux/mips/2008.0/generic-be/o32//desktop
[3] default/linux/mips/2008.0/generic-be/o32//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
|
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 -qt3 -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.4: Vedere le flag USE disponibili |
# less /usr/portage/profiles/use.desc
|
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.5: Si apre /etc/make.conf |
# nano -w /etc/make.conf
|
Codice 2.6: Impostazioni USE |
USE="-gtk -gnome qt3 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.7: 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.8: 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
# 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.
Sistemi basati su MIPS devono scegliere i mips-sources. L'insieme di
patch differisce da quelle disponibili per altre architetture, e ne contiene
molte specifiche per MIPS.
Codice 2.1: Emergere i sorgenti del kernel |
# emerge mips-sources
|
Importante:
Su Origin 200/2000, Indigo2 Impact (R10000), Octane/Octane2 e O2, è richiesto un
kernel 64 bit per avviare il sistema. Per questi, è necessario eseguire
emerge kgcc64 per creare un cross compiler per compilare i kernel 64 bit.
|
Codice 2.2: Installare kgcc64 |
# emerge kgcc64
|
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 il sorgente del kernel installato punta a mips-sources-2.6.23.14-mips, ma ricordarsi che la versione potrebbe essere
diversa:
Codice 2.3: Il link simbolico al codice sorgente del kernel |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 12 Oct 13 11:04 /usr/src/linux -> linux-2.6.23.14-mips
|
Ora si procede a configurare e compilare il sorgente del kernel.
7.c. Compilazione e installazione del kernel
Introduzione
Di solito si è vista la configurazione manuale del sorgente del kernel. Questa è
divenuta impraticabile dato il numero di sistemi che sono supportati. Questa
sezione esamina vari sorgenti per configurazioni di esempio del kernel.
Usare esempi di configurazione nei sorgenti del kernel
Molti sistemi supportati hanno esempi di .config nascosti nel kernel sorgente.
Non tutti hanno le configurazioni distribuite in questo modo. Quelli che li
hanno, possono essere configurati con i comandi menzionati nella tabella sotto.
| Sistema |
Comando di configurazione |
| Cobalt Servers |
make cobalt_defconfig |
| Indy, Indigo2 (R4k), Challenge S |
make ip22_defconfig |
| Origin 200/2000 |
make ip27_defconfig |
| Indigo2 Impact (R10k) |
make ip28_defconfig
|
| O2 |
make ip32_defconfig |
Usare la configurazione del kernel già in esecuzione dal media di
installazione
Tutte le immagini di installazione Gentoo forniscono una opzione di
configurazione del kernel come parte dell'immagine stessa, accessibile in
/proc/config.gz. Può essere usata in molti casi. E' meglio però
che il proprio sorgente del kernel corrisponda al kernel che è attualmente in
esecuzione. Per estrarlo, eseguire zcat come mostrato sotto.
Codice 3.1: Estrarre .config da /proc/config.gz |
# zcat /proc/config.gz > .config
|
Importante:
La configurazione del kernel è impostata per una immagine netboot. Si aspetta di
trovare una immagine del filesystem root, sia come una directory per initramfs,
sia come in device loopback per initrd. Quando si esegue make menuconfig,
non dimenticarsi di andare in General Setup e disabilitare le opzioni per
initramfs.
|
Database per le compatibilità hardware
Come aiuto agli utenti nel trovare impostazioni funzionanti, è stato avviato un
database per le compatibilità hardware. Questo database elenca il supporto per
vari dispositivi MIPS, e permette agli utenti di contribuire alle configurazioni
del kernel funzionanti. L'indirizzo per questo sito è
http://stuartl.longlandclan.hopto.org/gentoo/mips.
Se si trova questo servizio utile, si può contribuire con note e file .config
così che altri utenti ne possano beneficiare. Dovrebbe essere chiaro che non c'è
nessuna garanzia affinchè ogni file di configurazione scaricato da questo sito
funzioni.
Adattare la configurazione in base alle proprie necessità
Una volta trovata una configurazione, si deve scaricarla nella directory del
sorgente del kernel, e rinominarla in .config. Da lì, si può
eseguire make oldconfig per aggiornare e per cambiare la configurazione
prima della compilazione.
Codice 3.2: Configurare il kernel |
# cd /usr/src/linux
# cp /path/to/example-config .config
# make oldconfig
# make menuconfig
|
Importante:
Nella sezione Kernel Hacking, c'è una opzione chiamata "Are You Using A Cross
Compiler?". Dice ai Makefile del kernel di aggiungere all'inizio
"mips-linux-" (o mipsel-linux ... etc) ai comandi gcc e
as quando si compila il kernel. Questo dovrebbe non essere fatto, anche
se si sta usando un cross compiler. Se si ha bisogno di un cross compiler,
specificare il prefisso usando la variabile CROSS_COMPILE come mostrato
nella prossima sezione.
|
Importante:
C'è un problema conosciuto con JFS e ALSA su sistemi Octane, nei quali ALSA non
funziona. Si raccomanda di non usare JFS.
|
Compilazione e Installazione
Ora che il kernel è configurato, il prossimo passo sarà la sua compilazione ed
installazione. Uscire dal menu di configurazione e avviare il processo di
compilazione:
Nota:
Su sistemi 64 bit, si deve specificare
CROSS_COMPILE=mips64-unknown-linux-gnu- (o mips64el-... su un
sistema little-endian) per usare il compiler 64 bit.
|
Codice 3.3: Compilare il kernel |
# make vmlinux modules modules_install
# make vmlinux modules modules_install CROSS_COMPILE=mips64-unknown-linux-gnu-
# make vmlinux modules CROSS_COMPILE=mips64-unknown-linux-gnu-
# make modules_install INSTALL_MOD_PATH=/somewhere
|
Importante:
Quando si compila un kernel 64 bit per Indy, Indigo2 (R4k), Challenge S e O2,
usare vmlinux.32 invece di vmlinux. Altrimenti la macchina non
potrà avviarsi. Questo aggira il fatto che PROM non capisca il formato ELF64.
|
Codice 3.4: Usare vmlinux.32 |
# make vmlinux.32
|
Quando la compilazione è finita, è necessario copiare l'immagine del kernel in
/boot.
Nota:
I server Cobalt, si aspettano di vedere una immagine del kernel compressa.
Ricordarsi di fare gzip -9 al file dopo che si è entrati in
/boot.
|
Codice 3.5: Installare il kernel |
# cp vmlinux /boot/kernel-2.6.23.14-mips
# gzip -9v /boot/kernel-2.6.23.14-mips
|
7.d. 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 4.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 kernel-2.6 inserirendovi il nome del modulo stesso.
Codice 4.2: Modificare /etc/modules.autoload.d/kernel-2.6 |
# nano -w /etc/modules.autoload.d/kernel-2.6
|
Codice 4.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 MIPS /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 /boot ext2 defaults,noatime 1 2
/dev/sda2 none swap sw 0 0
/dev/sda3 / ext3 noatime 0 1
/dev/cdrom /mnt/cdrom auto noauto,user 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
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
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
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:
Codice 2.7: Ottenere automaticamente un indirizzo IP per eth0 |
config_eth0=( "dhcp" )
|
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 |
127.0.0.1 tux.homenetwork tux localhost
192.168.0.5 jenny.homenetwork jenny
192.168.0.6 benny.homenetwork benny
|
Salvare e uscire per continuare.
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
# 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/slocate.
Codice 3.1: Installazione di slocate |
# emerge slocate
|
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 |
| XFS |
xfsprogs |
emerge xfsprogs |
| ReiserFS |
reiserfsprogs |
emerge reiserfsprogs |
| JFS |
jfsutils |
emerge 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. Macchine Silicon Graphics: Impostare arcload
Quale installare?
Su sistemi SGI, si usa il bootloader arcload. Nelle precedenti versioni,
si poteva usare anche arcboot, ma è stato dichiarato obsoleto.
Nota:
I filename dell'intestazione del volume per SGI sono limitati a 8 caratteri, e
non ci possono essere più di 16 file contenuti in una intestazione di volume.
|
Installare arcload
arcload è stato scritto per sistemi che richiedono kernel 64 bit, e che
quindi non possono usare arcboot (il quale non può facilmente essere
compilato come un binario 64 bit). Ha anche delle peculiarità che si notano
quando si caricano kernel dalla intestazione del volume. Si procede con
l'installazione:
Codice 1.1: Emergere arcload e dvhtool |
# emerge arcload dvhtool
|
Si dovrebbe trovare il binario arcload in /usr/lib/arcload.
Ci sono due file:
-
sashARCS: Il binario 32 bit per sistemi Indy, Indigo2 (R4k),
Challenge S e O2
-
sash64: Il binario 64 bit per sistemi Octane/Octane2, Origin 200/2000
e Indigo2 Impact
Usare dvhtool per installare il binario appropriato al proprio sistema
nell'intestazione del volume:
Codice 1.2: Mettere arcload nell'intestazione del volume |
# dvhtool --unix-to-vh /usr/lib/arcload/sashARCS sashARCS
# dvhtool --unix-to-vh /usr/lib/arcload/sash64 sash64
|
Nota:
Non si deve usare il nome sashARCS o sash64 a meno che si stia
installando nell'intestazione del volume di un CD avviabile. Per boot normali
dall'hard disk si può nominarli in qualunque altro modo.
|
Usare dvhtool per verificare che siano nell'intestazione del volume.
Codice 1.3: Controllare che arcload sia presente nell'intestazione del volume |
# dvhtool --print-volume-directory
----- directory entries -----
Entry #0, name "sash64", start 4, bytes 55859
#
|
Il file arc.cf ha una sintassi simile a C. Per dettagli su come
configurarlo, vedere la pagina arcload su Linux/MIPS
wiki. In breve, si definisce un numero di opzioni, le quali si abilitano e
disabilitano al boot con la variabile OSLoadFilename.
Codice 1.4: Un esempio di arc.cf |
append "root=/dev/sda3";
append "ro";
append "console=ttyS0,9600";
ip28 {
working {
description "SGI Indigo2 Impact R10000\n\r";
image system "/working";
}
new {
description "SGI Indigo2 Impact R10000 - Testing Kernel\n\r";
image system "/new";
}
debug {
description "Debug console";
append "init=/bin/bash";
}
}
|
A partire da arcload-0.5, arc.cf ed i kernel possono
risiedere le''header del volume o in una partizione. Se si desidera sfruttare
questa nuova possibilità si può spostare i propri file nella partizione
/boot (o / se non si possiede una partizione di boot
separata). arcload utilizza il codice del filesystem del famoso
bootloader grub e dunque ne supporta gli stessi filesystem.
Codice 1.5: Mettere arc.cf e kernel nell'intestazione del volume |
# dvhtool --unix-to-vh arc.cf arc.cf
# dvhtool --unix-to-vh /usr/src/linux/vmlinux new
|
Quello che manca è impostare alcune opzioni nel PROM. Vedere la sezione Riavviare il sistema.
10.b. Cobalt MicroServer: Impostare CoLo
Installare CoLo
Sui server Cobalt, queste macchine hanno firmware meno capace installato sul
chip. Il Cobalt BOOTROM è primitivo rispetto al SGI PROM, ed ha alcuni limiti.
-
C'è un limite (approssimato) di 675kB sui kernel. Con l'attuale dimensione
del 2.4, è impossibile fare un kernel di questa grandezza. Il 2.6 non è
proprio possibile considerarlo.
-
I kernel 64-bit non sono supportati dal firmware di riserva (sebbene questi
siano sperimentali sulle macchine Cobalt)
- La shell è di base nella maggior parte dei casi
Per superare questi limiti, è stato sviluppato un firmware alternativo, CoLo (Cobalt Loader). E'
una immagine BOOTROM che può essere sia inserita nel chip del server Cobalt, sia
essere caricata dal firmware esistente.
Nota:
In questo manuale si seguirà l'impostazione di CoLo in modo che sia caricato dal
firmware di riserva. Questo è l'unico modo per avere una impostazione sicura e
raccomandata.
|
Avvertenza:
Si può inserirlo nel server, e rimettere il firmware originale (lo si fa a
proprio rischio). Se qualcosa dovesse andare storto, si dovrà rimuovere il
BOOTROM e riprogrammare con il firmware di riserva. Se non si sa cosa si sta
facendo, NON si deve esporre la macchina a potenziali guasti. Gli
autori di questo Manuale non si assumono nessuna responsibilità se questo
consiglio viene ignorato.
|
Si inizia con emergere il pacchetto.
Codice 2.1: Emergere colo |
# emerge colo
|
Si dovrebbe avere la directory /usr/lib/colo e in essa si
dovrebbero trovare due file, colo-chain.elf il kernel per il
firmware di riserva da caricare, e colo-rom-image.bin una immagine
ROM che si inserisce nel BOOTROM. Iniziare montando /boot e mettendo una copia
compressa di colo-chain.elf in /boot dove il sistema
si aspetta di trovarla.
Codice 2.2: Mettere CoLo al suo posto |
# gzip -9vc /usr/lib/colo/colo-chain.elf > /boot/vmlinux.gz
|
Configurare CoLo
Quando il sistema si avvia per la prima volta, caricherà CoLo con un menu diviso
in sezioni. La prima opzione (predefinita dopo 5 secondi) è il boot del disco.
Il sistema tenta di montare la prima partizione Linux che trova, ed esegue lo
script default.colo. La sintassi è ben documentata nella
documentazione di CoLo (leggere
/usr/share/doc/colo-X.YY/README.shell.gz, dove X.YY è la versione
installata), ed è molto semplice.
Nota:
Solo un consiglio: quando si installano i kernel, è meglio creare due immagini
dei kernel, kernel.gz.working (un kernel funzionante), e
kernel.gz.new (un kernel appena compilato). Si possono usare i
collegamenti simbolici per puntare ai kernel "new" e "working", o rinominare le
immagini dei kernel.
|
Codice 2.3: default.colo di base |
mount sda1
load /kernel.gz.working
execute root=/dev/sda3 ro console=ttyS0,115200
|
Nota:
CoLo rifiuterà di caricare uno script che non inizia con la riga
#:CoLo:#. E' come se fosse l'equivalente di #!/bin/sh negli
script di shell.
|
E' anche possibile chiedere quale kernel & configurazione si preferisce
bootare, con timeout predefinito. Questa configurazione fa questo, chiedere
all'utente quale kernel desidera usare, e eseguire l'immagine scelta.
vmlinux.gz.new e vmlinux.gz.working possono essere le
immagini del kernel o symlink che puntano alle immagini del kernel su questo
disco. Il 50 di select specifica che dovrebbe procedere con la
prima opzione ("Working") dopo 50/10 secondi.
Codice 2.4: Configurazione basata sul menu |
lcd "Mounting sda1"
mount sda1
select "Which Kernel?" 50 Working New
goto {menu-option}
var image-name vmlinux.gz.working
goto 3f
@var image-name vmlinux.gz.working
goto 2f
@var image-name vmlinux.gz.new
@lcd "Loading Linux" {image-name}
load /{image-name}
lcd "Booting..."
execute root=/dev/sda5 ro console=ttyS0,115200
boot
|
Vedere la documentazione in /usr/share/doc/colo-VERSION per
maggiori informazioni.
10.c. Impostare una console seriale
Si assume che si sia loggati in un terminale. Sulle macchine Cobalt non è una
cosa da fare.
Nota:
Chi ha un framebuffer supportato può saltare questa sezione.
|
Aprire con un editor /etc/inittab. Si trova qualcosa come questo:
Codice 3.1: Configurazione inittab |
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux
ca:12345:ctrlaltdel:/sbin/shutdown -r now
|
Non commentare la riga c0. In modo predefinito è impostata per usare un
baud rate terminale di 9600 bps. Sui server Cobalt, si potrebbe cambiarlo a
115200 per combinare il baud rate deciso dal BOOT ROM. Sui server Cobalt, si
raccomanda di commentare le righe locali del terminale (da c1 a
c6) poichè non funzinano bene quando non possono aprire
/dev/ttyX.
Codice 3.2: Esempio da inittab |
c0:12345:respawn:/sbin/agetty 115200 ttyS0 vt102
|
Si deve dire al sistema che la porta locale seriale può essere considerata come
un terminale sicuro. Il file che si deve modificare è
/etc/securetty. Contiene un elenco di terminali sicuri per il
sistema. Si aggiungono due righe, e permette che la riga seriale sia usata per i
login da root.
Codice 3.3: Abilitare i login da root sulla console seriale |
# echo 'ttyS0' >> /etc/securetty
# echo 'tts/0' >> /etc/securetty
|
10.d. Riavviare il sistema
Uscire dall'ambiente in cui si è fatto il chroot e smontare tutte le partizioni
montate. Poi digitare il comando reboot.
Codice 4.1: Uscire dal chroot, smontare tutte le partizioni e riavviare |
# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot
|
Nota:
Utenti Cobalt: Il resto di questo capitolo copre il setup per SGI PROM
in modo che avvii arcload e carichi Linux. Non è applicabile al setup per
server Cobalt. Tutto quello che era necessario fare, è stato fatto: non c'è
nessuna configurazione per il primo avvio, si può passare alla sezione Termine dell'installazione Gentoo.
|
10.e. Ottimizzare il SGI PROM
Impostazioni generiche PROM
Il bootloader è installato, si è pronti per riavviare il sistema.
Codice 5.1: Riavviare |
# exit
# umount /mnt/gentoo/boot
# umount /mnt/gentoo
# reboot
|
Dopo aver riavviato, andare nel System Maintenance Menu e selezionare
Enter Command Monitor (5) come quando si è fatto il netboot al
sistema.
Codice 5.2: Configurare il PROM per avviare Gentoo |
1) Start System
2) Install System Software
3) Run Diagnostics
4) Recover System
5) Enter Command Monitor
Option? 5
Command Monitor. Type "exit" to return to the menu.
>> setenv SystemPartition scsi(0)disk(1)rdisk(0)partition(8)
>> setenv AutoLoad Yes
>> setenv TimeZone EST5EDT
>> setenv console d1
>> setenv dbaud 9600
|
Le prossime impostazioni dipendono da come si sta avviando il sistema.
Impostazioni per l'avvio diretto nell'intestazione del volume
Si fa cenno a questo per completezza. E' raccomandato agli utenti di installare
arcload.
Nota:
Funziona solo su Indy, Indigo2 (R4k) e Challenge S.
|
Codice 5.3: Impostazioni PROM per avviare nell'intestazione del volume |
>> setenv OSLoadPartition <root device>
>> setenv OSLoader <kernel name>
>> setenv OSLoadFilename <kernel name>
>> setenv OSLoadOptions <kernel parameters>
|
Se si desidera provare un kernel senza fare confusione con i parametri del
kernel, si può usare il comando PROM boot -f:
Codice 5.4: Avviare senza cambiare le variabili di ambiente |
# boot -f new root=/dev/sda3 ro
|
Impostazioni per arcload
arcload usa l'opzione OSLoadFilename per specificare quale opzione
è da impostare da arc.cf. Il file di configurazione è
essenzialmente uno script, con i blocchi iniziali che definiscono le immagini di
boot per sistemi differenti, e dentro, le impostazioni opzionali. Così
OSLoadFilename=mysys(serial) si applica nelle impostazioni per il blocco
mysys, poi imposta varie opzioni escluse in serial.
Nel file di esempio già visto, si ha un blocco di sistema definito, ip28
con le opzioni disponibili working, new e debug. Si
definiscono le variabili di PROM così:
Codice 5.5: Impostazioni di PROM usando arcload |
>> setenv OSLoader sash64
>> setenv OSLoadFilename ip28(working)
|
A partire da arcload-0.5, i file non devono più per forza essere messi
nell'header del volume ma possono essere posti invece in una partizione. Per
comunicare ad arcload dove cercare i propri file di configurazione ed i
vari kernel, è necessario impostare la variabile PROM OSLoadPartition. Il
valore esatto dipende dalla posizione del proprio disco sul bus SCSI. Utilizzare
la variabile PROM SystemPartition come esempio, dovrebbe essere
sufficiente cambiare solo i numeri delle partizoni.
Nota:
Le partizioni vengono numerate a partire da 0, non 1 come per Linux.
|
Codice 5.6: Comunicare ad arcload dove cercare arc.cf |
>> setenv OSLoadPartition scsi(0)disk(1)rdisk(0)partition(8)
>> setenv OSLoadPartition scsi(0)disk(1)rdisk(0)partition(0)[ext2]
|
Tutto completato
Ora si ha installato un sistema Gentoo. Avviare in Gentoo, e finire con Termine dell'installazione 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 |
Descrizione |
| audio |
abilita l'accesso ai dispositivi audio |
| cdrom |
abilita l'accesso diretto ai dispositivi ottici |
| floppy |
abilita l'accesso diretto ai floppy |
| games |
abilita l'utilizzo dei giochi |
| portage |
abilita l'utilizzo di emerge --pretend da utente normale |
| usb |
abilita l'accesso ai dispositivi USB |
| plugdev |
concede la possibilità di montare ed utilizzre unità rimovibili quali
memorie USB o macchine fotografiche.
|
| video |
abilita l'accesso all'hardware e all'accelerazione |
| wheel |
abilita l'utilizzo di su
|
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:
# useradd john -m -G users,wheel,audio -s /bin/bash
# passwd john
Password:
Re-enter password:
|
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 |
# 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 strumento equery che fa parte del pacchetto app-portage/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
# 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
|
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 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. 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 4.1: Portage avverte riguardo ai pacchetti bloccati (con --pretend) |
[blocks B ] mail-mta/ssmtp (from pkg mail-mta/postfix-2.2.2-r1)
|
Codice 4.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.
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 'atomico', come
<media-video/mplayer-bin-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 4.3: Portage avverte riguardo ai pacchetti mascherati |
!!! all ebuilds that could satisfy "bootsplash" have been masked.
|
Codice 4.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)
|
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 sul bugzilla
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.
Dipendenze omesse
Codice 4.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 4.6: Portage avverte circa l'ambiguità di nomi di ebuild |
!!! The short ebuild name "aterm" is ambiguous. Please specify
!!! one of the following fully-qualified ebuild names instead:
dev-libs/aterm
x11-terms/aterm
|
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 4.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 4.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 4.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 4.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 su Bugzilla 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 2004.3:
Codice 2.1: Somma delle variabili USE make.defaults per il profilo 2004.3 |
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
foomaticdb gdbm gif gpm gtk imlib jpeg kde gnome libg++ libwww mad
mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt
quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"
|
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 -qt3 -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):
-
USE predefinita dichiarata nei file make.defaults parte del
proprio profilo
-
Configurazione USE definita dall'utente in /etc/make.conf
-
Configurazione USE definita dall'utente in
/etc/portage/package.use
- 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
pacchetto gentoolkit; 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 meaningful backtraces see http://www.gentoo.org/proj/en/qa/backtraces.xml .
+ + 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 of dynamically
|
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. Nelle compilazioni comuni, il tempo di compilazione risulta di 5-10
volte più veloce.
Per maggiori informazioni su ccache, è possibile consultare la homepage di 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 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 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 rc-update
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() {
}
start() {
}
stop() {
}
restart() {
}
|
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 opzioni start-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
}
|
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 |
# cd /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
# rc-update del net.eth0 offline
# rc-update show offline
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"
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 |
| PATH |
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.
|
| ROOTPATH |
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.
|
| LDPATH |
Variabile che contiene la lista di directory, separate dai due punti (:),
per la ricerca delle librerie da parte del linker dinamico.
|
| MANPATH |
Variabile che contiene la lista di directory, separate dai due punti (:),
per la ricerca delle pagine man da parte del comando man.
|
| INFODIR |
Variabile che contiene la lista di directory, separate dai due punti (:),
per la ricerca delle pagine info da parte del comando info.
|
| PAGER |
Variabile che contiene il percorso del programma usato per visualizzare il
contenuto di file di testo (come less o more).
|
| EDITOR |
Variabile che contiene il percorso del programma usato per modificare
il contenuto di file di testo (come nano o vi).
|
| KDEDIRS |
Variabile che contiene la lista di directory, separate dai due punti (:),
nelle quali si trova materiale specifico per KDE.
|
| CONFIG_PROTECT |
Variabile che contiene la lista di directory, separate da spazi, che
vengono protette durante il processo di aggiornamento del sistema da parte
del Portage.
|
| CONFIG_PROTECT_MASK |
Variabile che contiene la lista di directory, separate da spazi,
che non 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 |
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/profiles anche 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 di
save, 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, linea completa |
app-office/gnumeric ~x86
|
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
deve usare 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 ~x86
|
3.c. Usare pacchetti mascherati
package.unmask
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
gentoo-sources-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 etc-update è
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: Edit then use both versions, each decorated with a header.
eb: Edit then use both versions.
el: Edit then use the left version.
er: Edit then use the right version.
e: Edit a new version.
l: Use the left version.
r: Use the right version.
s: Silently include common lines.
v: Verbosely include common lines.
q: 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, arts e
procps:
Codice 3.1: Esempio dell'uso di quickpkg |
# quickpkg curl arts procps
|
I pacchetti precompilati vengono memorizzati in $PKGDIR/All
(/usr/portage/packages/All di default). Link simbolici che puntano
a 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/gentoolkit-dev fornisce
gensync, uno strumento che aiuta a mantenere aggiornati gli overlay
repository.
Con gensync si possono aggiornate tutti i repository in una volta sola o
selezionare solo alcuni di essi. Ogni repository dovrebbe avere un file
.syncsource nella directory di configurazione
/etc/gensync/ che contiene l'ubicazione del repository, il nome,
l'ID, ecc.
Si supponga di avere due repository aggiuntivi 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 gensync per aggiornare alcuni repository |
# gensync java entapps
|
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 |
config_eth0=( "dhcp" )
config_eth0=( "192.168.0.7/24" )
routes_eth0=( "default via 192.168.0.1" )
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.
| Comando |
Descrizione |
| null |
Non fa niente |
| noop |
Se l'interfaccia è attiva e c'è un indirizzo, chiude la configurazione con
successo
|
| un indirizzo IPv4 o IPv6 |
Aggiunge l'indirizzo dell'interfaccia |
|
dhcp, adsl o apipa (o un comando personalizzato da un
modulo di terze parti)
|
Esegue il modulo fornito dal comando. Per esempio dhcp esegue un
modulo che fornisce dhcp, il quale può essere uno tra dhcpcd,
dhclient o pump.
|
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 |
config_eth0=(
"192.168.0.2/24"
"192.168.0.3/24"
"192.168.0.4/24"
)
config_eth0=(
"192.168.0.2/24"
"4321:0:1:2:3:4:567:89ab"
"4321:0:1:2:3:4:567:89ac"
)
config_eth0=(
"noop"
"dhcp"
)
fallback_eth0=(
"null"
"apipa"
)
|
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
variabile RC_NET_STRICT_CHECKING.
| Valore |
Descrizione |
| none |
Il servizio net è sempre considerato attivo |
| no |
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 di rete statica e ne vogliono
solamente una attiva in qualsiasi momento per considerare come attivo il
servizio net.
|
| lo |
È lo stesso di no, ma viene preso in considerazione anche
net.lo. Dovrebbe essere utile alle persone che non danno peso
a quale specifica interfaccia venga attivata durante l'avvio.
|
| yes |
TUTTE le interfacce di rete DEVONO essere attive affinchè il servizio
net sia 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 |
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_essid contiene 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 |
dns_domain_My____NET="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 |
modules=( "iproute2" )
modules_eth0=( "pump" )
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
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" )
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 |
| dhclient |
net-misc/dhcp |
Fatto da ISC, gli stessi che fanno il software BIND DNS. Altamente
configurabile
|
La configurazione è complessa, il software è enorme, non si possono
ottenere server NTP da DHCP, non invia l'hostname in modo predefinito
|
| dhcpcd |
net-misc/dhcpcd |
Da tanto tempo scelta predefinita di Gentoo, nessuna dipendenza da strumenti
esterni, attivamente sviluppato da Gentoo
|
Può essere lento, non può essere ancora eseguito come demone quando il lease
è infinito
|
| pump |
net-misc/pump |
Leggero, nessuna dipendenza da altri strumenti
|
Non è più mantenuto dagli sviluppatori originali, non sicuro, specialmente
su alcuni modem, 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 |
modules=( "dhcpcd" )
config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10"
dhcp_eth0="release nodns nontp nonis"
|
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 )
config_ppp0=( "ppp" )
link_ppp0="eth0"
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 |
"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 |
config_eth0=( "dhcp" )
fallback_eth0=( "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 |
slaves_bond0="eth0 eth1 eth2"
config_bond0=( "null" )
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 |
brctl_br0=( "setfd 0" "sethello 0" "stp off" )
bridge_br0="eth0 eth1"
config_eth0=( "null" )
config_eth1=( "null" )
config_br0=( "192.168.0.1/24" )
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 sys-apps/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 |
mac_eth0="00:11:22:33:44:55"
mac_eth0="random-ending"
mac_eth0="random-samekind"
mac_eth0="random-anykind"
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 |
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"
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 |
vlans_eth0="1 2"
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )
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
Attualmente si supporta l'installazione wireless sia con wireless-tools
sia con wpa_supplicant. La cosa importante è ricordare che si configura
per reti wireless su basi globali e non su basi di interfaccia.
wpa_supplicant è la scelta migliore, ma non supporta tutti i driver. Per
un elenco di tutti i driver supportati, leggere il sito di
wpa_supplicant. Inoltre, wpa_supplicant attualmente può essere
connesso solamente al SSID che si è configurato.
wireless-tools supporta quasi tutte le schede e i driver, ma non può
connettersi ad Access Point configurati solamente con WPA.
Avvertenza:
Il driver linux-wlan-ng non è supportato ancora da baselayout. Questo
perchè linux-wlan-ng 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 linux-wlan-ng con
baselayout.
|
4.b. WPA Supplicant
WPA Supplicant è un
pacchetto che permette di connettersi ad access point WPA abilitati. La sua
installazione non è fluida poichè è ancora in beta - ma comunque funziona bene.
Codice 2.1: Installare wpa_supplicant |
# emerge net-wireless/wpa_supplicant
|
Importante:
Bisogna avere abilitato CONFIG_PACKET nel kernel per fare funzionare
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 |
modules=( "wpa_supplicant" )
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 |
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={
ssid="simple"
psk="very secret passphrase"
priority=5
}
network={
ssid="second ssid"
scan_ssid=1
psk="very secret passphrase"
priority=2
}
network={
ssid="example"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
priority=2
}
network={
ssid="plaintext-test"
key_mgmt=NONE
}
network={
ssid="static-wep-test"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
}
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
}
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 |
modules=( "iwconfig" )
key_ESSID1="[1] s:tuachiavequi key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"
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.
| Valore |
Descrizione |
| any |
Comportamento predefinito |
| preferredonly |
Ci si connette solo ad AP visibili nell'elenco preferito |
| forcepreferred |
Ci si connette ad AP nell'ordine preferito se non sono stati trovati in una
scansione
|
| forcepreferredonly |
Non fa la scansione per gli AP, invece cerca di connettere a ognuno di
essi in ordine
|
| forceany |
Uguale a forcepreferred, in più si connette ad ogni altro AP
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 |
blacklist_aps=( "ESSID3" "ESSID4" )
unique_ap="yes"
|
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 |
mode_eth0="ad-hoc"
essid_eth0="This Adhoc Node"
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.
| Variabile |
Valore predefinito |
Descrizione |
| iwconfig_eth0 |
|
Vedere la pagina man di iwconfig per dettagli su cosa è possibile indicare
a iwconfig
|
| iwpriv_eth0 |
|
Vedere la pagina man di iwpriv per dettagli su cosa è possibile indicare a
iwpriv
|
| sleep_scan_eth0 |
0 |
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.
|
| sleep_associate_eth0 |
5 |
Il numero di secondi che aspetta l'interfaccia per associarsi con l'Access
Point prima di spostarsi al prossimo
|
| associate_test_eth0 |
MAC |
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.
|
| scan_mode_eth0 |
|
Alcuni driver devono fare la scansione nel modo ad-hoc, così se questa
fallisce cercano di impostare ad-hoc qui
|
| iwpriv_scan_pre_eth0 |
|
Manda alcuni comandi iwpriv all'interfaccia prima della scansione.
Vedere la pagina man di iwpriv per altre informazioni
|
| iwpriv_scan_post_eth0 |
|
Manda alcuni comandi iwpriv alla interfaccia dopo la scansione.
Vedere la pagina man di iwpriv per altre 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" )
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"
config_001122334455=( "dhcp" )
dhcpcd_001122334455="-t 10"
dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" )
|
5. Ulteriori funzionalità
5.a. Funzioni di hook (intercettazioni) standard
Possono essere definite quattro funzioni, 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 |
preup() {
if ethtool ${IFACE} | grep -q 'Link detected: no'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
return 0
}
predown() {
if is_net_fs /; then
eerror "root filesystem is network mounted -- can't stop ${IFACE}"
return 1
fi
return 0
}
postup() {
return 0
}
postdown() {
return 0
}
|
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, 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 |
preassociate() {
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() {
return 0
}
|
Nota:
${ESSID} e ${ESSIDVAR} non sono disponibili nelle funzioni
predown() e postdown()
|
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 |
ifplugd_eth0="..."
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.
|