Использование strace
довольно просто, но оно может не дать вам нужную информацию.
Поскольку вы знаете, какой системный вызов вы ищете, самое простое будет сделать:
strace -fv -e trace=mount mount /dev/sda1 /tmp
(замените mount /dev/...
скриптом Python).-f
должен следовать за детьми (вероятно, здесь нет необходимости), -v
для многословия, а -e trace=mount
дает команду strace
отслеживать только системный вызов mount
.
Пример вывода здесь:
$ sudo strace -fv -e trace=mount mount /dev/sda1 /tmp
mount("/dev/sda1", "/tmp", "ext2", MS_MGC_VAL, NULL) = 0
Таким образом, вы видите аргументы, переданные по существу в форме, что они достигнут ядра, и код возврата.
Вы не получите «объяснения» EINVAL
, хотя, но это должно происходить только тогда, когда параметр источника имеет недопустимый суперблок, поэтому сообщение довольно явное (если вы не делаете что-то более экзотическое, в этом случае есть другие возможности, перечисленные здесь ).