LINUX.ORG.RU

[флэшка][vfat] регистр имён файлов

 ,


0

1

KDE4, Gentoo. Когда вставляю флэшке с vfat в компьютер и выбираю действие с ней в выскакивающем виджете, флэшка монтируется автоматом. При этом имена файлов на флэшке все превращаются в верхний регистр. Раньше, в третьих кедах при тех же самых действиях, все имена файлов на флэшке были в нижнем регистре.

Как сделать так, чтобы на примонтированной флэшке файлы были в нижнем регистре? fstab не предлагать.

★★

shortname={lower|win95|winnt|mixed}

Defines the behaviour for creation and display of filenames which fit into 8.3 charac‐
ters. If a long name for a file exists, it will always be preferred display. There are
four modes: :

lower Force the short name to lower case upon display; store a long name when the
short name is not all upper case. This mode is the default.

win95 Force the short name to upper case upon display; store a long name when the
short name is not all upper case.

winnt Display the shortname as is; store a long name when the short name is not all
lower case or all upper case.

mixed Display the short name as is; store a long name when the short name is not all
upper case.

поискать где в правилах hal заданы опции для vfat и подставить туда shortname=нужное

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

> поискать где в правилах hal заданы опции для vfat и подставить туда shortname=нужное

а при очередном обновлении оно у меня перезапишется?

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

/usr/share/hal/fdi/policy/... да, но можно дописать в переменную CONFIG_PROTECT_MASK

ну а вообще hal и hal-data уже практически не обновляются

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

> Юзаю ext4 без журнала, доволен как слон, чего и вам желаю.

нет, спасибо, учить фотоаппарат понимать ext4 — это не моего уровня удовольствие ))

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

hal перезапустили?

а вообще смонтируйте флешку и покажите запись в /proc/mounts для нее
(я ожидаю увидеть uhelper=hal там)

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

> а вообще смонтируйте флешку и покажите запись в /proc/mounts для нее

(я ожидаю увидеть uhelper=hal там)

hal перезапустил (/etc/init.d/hald restart) но что самое ужасное:

# mount | grep /dev/sdg1
/dev/sdg1 on /media/disk type vfat (rw,nosuid,nodev,uhelper=hal,uid=1002,utf8,flush)

опция не появилась. Кеды перезапустились вместе с халом сами.

# grep -r shortname /usr/share/hal/fdi/policy/
/usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi:      <append key="volume.mount.valid_options" type="strlist">shortname=lower</append>
/usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi:      <append key="volume.mount.valid_options" type="strlist">shortname=lower</append>
/usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi:      <append key="volume.mount.valid_options" type="strlist">shortnames</append>

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

> http://forum.vingrad.ru/topic-225771.html

к счстью, моя проблема проще, я попробовал смонтировать в ручную — всё получилось, как я хотел. Почему-то hal не подцепляет предложенный shortname=lower

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

lshal:

  info.product = 'Volume (vfat)'  (string)
  volume.mount.valid_options = {'ro', 'sync', 'dirsync', 'noatime', 'nodiratime', 'relatime', 'noexec', 'quiet', 'remount', 'exec', 'utf8', 'shortname=lower', 'codepage=', 'iocharset=', 'umask=', 'dmask=', 'fmask=', 'uid=', 'flush', 'utf8', 'shortname=lower'} (string list)

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

это для моей флэки такое пишет:

linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.7/usb2/2-4/2-4:1.0/host6/target6:0:0/6:0:0:2/block/sdg/sdg1' (string)

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

ТОгда еще смешне, на фотиках файлы чз оно место названы, там пофиг img_000.jpg или IMG_000.JPG, всек равно переименовывать.

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

> ТОгда еще смешне, на фотиках файлы чз оно место названы, там пофиг img_000.jpg или IMG_000.JPG, всек равно переименовывать

ещё не хватало их переименовывать... метки есть. имена в нижний регистр нужно только для синхронизации, а то после перехода на четверокеды повторяться фотки начали

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

> а вообще смонтируйте флешку и покажите запись в /proc/mounts для нее

перезагрузился даже.

lshal
udi = '/org/freedesktop/Hal/devices/volume_uuid_0000_0001'
  block.device = '/dev/sdg1'  (string)
  block.is_volume = true  (bool)
  block.major = 8  (0x8)  (int)
  block.minor = 97  (0x61)  (int)
  block.storage_device = '/org/freedesktop/Hal/devices/storage_serial_Generic__SD_MMC_20021111153705700_0_2'  (string)
  info.capabilities = {'volume', 'block'} (string list)
  info.category = 'volume'  (string)
  info.interfaces = {'org.freedesktop.Hal.Device.Volume'} (string list)
  info.parent = '/org/freedesktop/Hal/devices/storage_serial_Generic__SD_MMC_20021111153705700_0_2'  (string)
  info.product = 'Volume (vfat)'  (string)
  info.udi = '/org/freedesktop/Hal/devices/volume_uuid_0000_0001'  (string)
  linux.hotplug_type = 3  (0x3)  (int)
  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.7/usb2/2-4/2-4:1.0/host6/target6:0:0/6:0:0:2/block/sdg/sdg1'  (string)
  org.freedesktop.Hal.Device.Volume.method_argnames = {'mount_point fstype extra_options', 'extra_options', 'extra_options'} (string list)
  org.freedesktop.Hal.Device.Volume.method_execpaths = {'hal-storage-mount', 'hal-storage-unmount', 'hal-storage-eject'} (string list)
  org.freedesktop.Hal.Device.Volume.method_names = {'Mount', 'Unmount', 'Eject'} (string list)
  org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'} (string list)
  volume.block_size = 512  (0x200)  (int)
  volume.fstype = 'vfat'  (string)
  volume.fsusage = 'filesystem'  (string)
  volume.fsversion = 'FAT16'  (string)
  volume.ignore = false  (bool)
  volume.is_disc = false  (bool)
  volume.is_mounted = true  (bool)
  volume.is_mounted_read_only = false  (bool)
  volume.is_partition = true  (bool)
  volume.label = ''  (string)
  volume.linux.is_device_mapper = false  (bool)
  volume.mount.valid_options = {'ro', 'sync', 'dirsync', 'noatime', 'nodiratime', 'relatime', 'noexec', 'quiet', 'remount', 'exec', 'utf8', 'shortname=lower', 'codepage=', 'iocharset=', 'umask=', 'dmask=', 'fmask=', 'uid=', 'flush', 'utf8', 'shortname=lower'} (string list)
  volume.mount_point = '/media/disk'  (string)
  volume.num_blocks = 4018957  (0x3d530d)  (uint64)
  volume.partition.media_size = 2057830400  (0x7aa80000)  (uint64)
  volume.partition.number = 1  (0x1)  (int)
  volume.partition.start = 124416  (0x1e600)  (uint64)
  volume.size = 2057705984  (0x7aa61a00)  (uint64)
  volume.unmount.valid_options = {'lazy'} (string list)
  volume.uuid = '0000-0001'  (string)
cat /proc/mounts
/dev/sdg1 /media/disk vfat rw,nosuid,nodev,relatime,uid=1002,fmask=0022,dmask=0022,codepage=cp866,iocharset=cp1251,shortname=mixed,utf8,flush,errors=remount-ro 0 0
mount
/dev/sdg1 on /media/disk type vfat (rw,nosuid,nodev,uhelper=hal,uid=1002,utf8,flush)
name_no ★★
() автор топика
Ответ на: комментарий от name_no

в общем, судя по форумам, KDE4 нагло игнорирует мои и hal'а пожелания и монтирует так, как ему больше нравится.

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

>>ещё не хватало их переименовывать... метки есть

метки есть


Понятно, кушайте кактус не буду мешать, но был у меня случай что вся эта метахрень снеслась, остались только имена файлов, все такиии старый способ катологизации еще с бумажных альбомов рулит, а беспорядок + метки = еще больший бардак.

Флешки с опциями прописывать в fstab строчек конечно много будет, а в правила udev написать чтобы имена флехам давались непересекающиеся с внешними hdd

anonymous
()

/usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi

191 строка

<!-- allow these mount options for vfat -->
<match key=«volume.fstype» string=«vfat»>
<------><match key=«/org/freedesktop/Hal/devices/computer:system.kernel.name» string=«Linux»>
<------> <append key=«volume.mount.valid_options» type=«strlist»>utf8</append>
<------> <append key=«volume.mount.valid_options» type=«strlist»>shortname=</append>



сделать
<------> <append key=«volume.mount.valid_options» type=«strlist»>shortname=lower</append>


чтобы не перезаписывалось при переинсталляции , можно кусок с правилами поместить в пользовательский файл в /etc/hal/fdi/policy/something.fdi

Sylvia ★★★★★
()
desktop megabaks # grep disk /etc/mtab
/dev/sdb2 /media/disk vfat rw,nosuid,nodev,uhelper=hal,uid=1000,utf8,shortname=mixed,flush 0 0
desktop megabaks # ls -lh /media/disk/
итого 169M
-rwxr-xr-x 1 megabaks root 9,8M Фев  6  2010 Dj_Mutante-Confusion_Rmx.mp3
-rwxr-xr-x 1 megabaks root 7,2M Фев  6  2010 DJ_Mutante-Die_Just_Die.mp3
-rwxr-xr-x 1 megabaks root 8,1M Фев  6  2010 DJ_Mutante-I_m_Not_A_Jock.mp3
-rwxr-xr-x 1 megabaks root 122M Фев  6  2010 stage3-i686-20100126.tar.bz2
-rwxr-xr-x 1 megabaks root 5,3M Фев  6  2010 Stratovarius-Against_The_Wind.mp3
-rwxr-xr-x 1 megabaks root 7,1M Фев  6  2010 Stratovarius-Destiny.mp3
-rwxr-xr-x 1 megabaks root 9,5M Фев  6  2010 Stratovarius-Millennium.mp3
desktop megabaks # 

всё искаропки - что вы делаете для таких косяков? не понимаю

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

это я сделал по первому вашему совету, только у меня строка пониже находится:

210       <match key="volume.fstype" string="vfat">
211         <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
212           <append key="volume.mount.valid_options" type="strlist">utf8</append>
213           <append key="volume.mount.valid_options" type="strlist">shortname=lower</append>
214           <append key="volume.mount.valid_options" type="strlist">codepage=</append>

Более того, я создал файл

# cat /etc/hal/fdi/policy/10-vfat.fdi
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<device>
        <match key="storage.media_check_enabled" bool="false">
                <match key="storage.no_partitions_hint" bool="true">
                        <append key="volume.mount.valid_options" type="strlist">utf8</append>
                        <append key="volume.mount.valid_options" type="strlist">shortname=lower</append>
                </match>
        </match>
        <match key="volume.fsusage" string="filesystem">
                <match key="volume.fstype" string="vfat">
                        <append key="volume.mount.valid_options" type="strlist">utf8</append>
                        <append key="volume.mount.valid_options" type="strlist">shortname=lower</append>
                </match>
        </match>
</device>
</deviceinfo>
в котором продублировал эту настройку, он тоже, судя пол lshal учитывается.

я уже сам чувствую себя глупо и понимаю, как нелепо это выглядит.

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

>что вы делаете для таких косяков?

Да, красноглазики - они такие :3

anon_666
()
Ответ на: комментарий от megabaks

> или ты хочешь ВСЕ имена только в нижнем регистре?

только те, которые 8.3. Фотоаппарат, похоже, не сохраняет для них длинное имя, только короткое.

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

> и если да - что паказывать?

вот если б я знал, что показывать — я бы сам нашёл, что туда вписать ))))

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

>CONFIG_FAT_DEFAULT_IOCHARSET=«cp1251»
ну кто ж так делает...
хотя дело наверное не совсем в этом, но все же


$cat /boot/config-2.6.32.19-lu |grep FAT
# DOS/FAT/NT Filesystems
CONFIG_FAT_FS=m
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=866
CONFIG_FAT_DEFAULT_IOCHARSET=«utf8»

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

> ну кто ж так делает...

убедили вдвоём, пробую

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

> есть ещё идеи?

у меня подозрение на кде-шного монтировщика, потому что руками монтируется как надо, если добавить shortname=lower к опциям, взятым из mtab

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

> есть ещё идеи?

переконпелял ведро и ребутнулся. Не помогло (я и не сомневался)

# zgrep FAT /proc/config.gz
# DOS/FAT/NT Filesystems
CONFIG_FAT_FS=m
CONFIG_VFAT_FS=m
CONFIG_FAT_DEFAULT_CODEPAGE=866
CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
name_no ★★
() автор топика
Ответ на: комментарий от megabaks

> с ноября(это то что я точно помню) таких проблем не было

у тебя проблемы не будет, потому что у тебя длинные имена файлов.

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

очень интересно. смотнтировал через kde-монтировщик, проверил опции, перемонтировал через pmount, проверил опции и удивился:

mediacenter ~ # mount | grep sdg1
/dev/sdg1 on /media/disk type vfat (rw,nosuid,nodev,uhelper=hal,uid=1002,utf8,flush)
mediacenter ~ # pumount /dev/sdg1
mediacenter ~ # pmount /dev/sdg1
mediacenter ~ # mount | grep sdg1
/dev/sdg1 on /media/sdg1 type vfat (rw,noexec,nosuid,nodev,quiet,shortname=mixed,uid=0,gid=444,umask=077,fmask=0177,dmask=0077,utf8,iocharset=iso8859-1)

что примечательно, оба одинаково положительно кладут на то, что прописано в полиси... мне кажется, что они читают какую-то другую полиси...

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

Для тех у кого хладагент потек, сообщаем что все эти полиси доживают как и хал последнии дни, в последних версиях хала опции монтирования не действуют, опции должен передавать монтировщик в гнуме в реестр лезть в кеда хз куда.

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

$PMOUNT_SOURCE/src/fs.c

static struct FS supported_fs[] = {
{ «vfat», «nosuid,nodev,user,quiet,shortname=mixed», 1, «077»,.
",iocharset=%s",",fmask=%04o,dmask=%04o"},


патчим вручную , отписываем в багзиллу ?)

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

> патчим вручную , отписываем в багзиллу ?)

Извини, я в багзиллы им не пишу. Во-первых, недостаточно знаю язык, во-вторых — ещё ни одного моего бага они не исправили. Я буду благодарен тебе, если отправишь им в багзиллу. Пока беседовал здесь, ещё гуглил немного, нашёл, что монтировщики и kde и гнома используеют найденную нами ветвь настроек хала только как список допустимых опций (оно так из названия и видно) а уже список используемых опций составляют сами. причём если в гноме есть какой-то интерфейс, который все называют ужасным, позволяющий это настроить, то в кедах, похоже, ни настроек нет вообще, ни возможности это настроить хоть как-то.

Кстати, хотел прописать в fstab — так она теперь вообще не монтируется. Ошибкатакая хитрая: «Device /dev/sdg1 is listed in /etc/fstab. Refusing to mount»

Так что я патчу ((

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