halo temen temen bertemu lagi dengan saya. pada kesempatan kali ini saya akan berbagi sedikit tentang fuse.
apa itu fuse??
Filesystem in Userspace (fuse) merupakan mekanisme sistem operasi untuk sistem operasi unix like yang memungkinkan pengguna tidak berhak istimewa menciptakan file system mereka sendiri tanpa mengubah kode kernel Hal ini dicapai dengan menjalankan kode file system di userspace.
langkah langkah instalasi fuse di linux
1, Download fuse dari http://fuse.sourceforge.net/ pada bagian Download stable release
2. extract file tar.gz dan masuk ke direktori fuse. (ketikkan "tar -xvzf fuse-2.9.4.tar.gz" di terminal)
3. lakukan instalasi fuse dengan cara
A. gunakan hak akses super user (ketikkan "sudo su" di terminal)
B. ketikkan perintah ./configure
C. ketikkan perintah make
D. ketikkan perintah make install
4. fuse sudah terinstal dan siap digunakan
berikut langkah langkah membuat program fuse sederhana yaitu membuat suatu direktori tertentu menadi sebuah mount directory
1. ketikkan kode berikut di text editor
#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>
static const char *dirpath = "/home/Faiq/Documents";
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);
}
Ubah static const char *dirpath = "/home/Faiq/Documents"; sesuai dengan folder yang akan difusekan
2. compile program dengan comand gcc -Wall namafile,c `pkg-config fuse --cflags --libs` -o namafile.o
3. buat sebuah directory baru bernama zzz di directory home
4. run program dengan mengetikkan ./namafile.o /zzz
5. untuk mengecek nya buka folder tmp yg kamu mount maka pasti akan ada file yg sama seperti yg ada di folder documents mu hehe
terima kasih temen2 atas perhatiannya semoga bermanfaat




nice
BalasHapus