LINUX.ORG.RU

указание необходимого кол-ва loop девайсов


0

1

привет.

в убунте по умолчанию 8 loop девайсов. мне нужно указать другое кол-во. нагуглил несколько способов, но реально рабочим оказался только способ создания необходимого кол-ва /dev/loopN.

в следующем способе описано добавление строки в /etc/modprobe.conf. но этот файл отсутствует в убунте.

In case the loop module is a loadable module, you can simply add the following to /etc/modprobe.conf on a 2.6 kernel (or /etc/modules.conf on a 2.4 kernel).

---- options loop max_loop=64

в следующем способе непонятно, как определить вкомпилен ли модуль в ядро.

Если loop вкомпилен в ядро, то в ком.строке ядра

max_loop=N

Если модулем, то в ком.строке insmod.

в следующем способе непонятно, как/где передать аргумент при загрузке ядра.

Unfortunately some distributions (eg. SLES9 or RHEL6) has the loop module compiled as aprt of the kernel, therefore you have to add 'max_loop=64' to the kernel parameters directly and you require a reboot.

спасибо.

★★★

Способ один, передать драйверу loop опцию с указанием количества loop устройств, независимо от того как собран этот драйвер монолитно в ядре или модульно., за исключением ручного создания файлов устройств, с помощью mknod.

Определить как собран драйвер можно двумя способами, по наличию соответствующей опции (CONFIG_BLK_DEV_LOOP) в конфиге ядра, если её значение 'Y' - то монолитно в ядре, если 'M' - то отдельный модуль, по наличию файла модуля в директории с модулями ядра

find /lib/modules/`uname -r`/ -type f -name loop.*

Параметр ядра задаётся стандартно и вы об этом должны знать, в конфиге загрузчика.

Ну а по поводу modprobe.conf попробуйте его создать или почитать wiki страницы вашего дистрибутива о том как настраивать модули и их параметры.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)

Не надо тупо следовать написанному.

Метод только один (если модуль собран как модуль,а не встроен в ядро) - передать модулю loop при загрузке параметр max_loop=64 (вернее, с нужным значением, не обязательно 64).

Все остальное, это способы осуществить задуманное.

Самый простой, руками запустить модуль с нужными параметрами:

rmmod loop

modprobe loop max_loop=64

Далее, если все работает, можно записать этот параметр в дефолтные значения, что и описывается дальше.

в следующем способе описано добавление строки в /etc/modprobe.conf. но этот файл отсутствует в убунте.

потому что он давно уже преобразован в директорию /etc/modprobe.conf.d все файлы в которой собираются в один конфиг системой.

Идешь в эту директорию и создаешь файл custom-loop.conf с указанным содержимым и для проверки выгружаешь и загружаешь модуль.

в следующем способе непонятно, как определить вкомпилен ли модуль в ядро.

Три способа навскидку.

1) Косвенный, но самый простой. Если модуль я ядре, значит, его нет в модулях и утилиты для работы с модулями его не найдут...

#modinfo loop

ERROR: modinfo: could not find module loop

Упс, а похоже что в убунте loop таки вбит ва ядро...

Правда, есть еще вариант, что этот модуль вообще не собирали, но это явно не наш случай.

Есть прямой способ проверки - посмотреть в конфиг ядра, но в убунте (в отличие от федоры) его не кладут в /boot рядом с ядром.

Еще есть вариант посмотреть /proc/config.gz, но это если в ядре включена поддержка IKCONFIG и IKCONFIG_PROC, а это вообще почему-то редкость.

таким образом, все варианты с модулями отбрасываем, остается вариант с ядром, а именно передача все той же опции в параметры ядра.

Это делается в загрузчике. Скорее всего, это grub2. Вот иди в /boot/grub2/grub.cfg и правь строку kernel.

Добавил, перезагрузился, проверил, что параметр на месте

#cat /proc/cmdline

BOOT_IMAGE=/vmlinuz-3.2.0-27-generic-pae root=UUID=6d3bdc27-3959-4b18-96dd-571c6073b978 ro max_loop=64 vt.handoff=7

Все работает? занеси в /etc/default/grub Тогда при установке новых ядер оно автоматом будет вносится параметры нового ядра.

AVL2 ★★★★★
()
Ответ на: комментарий от kostik87

kostik87, AVL2, спасибо огромное. разжевали до немогу =)

niXman ★★★
() автор топика
Ответ на: комментарий от AVL2

Все работает? занеси в /etc/default/grub

да, работает. но есть два «но»: 1)в /boot/grub2/grub.cfg нет строки 'kernel', есть 'linux'. в нее и внес. 2)в /etc/default/grub нет ни 'kernel', ни 'linux'. куда вносить?

спасибо.

niXman ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.