Utilizzare una partizione Windows sotto openSuSE

Molto spesso dopo l'installazione della nostra distribuzione preferita, ci si trova nell'impossibilità di poter accedere ai nostri dati presenti su Windows, questo avviene perchè i punti di mount non sono stati fissati all'inizio, vediamo in questa breve guida come rimediare al problema.
Differentemente da quanto accade sotto Windows, il sistema Linux rappresenta qualunque dispositivo come un file, un drive fisico non fa eccezione, questi file vengono custoditi nella cartella /dev (dall'inglese device o dispositivo).
Per poter accedere al nostro disco, dobbiamo assicurarci che il sistema abbia creato il corrispondente file di dispositivo quindi creare una cartella accessibile in lettura e scrittura dal nostro utente per eseguire l'operazione di mount del file di dispositivo sulla cartella.
Il kernel di linux utilizza la directory /proc per rappresentare lo stato del sistema anche stavolta sottoforma di file, qui sotto potrete trovare l'elenco dei vostri processi in esecuzione rappresentati da un PID, oppure le caratteristiche della cpu ecc... quello che ci interessa leggere è il file partitions.

$ cat /proc/partitions
major minor  #blocks  name
   3     0   39088896 hda
   3     1   28675993 hda1
   3     2          1 hda2
   3     5     779121 hda5
   3     6    9325701 hda6
   3     7     305203 hda7
   3    64   80043264 hdb
   3    65   80035798 hdb1

Tralasciando le prime due colonne si nota già qualcosa di interessante: i dischi EIDE vengono indicati con la sigla hdx dove x può essere un valore tra a,b,c,d a seconda del "posizionamento" del disco:

hda

Disco Master Canale primario

hdb

Disco Slave Canale primario

hdc

Disco Master Canale secondario

hdd

Disco Slave Canale secondario

il numero che segue la lettera indica il numero della partizione su quel disco.
In caso di dischi Serial Ata, o dischi esterni USB (comprese le penne USB), nella sigla iniziale la h viene sostituita dalla s, quindi si avrà sda1, sda2, sdb1, sdb2...
La dimensione della partizione indicata nella terza colonna è molto spesso un indizio sufficiente, per chi vuole qualche informazione in più può lanciare il comando fdisk -l

$ su
Password
# fdisk -l
Disk /dev/hda: 40.0 GB, 40027029504 bytes
255 heads, 63 sectors/track, 4866 cylinders
Units = cilindri of 16065 * 512 = 8225280 bytes

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/hda1               1        3570    28675993+   c  W95 FAT32 (LBA)
/dev/hda2            3571        4866    10410120    f  W95 Ext'd (LBA)
/dev/hda5            3571        3667      779121   82  Linux swap / Solaris
/dev/hda6   *        3668        4828     9325701   83  Linux
/dev/hda7            4829        4866      305203+  83  Linux

Disk /dev/hdb: 81.9 GB, 81964302336 bytes
255 heads, 63 sectors/track, 9964 cylinders
Units = cilindri of 16065 * 512 = 8225280 bytes

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/hdb1   *           1        9964    80035798+   c  W95 FAT32 (LBA)

Tirando le somme i file che ci interessano sono proprio /dev/hda1 e /dev/hdb1.
Passiamo alla creazione del punto di mount: solitamente openSuSE utilizza come percorso principale /windows, ma si potrebbe tranquillamente crearla sotto /mnt o /media, inoltre dobbiamo cercare un gruppo da associare a questa cartella che sia in comune con il nostro account.
Digitando il comando groups si conoscono i vari gruppi associati al nostro utente.

$ groups
users,dialout,video

Il gruppo users è quello che andremo a utilizzare nel nostro esempio.
Apriamo una sessione di shell e digitiamo i seguenti comandi:

$ cd /windows
$ su
Password
# mkdir C
# mkdir D
# chgrp users C
# chmod g+rw C
# chgrp users D
# chmod g+rw D

Con il comando chgrp si assegna il gruppo di lavoro per le cartelle C e D inoltre con chmod si da a chiunque appartenga al gruppo users il diritto di usufruire di questa cartella in lettura e scrittura.

Partizione fat32

Il supporto per questo tipo è collaudatissimo da tempi immemori, per proseguire dovrete semplicemente editare il file /etc/fstab

# vi /etc/fstab

e aggiungere le seguenti linee:

/dev/hda1 /windows/C vfat users,gid=users,umask=0002,utf8=true 0 0
/dev/hdb1 /windows/D vfat users,gid=users,umask=0002,utf8=true 0 0

Salvato il file si possono digitare i seguenti comandi:

# exit
$ mount /windows/C
$ mount /windows/D

Adesso potrete scrivere e leggere i file dei vostri dischi senza problemi.
Al riavvio le partizioni rimarranno montate quindi non avrete bisogno di riscrivere i comandi di mount, se invece voleste smontare le partizioni basterà fare l'operazione inversa con il comando umount.

$ umount /windows/C
$ umount /windows/D

Partizione NTFS

Il supporto per NTFS è stato rilasciato come modulo per kernel, questo ci consentirà di utilizzare anche questa tipologia di partizioni in lettura e scrittura in maniera trasparente.
Purtroppo però c'è ancora un po' di confusione in merito all'utilizzo corretto dei pacchetti, ho provato a cercare nei vari forum dedicati a SuSE ma non avendo partizioni NTFS non ho potuto constatare la bontà delle affermazioni rilasciate.
Vi do un po' di riferimenti utili:

  1. Documentazione ufficiale openSuSE sul supporto NTFS
  2. Forum ntfs-3g su SuSE
  3. Il repository dei pacchetti di suser-jengelh
  4. Un altro repository contentente pacchetti per la openSuSE 10.2

L'elemento principale riguarda la corretta installazione dei pacchetti fuse e ntfs-3g.
Seguendo le indicazioni del riferimento (1) in mancanza dei pacchetti nei repository ufficiali vengono consigliati quelli di suser-jengelh, che necessitano di alcune modifiche al kernel, in alternativa il forum di ntfs-3g consiglia di scaricare i sorgenti e ricompilarli insieme al kernel.
Girovagando per i repository di SuSE ho invece scoperto la presenza di entrambi i pacchetti nel riferimento (4), volendo si può procedere a installare questo come repository e disabilitare temporaneamente gli altri, oppure scaricare i file rpm direttamente da li.
Volendo usare i repository già installati ci si può accertare della presenza dei due pacchetti tramite i comandi:

$ rug info fuse
$ rug info ntfs-3g

in caso di presenza dei due si può procedere utilizzando il tag install.

$ rug install fuse ntfs-3g

In caso contrario provate a scaricare entrambi i pacchetti dall'altro repository e installateli da root.

# rug install fuse-2.6.3-4.1.i586.rpm
# rug install ntfs-3g-1.0-2.1.i586.rpm

dopodichè bisogna editare il file /etc/fstab e inserire le seguenti linee:

/dev/hda1 /windows/C ntfs-3g users,gid=users,umask=0002,nls=utf8 0 0
/dev/hdb2 /windows/D ntfs-3g users,gid=users,umask=0002,nls=utf8 0 0

A questo punto potete salvare ed eseguire le restanti istruzioni:

# modprobe fuse
# exit
$ mount /windows/C
$ mount /windows/D

Le partizioni NTFS dovrebbero essere raggiungibili sia in lettura che scrittura.