Read/Write Αccess απο Linux σε Windows και αντίστροφα

Από Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ
Μετάβαση σε: πλοήγηση, αναζήτηση

Eισαγωγή

Μπορώ να έχω πρόσβαση απο Linux σε αρχεία που βρίσκονται σε partition των Windows,και απο Windows σε partition του Linux;

Για να απαντήσουμε στην ερώτηση,πρέπει να γνωρίζουμε μερικά πράγματα για τα συστήματα αρχείων που το κάθε λειτουργικό υποστηρίζει.

  • Τα Windows απ την έκδοση NT και μετά(2000,XP) χρησιμοποιούν το NTFS(New Technology File System) ως standard σύστημα αρχείων,ενώ υποστηρίζουν και το σύστημα αρχείων FAT που χρησιμοποιούσαν προηγούμενες εκδόσεις του λειτουργικού.
  • Απ την αλλη,το βασικό σύστημα αρχείων που χρησιμοποιει το Linux είναι το ext2/3fs.Το Linux υποστηρίζει επίσης και άλλα συστήματα αρχείων(reiserfs,XFS,JFS,και FAT).

Και τώρα ήρθε η ώρα να απαντήσουμε στην ερώτηση. Μπορώ να έχω πρόσβαση:

Από Linux σε αρχεία που βρίσκονται σε partition ΝΤFS των Windows;

Read Access

Το Linux απ την έκδοση 2.20 και μετά μπορει να διαβάζει NTFS partitions, πράγμα που σημαίνει ότι μπορούμε απο Linux να έχουμε read access σε αρχεία που βρίσκονται σε NTFS partition των Windows.

Για να αποκτήσουμε read access σε κάποιο NTFS partition:

1)αρχικά βρίσκουμε που βρισκεται το συγκεκριμένο partition(πχ /dev/hda1 ή /dev/sda1) πληκτρολογώντας ως root:

   fdisk -l /dev/hda για IDE δίσκους, ή
   fdisk -l /dev/sda για SCSI(ή SATA) δίσκους(/dev/sdb για τον δεύτερο SCSI/SATA κλπ)

2)Δημιουργούμε έναν φάκελο στον οποίο θέλουμε να "έχουμε" το partition(πχ στο /mnt/windows) και κάνουμε mount το partition στο σύστημα αρχείων του Linux,στον φάκελο αυτό(ως root):

   mkdir /mnt/windows
   mount /dev/hda1 /mnt/windows/ -t ntfs -o nls=utf8,umask=0222

Η παράμετρος για τα ελληνικά filenames σε NTFS(nls=utf8) ίσως προκαλέσει προβλήματα αν το σύστημά μας δεν έχει UTF-8 locale.

Mε την παράμετρο umask=0222 ορίζουμε τα permissions που θα έχουν τα αρχεία του NTFS στο Linux σε read/execute για όλους τους χρήστες. Μπορούμε να επιλέξουμε οποιοδήποτε φάκελο για να κάνουμε mount το νέο partition.Όμως συνήθως δημιουργούμε έναν φάκελο στο default mount folder (συνήθως το /mnt ή το /media) για το partition που θέλουμε.

Για να γίνεται αυτή η διαδικασία κάθε φορά κατά την εκκίνηση του συστήματος πρέπει να προσθέσουμε μια γραμμή στο αρχείο /etc/fstab :

   /dev/hda1       /media/windows  ntfs   nls=utf8,umask=0222      0       0

Για να "αφαιρέσουμε" το partition απ το σύστημα αρχείων,γράφουμε(ως root):

   umount /media/windows/

Write Access

Η τροποποίηση αρχείων(write access) απο Linux σε NTFS είναι εφικτή αλλά δεν θεωρείται ακόμα τόσο αξιόπιστη.Σε αυτή τη σελίδα υπάρχουν πληροφορίες σχετικά με την δυνατότητα write access απο Linux σε NTFS.Aυτό γίνεται με τρεις διαφορετικούς τρόπους:

1)με τη βοήθεια ενός kernel driver(η αξιόπιστη μέθοδος) ο οποίος επιτρέπει να κάνεις rewrite αρχεία σε NTFS partitions,αλλά δεν επιτρέπει τη διαγραφή τους,ή την δημιουργία νέων.Σ'αυτήν την περίπτωση για να έχουμε write access αρκεί να αλλάξουμε το umask από 0222 σε 0002.

2)με τη βοήθεια του πακέτου προγραμμάτων ntfsprogs το οποίο περιλαμβάνει μεταξύ άλλων και έναν βελτιωμένο driver(ntfsmount) που παρέχει τις ίδιες δυνατότητες με τον kernel driver αλλά υποστηρίζει και την διαγραφή αρχείων,τη μετονομασία τους και έχει μερικές ακόμα δυνατότητες.Βέβαια,ακόμα το ntfsprogs και ο driver είναι σε πειραματικό στάδιο.

Για να έχουμε write access,όταν κάνουμε mount ένα NTFS partition αλλάζουμε το umask σε 0002,προσθέτουμε το option "silent",αλλάζουμε το nls σε locale και αντί για mount χρησιμοποιούμε την εντολή ntfsmount(αφού φυσικά εγκαταστήσουμε το ntfsprogs στο σύστημά μας).

   mount /dev/hda1 /mnt/windows/ -t ntfs -o locale=utf8,umask=0002,silent

Στο /etc/fstab το entry για NTFS partitions θα είναι:

   /dev/hda1       /media/windows  ntfs-fuse   locale=utf8,umask=0002,silent      0       0

3)με το ntfs-3g(μια πειραγμένη έκδοση του ntfsmount).Με το ntfs-3g μπορούμε να έχουμε πλήρη read/write access σε ΝTFS,και μάλιστα αρκετά reliable και με βελτιωμένη απόδοση.Περισσότερες πληροφορίες για εγκατάσταση και χρήση εδώ To ntfs-3g είναι ακόμα beta εκδοση.

Από Linux σε αρχεία που βρίσκονται σε FAT partition των Windows:

Το Linux παρέχει την δυνατότητα ανάγνωσης και εγγραφής σε FAT partitions.

Για να αποκτήσουμε read/write access σ'ένα FAT partition των Windows(υποθέτουμε ότι είναι το hda1) πρέπει να το κάνουμε mount στο σύστημα αρχείων του Linux:

   mount /dev/hda1 /mnt/windows -t vfat -o iocharset=utf8,uid=1000,gid=1000,dmask=0022,fmask=0133

Με τις παραμέτρους uid(=user id) και gid(=group id) ορίζουμε τον ιδιοκτήτη και την ομάδα των αρχείων του συστήματος αρχείων που πρόκειται να κάνουμε mount.

Mε τις παραμέτρους dmask και fmask ορίζουμε τα permissions(umask) των directories και των αρχείων αντίστοιχα.

Εάν θέλουμε κατα την εκκίνηση του υπολογιστή να προσαρτάται στο σύστημα αρχείων το συγκεκριμένο partition,πρέπει να προσθέσουμε την παρακάτω γραμμή στο αρχείο /etc/fstab:

   /dev/hda1 /mnt/windows vfat iocharset=utf8,uid=1000,gid=1000,dmask=0022,fmask=0133 0 0

Από Windows σε αρχεία που βρίσκονται σε partition ext2/3 του Linux;

Mπορώ να έχω read/write access απο Windows σε αρχεία που βρίσκονται σε partition ext2/3fs με τη βοήθεια ορισμένων drivers:

  1. Ext2 IFS for Windows που παρέχει read & write access
  2. Explore2fs, the WIN32 explorer for Linux ext2fs partitions που παρέχει μόνο read access σε ext2/3 partitions.

Συμπέρασμα

Στην περίπτωση που δεν θέλουμε πρόσβαση σε ολόκληρο το boot partition του άλλου λειτουργικού,αλλά θέλουμε τα δύο λειτουργικά να "μοιράζονται" ορισμένα αρχεία,μια άλλη λύση είναι να δημιουργήσουμε με κάποιο partitioning tool ένα FAT partition το οποίο υποστηρίζουν τόσο το Linux όσο και τα Windows,στο οποίο θα αποθηκεύουμε όσα αρχεία θέλουμε να έχουμε και στα δύο λειτουργικά.

Μπορούμε να δημιουργήσουμε ένα FAT partition τόσο από Linux,με τη βοήθεια κάποιου partitioning tool(όπως τα parted,qtparted,gparted) όσο και απο τα Windows.

Για να δημιουργήσουμε ένα νέο FAT partition,εαν δεν υπάρχει διαθέσιμος,μη διαμορφωμένος χώρος στο δίσκο,πρέπει να κάνουμε resize κάποιο partition.Σε Linux αυτό γίνεται εύκολα με τη βοήθεια κάποιου απ τα partitioning tool που αναφέρθηκαν πιο πάνω.Αν θέλουμε να κάνουμε resize ένα NTFS partition μπορούμε να χρησιμοποιήσουμε επίσης και το ntfsresize(νομίζω περιλαμβάνεται στα ntfsprogs) για να κάνουμε resize το συστημα αρχείων:

   ntfsresize --size [size] [device]

και στη συνέχεια με τη βοήθεια του fdisk να κάνουμε resize και το αντίστοιχο partition(για να κανουμε resize NTFS μέσα απ το parted,ή τα frontends,πρέπει να έχουμε εγκαταστήσει το ntfsprogs).

Σε Windows δεν μπορούμε να κάνουμε resize κάποιο partition(παρά μόνο με κλειστά και συνήθως όχι δωρεάν προγράμματα) μπορούμε όμως να δημιουργήσουμε ένα νέο FAT partition(εαν υπάρχει ελεύθερος μη διαμορφωμένος χώρος ή εάν διαμορφώσουμε εξ ολοκλήρου ένα άλλο partition,που ήδη υπάρχει,και στο οποίο τα Windows έχουν πρόσβαση,εκτός απ το boot partition):

Πίνακας ελέγχου>Εργαλεία Διαχείρησης>Διαχείρηση Υπολογιστή>Αποθήκευση

Μόλις δημιουργηθεί το νέο FAT partiton θα εμφανιστεί σαν ένα νέο drive στα Windows(πχ D:\) ενώ για να αποκτήσουμε πρόσβαση στο νέο partition από Linux χρησιμοποιούμε την εντολή mount,ή προσθέτουμε μια γραμμή στο fstab για να προσαρτάται στο σύστημα αρχείων κατά την εκκίνηση.

  /dev/hda1 /mnt/windows vfat iocharset=utf8,uid=1000,gid=1000,dmask=0022,fmask=0133 0 0

Στην περίπτωση αυτή και τα δύο λειτουργικά θα έχουν read/write access. σ'αυτό το partition.

Πρέπει όμως,να προσέχουμε καθώς "πειράζουμε" τα partitions να μην αλλάξουμε την "θέση" των boot partitions των δύο λειτουργικών,γιατί θα δημιουργηθούν προβλήματα με το GRUB.