Guida alla Migrazione di Baselayout e OpenRC
1.
Introduzione
Cos'è baselayout?
Baselayout fornisce un insieme base di file che sono necessari per far
funzionare adeguatamente tutti i sistemi, come ad esempio
/etc/hosts. Fornisce anche il layout base del filesystem usato da
Gentoo (ad es. le directory /etc,
/var,/usr, /home).
Cos'è OpenRC?
OpenRC è un sistema rc basato sulle dipendenze che funziona con qualsiasi init
fornito dal sistema, normalmente /sbin/init. Comunque, non
è un sostituto per /sbin/init. L'init predefinito usato da Gentoo
Linux è sys-apps/sysvinit, mentre Gentoo/FreeBSD utilizza l'init di
FreeBSD fornito da sys-freebsd/freebsd-sbin.
Perché migrare?
Inizialmente il sistema rc di Gentoo è stato compilato dentro a baselayout 1 e
scritto interamente in bash. Questo introduce molte limitazioni. Per esempio,
certe chiamate di sistema hanno bisogno di essere effettuate durante il boot e
ciò ha richiesto l'aggiunta di chiamate basate su C. Ognuna di queste chiamate
era linkata staticamente, con la conseguenza che il sistema rc ci metteva più
tempo ad eseguire le proprie operazioni.
Inoltre, siccome Gentoo si è espansa ad altre piattaforme come Gentoo/FreeBSD e
Gentoo Embedded, è diventato impossibile mantenere un sistema rc basato su bash.
Questo ha portato allo sviluppo di baselayout 2, che è scritto in C e richiede
unicamente una shell che segue lo standard POSIX. Durante lo sviluppo di
baselayout 2, è stato deciso che era più appropriato che baselayout fornisse
solamente i file base e il layout del filesystem per Gentoo, così il sistema rc
venne racchiuso in un pacchetto a sè; per tale motivo è stato creato OpenRC.
OpenRC è sviluppato principalmente da Roy Marples e supporta tutte le
attuali varianti di Gentoo (es. Gentoo Linux, Gentoo/FreeBSD, Gentoo Embedded, e
Gentoo Vserver) e altre piattaforme come FreeBSD e NetBSD.
2.
Migrazione a OpenRC
La migrazione a OpenRC è piuttosto lineare; sarà introdotta come parte del
proprio processo di aggiornamento dal gestore dei pacchetti. Il passo più
importante attualmente avviene dopo l'installazione dei nuovi pacchetti
>=sys-apps/baselayout-2 e sys-apps/openrc. È fondamentale
eseguire dispatch-conf e che /etc sia aggiornato prima di
riavviare. Un fallimento nel farlo produrrà un sistema non più
avviabile e richiederà l'uso del Gentoo LiveCD per effettuare i passaggi
seguenti per riparare il proprio sistema.
Una volta finito di aggiornare i propri file di configurazione, ci sono alcune
cose da verificare prima di riavviare.
/etc/conf.d/rc
Il file /etc/conf.d/rc è stato deprecato e tutte le impostazioni
in esso contenute avranno bisogno di essere trasferite alle impostazioni
appropriate in /etc/rc.conf. Si prega di leggere interamente
/etc/rc.conf e /etc/conf.d/rc e migrare le
impostazioni. Una volta finito, cancellare /etc/conf.d/rc.
Moduli del Kernel
Normalmente, quando si vuole che certi moduli del kernel siano caricati
all'avvio, li si mette in /etc/modules.autoload.d/kernel-2.6insieme
ad ogni parametro che gli si vuole passare. Nel baselayout-2, questo file non è
più utilizzato. Invece, i moduli caricati automaticamente e i loro parametri
sono situati in un file, /etc/conf.d/modules, qualsiasi sia la
versione del kernel.
Un esempio di configurazione vecchio stile sarebbe:
Codice 2.1: /etc/modules.autoload.d/kernel-2.6 |
ivtv
cx88_dvb video_br=2
|
Convertire l'esempio precedente risulterà nel seguente:
Codice 2.2: /etc/conf.d/modules |
modules_2_6="ivtv cx88_dvb"
module_cx88_dvb_args_2_6="video_br=2"
|
Negli esempi precedenti, i moduli e i loro parametri saranno passati soltanto
ai kernel della serie 2.6.x. La nuova configurazione permette un controllo più
preciso sui moduli e sui parametri basato sulla versione del kernel.
Un esempio approfondito sarà:
Codice 2.3: esempio dettagliato di /etc/conf.d/modules |
modules="ohci1394 ieee1394"
modules_2_6="tun usbserial"
modules_2_6_23="cx88_dvb"
modules_2_6_23_gentoo_r5="ivtv"
module_cx88_dvb_args_2_6_23_gentoo_r5="video_br=2"
module_usbserial_args_2_6="vendor=0x1410 product=0x2110"
module_ieee1394_args="debug"
|
Nota:
Prego notare la differenza tra module_ e modules_.
|
Runlevel di Boot
Il runlevel di boot esegue molti passi importanti per ogni macchina. Per
esempio, assicurarsi che il proprio filesystem root sia montato in
lettura/scrittura, che i propri filesystem siano controllati, che i propri
mountpoint siano disponibili, e che lo pseudo-filesystem /proc sia
avviato al boot.
Con OpenRC, i servizi di gestione del volume per i propri dispositivi a blocchi
non sono più avviati automaticamente al boot. Questo include lvm, raid, swap,
device-mapper (dm), dm-crypt, evms, e il like. Bisogna assicurarsi che
l'initscript appropriato per questi servizi nel runlevel di boot,
altrimenti sarà possibile che il proprio sistema non si avvii!
Sebbene l'ebuild di OpenRC provi a fare questa migrazione, si dovrà verificare
la corretta migrazione di tutti i servizi di gestione di volume:
Codice 2.4: Mostrare tutti i servizi nel runlevel boot |
# ls -l /etc/runlevels/boot/
|
Se non si vede root, procfs, mtab, swap e fsck con il precedente comando,
effettuare le seguenti istruzioni per aggiungerli al runlevel boot:
Codice 2.5: Aggiungere servizi critici al runlevel boot |
# rc-update add root boot
# rc-update add procfs boot
# rc-update add mtab boot
# rc-update add fsck boot
# rc-update add swap boot
|
Se si utilizza mdraid e lvm ma non li si vede sopra, si dovranno eseguire le
seguenti istruzioni per aggiungere gli initscript al runlevel boot:
Codice 2.6: Aggiungere raid e lvm al runlevel boot |
# rc-update add raid boot
# rc-update add lvm boot
|
Rete
Siccome baselayout e OpenRC sono stati divisi in due pacchetti differenti, il
proprio initscript net.eth0 può scomparire durante il processo di aggiornamento.
Per sostituire questo initscript eseguire i seguenti comandi:
Codice 2.7: Riaggiungere lo script net.eth0 mancante |
# cd /etc/init.d
# ln -s net.lo net.eth0
|
Se manca qualsiasi altro initscript di rete, seguire le istruzioni menzionate
sopra per riaggiungerlo. Semplicemente si sostituisca eth0 con il nome
del proprio dispositivo di rete.
Inoltre, /etc/conf.d/net non utilizza più gli array stile bash per
la configurazione. Si prega di consultare
/usr/share/doc/openrc/net.example per le istruzioni di
configurazione. La conversione dovrebbe essere relativamente semplice, per
esempio un assegnamento statico di IP cambierà in questo modo:
Codice 2.8: Vecchio stile di /etc/conf.d/net |
config_eth0=( "192.168.1.37 netmask 255.255.255.0 brd 192.168.1.255" )
routes_eth0=( "default via 192.168.1.100" )
|
Codice 2.9: Nuovo stile di /etc/conf.d/net |
config_eth0="192.168.1.37 netmask 255.255.255.0 brd 192.168.1.255"
routes_eth0="default via 192.168.1.100"
|
Orologio
Le impostazioni dell'orologio sono state rinominate da
/etc/conf.d/clock al proprio strumento di impostazione di orologio
nativo di sistema. Questo significa che in Linux sarà
/etc/conf.d/hwclock e in FreeBSD sarà
/etc/conf.d/adjkerntz. L'initscript in /etc/init.d/
è anch'esso stato rinominato conseguentemente, quindi assicurarsi che sia nel
runlevel appropriato.
Inoltre, la variabile TIMEZONE non è più in questo file. I suoi contenuti
sono invece nel file /etc/timezone. Se non esiste, bisognerà
certamente crearlo con il proprio fuso orario (timezone). Si prega di
controllare entrambi questi file per assicurarsi della loro correttezza.
Il valore appropriato per questo file è il percorso relativo al proprio fuso
orario (timezone) a partire da /usr/share/zoneinfo. Per esempio,
per quelli che vivono nella costa orientale degli Stati Uniti, l'impostazione
corretta sarà:
Codice 2.10: /etc/timezone |
America/New_York
|
XSESSION
La variabile XSESSION non si trova più in /etc/rc.conf. Il
pacchetto x11-apps/xinit ora fornisce /etc/env.d/90xsession,
che può essere usato per impostare la variabile XSESSION.
Questa variabile NON sarà migrata in modo predefinito, quindi bisognerà
modificare /etc/env.d/90xsession.
Importante:
Bisogna eseguire env-update dopo aver creato un file in
/etc/env.d, e successivamente effettuare il logout e poi il login
perché abbia effetto.
|
EDITOR / PAGER
La variabile EDITOR non si trova più in /etc/rc.conf. Sia EDITOR
che PAGER sono impostati in modo predefinito in /etc/profile. Se necessario si
dovrebbero cambiare tali variabili nel proprio file ~/.bashrc (o
equivalente) o creare /etc/env.d/99editor e impostare
l'impostazione predefinita del sistema in esso.
Importante:
Bisogna eseguire env-update dopo aver creato un file in
/etc/env.d, e successivamente effettuare il logout e poi il login
perché abbia effetto. Se si è impostato la variabile in ~/.bashrc,
si può rifare il source del file con source ~/.bashrc.
|
Finalizzare
Una volta terminato e aggiornato i propri file di configurazione e gli
initscript, l'ultima cosa da fare è riavviare. Questo è necessario perchè
le informazioni di stato del sistema non sono preservate durante
l'aggiornamento, quindi bisognerà fornirle con un nuovo riavvio.
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|