Připojení disku se souborovým systémem ntfs

tuxwin

Úvod do problému

Nejprve je potřeba říct, že NTFS není opensource a není známa jeho celá specifikace.
Z toho vyplývají určité omezení a možné problémy.
Připojit disk s NTFS lze ale nyní v linuxu velmi snadno. Můžeme použít několik ovladačů pro připojení :

  1. ntfs-3g
  2. modul ntfs obsažený v jádru
  3. ntfsprogs
  4. captive

Zápis na disk s NTFS přes ntfs-3g

Projekt ntfs-3g (3g = třetí generace) je mezi projekty zabývajícími se přístupem na NTFS
nejnovější a nabízí plnou podporu čtení/zápis, vysokou stabilitu a oproti ostatním projektům odstraňuje některé chyby a má také velmi dobrý výkon.
Umožňuje také připojení disku i s poškozeným souborovým systémem NTFS (třeba při výpadku proudu),
kdy již není potřeba nabootovat do Windows a chybu nechat opravit příkazem chkdsk.

Připojení disku se provádí příkazem

mount -t ntfs-3g váš oddíl  /media/přípojné místo  # např. mount -t ntfs-3g /dev/hda1 /media/windows  

nebo přidáním příslušné řádky do souboru

/etc/fstab

váš oddíl  /media/přípojné místo  ntfs-3g  defaults,locale=cs_CZ.utf8,fmask=111  0  0  

Samozřejmě, místo

váš oddíl

tam bude název vašeho NTFS disku, místo

přípojné místo

tam bude adresář, kam se váš disk připojuje.

V případě onoho „poškozeného“ souborového systému NTFS lze přidat ještě volbu ‚force‘:

mount -t ntfs-3g -o force váš oddíl  /media/přípojné místo

nebo

váš oddíl  /media/přípojné místo  ntfs-3g  defaults,locale=cs_CZ.utf8,fmask=111,force  0  0

 

Připojení disku s NTFS s využitím jaderného modulu ntfs

Modul pro práci s NTFS (ntfs.ko) který se vyskytuje v distribučních jádrech umožnuje pouze jeho čtení.
Pokud je tento modul zkompilován s podporou pro zápis, tak pozor na jeho omezení – nelze měnit názvy souborů ani vytvářet soubory nové.
Chcete-li tedy nějaký soubor přesunout na disk s NTFS, pak jej musíte nakopírovat do již existujícího souboru.
Připojit diskový oddíl s NTFS můžete zcela běžným způsobem pomocí příkazu mount.

# mount -t ntfs /dev/hda2 /mnt/disk_c -o nls=utf8

Připojí váš druhý primární oddíl na prvním IDE disku do adresáře /mnt/disk_c
(ten před použitím příkazu mount musí existovat a měl by být prázdný
– po připojení diskového oddílu se totiž k jeho obsahu nedostanete, dokud jej neodpojíte).

Pokud chcete k tomuto diskovému oddílu přistupovat i jako běžný uživatel,
přidejte do parametru „-o“ hodnotu uid=“vaše_uid“.
Všem uživatelům povolíte přístup hodnotou umask=000, což je celkem nebezpečné.
Rozumné řešení spočívá ve vytvoření skupiny např. ntfsdisk, přidání uživatelů,
kteří mají mít přístup k disku do této skupiny a při připojování disku uvédst parametry
uid=root,gid=ntfsdisk,umask=007.
Pak soubory sice budou patřit nejen rootovi, ale i skupině ntfsdisk a všichni v této skupině budou moci zapisovat dle libosti.
Pokud bude používat disk jen jeden uživatel, stačí nastavit parametr uid na jeho jméno a umask na 077.

Aby nebylo nutné připojovat disk manuálně po každém restartu, přidejte řádek s příslušně upravenými hodnotami do souboru /etc/fstab

/dev/hda2 /mnt/disk_c ntfs auto,nls=utf8,umask=007   0   0

Více man fstab.

 

Připojení disku s NTFS s využitím jaderného modulu FUSE

Kompletní podporu NTFS (čtení i zápis) poskytuje řešení přes ntfsprogs s využitím FUSE.
Modul pro FUSE (fuse.ko) se vyskytuje v jádře od verze 2.6.14 (starší verze jádra je nutno patchovat),
lze přes něj lokálně připojovat nejenom diskové oddíly s NTFS, ale také např. vzdálené adresáře přes SSH, FTP, WebDAV, atd..

Nejprve si ověřte, obsahuje-li vaše distribuce balíky pro práci s fuse
(fuse-utils či libfuse2) a ntfs (libntfs8 čintfsprogs).
Názvy balíků těchto nástrojů se mohou v jednotlivých distribucích lišit.
Pak si zkontrolujte zda-li je máte nainstalovány ve vašem systému.

## V balíčkovacím systému postaveném na DEB dpkg -l | grep "\(ntfs\|fuse\)"  ## V balíčkovacím systému postaveném na RPM rpm -qa | grep "\(ntfs\|fuse\)"  ## V balíčkovacím systému Portage epm -qa | grep -e ntfsprogs -e fuse # pokud nemáte epm, tak emerge epm 

;-)

## V balíčkovacím systému Pacman pacman -Q ntfsprogs
  1. Nejprve je nutno zajistit, aby se modul FUSE natahoval ihned při startu,
    takže přidáme jeho název do souboru /etc/modules (Ubuntu) nebo /etc/modprobe.conf (pro jádra 2.6)
    echo fuse | tee -a /etc/modules  nebo   echo alias fuse fuse | tee -a /etc/modprobe.conf 
  2. Pak vytvoříme skupinu ntfs
    addgroup ntfs 

    Při vytváření skupiny by mělo vyléz něco podobného:

    Adding group `ntfs' (1001)... Done. 

    Tu nastavíme všem uživatelům, co by měli mít zápis do diskového oddílu s NTFS povolen

    adduser uzivatel ntfs 
  3. Do souboru /etc/fstab přidáme patřičně upravený následující řádek
    /dev/hda1    /mnt/disk_c    ntfs-fuse    auto,gid=1001,umask=0002    0    0 

    Pokud chcete zablokovat přístup uživatelům co nejsou ve skupině ntfs tak nastavte umask=0007

Pozn.: V Ubuntu Dapper se vyskytuje bug. Je třeba opravit symlink /sbin/mount.ntfs-fuse

bash:~$ sudo rm /sbin/mount.ntfs-fuse && sudo ln /usr/bin/ntfsmount /sbin/mount.ntfs-fuse 

Po restartu by mělo být možné disk s NTFS nejen číst, ale také na něj zapisovat.

Zde odkaz na stránku s postupem nastavení ntfs-fuse ze které jsem čerpal.

 

Zápis na disk s NTFS přes captive

Podporu pro zápis nabízí také třeba projekt captive.
Jelikož používá originální ovladač ntfs.sys z Windows, je podpora NTFS zcela kompletní.
Nevýhodou je nižší rychlost ovladače (cca 500kB/s), který funguje podobným způsobem jako Wine.
Také pravděpodobně budete potřebovat licenci na MS Windows abyste originální ovladač mohli použít.
Toto řešení je již zastaralé a překonané.

Zdroj: http://www.abclinuxu.cz/faq/souborove-systemy/ntfs-pod-linuxem