Sabtu, 28 November 2015

::FUSE::





               Helloo, long time no see.. Oke langsung aja kali ya.. Pada kali ini, aku akan berbagi ilmu tentang FUSE. Pernah denger atau pernah tau ga? Apasih FUSE itu?? Yuuuk check it out!
               FUSE adalah singkatan dari Filesystem in Userspace. Fuse merupakan mekanisme sistem operasi untuk sistem operasi Unix-like yang memungkinkan pengguna tidak ber-hak istimewa menciptakan file system mereka sendiri tanpa mengubah kode kernel. Hal ini bisa dicapai dengan menjalankan kode file system di userspace, sedangkan fuse hanya menyediakan "jembatan" antarmuka kernel yang sebenarnya.

Diagram cara kerja FUSE

               FUSE kernel modul dan FUSE library berkomunikasi melalui file deskriptor special yang diperoleh dengan membuka /dev/fuse. File ini dapat terbuka berkali-kali dan file deskriptor yang diperoleh diteruskan ke mount syscall, untuk menyesuaikan deskriptor dengan filesysem mount.
Untuk memahami FUSE ini , maka pada tutorial kali ini aku akan mengimplementasikannya.
Yuuuk mari disimak :D
Sebelumnya, jangan lupa untuk instal FUSE. Berikut cara installasi FUSE:
1. Download FUSE dari http://fuse.sourceforge.net/ pada bagian Download stable release.
2. Extract file tar.gz dan masuk ke direktori FUSE. (tar -xvzf fuse-2.9.4.tar.gz)
3. Lakukan installasi FUSE dengan cara:
     a. Gunakan hak akses super user (sudo su) 
     b.  Ketikkan perintah ./configure 
     c. Ketikkan perintah make 
     d. Ketikkan perintah make install
4. FUSE siap digunakan.
 
               Nah contoh soalnya yaitu mengaitkan direktori lain (mount) dengan FUSE dengan kriteria ketika file dalam direktori tersebut dibuka, file tersebut secara otomatis membuat file backup dengan format nama: <nama file>.<ekstensi>.bak. File backup tersebut hanya bisa dibuka/dibaca, tidak bisa diedit. Lalu, jika file yang dibuka adalah file berekstensi .bak , maka akan muncul pesam eror berisi "FIle yang anda buka adalah file backup. FIle tidak bisa diubah maupun disalin kembali!" dan file tersebut tidak akan terbuka dan tidak dibuat backup nya.
Langkah-langkah mengerjakannya yaitu:
1. Pastikan installasi fuse berhasil. Lalu buka terminalmu. Lakukan perintah 'gedit' untuk menampilkan dan mengedit code-mu di Text Editor, dan perintah 'nano' untuk menampilkan dan mengedit code-mu di terminal langsung.

gambar perintah gedit

2.  Buatlah file system sendiri menggunakan FUSE.  Dan modifikasi code FUSE tadi sesuai dengan contoh soal. Tetapi di sini, aku akan memakai semua fungsi, agar kalian tau syntax masing-masing fungsi. Jadi, bila kalian ingin mencoba, modifikasi sendiri ya fungsi-fungsinya sesuai yang kalian butuhkan.
   Nah, di contoh soal tadi, fungsi yang paling banyak ku otak atik yaitu open, write. Selain itu juga menggunakan fungsi xmp_getattr dan xmp_getdir yang pasti digunakan sebagai dasarnya. Oh ya jangan lupa ganti bagian static const char *dirpath = "/home/[nama user kalian]/Downloads"


















gambar modifikasi FUSE
3. Lalu save code-kalian tadi dan compile program itu dengan menggunakan perintah:
               gcc -Wall [nama file].c `pkg-config fuse --cflags --libs` -o [nama file]
Kemudian buat sebuah direktori di Downloads. Lalu jalankan fuse tadi dengan cara:
         ./[nama file] [nama folder]
4. Hasilnya akan seperti ini :


                                                           gambar folder lala awal
gambar perubahan pada folder lala
Nah, selesai deh tutorial kali ini. Selamat mencoba , semoga berhasil ^^

Tidak ada komentar:

Posting Komentar