Видео ролики бесплатно онлайн

Смотреть русский видео

Официальный сайт osinform 24/7/365

Смотреть видео бесплатно

ozalexo 01.11.2010 13:03

Есть вопрос![Решено] Научить udisks монтировать NTFS

Доброе время суток, уважаемые!

Мне необходимо научить udisks монтировать NTFS с опцией "nls=utf8".
В данный момент udisks эту опцию не узнает, хотя он собран с опцией "enable-nls":

1
2
# udisks --mount /dev/sdb --mount-fstype ntfs --mount-options "nls=utf8"
Mount failed: Mount option nls=utf8 is not allowed


А команда mount с опцией "nls=utf8" отрабатывает нормально.

Решение:

Копнув исходник udisks, я обнаружил, что для монтирования используется нативная команда mount. Опции для монтирования могут быть переданы, теоретически, любые. Но по каким-то причинам, список разрешенных опций ограничен. Смотрим (код):
 1
2
3
4
5
6
7
8
9
10
11
/* ---------------------- 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 };


Берем и просто добавляем нужную нам опцию:
static const char *ntfs_allow = { "umask=", "dmask=", "fmask=", "nls=", NULL };

Почему же это будет работать? Ответ опять же в коде:
1
2
3
4
5
6
7
8
9
  argv<n> = "mount";
argv</n><n> = "-t";
argv</n><n> = fstype;
argv</n><n> = "-o";
argv</n><n> = mount_options;
argv</n><n> = device->priv->device_file;
argv</n><n> = mount_point;
argv</n><n> = NULL;
</n>


Команда на выполнение собирается из того, что мы передадим в udisks.

Теперь остается только скомпилировать и установить модифицированный udisks и можно использовать команду:
udisks --mount /dev/sdb --mount-fstype ntfs --mount-options "nls=utf8,umask=0333"

Note: протестировано на MeeGo 1.0 & udisks-1.0.1.


Тэги:
+ 6 -
Похожие Поделиться

K900 01.11.2010 13:18 #
+ 0 -
is not allowed

Значит не не узнает, а не разрешает. С udisks не связывался, просто перевожу.
digiwhite 01.11.2010 13:22 #
+ -1 -
sudo надо добавлять.
ozalexo 01.11.2010 13:28 #
+ 0 -
я в исходник смотрел. там есть список допустимых опций. nls, естественно, отсутствует.
Видимо, придется самому модифицировать код 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 };

muhas 01.11.2010 14:56 #
+ 0 -
попробуй iocharset=utf8 (codepage,iocharset)
ozalexo 01.11.2010 15:01 #
+ 0 -
Пробовал, результат тот же самый.

F.Y.I.: iocharset, согласно ману, просто предудущее название опции nls. В данный момент статус опции iocharset: deprecated (устарело).
ozalexo 01.11.2010 15:27 #
+ 0 -
Поставил ntfs-3g - всё стало монтироваться правильно (русские символы и accented символы отображаются корректно). Но не оставляет чувство, что такое решение не совсем true.
ozalexo 01.11.2010 19:05 #
+ 1 -
Я был прав, ntfs-3g не нужен. Решение проблемы смотри в топикстартере.

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн