Coder Social home page Coder Social logo

vdf's Introduction

VDF README
==========

VDF is the Virtual Dynamic FAT library. It allows you to define a filesystem
hierachy in memory and then serve that up as a FAT filesystem, without having
to create a full disk image. Metadata such as the boot sector, FAT and directory
entries are generated as needed and file data is read off disk or provided via
callbacks.

Once the virtual drive has been defined, a 'transport driver' is used to serve
up the virtual image. Currently, drivers exist for the Linux Network Block
Device (NBD). In future, a VDF specific protocol will be implemented and a
hardware device is planned (based around the PIC32 Ethernet Starter Kit) to act
as a remote Mass Storage Device that can talk to VDF. Other drivers can be added
into the library or sufficient APIs exist to implement a custom driver outside
of the library.
If needed, the entire image can also be written out to a file.

The library supports creating FAT12, FAT16 and FAT32 filesystems. Any historical
quirks are generally unimplemented but this shouldn't affect compatibility.
Long file name (VFAT) support is implemented but the user should be aware that
this may raise patent issues.

This is an initial release and is still a bit rough around the edges. Feedback
is very welcome and any help would be good (especially with autotools stuff as
I haven't got much experience with this).

Building has been tested under Ubuntu 11.10 (x86 and ARM), Cygwin and with
MS Visual Studio 2008.


BUILDING
--------

Building and installation instructions can be found in INSTALL. But brief
instructions follow:

- if you do not have ./configure, run ./autogen.sh to generate the needed files.
  this will be needed if building from the gi repository.

- check output of ./configure --help to see if any options apply to you

- run
  ./configure
  make

  to build libvdf and the provided examples.

- to install the library, run
  make install

  optionally, DESTDIR can passed in on the the make install command line to
  specify a destination directory


NBD tools
-------------

To use the NBD drivers in VDF, you will want to install the nbd tools. These 
can be downloaded from http://nbd.sourceforge.net/
The standard NBD tools operate in with a client-server model, where the server
is the tool providing the image file and the client is the tool that connects to
the server and configures the NBD device.
The NBD server transport driver in VDF functions in the same way and will work
with nbd-client. However, to enable the initiation to be performed from the
other end, VDF provides a NBD client transport driver. Once a connection is
made, the protocol functions in the same way; although rather than provide a
server socket, the NBD client will connect to what I've called the
nbd-devserver. A patch that can be applied to nbd-3.0 has been provided in the
'extra' directory. This will provide the nbd-devserver utility. It operates in
much the same way as nbd-client, except it will provide a server socket that
allows a single connection at a time.
Command line options have been added to allow a shell line to be executed when
a connection is made or dropped. One possibility is using this to run modprobe
and rmmod respectively to add and remove the g_file_storage kernel module in
order to provide a virtualised USB Mass Storage Device (which is the original
reason that VDF was written).


API
---

API documentation is not yet provided. A few simple examples are provided to
demonstrate how the API can be used.


LICENSING
---------

VDF is copyright (C) 2012 David Steinberg and is provided under the GNU GPL V3.
VDF comes with ABSOLUTELY NO WARRANTY.
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

vdf's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

koden8

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.