It is a common practice to mount any iso files to file system and make it available in your network environment for usage like remote installation. You may modify /etc/fstab to make these iso files mounted during system startup.
Mounting iso files consume loop devices (e.g.: /etc/loop*). Linux kernel limits the number of loop devices to 8 by default. If you have more than 8 iso files to mount, you will encounter an error: “mount: could not find any free loop device”.
Loop Device
Loop devices may be deployed as a module or built with Linux kernel. It depends various Linux Distro releases. You may use the following command to check if the loop devices are deploy with module, if not it should have built with kernel:
-bash-3.2$ /sbin/lsmod |grep -i loop loop 16581 0
If lsmod able to list out loop module, the loop device are deployed as module. You may then using module configuration to increase the number of loop devices. Or else you should use append kernel parameters to increase the number of loop devices.
Solution: loop device is a module
- Un-mount all files mounted to loop device
- Add a line in /etc/modprobe.conf to increase number of loop devices:
options loop max_loop=64 - Run
# /sbin/rmmod loop
to remove the loop devices module - Run
# /sbin/modprobe loop
to re-insert the loop devices - Run
# ls /dev/loop*
to verify loop devices has increased - Run
# mount –a
to re-mount static file system information in /etc/fstab
Solution: loop device built into kernel
The following shows an example of change the kernel parameter in grub boot file to increase the number of loop devices:
[root@dolphin mnt]# cat /boot/grub/menu.lst # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/mapper/vg_dolphin-root # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=0 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Fedora (2.6.33.3-85.fc13.x86_64) root (hd0,0) kernel /vmlinuz-2.6.33.3-85.fc13.x86_64 ro root=/dev/mapper/vg_dolphin-root \
rd_LVM_LV=vg_dolphin/root rd_LVM_LV=vg_dolphin/swap \
rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 \
SYSFONT=latarcyrheb-sun16 KEYTABLE=us \
rhgb quiet max_loop=64 initrd /initramfs-2.6.33.3-85.fc13.x86_64.img
A “max_loop=64” is appended into kernel parameter to increase the number of loop devices to 64. You should reboot the Linux OS to make the changes take effects.
5 comments:
/sbin/modprobe loop . beats rebooting.
thanks
good points and the details are more specific than elsewhere, thanks.
- Murk
good points! informative blog.
Helpful post. The information was not correct for Ubuntu 12.04, but your post did help me understand that there were 2 ways the system loads support for loopback, either as a module or in the kernel. That tidbit led me ultimately to the right answer...
For Ubuntu 12.04, you need to edit the file /etc/default/grub and modify the line GRUB_CMDLINE_LINUX="" and insert max_loop=XX inbetween the quotes (where XX is the number of loop devices you need). Then run update-grub (as per instructions in that file) and reboot and your all set...
Can also add the option in /etc/modules instead of editing the grub command. The grub command change probably won't be saved in a kernel update (depending on your distro)
Post a Comment