2004年9月8日水曜日

mount: could not find any free loop device


過去のメールだのデータファイルだのをDVD-ROMに焼いてバックアップしているが、

そのときにmkisofsで作ったISOイメージはそのままディスクにおいて

lopp back でmountさせている。



本日大量にISOイメージを作成し、調子こいて/etc/fstabに


/home/BURNDONE/E-LIKE.iso9660 /home/ISO9660/E-LIKE iso9660 loop,ro 0 2
/home/BURNDONE/J-LIKE.iso9660 /home/ISO9660/J-LIKE iso9660 loop,ro 0 2
/home/BURNDONE/E-SOSO.iso9660 /home/ISO9660/E-SOSO iso9660 loop,ro 0 2
/home/BURNDONE/J-SOSO.iso9660 /home/ISO9660/J-SOSO iso9660 loop,ro 0 2
/home/BURNDONE/CDIMAGE.iso9660 /home/ISO9660/CDIMAGE iso9660 loop,ro 0 2
/home/BURNDONE/HGLAN.iso9660 /home/ISO9660/HGLAN iso9660 loop,ro 0 2
/home/BURNDONE/OBS-HDD.20040823.iso9660 /home/ISO9660/OBS-HDD.20040823 iso9660 loop,ro 0 2
/home/BURNDONE/hone.iso9660 /home/ISO9660/hone iso9660 loop,ro 0 2
/home/BURNDONE/hong.Win.20040907.iso9660 /home/ISO9660/hong.Win.20040907 iso9660 loop,ro 0 2
/home/BURNDONE/www.20040506.iso9660 /home/ISO9660/www.20040506 iso9660 loop,ro 0 2

と書いたんだけど、なんだか全部mountされていない。



手動でmountさせて見ると、


# mount hong.Win.20040907/
mount: could not find any free loop device

って言われてしまう。




/dev/配下を見ると、loopは確かにloop0からloop7までしかない。

/dev/MAKEDEVを見ると、loop8以降もできるようである。

早速loop8以降を作ってみたが、それでもだめ。



仕方なく(?)/usr/src/linux-2.6.8.1/drivers/block/loop.cを見てみると、


/*
* linux/drivers/block/loop.c
*
* Written by Theodore Ts'o, 3/29/93
[中略]
* Maximum number of loop devices now dynamic via max_loop module parameter.
* Russell Kroll 19990701
*
* Maximum number of loop devices when compiled-in now selectable by passing
* max_loop=<1-255> to the kernel on boot.
* Erik I. Bols� , Oct 31, 1999
[中略]
* Support up to 256 loop devices
* Heinz Mauelshagen , Feb 2002
[中略]
static int max_loop = 8;
[以下略]

と言うことらしい。



/boot/grub/menu.lstに


# For booting Linux
title Linux-2.6.8.1
root (hd0,2)
kernel (hd0,0)/bzImage-2.6.8.1 root=/dev/hda3 max_loop=255
#initrd /initrd.img

と書いてリブートしてみると、dmesgに

[中略]
Kernel command line: root=/dev/hda3 max_loop=255
[中略]
loop: loaded (max 8 devices)

あれれ?



実際にloopデバイスでmountされている数は変わらず...



もう一度loop.cをよく見てみると、


[中略]
/*
* And now the modules code and kernel interface.
*/
MODULE_PARM(max_loop, "i");
MODULE_PARM_DESC(max_loop, "Maximum number of loop devices (1-256)");
MODULE_LICENSE("GPL");
MODULE_ALIAS_BLOCKDEV_MAJOR(LOOP_MAJOR);
[中略]
#ifndef MODULE
static int __init max_loop_setup(char *str)
{
max_loop = simple_strtol(str, NULL, 0);
return 1;
}
__setup("max_loop=", max_loop_setup);
#endif

ということで、loopデバイスドライバをモジュールにしていると、

カーネルの起動パラメータではだめってことね。(当たり前か(^^;)



気を取り直して、/etc/modulesに


loop max_loop=255

を追加して、再起動。



dmesgにも


loop: loaded (max 255 devices)

とでて、10個のISOイメージファイルが無事mountできました。


shibata@hcube:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda3 75816576 59665920 12299368 83% /
tmpfs 249940 0 249940 0% /dev/shm
/dev/hda1 120995 5482 109265 5% /boot
/home/BURNDONE/E-LIKE.iso9660
4592718 4592718 0 100% /home/ISO9660/E-LIKE
/home/BURNDONE/J-LIKE.iso9660
4596660 4596660 0 100% /home/ISO9660/J-LIKE
/home/BURNDONE/E-SOSO.iso9660
4047640 4047640 0 100% /home/ISO9660/E-SOSO
/home/BURNDONE/J-SOSO.iso9660
4547910 4547910 0 100% /home/ISO9660/J-SOSO
/home/BURNDONE/CDIMAGE.iso9660
2489058 2489058 0 100% /home/ISO9660/CDIMAGE
/home/BURNDONE/HGLAN.iso9660
377622 377622 0 100% /home/ISO9660/HGLAN
/home/BURNDONE/OBS-HDD.20040823.iso9660
3746830 3746830 0 100% /home/ISO9660/OBS-HDD.20040823
/home/BURNDONE/hone.iso9660
2069910 2069910 0 100% /home/ISO9660/hone
/home/BURNDONE/hong.Win.20040907.iso9660
2205856 2205856 0 100% /home/ISO9660/hong.Win.20040907
/home/BURNDONE/www.20040506.iso9660
1905944 1905944 0 100% /home/ISO9660/www.20040506



��長いな(^^;


1 件のコメント:


  1. 文字化けしてるし
    UTF-8で送ったつもりだったのですが,すみませんでした

    返信削除