Pages

Saturday, January 20, 2007

How to Write to NTFS Partition on Linux

Akses baca (read) dan tulis (write) ke partisi FAT32 Windows sudah lama didukung oleh Linux, sepanjang modul kernel Linux sudah disertakan dan di-load (ketika booting) oleh Linux. Biasanya yang menjadi masalah adalah ketika kita ingin melakukan aksi write ke partisi ber-file system NTFS, kernel Linux men-disable aksi ini karena masih berkemungkinan mengalami data corruption ketika aksi write ini dilakukan. Walaupun paket software yang menyediakan fasilitas mounting dan read ke partisi NTFS sudah lama disertakan oleh distro SUSE Linux (termasuk openSUSE), namun sama halnya dengan distro lain (?) akses write ke parisi NTFS ini membutuhkan konfigurasi--menambahakan fungsionalitasnya pada modul kernel--lebih lanjut.

Hal ini tidak bisa dijadikan alasan bahwa Linux tidak/belum men-support aksi write ke partisi NTFS ini dengan baik, Linux sudah men-suport banyak sekali berbagai jenis file system. Berbeda dengan file system NTFS ini, pihak Microsoft menempatkan spesifikasi dan struktur file system NTFS tersebut dalam rahasia perusahaannya dan oleh karena itu pihak Komunitas Linux (Para Pengembang Kernel Linux) mengalami kesukaran dalam menyediakan support akses write ke partisi NTFS, dan akhirnya akses ke partisi tersebut dipasang read-only sebagai default.

Cause

Microsoft keeps the specifications and structures of the NTFS file system as a company secret, thus making it very difficult to provide support for this file system.

Fortunately, read access to NTFS partitions is very stable. On the other hand, write access might damage the whole NTFS file system of the corresponding partition. For this reason and in order to protect you from data loss, only read access is activated by default in SUSE LINUX.


Tapi bukan Linux namanya kalau harus "mati" hanya karena Microsoft me-"rahasia"-kan spesifikasi dan struktur file system NTFS. Martin von Loewis, Anton Altaparmakov dan programmer lainnya sudah mulai men-develop fasilitas ini pada tahun 1995 dan menghasilkan ntfs-3g sebagai NTFS driver di Linux dengan menggunakan FUSE sebagai userland file system framework pada proses mounting-nya, sehingga akhirnya User dapat melakukan operasi write ke partisi NTFS di atas sistem operasi Linux.

Tutorial berikut menjelaskan (secara sederhana) bagaimana menjadikan distro Linux kita men-support untuk aksi write ke partisi NTFS--How to write to NTFS partition on Linux, dan tulisan ini saya lakukan di atas distro openSUSE 10.2 tapi sangat mungkin untuk bisa dijalankan di distro Linux lain dengan analogi yang sama meski mungkin dengan cara yang sedikit berbeda.

Dengan asumsi pada paragraf sebelumnya, dapat disimpulakan bahwa paket aplikasi (software) minimal yang harus di-install di mesin Linux kita adalah:
  1. fuse,
  2. ntfs-3g, dan
  3. ntfsprogs(apabila diperlukan)
Ketiga paket di atas bisa diperoleh dengan menambahkan list server yang diperlukan di
YaST Installation Source, lalu memilih ketiga paket di atas melalui YaST Software Management. Namun setelah dicoba ternyata versi fuse dan ntfs-3g yang didapat merupakan versi yang lama dan gagal dalam melakukan (even) mounting partisi NTFS di komputer saya, oleh karena itu saya mencoba untuk mendapatkan versi software yang lebih baru (fuse-2.6.1, dan ntfs-3g-0.20070102-BETA)--saat tulisan ini di-publish.

Setelah googling akhirnya saya hanya bisa mendapatkan fuse dan ntfs-3g versi terbaru tersebut dalam bentuk source, tar.gz (bukan rpm) dan terpaksa (?) kita lakukan proses instalasi dengan cara yang berbeda,
  1. fuse versi terbaru, atau kunjungi situsnya,dan
  2. ntfs-3g versi terbaru, atau kunjungi situsnya.
Karena software yang akan kita install berupa source, maka proses instalasi ini menjadi transapan terhadap berbagai distro yang beragam.

Untuk instalasai fuse dan ntfs-3g tersebut PASTIKAN KERNEL-SOURCE serta GCC (tersedia di CD/DVD ROM Distro Linux yang dipakai) sudah di-install sebelumnya dan UNINSTALL fuse dan ntfs-3g versi lama.

Let's begin this installation then,

INSTALL fuse:
  1. Setelah men-download fuse, kita untar dengan perintah $ tar xfvz fuse-2.6.1.tar.gz ,
  2. Pindah directory ke hasil untar di atas, $ cd fuse-2.6.1/,
  3. Lakukan konfigurasi dengan menyertakan option enable-kernel-module, $./configure --enable-kernel-module ,
  4. Komplasi dan install, # make && make install .
Apabila tidak ada report error pada standard output maka proses instalasi berjalan dengan benar.

INSTALL ntfs-3g:
  1. Setelah men-download ntfs-3g, kita untar dengan perintah $ tar xfvz ntfs-3g-0.20070102-BETA.tgz ,
  2. Pindah directory ke hasil untar tadi, $ cd ntfs-3g-0.20070102-BETA/,
  3. Lakukan konfigurasi untuk memeriksa paket-paket dependcy, $ ./configure ,
  4. Apabila tidak terdapat report error lakukan: # make && make install .
MOUNTING NTFS PARTITION:
Setelah ketiga paket di atas berhasil di-install (ntfsprogs dapat diperoleh dari CD/DVD ROM openSUSE 10.2), kita tinggal melakukan mounting partisi NTFS tersebut ke directory yang sudah kita buat sebelumnya (mount point). Jika partisi NTFS komputer saya berada di /dev/hda10 dengan mount point /windows/F, maka mounting command-nya adalah:

# ntfs-3g /dev/hda10 /windows/F

[Gambar 01: Perintah mounting partisi NTFS dengan ntfs-3g]

Sesuaikan dengan lokasi partisi NTFS Anda dengan melihat output perintah: # fdisk -l ,
berikut contoh tabel partisi hard disk komputer saya:

[Gambar 02: Output dari command # fdisk -l untuk melihat tabel partisi hard dsik]

Apabila berhasil (tidak mengeluarkan error report), maka check dengan perintah $ df , contoh di mesin saya:

[Gambar 03: disk free--df--dapat memberikan informasi partisi-partisi hard disk yang sudah di-mount]

dan report-nya akan keluar di log mesin dengan command: # tail -f /var/log/messages

[Gambar 04: Log mesin yang memberikan informasi tentang proses mounting yang terjadi]

Apabila partisi ini ingin di-mount pada setiap kali komputer booting, tambahkan baris berikut:

/dev/hda10 /windows/F ntfs-3g default,locale=en_US.utf8 0 0

di /etc/fstab (sesuaikan dengan tabel partisi hard disk komputer Anda) dengan menggunakan text editor pilihan Anda, sehingga tampak seperti:

[Gambar 05: Isi /etc/fstab setelah ditambahkan baris baru]

Periksa dengan me-reboot komputer, lihat log-nya pada saat booting masuk ke sistem Linux, atau check dengan:

$ cat /var/log/messages | grep fuse

[Gambar 06: Log mesin, fuse diaktifkan ketika booting masuk ke sistem Linux]


Kita tes dengan copy-paste suatu directory ke partisi tersebut (/windows/F di hard disk saya) dengan ukuran directory tersebut sebesar lebih dari 600 MB:

[Gambar 07: Proses copy-paste berukuran cukup besar ke partisi NTFS]

dan, proses copy-paste tersebut berhasil tanpa ada file yang corrupt[1].

Done!.. and Have Fun with Linux! :)


[1] Ada issue bahwa file yang di-copy sebesar lebih dari 1 GB ke partisi NTFS (dari Linux) bisa mengalami kerusakan (?), dan saya belum mencobanya.

14 comments:

Anonymous said...

tutorial yang bagus dan menarik

Andi Sugandi said...

Terima kasih Bu Iin :)

Kalau ada yang keliru, minta tolong dikoreksi yach... :)

*Link ke web/blog Ibu saya list di Tag Interesting Thought blog saya ya Bu*

Dwilicious said...

mas, saya coba install fuse 2.6.3 dari source dengan --enable-kernel-module tetapi kenapa error ya?
"
configure: error:
*** Cannot determine the version of the linux kernel source. Please prepare the kernel before running this script "

kira2 butuh apa nih?

Dwilicious said...

oops ternyata masalahnya disebabkan kernel source belum saya install. setelah install pakai yast, langsung beres :-)

wareng75 said...

kang Andi, aku newbiew banget, dah coba install suse10.2 dng standard dpt dari download lwt DAP, aku install di laptop centaur axioo. Dah ikutin petunjuk akang tapi blm bisa, btw kalau mo ganti display menjadi 1280x768 gmn? kok nggk ada ya di configure desktop

Andi Sugandi said...

# dwilicious
OK! :)

# agus
klo lewat blog ini terlalu lambat untuk kita diskusikan, gimana klo lewat email (andisugandi@gmail.com) atau YM (sugandi_a) saya...

saya tunggu ya :)

Anonymous said...

*agak promosi :p *
http://kuliax.duniasemu.org/release-
notes_kuliax-6.0_id.txt

"Dukungan Sistem Berkas: ..., NTFS read/write via ntfs-3g, ..."

Kapan ya, kita ILC-an bareng lagi? :D

ikram said...

sudah bulan maret ;)

Andi Sugandi said...

# ryan_oke

:)

Kapan ya kita bisa ketemuan lagi ya? :)

# ikram

Jadi malu... :)

Thanks udah ngingetin Mas Ikram :)

Muhammad Rivai said...

Thanks mas. Artikel yang menarik. Saya akan buatkan link di blog Migrasi Windows-Linux saya.

Vavai

Anonymous said...

Mas Andi, saya ni Luluk peserta Workshop Campcaster lalu, mo tanya agar Suse/ Mint bisa sharing dengan XP gimana caranya?

dhan said...

makasih mas buat tutorialnya, oh iya kalo mau instal aplikasi windows di linux bisa ga yah?

Muhammad Ikram said...

Saya nginul ubuntu masih bingung mas Bro... Padahal udah ngebet banget pengen pake Ubuntu.

Peternak Hebat said...

nice share