Not Any Other File System - Graduate Operating Systems Class Project. Building a linux file system using FUSE
Install FUSE development package (needed for compilation) -
apt-get install libfuse-dev (for Debian-based)
Install pkg-config -
This lets you pass information regarding libraries needed by gcc for compilation.
FUSE callbacks implemented (not correctly, ofcourse) -
getattr
readdir
read
Compile the project -
cmake -Bbuild -H.
cd build/
make
- The file system can be run in-memory or be backed by a disk.
- Size of the file system can be set in
include/mandsk/params.h. - Make a directory to mount the file system in -
mkdir -p ${FILESYSTEM_ROOT}. - Run the filesystem -
./naofs -s ${FILESYSTEM_ROOT}. - The following options can be given -
-fto run the filesystem in foreground (prints a lot of logs).-dto enable debug logs (TODO - move the logs printed by above option into this).-o blkdev -o fsname=${DEVICE_FILENAME}to run the file system on the physical diskDEVICE_NAME.
To run the file system on a physical disk, mkfs needs to be done on the disk before running our file system -
cd ${PROJECT_ROOT}/build/src/mkfs
./mkfs #{DEVICE_FILENAME}
This would take some time depending on the size of the disk configuired in the project.
To automate all of these steps, we have also provided a script -
- To setup dependencies, do
./run.sh setup ${DEVICE_FILENAME} - To build, do
./run.sh build. - For mkfs, do
./run.sh mkfs ${DEVICE_FILENAME}. - To run the filesystem, do
./run.sh nologs. - To clean the project, do
./run.sh clean. - To do all these steps in one go, do
./run.sh present ${DEVICE_FILENAME}
