Ondersteuning toevoegen voor meer loopdevices

Nieuwere Linux kernels (2.4) bieden je de mogelijkheid op eenvoudige wijze meer loopdevices toe te voegen door het bewerken van /etc/modules.conf of via het gebruik van een bootparameter.

Oudere kernels (2.2 ?) boden slechts ondersteuning voor 8 loopdevices in de kernel gecompileerd. Je kon dus slechts 8 CD's op een netwerk delen met deze standaardwaarde. Om meer dan de standaard te ondersteunen, moet je de kernelsource aanpassen, en een nieuwe kernel compileren.

Gebruik de volgende methoden om vast te stellen wat het versienummer van je actieve kernel is.


bash# uname -a

of


bash# cat /proc/version

Toevoegen van de loop module optie

Huidige kernels staan je toe het aantal ondersteunde loopdevices in te stellen zonder de kernel opnieuw te compileren. Een van deze methoden bestaat eruit een options regel toe te voegen aan /etc/modules.conf. Deze methode werkt alleen als loop ondersteuning is geconfigureerd als een laadbare kernel module (zo worden de meeste grotere Linux distributies nu voorgeconfigureerd).

Wijzig /etc/modules.conf en voeg de volgende regel toe:


options loop max_loop=64

Na het maken van de bovenstaande wijziging, kun je simpelweg rebooten. Of je kunt proberen gebruik te maken van rmmod en insmod om de wijziging te activeren, maar dit zal niet werken als je thans enige loopdevices hebt gemount (je krijgt de foutmelding: loop: Device or resource busy).

Noot

Als je geen /etc/modules.conf bestand hebt, dan kan je module configuratiebestand /etc/conf.modules zijn genoemd (deze naam is nu verouderd).

Ga verder met paragraaf Aanmaken van loopdevices in /dev.

Met dank aan Paul A. Sand voor het wijzen op de /etc/modules.conf option.

Toevoegen aan de Boot Prompt

Als je loop ondersteuning direct in de kernel is gecompileerd (met andere woorden, het is niet als een module geladen) dan kun je het aantal loopdevices dat je ondersteunt wilt hebben op de linux bootprompt opgeven.


boot:  linux max_loop=64

Of als je gebruik maakt van LILO, dan kun je het linux bootrecord in /etc/lilo.conf bewerken en de append= regel toevoegen/aanpassen. Hier is een voorbeeldrecord waarin dit wordt getoond: append= (noot: voeg alleen de append regel toe of wijzig deze, breng geen wijzigingen aan in het volledige record zodat het er zoals hierbovenstaand uitziet want dan zal je systeem wellicht niet meer booten ). Raadpleeg voor meer informatie over LILO de LILO mini-HOWTO op 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

Na het wijzigen van /etc/lilo.conf, moet je de opdracht lilo uitvoeren om je wijzigingen te activeren.


bash# lilo


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

Start vervolgens je systeem opnieuw op. Nadat je systeem is opgestart, kun je de boot opdrachtregel controleren door het intikken van het volgende:


bash# cat /proc/cmdline

Noot

Ik ben er niet zeker van of de loop module (gecompileerd als een module) het bestand /proc/cmdline inleest wanneer de module wordt geladen, en daarom geen options regel nodig heeft in /etc/modules.conf. Het is mogelijk dat het dit kan (en als het dit niet doet, dat het dit wel zou moeten doen). Kortom: Ik heb dit niet getest.

Ga verder met paragraaf Aanmaken van loopdevices in /dev.

Met dank aan Tony Melia voor de boot prompt info.

Fijnafstemmen van de kernel

Als je een oudere kernel hebt (v. 2.2) of je je prima op je gemak voelt bij het hercompileren van de kernel, dan kun je het aantal loopdevices dat wordt ondersteund, verhogen door het bestand /usr/src/linux/drivers/block/loop.c te bewerken.

Noot

Als je bemerkt dat de broncode van de kernel niet op je machine is geïnstalleerd, dan zul je de documentatie van je Linux documentatie moeten raadplegen over hoe je het installeert (de broncode van de kernel wordt met alle distributies meegeleverd - het maakt onderdeel uit van de GNU GPL licentie).

Wijzig het nummer in de volgende regel in het aantal loopdevices dat je nodig zult hebben.


#define MAX_LOOP 16

Compileer de nieuwe kernel of module wat van toepassing is. Als je hier wat hulp bij nodig hebt, lees dan /usr/src/linux/README of raadpleeg De Linux Kernel HOWTO.

Ga verder met paragraaf Aanmaken van loopdevices in /dev.

Aanmaken van loopdevices in /dev

Kijk hoeveel /dev regels je hebt voor loopdevices.


bash# ls -l /dev/loop*

De opdracht mknod maakt de devices aan in de directory /dev. De loopdevices hebben een major nummer "7", en de minor nummers beginnen bij "0". Als je MAX_LOOP werd gedefinieerd als "8" in /usr/src/linux/drivers/block/loop.c, dan zou je /dev/loop0 tot en met /dev/loop7 moeten hebben. Om het /dev/loop8 device aan te maken, gebruik je de volgende opdracht (vervang het van toepassing zijnde nummer voor beide "8'ten" in het voorbeeld hieronder).


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

Controleer de Eigenaar/groep & permissies van het nieuwe bestand (met ls -l). Je kunt de eigenaar en de groep met de volgende opdracht wijzigen:


bash# chown root.disk /dev/loop8

Je kunt de permissies met de volgende opdracht wijzigen:


bash# chmod 666 /dev/loop8