On Tue, 30 Dec 2008, Покотиленко Костик wrote:
В Вто, 30/12/2008 в 06:39 +0300, Yuriy Kaminskiy пишет:
Victor Wagner wrote:
On 2008.12.23 at 14:31:04 -0500, Nicholas wrote:
ножно изменитьстрочку:
static int max_loop = 30;
Можно. Есть много способов чесать правое ухо левой ногой. Использование
CD/DVD и их образов для хранения софта один из них.
<shrug>
из того, что кто-то очень любит чесать правое ухо левой ногой, вовсе не
следует, что ухо можно чесать /только/ ногой.
max_loop - это параметр модуля; соответственно, чтобы его поменять
ничего хакать не нужно (а когда нужно было хакать - он был #define, а не
static int [ЕМНИС]).
> Заодно и ядро хакать научишься.
Не-а. Не научится.
Если не ошибаюсь, параметром ядра можно только до 64 увеличить. 64
забито #define'ом в ядре.
Ну а исходники посмотреть?
linux/drivers/block/loop.c:
static int max_loop;
module_param(max_loop, int, 0);
MODULE_PARM_DESC(max_loop, "Maximum number of loop devices");
....
if (max_loop > 1UL << MINORBITS)
return -EINVAL;
То есть максимальное число (1UL << MINORBITS -1) = 1048575
На практике, максимальное число ограничено 'minor number',
которое есть char, то есть можно создать только
/dev/loop0 - /dev/loop255
В исходниках же (2.6.24) стоит интересный комментарий:
* (2) if max_loop is not specified, create 8 loop device on module
* load, user can further extend loop device by create dev node
* themselves and have kernel automatically instantiate actual
* device on-demand.
if (max_loop) {
nr = max_loop;
range = max_loop;
} else {
nr = 8;
range = 1UL << MINORBITS;
}
Так что, как я понимаю, даже max_loop задавать не обязательно.
Сейчас попробовал:
mknod /dev/loop8 b 7 8
chmod 660 /dev/loop8
mount -t iso9660 -o ro,loop=/dev/loop8 KNOPPIX_V5.1.1CD-2007-01-04-EN.iso
/cdrom
работает...
Yu.