Pagina 1 di 1

Disco esterno NTFS [risolto]

Inviato: lun 10 nov 2008, 23:14
da xpaolo
Ho due problemi con un disco esterno USB laciè da 250G. Il primo sono riuscito a risolverlo da me, per il secondo chiedo aiuto quì. Il primo lo descrivo, magari torna utile ad altri. In sostanza ho formatato il disco in ntfs, prima era in reiser. Da kde 3.5.10 ero abituato a montare il disco cliccando con il tasto destro sull'icona del desktop che compariva dopo l'inserimento e selezionando sul menù contestuale 'monta'. Dopo il cambiamento di filesystem purtroppo mi compariva sempre l'errore "wrong filesystem type (...)" su una finestra intitolata "kio_media_mounthelper". Con lshal ho scoperto che il disco veniva riconosciuto ma con filesystem reiser. Il tentativo di montaggio ovviamente falliva sempre. La soluzione è stata quella di togliere il disco, inserire una chiavetta di memoria flash in modo che a questa venisse assegnato l'identificatore del dispositivo fino ad allora associato al disco esterno (sdc1) quindi inserire il disco esterno al quale è stato assegnato, a questo punto, un nuovo dispositivo (sdh1). Non so cosa sia successo ma alla fine ho verificato con lshal che il disco veniva riconosciuto corretamente e infatti il montaggio da kde funziona ora correttamente.
Purtroppo cominciando a riempire il disco sono incorso nel secondo problema: per qualche motivo i nomi di file NON possono contenere caratteri particolari (òàùè° ecc.). Ho verificato che ntfs-3g permette l'utilizzo di questi caratteri nei nomi di file e infatti montando 'a mano' con mount -t ntfs-3g /dev/sdh1 /media/LACIE riesco a copiare ed a scrivere di tutto. Montando invece 'in automatico' dal desktop di kde ho questo problema. A qualcuno è mai capitato ? Sembra priprio che l'ultima versione di hal dia qualche problemino...
Il tutto su una Slackware-current

Re: Disco esterno NTFS

Inviato: lun 10 nov 2008, 23:34
da slux
Credo che sia legato alle codepage,in soldoni non usi utf8 che è FONDAMENTALE per ntfs.
Dai un'occhiata al man di mount nella sezione ntfs.
Comunque posta anche il contenuto di /etc/fstab magari hai un'errore lì

Re: Disco esterno NTFS

Inviato: lun 10 nov 2008, 23:43
da xpaolo
/etc/fstab non contiene nessuna voce per i dischi/chiavette USB. Credo anch'io sia un problema di codepage ma, come ho già detto, se eseguo il mount manuale (senza specificare codepage) il disco è perfettamente utilizzabile. E' il mount automatico che non funziona correttamente ma a questo punto NON so con quali parametri viene effettuato. Credo l'unica informazione utile sia l'output di lshal:

udi = '/org/freedesktop/Hal/devices/volume_uuid_7EEC02D2EC02851D'
block.device = '/dev/sdh1' (string)
block.is_volume = true (bool)
block.major = 8 (0x8) (int)
block.minor = 113 (0x71) (int)
block.storage_device = '/org/freedesktop/Hal/devices/storage_serial_SAMSUNG_HM250JI_152D203380B6_0_0' (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_SAMSUNG_HM250JI_152D203380B6_0_0' (string)
info.product = 'LACIE' (string)
info.udi = '/org/freedesktop/Hal/devices/volume_uuid_7EEC02D2EC02851D' (string)
linux.hotplug_type = 3 (0x3) (int)
linux.sysfs_path = '/sys/block/sdh/sdh1' (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)
storage.model = '' (string)
volume.block_size = 512 (0x200) (int)
volume.fstype = 'ntfs-3g' (string)
volume.fsusage = 'filesystem' (string)
volume.fsversion = '3.1' (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 = 'LACIE' (string)
volume.linux.is_device_mapper = false (bool)
volume.mount.valid_options = {'locale=', 'ro', 'sync', 'dirsync', 'noatime', 'nodiratime', 'noexec', 'quiet', 'remount', 'exec'} (string list)
volume.mount_point = '/media/LACIE' (string)
volume.num_blocks = 488392002 (0x1d1c4542) (int)
volume.partition.flags = {} (string list)
volume.partition.label = '' (string)
volume.partition.media_size = 250059350016 (0x3a38b2e000) (uint64)
volume.partition.number = 1 (0x1) (int)
volume.partition.scheme = 'mbr' (string)
volume.partition.start = 32256 (0x7e00) (uint64)
volume.partition.type = '0x07' (string)
volume.partition.uuid = '' (string)
volume.policy.mount_filesystem = 'ntfs-3g' (string)
volume.size = 250056705024 (0x3a388a8400) (uint64)
volume.unmount.valid_options = {'lazy'} (string list)
volume.uuid = '7EEC02D2EC02851D' (string)

ma non mi sembra di vedere niente di strano.

Re: Disco esterno NTFS

Inviato: mar 11 nov 2008, 15:55
da 414N
Il mount manuale probabilmente funziona bene perché hai una variabile d'ambiente LOCALE che specifica il locale da usare per montare il disco.
Prova a impostare LANG=en_US e monta manualmente il disco. Se è come penso, non dovresti essere in grado di visualizzare nomi di file/directory con caratteri accentati.

Re: Disco esterno NTFS

Inviato: mar 11 nov 2008, 16:31
da phobos3576
Ne avevamo discusso parecchio qui su Slacky; da qualche parte ci dovrebbe essere il relativo thread.

A quanto pare, sulla Slackware non c'è verso di indicare ad HAL il valore corretto per il parametro "locale"; invece, con il mount manuale funziona tutto proprio perché l'utente può indicare direttamente la codifica dei caratteri da usare (ad esempio, it_IT@euro).
Come ho scritto però in un'altra discussione, tempo fa ho provato il LiveCD della OpenSuse11 e, in quel caso, HAL funziona alla perfezione; infatti, ho collegato un HD USB formattato in NTFS e HAL ha eseguito il mount con il valore adeguato di "locale", tanto che nel file-manager ho potuto visualizzare perfettamente nomi di file e directory contenenti vocali accentate.

Bisognerebbe quindi studiarsi per bene la struttura dei vari script utilizzati da HAL sulla OpenSuse.

Re: Disco esterno NTFS

Inviato: mer 12 nov 2008, 0:46
da xpaolo
Mhm....non so. Sembra anche a me un problema di localizzazione ma:

paolo@slackbox ~ $ locale
LANG=it
LC_CTYPE="it_IT@euro"
LC_NUMERIC="it_IT@euro"
LC_TIME="it_IT@euro"
LC_COLLATE="it_IT@euro"
LC_MONETARY="it_IT@euro"
LC_MESSAGES="it_IT@euro"
LC_PAPER="it_IT@euro"
LC_NAME="it_IT@euro"
LC_ADDRESS="it_IT@euro"
LC_TELEPHONE="it_IT@euro"
LC_MEASUREMENT="it_IT@euro"
LC_IDENTIFICATION="it_IT@euro"
LC_ALL=it_IT@euro

mentre da root ho tutto su en_US. La localizzazione italiana la imposto solo sull'utente paolo (da ~/.bash_profile) , la localizzazione di sistema e di root la lascio al default di slackware. Il montaggio mi funziona solo da root, quindi con localizazione inglese. E' vero che senza login la localizzazione dovrebbe essere quella di default di slackware ovvero sempre en_US (da /etc/profile.d/lang.sh) quindi non vedo perchè non funzioni con hal. Boh. Ho provato a montare il disco da root, creare un file di nome "paolo è grande", nessun problema. Smonto il disco e lo rimonto in automatico, il file è sparito. Smonto il disco e lo rimonto in manuale il file ricompare. Sono sempre più convinto che sia un problema di hal. Ma nessuno di voi ha un disco usb formattato ntfs-3g e riporta i miei stessi problemi ???

Re: Disco esterno NTFS [risolto]

Inviato: mer 12 nov 2008, 1:32
da xpaolo
OK, ravanando in giro (web) ho trovato che parecchie altre persone hanno avuto il mio stesso problema e il workaround migliore l'ho trovato quì:
http://wiki.archlinux.org/index.php/HAL
In particolare questo è stato risolutivo:
Locale issues

If you use KDE, you may have problem with filenames containing non-latin characters. This happens because KDE's mounthelper is not parsing the policies and locale option correctly. There is a workaround for this:

1) Remove this symlink: rm /sbin/mount.ntfs-3g

2) Replace it with a new bash script containing:

#!/bin/bash
/bin/ntfs-3g $1 "$2" -o locale=en_US.UTF-8,$4 #put your own locale here

3) Make it executable: chmod +x /sbin/mount.ntfs-3g
Ho creato /sbin/mount.ntfs-3g così:

Codice: Seleziona tutto

#!/bin/bash
/bin/ntfs-3g $1 "$2" -o locale=it_IT@euro
e ora il mount automatico funziona. Potrei provare ad impostare la localizzazione del sistema in it_IT@euro (su /etc/profile.d/lang.sh) e vedere cosa succede ma preferisco tenermi il sistema in inglese e solo l'utente 'paolo' in italiano.

Grazie a tutti per l'interessamento.

Re: Disco esterno NTFS

Inviato: mer 12 nov 2008, 11:33
da 414N
xpaolo ha scritto: Grazie a tutti per l'interessamento.
Grazie a te per aver riportato il workaround da usare.
PS: metti il tag risolto al titolo del primo post che thread, in modo che l'intero thread cambi titolo.

Re: Disco esterno NTFS

Inviato: mer 12 nov 2008, 11:38
da conraid
Creare un file /etc/hal/fdi/policy/10osvendor10-ntfs-3g-policy.fdi

Codice: Seleziona tutto

<?xml version="1.0" encoding="UTF-8"?>

<deviceinfo version="0.2">
  <device>
    <match key="volume.fstype" string="ntfs">
      <match key="@block.storage_device:storage.hotpluggable" bool="true">
        <merge key="volume.fstype" type="string">ntfs-3g</merge>
        <merge key="volume.policy.mount_filesystem" type="string">ntfs-3g</merge>
        <append key="volume.mount.valid_options" type="strlist">locale=it_IT@euro</append>
      </match>
    </match>
  </device>
</deviceinfo>
Non fa quel che vuoi?

Re: Disco esterno NTFS

Inviato: mer 12 nov 2008, 18:39
da phobos3576
No Conraid. Ne avevamo già parlato in un'altra discussione; in pratica, l'automount sotto KDE sembra ignorare la localizzazione specificata in quel policy file!
Nel mio caso, ad esempio, anche specificando it_IT@euro viene ugualmente usato it_IT.UTF-8

Viene anche ignorata la localizzazione del sistema in italiano.

Re: Disco esterno NTFS [risolto]

Inviato: mer 12 nov 2008, 20:58
da xpaolo
Allora continuo ad analizzare il problema. Ho ricreato il link /sbin/mount.ntfs-3g a /bin/ntfs-3g. Da root ho montato il disco con mount -t ntfs-3g -o locale=en_US /dev/sdc1 /media/LACIE. Guardando /var/log/messages:
  • Nov 12 19:49:13 slackbox ntfs-3g[4424]: Version 1.5012 integrated FUSE 27
    Nov 12 19:49:13 slackbox ntfs-3g[4424]: Mounted /dev/sdc1 (Read-Write, label "LACIE", NTFS 3.1)
    Nov 12 19:49:13 slackbox ntfs-3g[4424]: Cmdline options: rw,locale=en_US
    Nov 12 19:49:13 slackbox ntfs-3g[4424]: Mount options: rw,silent,allow_other,nonempty,relatime,fsname=/dev/sdc1,blkdev,blksize=4096
    Nov 12 20:12:57 slackbox ntfs-3g[4424]: Unmounting /dev/sdc1 (LACIE)
Il disco funziona perfettamente ovvero compare il file di nome "Paolo è grande". Questo per dire che anche con la localizzazione di default di slackware NON ci dovrebbero essere problemi.
Se monto senza specificare il locale con mount -t ntfs-3g /dev/sdc1 /media/LACIE
  • Nov 12 20:23:12 slackbox ntfs-3g[5531]: Version 1.5012 integrated FUSE 27
    Nov 12 20:23:12 slackbox ntfs-3g[5531]: Mounted /dev/sdc1 (Read-Write, label "LACIE", NTFS 3.1)
    Nov 12 20:23:12 slackbox ntfs-3g[5531]: Cmdline options: rw
    Nov 12 20:23:12 slackbox ntfs-3g[5531]: Mount options: rw,silent,allow_other,nonempty,relatime,fsname=/dev/sdc1,blkdev,blksize=4096
E il disco funziona perfettamente !

Eseguo il montaggio in automatico da KDE:
  • Nov 12 20:28:31 slackbox hald: mounted /dev/sdc1 on behalf of uid 1000
    Nov 12 20:28:31 slackbox ntfs-3g[5725]: Version 1.5012 integrated FUSE 27
    Nov 12 20:28:31 slackbox ntfs-3g[5725]: Mounted /dev/sdc1 (Read-Write, label "LACIE", NTFS 3.1)
    Nov 12 20:28:31 slackbox ntfs-3g[5725]: Cmdline options: rw,nosuid,nodev,uhelper=hal,locale=it
    Nov 12 20:28:31 slackbox ntfs-3g[5725]: Mount options: rw,nosuid,nodev,uhelper=hal,silent,allow_other,nonempty,relatime,fsname=/dev/sdc1,blkdev,blksize=4096
    Nov 12 20:28:48 slackbox ntfs-3g[5725]: Skipping unrepresentable filename (inode 18873): Invalid or incomplete multibyte or wide character
L'ultima riga compare solo quando apro il disco con conqueror e fa riferimento ovviamente al file "Paolo è grande" che, non essendo rappresentabile, SPARISCE dalla lista dei file come se non esistesse. Noto che il locale che passa hald è "it", degli altri parametri ignoro il significato.
Se cancello il link /sbin/mount.ntfs-3g e gli rimetto lo script oggetto del workaround e monto il disco in automatico:
  • Nov 12 20:34:12 slackbox ntfs-3g[5940]: Version 1.5012 integrated FUSE 27
    Nov 12 20:34:12 slackbox ntfs-3g[5940]: Mounted /dev/sdc1 (Read-Write, label "LACIE", NTFS 3.1)
    Nov 12 20:34:12 slackbox ntfs-3g[5940]: Cmdline options: locale=it_IT@euro
    Nov 12 20:34:12 slackbox hald: mounted /dev/sdc1 on behalf of uid 1000
    Nov 12 20:34:12 slackbox ntfs-3g[5940]: Mount options: silent,allow_other,nonempty,relatime,fsname=/dev/sdc1,blkdev,blksize=4096
In questo caso il locale che viene utilizzato è forzato ad it_IT@euro e ovviamente il disco funziona perfettamente. Sembra che il problema stia tutto in quel "it" vs "it_IT@euro".
Allora ho rimesso il link ed eseguito un mount -t ntfs-3g -o locale=it /dev/sdc1 /media/LACIE/ che, sorpresa, restituisce un
Guardando in /var/log/messages:
  • Nov 12 20:40:15 slackbox ntfs-3g[6220]: Version 1.5012 integrated FUSE 27
    Nov 12 20:40:15 slackbox ntfs-3g[6220]: Mounted /dev/sdc1 (Read-Write, label "LACIE", NTFS 3.1)
    Nov 12 20:40:15 slackbox ntfs-3g[6220]: Cmdline options: rw,locale=it
    Nov 12 20:40:15 slackbox ntfs-3g[6220]: Mount options: rw,silent,allow_other,nonempty,relatime,fsname=/dev/sdc1,blkdev,blksize=4096
E il disco funziona perfettamente. Quindi "it" oppure "it_IT@euro" vanno bene ugualmente. Alla fine mi sembra che il disco funzioni con qualunque localizzazione, al limite anche con nessuna. Ma allora lo script che sostituisce il link simbolico, forzando la localizzazione, non dovrebbe cambiare niente e invece qualcosa fa. Forse semplicemente sopprime i parametri dopo $1 e $2 e la cosa è sufficiente per eseguire un mount diverso. Infatti senza workaround:
  • Nov 12 20:28:31 slackbox ntfs-3g[5725]: Mount options: rw,nosuid,nodev,uhelper=hal,silent,allow_other,nonempty,relatime,fsname=/dev/sdc1,blkdev,blksize=4096
con workaround invece:
  • Nov 12 20:34:12 slackbox ntfs-3g[5940]: Mount options: silent,allow_other,nonempty,relatime,fsname=/dev/sdc1,blkdev,blksize=4096
Le differenze stanno in questi parametri "rw,nosuid,nodev,uhelper=hal" che evidentemente causano il problema.

Non so cos'altro analizzare. Per adesso mi tengo il workaround indicato ma mi sembra sia un problema da attribuire ad hal.

Re: Disco esterno NTFS [risolto]

Inviato: mer 12 nov 2008, 21:49
da phobos3576
XPaolo, scusa ma, in un precedente messaggio hai scritto che lo script che risolve il problema ha questa struttura:

Codice: Seleziona tutto

#!/bin/bash
/bin/ntfs-3g $1 "$2" -o locale=en_US.UTF-8,$4
Nel tuo caso hai creato questo script:

Codice: Seleziona tutto

#!/bin/bash
/bin/ntfs-3g $1 "$2" -o locale=it_IT@euro
Ma quel "$4" presente nel primo script lo hai messo anche nel tuo o te lo sei dimenticato?

Te lo chiedo per sapere se influisce o meno sull'automount.

P.S. Ho notato che il problema si presenta anche con l'automount delle penne USB con filesystem VFAT32; se il filesystem è EXT3, invece, le vocali accentate vengono gestite correttamente.

Re: Disco esterno NTFS [risolto]

Inviato: gio 13 nov 2008, 0:08
da xpaolo
Io ho solo riportato quanto presente nel link. Ho solo fatto un copia/incolla da quì: http://wiki.archlinux.org/index.php/HAL. Siccome la prima versione
  • /bin/ntfs-3g $1 "$2" -o locale=en_US.UTF-8,$4 #put your own locale here
mi causava un errore ho usato l'"alternative solution" togliendo il ",$4"
  • /sbin/mount.ntfs-3g.sav $1 $2 -o locale=de_DE.UTF-8
adesso che me lo fai notare però il $2 non è tra doppi apici quì. Boh. Questa è la versione che sto usando:
  • #!/bin/bash
    /bin/ntfs-3g $1 "$2" -o locale=it_IT@euro
comunque sia FUNZIONA!