Adattamento di NLNX

Una volta installato NLNX, è possibile aggiungere o eliminare dei pacchetti applicativi secondo la procedura prevista dalla distribuzione GNU/Linux Debian. In condizioni normali, è sufficiente il comando nlnxrc nlnx make per riprodurre il tutto in un nuovo DVD.

Alle volte potrebbe essere necessario un adattamento più consistente e a tale scopo possono servire le note di questo capitolo.

Gerarchia doppia

Quando NLNX è installato nel disco fisso secondo la procedura normale, oltre alla struttura comune di file e directory, appare la directory /RO-FS/, all'interno della quale, tra le altre cose, appare anche la directory RW-FS/ (in pratica /RO-FS/RW-FS/).

La directory /RO-FS/ rappresenta la radice del DVD live che si va a creare, mentre la directory /RO-FS/RW-FS/ deve innestare nuovamente la struttura installata nel disco fisso; pertanto, nel file /etc/fstab devono apparire due righe simili a quelle seguenti:

/dev/hda2 /            auto defaults,errors=remount-ro 0 1
/dev/hda2 /RO-FS/RW-FS auto defaults,noauto            0 0

In questo caso la seconda riga non prevede un innesto automatico all'avvio, ma a ciò provvede comunque nlnxrc nlnx make.

Quando si avvia il DVD live, la struttura che si vede si compone in particolare della directory /RW-FS/, la quale contiene dati non modificabili e serve per copiare il suo contenuto nel disco fisso, quando si va a installare NLNX.(1)

Figura u68.2. Confronto tra i file system durante il funzionamento da disco fisso rispetto al funzionamento da disco ottico.

confronto tra i file system

Creazione di una nuova versione

La creazione di un nuovo sistema NLNX si ottiene tramite il comando nlnxrc nlnx make. Lo script nlnxrc (/etc/script/nlnxrc) è molto lungo e articolato; le istruzioni che riguardano la creazione di un nuovo disco sono racchiuse in una struttura if...elif...fi. In questa struttura si verifica se il comando selezionato è ammissibile, in base al fatto che l'avvio dello script avvenga da disco fisso o da DVD-ROM e al tipo di utente che lo esegue. L'istruzione che introduce la creazione di un nuovo disco è quella seguente:

elif [ "$UID" = "0" ] && [ "$CDROM" = "0" ] \
  \&& [ "$COMMAND" = "nlnx" ] && [ "$DIRECTIVE" = "make" ] then istruzioni_creazione_disco elif ... ...

Tra le tante cose che avvengono qui dentro, si preparano le directory /RO-FS/etc/ e /RO-FS/var/, utilizzando anche il contenuto di /RO-FS/etc.ro-fs/ e /RO-FS/var.ro-fs/.

In pratica, la directory /RO-FS/etc/ viene ottenuta copiando la stessa struttura contenuta in /etc/, sostituendo ogni file che non sia una directory con un collegamento simbolico che punta alla stessa cosa a partire da RW-FS/etc/; in modo analogo procede la preparazione della directory /RO-FS/var/. Quindi, viene ricopiato sopra il contenuto di /RO-FS/etc/ e di /RO-FS/var/, quanto si trova dentro /RO-FS/etc.ro-fs/ e /RO-FS/var.ro-fs/ rispettivamente. Naturalmente, questa è una semplificazione; in pratica, prima di passare alla sovrapposizione delle directory /RO-FS/*.RO-FS/, lo script fa qualche ritocco indispensabile.

Dovendo intervenire in modo da modificare il contenuto delle directory /etc/ o /var/ durante il funzionamento da disco ottico, si può agire nelle directory /RO-FS/etc.ro-fs/ e /RO-FS/var.ro-fs/, a meno che si tratti di una situazione che non si risolve con la semplice copia di qualcosa di diverso. Per esempio, se un collegamento simbolico contenuto in una di queste directory può creare problemi, lo si può sostituire con un file vero e proprio, che in fase di funzionamento da DVD risulterebbe modificabile. Quello che non si può fare è rimpiazzare una directory con un file e nemmeno cancellare qualcosa; in queste situazioni estreme, diventa necessario intervenire nello script nlnxrc.

Configurazione predefinita di NLNX

Lo script /etc/init.d/nlnx.config di NLNX rimpiazza alcuni file di configurazione con altri che hanno generalmente l'estensione .nlnx. La tabella successiva riepiloga alcuni di questi file.

Tabella u68.4. Alcuni file di configurazione predefiniti di NLNX, secondo lo script /etc/init.d/nlnx.config.

File originale Configurazione predefinita Descrizione
/etc/oops/oops.cfg /etc/oops/oops.cfg.nlnx Configurazione del servizio proxy HTTP.
/etc/X11/fvwm/system.fvwm2rc /etc/X11/fvwm/system.fvwm2rc.nlnx Si tratta della configurazione predefinita del menù di Fvwm, per NLNX.
/etc/X11/xinit/xinitrc /etc/X11/xinit/xinitrc.nlnx Si tratta della configurazione predefinita dello script usato per avviare il gestore di finestre con qualcosa sullo sfondo.
/etc/X11/xorg.vesa /etc/X11/xorg.vesa.nlnx Configurazione di X predefinita, per un adattatore standard VESA.
/etc/X11/xdm/Xresources /etc/X11/xdm/Xresources.nlnx Configurazione di XDM per l'accesso alla sessione grafica.
/etc/xfe/xferc /etc/xfe/xferc.nlnx Configurazione di XFE.

Molti altri file con estensione .nlnx servono a conservare una copia della configurazione standard di NLNX, ma non vengono rimpiazzati automaticamente.

Aggiornamento dei pacchetti installati

Una volta installato NLNX, l'aggiornamento o l'aggiunta di pacchetti può avvenire con gli strumenti consueti della distribuzione GNU/Linux Debian. In pratica conviene usare apt-get, come spiegato nella sezione 7.7.

Dal momento che si presume NLNX venga installato prevalentemente a scuola, è da considerare che la rete tipica che si incontra in quel contesto obbliga l'attraversamento di un proxy HTTP, che spesso è in grado di consentire l'accesso esclusivamente da navigatori funzionanti su macchine MS-Windows. Teoricamente, apt-get può essere configurato per attraversare un proxy, come si può anche vedere negli esempi che appaiono nel file /usr/share/doc/apt/examples/configure-index.gz, ma non è detto che il proxy della propria realtà consenta effettivamente questo approccio.

Per risolvere il problema occorre procurarsi i pacchetti in modi differenti, per esempio usando una macchina (MS-Windows) che consenta l'attraversamento, per accedere direttamente al sito http://www.debian.org/, da dove si può raggiungere la pagina di ricerca dei pacchetti (http://www.debian.org/distrib/packages). Una volta prelevati i pacchetti e copiati in qualche modo nell'elaboratore che si vuole aggiornare, si può tentare di usare dpkg con l'opzione -i:

dpkg -i file_deb...[Invio]

Purtroppo si tratta di un metodo brutale di installazione che rischia di bloccarsi per colpa di dipendenze che non sono soddisfatte; ma dagli errori che si ottengono si possono determinare quali pacchetti si devono ancora prelevare.

Nella sezione 7.11 vengono descritti vari accorgimenti per la gestione dei pacchetti Debian; in particolare viene mostrato un metodo per realizzare in proprio la struttura di una distribuzione (attraverso lo script make-packages), in modo da poter usare poi apt-get localmente. Anche con l'uso di apt-get rimane il problema delle dipendenze non soddisfatte, ma in questo modo si riesce almeno a realizzare qualcosa di generalizzato, che può risiedere facilmente in un disco esterno USB, o anche in un DVD masterizzato, per aggiornare facilmente le macchine che si vogliono usare.

Kernel

Il kernel di NLNX è molto simile a quello standard della distribuzione Debian, con la differenza più evidente che mancano del tutto le funzionalità ritenute inutili e ci sono più componenti incorporate direttamente nella parte principale (nel senso che non fanno parte di moduli separati). Vengono annotate nella tabella successiva alcune scelte fatte nella configurazione e le motivazioni relative.

Modulo Voce di configurazione Descrizione
md_mod
CONFIG_MD=y
Solo se questa funzione è incorporata nel file principale del kernel è possibile ottenere la scansione automatica degli insiemi RAID di dischi, con il comando mdadm --auto-detect.
cramfs
CONFIG_CRAMFS=y
Il file system del disco RAM iniziale è di tipo Cramfs e in quella fase la sua gestione non può trovarsi separata in un modulo.
CONFIG_USB_SUSPEND=n
Utilizzando uno scanner USB Canon LiDE, avendo attivata la funzione CONFIG_USB_SUSPEND, si ottengono solo scansioni completamente nere.

1) Va ricordato che la struttura del file system del sistema avviato da un disco ottico live è la stessa per qualunque altro contesto in cui il file system va usato in sola lettura.

«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net