Writing a filesystem module/driver for my own FS
I've recently designed a filesystem, and now I would like to implement it. The problem this is a large project and I don't even know where to begin. Which languages can/should I write it in? When you say you would like to copy a file or list files, what does the kernel do? When mounting or formatting, does the kernel generate a software interrupt? How much memory can I use, and what ring level will the module be given? For that matter, how does the kernel allocate memory to modules?
Anyway, this is a large project but I am determined to do it. Does anyone know where I an find documentation to make this kind of module? Big thanks |
For a start, read AST's books, specially the one describing his own unix-like OS, called Minix. (Source code attached.)
|
You will probably also find it helpful to study how the Linux Virtual File System works. I believe that all of the file system code in the kernel is written in C (as is most of the rest of the kernel except parts that need to be assembler). Essentially, you have to define functions for a number of primitive operations (CREAT, READ, WRITE, etc.). It's been awhile since I looked at this, but there are several books out for Linux kernel development, and if you Google "Linux Virtual File System interface" or similar you should find some information.
|
Yes, do learn the basics by implementing a virtual filesystem. I suggest starting out with fuse, which allows you to build a virtual filesystem that implements all of the semantics of a conventional filesystem, but is all done in userspace. You will learn how a filesystem is implemented in the kernel, but without the grief of developing in kernel space.
fuse = Filesystem in USErspace. --- rod. |
All times are GMT -5. The time now is 04:46 AM. |