LINUX.ORG.RU

[vfat][mount][wtf?]


0

1

Народ не понимаю что за фигня монтирую от пользюка программой pmount

pmount /dev/sdb1
все работает. Теперь монтирую от рута стандартным mount
0:22 root@gazoline /mnt # mount /dev/sdb1 m1
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
       missing codepage or helper program, or other error
       В некоторых случаях полезная информация может быть
       найдена в syslog - попробуйте dmesg | tail или что-то
       в этом роде

0:22 root@gazoline /mnt # mount -t vfat /dev/sdb1 m1
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
       missing codepage or helper program, or other error
       В некоторых случаях полезная информация может быть
       найдена в syslog - попробуйте dmesg | tail или что-то
       в этом роде

0:22 root@gazoline /mnt # blkid /dev/sdb1
/dev/sdb1: LABEL="SYSRESC" UUID="697C-66AB" TYPE="vfat" 
0:22 root@gazoline /mnt # file -s /dev/sdb1
/dev/sdb1: x86 boot sector, mkdosfs boot message display, code offset 0x58, OEM-ID " mkdosfs", sectors/cluster 8, Media descriptor 0xf8, heads 247, sectors 15646718 (volumes > 32 MB) , FAT (32 bit), sectors/FAT 15256, serial number 0x697c66ab, label: "
как так ? и какой такой хелпер програм мне нужен ? раньше не было такого

>В некоторых случаях полезная информация может быть

найдена в syslog

Всё написано же.

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

пересоздал файловую систему с нуля.

Вообще это началось после очередного обновления

s9gf4ult ★★ ()
Ответ на: комментарий от gentoo_root
0:21 root@gazoline /etc/udev/rules.d # pmount /dev/sdb1
0:21 root@gazoline /etc/udev/rules.d # mount |grep -ie sdb
/dev/sdb1 on /media/sdb1 type vfat (rw,noexec,nosuid,nodev,quiet,shortname=mixed,uid=0,gid=1003,umask=077,fmask=0177,dmask=0077,utf8,iocharset=iso8859-1)
0:21 root@gazoline /etc/udev/rules.d # pumount /dev/sdb1
0:21 root@gazoline /etc/udev/rules.d # mount -t vfat -o iocharset=cp866 /dev/sdb1 /mnt/m1
0:22 root@gazoline /etc/udev/rules.d # umount /dev/sdb1

Дело было в iocharset=cp866, добавил опцию - вручную монтируется. Решил поправить проблему и добавить в udev правила для монтирования vfat

KERNEL=="sd*",SUBSYSTEMS=="usb",SUBSYSTEM=="block",ENV{ID_FS_TYPE}=="vfat",ENV{mount_options}="iocharset=cp866"
проверяю так
# udevadm info --query=all --name=/dev/sdb1 | grep mount
E: mount_options=iocharset=cp866
Однако mount продолжает по умолчанию монтировать не правильно. pmount продолжает монтировать с не правильной опцией iocharset=iso8859-1. Но и на это мне вобщем-то пофиг. Но когда я отредактировал в gconf ветку /system/storage/default_options/vfat/mount_options и добавил туда iocharset=cp866 то наутилус снова выругался сообщением от mount, что мол файловая система не правильная.

Как править ?? Хочу с консоли без рута монтировать с правильными опциями и в графическом варианте тоже не плохо бы кнопочкой это делать.

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

>наутилус

Так если есть nautilus, зачем pmount? Он и без pmount'а нормально из коробки всё монтирует.

А если из консоли монтировать, то мне хватает только параметра utf8, никакие iocharset не нужны.

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

gentoo_root> никакие iocharset не нужны

ага.

0:37 root@gazoline /root # mount /dev/sdb1 /mnt/m1
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
       missing codepage or helper program, or other error
       В некоторых случаях полезная информация может быть
       найдена в syslog - попробуйте dmesg | tail или что-то
       в этом роде

0:37 root@gazoline /root # dmesg| tail
[ 7905.016739] sd 11:0:0:0: [sdb] 15646720 512-byte logical blocks: (8.01 GB/7.46 GiB)
[ 7905.018976] sd 11:0:0:0: [sdb] Write Protect is off
[ 7905.018985] sd 11:0:0:0: [sdb] Mode Sense: 03 41 00 00
[ 7905.018992] sd 11:0:0:0: [sdb] Assuming drive cache: write through
[ 7905.025993] sd 11:0:0:0: [sdb] Assuming drive cache: write through
[ 7905.044628]  sdb: sdb1
[ 7905.050736] sd 11:0:0:0: [sdb] Assuming drive cache: write through
[ 7905.050747] sd 11:0:0:0: [sdb] Attached SCSI removable disk
[ 7905.346802] FAT: IO charset UTF8 not found
[ 8411.003191] FAT: IO charset UTF8 not found
0:37 root@gazoline /root # mout -o iocharset=cp866 /dev/sdb1 /mnt/m1
0:39 root@gazoline /root # mount | grep sdb
/dev/sdb1 on /mnt/m1 type vfat (rw,iocharset=cp866)
Какой делается вывод ? И почему выполненное в udev правило не оказывает эффекта ? делал по этой статье

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

Еще варианты ?

Вот моё:

max@laptop ~ $ zgrep NLS /proc/config.gz | grep -v '^#'
CONFIG_UDF_NLS=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="utf8"
CONFIG_NLS_CODEPAGE_437=m
CONFIG_NLS_CODEPAGE_866=m
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ASCII=m
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_5=m
CONFIG_NLS_KOI8_R=m
CONFIG_NLS_UTF8=m
max@laptop ~ $ lsmod | grep '^nls_'
nls_cp437               4509  1 
max@laptop ~ $ mount | grep ' type vfat ('
/dev/sdc1 on /media/Storage type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush)
Возможно, надо ещё 'CONFIG_NLS_CODEPAGE_437' собрать.

И всё-таки, зачем pmount? Чем udisks не угодил?

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

И да, 437 — это, видимо, номер страницы, указанный в CONFIG_FAT_DEFAULT_CODEPAGE.

gentoo_root ★★★★★ ()
Ответ на: комментарий от gentoo_root
1:20 root@gazoline /root # zgrep NLS /proc/config.gz | grep -v '^#'
CONFIG_UDF_NLS=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_CODEPAGE_866=y
CONFIG_NLS_CODEPAGE_1251=y
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_15=y
CONFIG_NLS_KOI8_R=y
CONFIG_NLS_UTF8=y

Чем udisks не угодил?

Ну полагаю этим самым udisks монтирует и наутилус, ну и потом как с его помощью в консоли смонтировать/демонтировать флешку ?

ONFIG_NLS_DEFAULT=«iso8859-1» - то что у меня отличается, возможно из за этого pmount монтирует iso8859-1. А cp866 нужно для того чтобы венде понимала кодировку, так как до utf-8 они еще не дошли. Если бы не венде не использовал бы на флешке фат

s9gf4ult ★★ ()
Ответ на: комментарий от gentoo_root
1:21 root@gazoline /root # zgrep FAT /proc/config.gz               
# DOS/FAT/NT Filesystems
CONFIG_FAT_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=866
CONFIG_FAT_DEFAULT_IOCHARSET="UTF8"

Это тоже интересно

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

Есть еще более интересная штука

1:32 root@gazoline /root # mount -o iocharset=utf8 /dev/sdb1 /mnt/m1
1:33 root@gazoline /root # mount | grep sdb1
/dev/sdb1 on /mnt/m1 type vfat (rw,iocharset=utf8)
1:34 root@gazoline /root # umount /dev/sdb1
1:34 root@gazoline /root # dmesg| tail -n 2
[11708.963555] FAT: IO charset UTF8 not found
[11779.582587] FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
1:34 root@gazoline /root # mount /dev/sdb1 /mnt/m1
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
       missing codepage or helper program, or other error
       В некоторых случаях полезная информация может быть
       найдена в syslog - попробуйте dmesg | tail или что-то
       в этом роде

1:34 root@gazoline /root # dmesg| tail -n 2
[11779.582587] FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
[11824.666550] FAT: IO charset UTF8 not found

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

>CONFIG_FAT_DEFAULT_IOCHARSET=«UTF8»

Не рекомендуется такое, лучше вставить туда iso8859-1 (это дефолт). И, возможно, «UTF8» - это неправильное написание, я не уверен. Возможно, проблема в этом.

FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!

Это нормально, так и должно быть.

Ну полагаю этим самым udisks монтирует и наутилус, ну и потом как с его помощью в консоли смонтировать/демонтировать флешку ?

Так с udisks всё работает?

в консоли смонтировать/демонтировать флешку ?

'udisks --help', там всё написано. Есть опции --mount и --unmount.

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

gentoo_root> Так с udisks всё работает?

2:19 razor@gazoline /home/razor % udisks --mount /dev/sdb1 --mount-options iocharset=iso8859-1
Mounted /org/freedesktop/UDisks/devices/sdb1 at /media/697C-66AB
2:20 razor@gazoline /home/razor % udisks --unmount /dev/sdb1                                  
2:20 razor@gazoline /home/razor % udisks --mount /dev/sdb1                                    
Mount failed: Error mounting: mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so
наутилус НЕ МОНТИРУЕТ а показывает такое-же сообщение как в последней строке

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

Пересобери тогда ядро с CONFIG_FAT_DEFAULT_IOCHARSET=«iso8859-1». Я думаю, поможет. Это, видимо, дефолтное значение опции монтирования 'iocharset'.

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

Да, сделал уже, помогло. Какой же все-таки стал кошмар когда убрали ХАЛ. В хале все настройки (хоть хомячки не понимают XML) хранились централизованно - написал и работает. Теперь у нас есть правила в udev которые не влияют на дефолтовое поведение udisks - части udev, замечательно !

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

Да, Линукс уже не тот. Вот раньше хорошо было, жили и не знали никаких udev, udisks, upower, hal, consolekit, policykit, systemd, pulseaudio, avahi, dbus и прочей ереси.

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

ну в принципе некоторые вещи не ересь но ДОКУМЕНТАЦИЯ то на них должна же быть ! например где документация на возможные ключи ENV в правилах удева ?

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

>ну в принципе некоторые вещи не ересь

Аналог udev'а трудно придумать, но всё остальное - точно ересь, которая не нужна. Да, я ещё забыл перечислить NetworkManager. Хотя у него есть плюс - можно сеть от пользователя настраивать, а не от рута (с помощью PolicyKit, конечно, который регулирует обмен данными по dbus). Хотя и тут есть же sudo.

например где документация на возможные ключи ENV в правилах удева ?

Должна же где-то быть, если сами правила люди пишут. В /usr/share/doc не нашёл.

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

gentoo_root> В /usr/share/doc не нашёл.
вово гугель тоже не нашел, кроме старой статьи «как писать правила для удава»

Ну таки как раз D-Bus - шаг вперед для десктопа, PolicyKit - шаг вперед для безопасности, но удав это отморозок. В хале были нормальные правила которые влияли на работу программ. Я настроил там мышь и клаву и флешки и все монтировалось и определялось и автонастраивалось при подключении.

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

>D-Bus - шаг вперед для десктопа

Не нужен, есть сокеты.

PolicyKit - шаг вперед для безопасности

Это шутка такая? Раньше, чтобы получить доступ к сканеру, я добавлялся в группу. На девайс в /dev стояли права 660, и добавление в группу давало право на доступ к сканеру. Теперь с этим PolicyKit ЛЮБОЙ пользователь имеет доступ к сканеру, независимо от того, состоит ли он в нужной группе. Это «шаг вперёд для безопасности»? А всё это так, потому что в настройках PolicyKit есть по дефолту правило: «тот, кто занимает активную консоль, имеет доступ к сканеру». И это действует не только для сканера, а и других флешек, принтеров и всех остальных устройств. Т.е. стоит мне залогиниться в иксы, я получаю доступ ко всем устройствам, независимо от групп. Но когда переключается пользователь, старый теряет доступ, а новый получает. Это происходит, потому что ConsoleKit мониторит такие переключения, говорит PolicyKit'у, а тот выставляет нужные ACL'ы на девайсе в /dev. Получается, как в венде — все пользователи могут по дефолту всё, а ограничить их очень сложно, а иногда и нельзя (в венде, например, нельзя запретить монтирование флешек). Такой подход в Линуксе не нужен. Правильно запретить всем пользователям всё, а разрешать, добавляя их в группы.

удав это отморозок

Тем не менее, аналогов ему нет. Он один может нормально выставлять права на девайсы и запускать программы при их подключении. Конечно, его можно заменить на mdev, но тогда не будут запускаться программы. Можно заменить на mdev+systemd, но systemd всё равно зависит от udev. Поэтому он пока что без аналогов.

В хале были нормальные правила которые влияли на работу программ.

Да, с hal были нормальные настройки хотя бы. Но во-первых, они все не нужны, потому что его функциональность была избыточна, а все его настройки можно было сделать и без него. А во-вторых, он всё равно зависит от udev.

udisks не нужен, потому что есть usbmount, который работает через правила udev и при этом НАСТРАИВАЕТСЯ. upower не нужен, потому что он просто экспортирует через dbus то, что есть в /sys.

На самом деле, было бы хорошо, если бы не было этих всех ненужных демонов, был бы только udev, нормальная документация к нему и возможность настройки сети от пользователя (обеспечивается либо sudo, либо правами 750 на программы типа ifconfig, suid на них и созданием группы). Но, к сожалению, процесс уже необратим; программы намертво зависят от ненужных демонов (например, bluez не работает без dbus), а Линукс уже не тот. Нагородили велосипедов, а теперь проблемы.

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