Создание тестового блочного устройства
В одной из статей увидел такой пример создания тестового блочного устройства:
dmsetup create zero1 --table "0 $size zero"
При выполнении от root'а (т.е. проблем с доступом нет) вылезает следующая ошибка:
Invalid format on line 1 of table
Command failed
Если же выполнять от обычного пользователя вылезает следующая ошибка:
/dev/mapper/control/: open failed: Permission denied
Failure to communicate with kernel device-mapper driver.
Check that device-mapper is available in the kernel.
Incompatible libdevmapper 1.02.145 (2017-11-03) and kernel driver (unknown version).
Command failed
При этом если указать размер устройства напрямую, то всё проходит:
root # dmsetup create 1gb-zero --table '0 1953125 zero'
Можете, пожалуйста, объяснить в чём в принципе смысл $size и почему в данном случае не работает?
P.S. Перед этим загружается kernel module, но что с ним, что без него ничего не меняется. В теле модуля ядра ничего, связанного с $size нет.
Ответы (1 шт):
Ошибка была действительно в том, как верно заметили @Hellseher и @nobody в необходимости экспорта переменной size до выполнения команд. Также можно, например, ввести переменную размера существующего файла:
FILESIZE=$(stat -c%s "$FILENAME")