Udev hal ntfs-3g

Introduzione

Le esperienze che hanno portato a questa guida sono state effettuate su slackware-current. Apparentemente non ci sono controindicazione per utilizzarla anche su slackware 11, se qualcuno portasse a buon fine tale impresa me lo segnali, che così elimino il dubbio.

Premessa

Dopo aver configurato hal, per ottenere la funzionalità automount in kde, mi sono trovato ad affrontare il problema di dover montare un disco esterno usb formattato in NTFS. Ovviamente il desiderio sarebbe stato quello di poter anche scrivere sul disco. Per quanto riguarda la configurazione di kdebase per il supporto di hal rimando ad un'altro articolo presente in questo wiki.

Requisiti

  1. Un PC (eh eh) con Linux (preferibilmente Slckware).
  2. Kernel della serie 2.6.x (io uso la 2.6.21)
  3. Fuse scaricabile da http://fuse.sourceforge.net/ (attualmente 2.6.5)
  4. ntfs-3g scaricabile da http://www.ntfs-3g.org/ (attualmente 1.417)
  5. udev scaricabile da http://www.kernel.org/pub/linux/utils/kernel/hotplug/ (attualmente 111)
  6. hal scaricabile da http://people.freedesktop.org/~david/dist/ (attualmente 0.5.9)

Preparazione

Supponiamo ora di avere kdebase ricompilato col supporto per hal e l'automount funzionante secondo questa guida

Per i più pigri sia su slacky sia sul mio sito trovate gli SlackBuild e tutto quanto necessario per la corretta compilazione.

Scarichiamo fuse, necessario per poter compilare ntfs-3g. Quindi diamo semplicemente i classici:

  tar xvzf fuse-x.xx.tar.gz
  cd fuse-x.xx
  ./configure --prefix=/usr
  make
  make install
  

Aggiungete quindi ad rc.local la chiamata per eseguire /etc/rc.d/rc.fuse.

Ora scarichiamo ntfs-3g Come il solito:

  tar xvzf ntfs-3g-x.xxx.tgz
  cd ntfs-3g-x.xxx
  ./configure --prefix=/usr
  make
  make install

Purtroppo ntfs-3g richiede i diritti di root per montare le partizioni, quindi per montarle anche come utente bisogna impostare dare:

  chmod +s /usr/bin/ntfs-3g

Bingo!! Se tutto è andato a buon fine abbiamo ora il supporto per scrivere su ntfs.

Ora tocca ricompilare udev per sostituire il supporto ntfs (di default) con ntfs-3g Quì consiglio in primis di utilizzare lo SlackBuild presente sul mio sito (una patetica modifica a quello ufficiale, modificato solo per patchare un file).

Comunque è sufficente scaricare il tutto anche da slackware e andare a modificare un file nei sorgenti. Verso la fine di udev-xxx/extras/volume_id/lib/ntfs.c (nel 111 alla riga 191) trovate questa riga

  id->type = "ntfs";

modificatela così

  id->type = "ntfs-3g";

Ricompilate udev o utilizzate lo SlackBuild, come preferite.

In fine andiamo a modificare alcune impostazioni di hal affinchè possa gestire il filesystem ntfs-3g. Apriamo il file /usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi posizionamoci subito prima di


ed inseriamo queste righe:

    <match key="volume.fstype" string="ntfs-3g">
    <append key="volume.mount.valid_options" type="strlist">nonempty</append>
    <append key="volume.mount.valid_options" type="strlist">show_sys_files</append>
    <append key="volume.mount.valid_options" type="strlist">silent</append>
    <append key="volume.mount.valid_options" type="strlist">no_def_opts</append>
    <append key="volume.mount.valid_options" type="strlist">dmask=</append>
    <append key="volume.mount.valid_options" type="strlist">fmask=</append>
    <append key="volume.mount.valid_options" type="strlist">uid=</append>
    <append key="volume.mount.valid_options" type="strlist">locale=</append>
    </match>

Riavviamo i servizi hal e udev ed ecco fatto. D'ora in poi gli hard disk esterni formattati in ntfs verranno montati con la possibilità di scrittura.

Buon divertimento !!!

Credits

Sottolineo che quanto scritto non è farina del mio sacco, ma solo la descrizione di come seguendo guide altrui ho raggiunto lo scopo, ringrazio quindi tutti gli autori delle guide ed il mio eterno pungolo gohanz ("se va a lui deve andare anche a me" è il mio motto).

gnubit