NTFS-3g aneb úplný přístup do Windows NTFS svazku

Protože potřeba občasné práce v "oblíbeném" Windowsu nemine téměř žádného linuxáka, přidávám návod jak jsem se se zápisem do NTFS z Linuxu popral já. Návod by měl fungovat na každém (Open)SuSE10 a výše, nicméně já ho úspěšně používám v posledních dvou verzích (10.1, 10.2). Postup zachovává integraci vyměněných balíčků do distribuce přes RPM kvůli závislostem a evidenci, který nainstalovaný soubor k čemu patří, proto ta zdánlivá komplikovanost. Co tedy k tomu potřebujeme: - zdrojové balíčky jádra a kompilátor (pokud jste to ještě nepotřebovali, jděte do YaSTu a zatrhněte v profilech 'Vývoj Jádra' a vítejte do klubu).

  1. Dále stáhneme FUSE a to v nejposlednější verzi. Aktuální zdrojové balíčky jsou na vývojové verzi OpenSuSE Factory (momentálně je tam fuse-2.6.5-16.src.rpm a doporučuji k němu stáhnout i fuse_kio-0.0.cvs2005.12.08-103.src.rpm (pro vlastní zápis není nezbytný ale pomáhá integraci FUSE do KDE, pokud ho používáte). Vše je na URL http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/suse/src
  2. Protože FUSE má modul i v jádře musíme přikompilovat tento modul do aktuálního jádra, stáhněte si tedy i originální zdrojáky FUSE !! dbejte aby jste měli shodnou verzi s výše uvedeným fuse***src.rpm !! Zdrojáky jsou k mání na http://fuse.sourceforge.net v sekci download v našem případě stahnete tedy http://switch.dl.sourceforge.net/sourceforge/fuse/fuse-2.6.5.tar.gz a rozbalíte 'tar xvf fuse-2.6.5.tar.gz' a jdeme kompilovat. Přejděte v rozbaleném souboru do adresáře fuse-2.6.5/kernel/ a spusťte konfiguraci pomocí příkazu './configure --enable-kernel-module' a kouknete na průběh konfigurace jestli vám něco nechybí (zdrojáky jádra, kompilátor například). Pokud proběhla konfigurace OK spusťte kompilaci příkazem 'make' a v adresáři se vám objeví vytoužený modul jádra fuse.ko tento přesunete (pozor teď potřebujete práva roota!) mezi moduly jádra a to buď příkazem
    'make install' nebo příkazem
    'mv -v fuse.ko /lib/modules/`uname -r`/kernel/fs/fuse/
    jako root si vyzkoušejte jestli je modul tam kde má být příkazy 'modinfo fuse' (zkontrolujte jeho verzi) a zatahněte do paměti ''modprobe fuse'. Tento postup budete muset opakovat při každé aktualizaci jádra. Aby se vám vždy zaváděl modul do paměti po startu systému zaeditujte v textovém souboru /etc/sysconfig/kernel řádek MODULES_LOADED_ON_BOOT="fuse".
  3. Dále už to bude jednodušší, zkompilujeme a nainstalujeme samotné FUSE ze stažených src.rpm balíčků. Kompilace je jednoduchá příkazy 'rpmbuild --rebuild --target=i686 fuse-2.6.5-16.src.rpm' a nainstalujte výsledné balíčky (opět jako root) 'rpm -Uhv /usr/src/packages/RPMS/i586/fuse-2.6.5-16.i686.rpm' a také 'rpm -Uhv /usr/src/packages/RPMS/i586/fuse-devel-2.6.5-16.i686.rpm' Uživatelé KDE si mohou stejným postupem nainstalovat FUSE-KIO tedy
    'rpmbuild --rebuild fuse_kio-0.0.cvs2005.12.08-1.src.rpm' a
    'rpm -Uhv /usr/src/packages/RPMS/i586/fuse_kio-0.0.cvs2005.12.08-1.rpm'
  4. FUSE je tedy celé hotové a jdeme na NTFS-3g. Ten se rychle vyvíjí ale aktuálně byl už uvolněn v první stable verzi. Nově je k dispozici i ve vývojovém repozitáři OpenSUSE Factory v balíčku ntfs-3g*src.rp--target=i686m nejnovější verzi lze stáhnout a rekompilovat zdrojáky buď z domácích stránek projektu http://www.ntfs-3g.org (aktuální verze je http://www.ntfs-3g.org/ntfs-3g-1.616.tgz) rozbalíte, zkonfigurujete a jako root nainstalujte:
    'tar xvf ntfs-3g-1.616.tgz'
    'cd ntfs-3g-1.616'
    './configure'
    'make'
    'make install'
    Další možnost - vezmete a překompilujete zdrojový src.rpm balíček z vývojové distribuce např.: http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/suse/src/ntfs-3g-1.516-7.src.rpm
    a známým postupem sestavíte a nainstalujete - tedy:
    rpmbuild --rebuild --target=i686 ntfs-3g-1.516-7.src.rpm
    rpm -Uhv /usr/src/packages/RPMS/i686/ntfs-3g-1.516-7.rpm
  5. Odmountujte předchozí připojení NTFS svazku 'umount -v /windows/C' Posledním krokem je (opět jako root) editace souboru /etc/fstab, odkomentujte předchozí připojení NTFS svazku a nahraďte ho novým, já to mám takto:
    #/dev/hda1 /windows/C ntfs ro,users,gid=users,umask=0002,nls=utf8 0 0
    /dev/hda1 /windows/C ntfs-3g silent,umask=0000,no_def_opts,allow_other,locale=cs_CZ.utf8 0 0
    Nakonec připojíte NTFS 'mount -v /windows/C'

Vyzkoušejte zápis a mazání do nově připojeného svazku, pokud používáte KDE nainstalujte i fuse-kio pro integraci souborového systému fuseblk (tj. cokoli přes FUSE) do QT aplikací. Mě funguje bezproblémově i zápis do komprimovaných NTFS svazků, jinak ale samozřejmě vše aplikujete na vlastní nebezpečí.

13. Leden 2007
Autor: ulejm
Sdílet:

Komentáře

jumbo odpověděl -

Jen škoda, žes to nanepsal o den dřív - včera jsem po lamovsku rozchodil aspoň poloviční funkčnost, ale podle tvého návodu to zkusím rozchodit komplet! Takže díky!

Neznámý odpověděl -

Nechapu ty reci o tom, ze potreba obcasne prace ve Windows nemine temer zadneho Linuxaka. Kuprikladu ja i cela rada mych kolegu jsme nemeli na svych pocitacich cosi jako Windows nainstalovano uz nejmin 10 let. :) A to presto, ze denne resime i problemy u uzivatelu s Windows (zkusebni "laboratorni" pocitac nepovazuji za svuj).

jumbo odpověděl -

Však já také ve Windowsech nepracuji - počítač máme doma jeden a žena Linux odmítla :o) Takže to řeším dvěma výměnými HDD (každý 40 GB) a jedním datovým, stogigovým (slave). A protože jej používám jako úložiště pro video ke střihu a žena zase pro fotky a podobnou havěť, musíme mít naformátováno tak, aby byl umožněn přístup z obou OS. FAT32 je kvůli svým omezením pasé, takže NTFS. Howgh. :o)

micska odpověděl -

Zajímalo by mne, která omezení FAT 32 v běžné praxi tolik vadí? Mám na FAT též něco a zatím žádný problém, tak abych se připravil, co by mne mohlo potkat. Pravda, disk je FAT 32 a ne FAT 32 M$.
Díky

micska odpověděl -

Tak to bude ono, 15 GB file jsem ještě nepotřeboval. :-) Filmy jen nahrávám z DVB-T a zatím jsem problém neměl.
Jo, link je informativní, díky.
BTW, co to provede, kdybych se snažil uložit soubor větší než 4GB? Neuloží se nic nebo nekorektně skončí v limitu velikosti ?

CobrA odpověděl -

na NTFS-3g som narazil nedavno a akonahle som si precital popis na stranke uz aj som kompiloval. Sice musim pripajat disky s "force" (ze vraj ma Win naplanovanu udrzbu) ale zatial 100% spolahlive. Rychlost zapisu ma prekvapila (8MB/s) a vyzera to slubne. Len zatial som neprisiel na sposob ako donutit linux aby pouzival tento modul ked pripojim usb disk na ktorom je NTFS. Kto by vedel ako, budem mu povdacny ;)

Neznámý odpověděl -

pri prekladu mi to pise "autoreconf: command not found", nevite nekdo jak zprovoznit ten autoreconf? dikec

Dundee odpověděl -

pri instalaci rpmbuild --rebuild fuse-2.6.3-6.src.rpm mi to hodi chybu:


configure.in:6: error: possibly undefined macro: AC_PROG_LIBTOOL
If this token and others are legitimate, please use m4_pattern_allow.

Nevite nekdo, co s tim?

ulejm odpověděl -

Příkaz je součástí výše uvedeného balíčku autoconf, který najdeš na inst. zdroji (CD/DVD apod.). Pokud něco chybí, nejlepší je před aplikací celého návodu vlézt do YaST --> Správce balíčků --> a zatrhnou Vývoj jádra (to vybere všechny potřebné (ale i některé nepotřebné) balíčky pro rekompilaci zdrojů.

ulejm odpověděl -

V celém popisu není nikde počítáno se změnou instalačních zdrojů v YaSTu i když u zdroje http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/sus... to možné je. Ten SL-OSS-factory je vývojová distribuce a neměla by být jako celek používána v inst. zdrojích nikým jiným, než vývojáři openSUSE. Jednotl. balíčky ale lze přenášet do předchozích verzí (já ale volím raději rekompilaci). Takže download src.rpm balíčku a rebuild, pokud není určen přímo pro danou verzi distribuce. Nutné to ale ve většině případů není.

Neznámý odpověděl -

niekde mám chybu ale neviem kde (začiatočník) mohli by ste mi poradiť prosím??

linux-33dm:/fuse-2.6.3/kernel # ./configure --enable-kernel-module
checking for a BSD-compatible install... /usr/bin/install -c
checking kernel source directory... /usr/src/linux-2.6.18.8-0.3
checking kernel build directory... /usr/src/linux-2.6.18.8-0.3-obj/i386/default
checking kernel source version... 2.6.18.8-0.3-default
checking if FUSE is configured in the kernel... yes
checking if kernel defines kzalloc function... yes
checking if kernel defines fs_subsys... yes
checking whether lookup_instantiate_filp is defined... yes
checking if umount_begin is passed a vfsmount... yes
checking if inode has i_blksize field... yes
checking if inode has i_private field... no
checking if inode has i_mutex field ... yes
checking if kernel has mutex.h ... yes
checking if kernel has BLOCK option ... no
checking if this is user mode linux... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: config.h is unchanged
linux-33dm:/fuse-2.6.3/kernel # make
make -C /usr/src/linux-2.6.18.8-0.3 SUBDIRS=`pwd` O=/usr/src/linux-2.6.18.8-0.3 -obj/i386/default modules
make[1]: Entering directory `/usr/src/linux-2.6.18.8-0.3'
/usr/src/linux-2.6.18.8-0.3/scripts/gcc-version.sh: line 11: gcc: command not fo und
/usr/src/linux-2.6.18.8-0.3/scripts/gcc-version.sh: line 12: gcc: command not fo und
make[2]: gcc: Command not found
CC [M] /fuse-2.6.3/kernel/dev.o
/bin/sh: gcc: command not found
make[3]: *** [/fuse-2.6.3/kernel/dev.o] Error 127
make[2]: *** [_module_/fuse-2.6.3/kernel] Error 2
make[1]: *** [modules] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.18.8-0.3'
make: *** [all-spec] Error 2
linux-33dm:/fuse-2.6.3/kernel #
linux-33dm:/fuse-2.6.3/kernel #

ĎAKUJEM

Neznámý odpověděl -

linux-33dm:/fuse-2.6.3 # rpm -Uhv /usr/src/packages/RPMS/i586/fuse-2.6.3-13.i586 .rpm
error: Failed dependencies:
fuse = 2.6.0 is needed by (installed) fuse-devel-2.6.0-9.i586

chýba mi niečo??