3. Aggiungere supporto per altri dispositivi di loop

I nuovi Kernel Linux (2.4) vi permettono di aggiungere molti più dispositivi di loop più facilmente modificando /etc/modules.conf oppure attraverso l'uso dei parametri di boot.

I kernel più vecchi (2.2.?) hanno solamente il supporto per 8 dispositivi di loop compilato nel kernel. In breve, era possibile condividere solo 8 cd sulla rete con questo valore di default. Per superare questo limite, si aveva bisogno di modificare i sorgenti del kernel e ricompilare un nuovo kernel.

Usate i seguenti metodi per determinare quale versione di kernel state usando.


bash# uname -a

oppure


bash# cat /proc/version

3.1. Aggiungere le opzioni al modulo di loop

I kernel attuali vi permettono di indicare il numero di dispositivi di loop senza ricompilare il kernel. Uno di questi metodi è di aggiungere una linea di opzioni ad /etc/modules.conf. Questo metodo funziona solo se il vostro supporto al loop è stato configurato come un modulo del kernel caricabile (che è il modo in cui la maggior parte delle distribuzioni Linux viene preconfigurato).

Modificate /etc/modules.conf e aggiungete la seguente linea


options loop max_loop=64

Dopo aver effettuato il cambio descritto sopra, semplicemente riavviate la macchina. Oppure potete provare ad usare rmmod e insmod per effettuare il cambio al volo, ma questo non funzionerà se avete un qualsiasi dispositivo di loop montato (otterrete un errore del tipo: dispositivo o risorsa occupata).

Nota

Se non avete il file /etc/modules.conf, il vostro modulo di configurazione potrebbe essere chiamato /etc/conf.modules (questo nome adesso è in disuso).

Continua con la Sezione 3.4.

Grazie a Paul A. Sand per le specificazioni sulle opzioni di /etc/modules.conf

3.2. Aggiunta al prompt del boot

Se il tuo supporto del loop è stato compilato direttamente nel kernel (in altre parole, non è caricato come modulo), potete aggiungere il numero di dispositivi di loop che intendete supportare al prompt di boot di Linux.


boot:  linux max_loop=64

O, se state usando LILO, potete modificare il boot di Linux in /etc/lilo.conf e aggiungere o modificare l'opzione append=. Ecco qui un esempio che mostra il parametro append= (nota: limitatevi ad aggiungere o modificare la linea aggiunta, non cambiate l'intero file per farlo assomigliare a questo oppure il vostro sistema potrebbe non riavviarsi più). Per maggiori informazioni circa LILO, consultate il LILO mini-HOWTO a http://www.linuxdoc.org/HOWTO/mini/LILO.html.


image=/boot/vmlinuz
        label=linux
        root=/dev/hdb5
        initrd=/boot/initrd.img

	append=" max_loop=64"

        vga=788
        read-only

Dopo aver cambiato /etc/lilo.conf, è necessario eseguire il comando lilo affinché in cambiamenti abbiano effetto.


bash# lilo


Added linux *
Added linux-nonfb
Added failsafe
Added windows
Added floppy

Adesso riavviate il vostro sistema. Dopo il riavvio, potrete controllare il vostro file di boot digitando ciò che segue:


bash# cat /proc/cmdline

Nota

Non sono sicuro che il modulo di loop (compilato come modulo) legga /proc/cmdline quando il modulo è caricato, e perciò potrebbe non essere necessaria nelle opzioni in /etc/modules.conf. E' possibile che si riesca (e se non riesce, dovrebbe). In breve: non l'ho testata.

Continua con la Sezione 3.4.

Grazie a Tony Melia per le info sul prompt di boot.

3.3. Ottimizzare il kernel

Se avete un kernel vecchio (v. 2.2) o se siete a vostro agio ricompilando il kernel, potete incrementare il numero dei dispositivi di loop supportati modificando il file /usr/src/linux/drivers/block/loop.c..

Nota

Se constatate che i sorgenti del kernel non sono installati sulla vostra macchina, avrete bisogni di consultare la documentazione sulla vostra distribuzione Linux su come installarli (i sorgenti del kernel esistono con tutte le distribuzioni - fanno parte della licenza GNU GPL.

Cambiate il numero nella linea seguente in accordo a quanti dispositivi di loop avete bisogno.


#define MAX_LOOP 16

Compilate il nuovo kernel come modulo se ne è il caso. Se avete bisogno di aiuto nell'iniziare a fare questo, leggete il /usr/src/linux/README o consultate il seguente link The Linux Kernel HOWTO.

Continua con la Sezione 3.4.

3.4. Creare i dispositivi di loop in /dev

Dovreste controllare quante voci avete in /dev per i vostri dispositivi di loop.


bash# ls -l /dev/loop*

Il comando mknod crea i dispositivi nella directory /dev. I dispositivi di loop hanno un numero maggiore di sette "7", e i numeri minori cominciano da "0". Se il vostro MAX_LOOP è stato definito come "8" in /usr/src/linux/drivers/block/loop.c, dovreste avere /dev/loop0 fino /dev/loop7. Per creare il dispositivo /dev/loop8, usate il seguente comando (sostituite il numero giusto di cui avete bisogno per entrambi gli "8" nell'esempio sotto).


bash# mknod -m660 /dev/loop8 b 7 8

Controllate i permessi del proprietario e del gruppo & sul nuovo file (usando ls -l). Potete cambiare il proprietario e il gruppo usando il seguente comando:


bash# chown root.disk /dev/loop8

Potete cambiare i permessi usando il seguente comando:


bash# chmod 666 /dev/loop8