ozalexo 01.11.2010 13:03
Есть вопрос! — [Решено] Научить udisks монтировать NTFS
Доброе время суток, уважаемые!Мне необходимо научить udisks монтировать NTFS с опцией "nls=utf8".
В данный момент udisks эту опцию не узнает, хотя он собран с опцией "enable-nls":
1 |
# udisks --mount /dev/sdb --mount-fstype ntfs --mount-options "nls=utf8"
|
А команда mount с опцией "nls=utf8" отрабатывает нормально.
Решение:
Копнув исходник udisks, я обнаружил, что для монтирования используется нативная команда mount. Опции для монтирования могут быть переданы, теоретически, любые. Но по каким-то причинам, список разрешенных опций ограничен. Смотрим (код):
Берем и просто добавляем нужную нам опцию:
static const char *ntfs_allow = { "umask=", "dmask=", "fmask=", "nls=", NULL };
Почему же это будет работать? Ответ опять же в коде:
Команда на выполнение собирается из того, что мы передадим в udisks.
Теперь остается только скомпилировать и установить модифицированный udisks и можно использовать команду:
udisks --mount /dev/sdb --mount-fstype ntfs --mount-options "nls=utf8,umask=0333"
Note: протестировано на MeeGo 1.0 & udisks-1.0.1.
я в исходник смотрел. там есть список допустимых опций. nls, естественно, отсутствует.
Видимо, придется самому модифицировать код udisks'а...
Link: http://cgit.freedesktop.org/udisks/tree/src/device.c#n5858
Видимо, придется самому модифицировать код udisks'а...
Link: http://cgit.freedesktop.org/udisks/tree/src/device.c#n5858
/* ---------------------- ntfs -------------------- */
/* this is assuming that ntfs-3g is used */
static const char *ntfs_defaults<> = { "uid=", "gid=", "dmask=0077", "fmask=0177", NULL };
static const char *ntfs_allow<> = { "umask=", "dmask=", "fmask=", NULL };
static const char *ntfs_allow_uid_self<> = { "uid=", NULL };
static const char *ntfs_allow_gid_self<> = { "gid=", NULL };
/* this is assuming that ntfs-3g is used */
static const char *ntfs_defaults<> = { "uid=", "gid=", "dmask=0077", "fmask=0177", NULL };
static const char *ntfs_allow<> = { "umask=", "dmask=", "fmask=", NULL };
static const char *ntfs_allow_uid_self<> = { "uid=", NULL };
static const char *ntfs_allow_gid_self<> = { "gid=", NULL };
Пробовал, результат тот же самый.
F.Y.I.: iocharset, согласно ману, просто предудущее название опции nls. В данный момент статус опции iocharset: deprecated (устарело).
F.Y.I.: iocharset, согласно ману, просто предудущее название опции nls. В данный момент статус опции iocharset: deprecated (устарело).
Поставил ntfs-3g - всё стало монтироваться правильно (русские символы и accented символы отображаются корректно). Но не оставляет чувство, что такое решение не совсем true.
Значит не не узнает, а не разрешает. С udisks не связывался, просто перевожу.