FUSE (Filesystem in Userspace) adalah bagian khusus pada kernel Linux yang memungkinkan user biasa untuk membuat sistem file mereka sendiri tanpa mengubah kernel maupun mempunyai akses root. Sistem file yang digunakan dalam FUSE ini merupakan sistem file virtual. Kode dari FUSE ini berada di kernel, tetapi sistem filenya berada di ruang lingkup pengguna atau user (userspace).
Langkah instalasi :
1. Download di http://fuse.sourceforge.net/. pada bagian stable release.
2. Extract file dan masuk ke direktori FUSE.
3. Gunakan hak akses super user sudo su.
4. ketik perintah ./configure.
5. ketik perintah make.
6. ketik perintah make install.
FUSE sudah siap untuk digunakan.
Untuk mencoba apakah FUSE dapat berjalan dengan baik, maka kita perlu mencobanya, berikut adalah contohnya.
--------------------------------------------------------------------------
#include <fuse.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <errno.h>
#include <sys/statfs.h>
#include <stdlib.h>
static const char *dirpath = "/home/auloid/Downloads";
static int xmp_getattr(const char *path, struct stat *stbuf)
{
int res;
char fpath[1000];
sprintf(fpath,"%s%s",dirpath,path);
res = lstat(fpath, stbuf);
if(res == -1)
{
return -errno;
}
return 0;
}
static int xmp_getdir(const char *path, fuse_dirh_t h, fuse_dirfil_t filler)
{
char fpath[1000];
if(strcmp(path,"/") == 0)
{
path=dirpath;
sprintf(fpath,"%s",path);
}
else sprintf(fpath, "%s%s",dirpath,path);
int res = 0;
DIR *dp;
struct dirent *de;
dp = opendir(fpath);
if(dp==NULL)
{
return -errno;
}
while((de = readdir(dp))!=NULL)
{
res = filler(h, de->d_name, de->d_type);
if(res!=0) break;
}
closedir(dp);
return res;
}
static struct fuse_operations xmp_oper =
{
.getattr = xmp_getattr,
//.readlink = xmp_readlink,
.getdir = xmp_getdir,
//.mknod = xmp_mknod,
//.mkdir = xmp_mkdir,
//.symlink = xmp_symlink,
//.unlink = xmp_unlink,
//.rmdir = xmp_rmdir,
//.rename = xmp_rename,
//.link = xmp_link,
//.chmod = xmp_chmod,
//.chown = xmp_chown,
//.truncate = xmp_truncate,
//.utime = xmp_utime,
//.open = xmp_open,
//.read = xmp_read,
//.write = xmp_write,
//.release = xmp_release,
//.fsync = xmp_fsync,
//.readdir = hello_readdir
};
int main(int argc, char *argv[])
{
return fuse_main(argc, argv, &xmp_oper);
--------------------------------------------------------------------------
masukkan kode di atas pada file .c dan jalankan dengan mengetikkan
gcc -Wall [kode_c] `pkg-config fuse --cflags --libs` -o [program_fuse]
kemudian ketik kode di bawah untuk menjalankannya
./[program_fuse] [direktori_mount_point]
untuk menghentikan FUSE kita dapat mengetikkan
sudo umount [direktori_mount_point]
Dari implementasi program di atas dapat sobat lihat bahwa tidak semuanya fungsi yang saya gunakan. Banyak fungsi-fungsi lainnya dalam FUSE yang dapat dimodifikasi sesuai dengan yang sobat-sobat inginkan. Info lebih lengkap terkait FUSE dapat dikunjungi di http://fuse.sourceforge.net atau bisa kalian cari sumber lain di internet. Sekian yang dapat saya sampaikan pada kesempatan kali ini, terima kasih atas waktu anda.
Tidak ada komentar:
Posting Komentar